diff --git a/_versioned/0_8_5/.nojekyll b/_versioned/0_8_5/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/_versioned/0_8_5/404.html b/_versioned/0_8_5/404.html new file mode 100644 index 00000000..ab4eef25 --- /dev/null +++ b/_versioned/0_8_5/404.html @@ -0,0 +1,464 @@ + + + + + + + + + +Viash - Page Not Found + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Page Not Found

+
+ + + +
+ + + + +
+ + +
+ +

The page you requested cannot be found (perhaps it was moved or renamed).

+

You may want to try searching to find the page’s new location.

+ + + +
+ + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/about.html b/_versioned/0_8_5/about.html new file mode 100644 index 00000000..f7f128aa --- /dev/null +++ b/_versioned/0_8_5/about.html @@ -0,0 +1,651 @@ + + + + + + + + + +Viash - About Viash + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

About Viash

+
+ + + +
+ + + + +
+ + + +
+ + +

Viash is developed and maintained by Data Intuitive.

+

You can find out more information about Viash in our preprint.

+

For more information or support contact us at info@data-intuitive.com.

+
+

Logos

+

+

+ + +
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/index.html b/_versioned/0_8_5/blog/index.html new file mode 100644 index 00000000..4d64e26b --- /dev/null +++ b/_versioned/0_8_5/blog/index.html @@ -0,0 +1,2085 @@ + + + + + + + + + +Viash - Viash Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash Blog

+

The latest news and tips about Viash

+
+
+ + +
+ + + + +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/index.xml b/_versioned/0_8_5/blog/index.xml new file mode 100644 index 00000000..c423f953 --- /dev/null +++ b/_versioned/0_8_5/blog/index.xml @@ -0,0 +1,2567 @@ + + + +Viash +https://viash.io/blog/ + + + +https://viash.io/viash.png +Viash +https://viash.io/blog/ +38 +144 + +quarto-1.4.550 +Tue, 20 Feb 2024 23:00:00 GMT + + Viash 0.8.5 + Viash Team + https://viash.io/blog/posts/viash-0.8.5/ + +

What’s new?

+

Fix a bug when building a test docker container which requires a test resource. Additional improvements for the website documentation and support for the latest version of Nextflow are added.

+ +
+

Full changelog

+
+

BUG FIXES

+
    +
  • nextflow runner: Fix an issue with current nextflow-latest (24.01.0-edge) where our supporting library passes a GString instead of a String and results in a type mismatch (PR #640).

  • +
  • test resources: Make non-script test resources available during building of a docker container for viash test (PR #652).

  • +
+
+
+

DOCUMENTATION

+
    +
  • repositories: Improve the repository documentation with links and a overview table with links (PR #643).
  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.8.5/ + Tue, 20 Feb 2024 23:00:00 GMT +
+ + Viash 0.8.4 + Viash Team + https://viash.io/blog/posts/viash-0.8.4/ + +

What’s new?

+

Fix building components with dependencies that have symlinks in their paths.

+ +
+

Full changelog

+
+

BUG FIXES

+
    +
  • dependencies: Fix dependencies with paths using symlinks (PR #621). The resolution for the .build.vsh was changed to use the toRealPath previously, so dependency resolution must take account possible resolved symlinks too.
  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.8.4/ + Sun, 14 Jan 2024 23:00:00 GMT +
+ + Viash 0.8.3 + Viash Team + https://viash.io/blog/posts/viash-0.8.3/ + +

What’s new?

+

Fix some edge cases and improve usability.

+ +
+

Full changelog

+
+

BUG FIXES

+
    +
  • NextflowPlatform: properly resolve paths when a nextflow workflow has another nextflow workflow as dependency and the worktree contains a directory that is a symlink (PR #614).

  • +
  • Main: Fixes a bug added by #294 which causes Viash to print a stacktrace instead of a helpful error message when viash is run without any arguments (#617, PR #618). Thanks @mberacochea for pointing out this oversight!

  • +
  • Dependency: When an alias is defined, pass the alias as a key to the .run() function (#601, PR #606).

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.8.3/ + Sun, 07 Jan 2024 23:00:00 GMT +
+ + Viash 0.8.2 + Viash Team + https://viash.io/blog/posts/viash-0.8.2/ + +

What’s new?

+

This release fixes a few bugs regarding dependencies and how the Nextflow platform handles Paths.

+ +
+

Full changelog

+
+

MINOR CHANGES

+
    +
  • NextflowTestHelper: Do not hardcode a version of Nextflow in the testbench, but use the version of Nextflow that is installed on the system (PR #593).

  • +
  • GitHub Actions: Test different versions of Nextflow (22.04.5, latest, and latest-edge) (PR #593). Testing the latest Edge version of Nextflow will allow us to catch notice changes in Nextflow earlier.

  • +
  • Updates to the documentation and templates in the Git repo (#598, PR #600):

    +
      +
    • Add contributing guidelines.

    • +
    • Add issue templates.

    • +
    • Reworked the pull request template.

    • +
  • +
+
+
+

BUG FIXES

+
    +
  • config: Fix the main level of a component config not enforcing strict mode and instead allowing any field to be specified (PR #585).

  • +
  • dependencies: Allow the user to define a local dependency with specifying repository: local as sugar syntax (PR #609). A local repository is the default value so it’s not required to be filled in, but allowing it with a sensible sugar syntax makes sense.

  • +
  • Repositories: Fix a structural issue where a repository defined directly in a dependency would require the name field to be set (PR #607). Repository variants are created with and without the name field. Repositories under .functionality.dependencies[] use repositories without the name field, while repositories under .functionality.repositories[] use repositories with the name field.

  • +
  • NextflowPlatform: Do not resolve remote paths relative to the –param_list file (PR #592).

  • +
  • NextflowPlatform: Allow finding .build.yaml file when worktree contains a directory that is a symlink (PR #611).

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.8.2/ + Wed, 13 Dec 2023 23:00:00 GMT +
+ + Viash 0.8.1 + Viash Team + https://viash.io/blog/posts/viash-0.8.1/ + +

What’s new?

+

This release fixes a bug in the Nextflow platform where calling a workflow with the .run() function without specifying the fromState argument would result in an error when the input channel contained tuples with more than two elements.

+ +
+

Full changelog

+
+

BUG FIXES

+

NextflowPlatform: Fix error when using .run() without using fromState and the input channel holds tuples with more than two elements (PR #587).

+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.8.1/ + Sun, 19 Nov 2023 23:00:00 GMT +
+ + Viash 0.8.0 + Viash Team + https://viash.io/blog/posts/viash-0.8.0/ + +

What’s new?

+

Nextflow workflows definitions are picked up by Viash and assembled into a functional Nextflow workflow, reducing the amount of boilerplate code needed to be written by the user. It also adds a new runIf argument to the NextflowPlatform which allows for conditional execution of modules. We added new ‘dependencies’ functionality to allow for more advanced functionality to be offloaded and re-used in components and workflows.

+ +
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • NextflowPlatform: Changed the default value of auto.simplifyOutput from true to false (#522, PR #518). With simplifyOutput set to true, the resulting Map could be simplified into a File or a List[File] depending on the number of outputs. To replicate the previous behaviour, add the following config mod to _viash.yaml:

    +
    config_mods: |
    +  .platforms[.type == 'nextflow'].auto.simplifyOutput := true
  • +
  • VDSL3Helper.nf: Removed from the Viash jar file (PR #518). Its functions have been moved to WorkflowHelper.nf.

  • +
  • DataflowHelper.nf: Added deprecation warning to functions from this file (PR #518).

  • +
  • preprocessInputs() in WorkflowHelper.nf: Added deprecation warning to preprocessInputs() because this function causes a synchronisation event (PR #518).

  • +
  • author.props: Removed deprecated props field (PR #536). Deprecated since 0.7.4.

  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • dependencies: Add dependencies and repositories to functionality (PR #509). The new functionality allows specifying dependencies and where to retrieve (repositories) them in a component, and subsequentially allows advanced functionality to be offloaded and re-used in scripts and projects. This is alike e.g. npm, pip and many others. A big difference is that we aim to provide the needed boilerplate code to ease the usage of the dependencies in scripts, workflows and pipelines. Note that the dependency is required to be a built Viash component or project and not a random file or code project found externally. This is needed to provide the necessary background information to correctly link dependencies into a component.

  • +
  • NextflowScript & NextflowPlatform: Merged code for merging the main.nf files for VDSL3 components and wrapped Nextflow workflows (PR #518). By aligning the codebase for these two, wrapped Nextflow workflows are more similar to VDSL3 components. For example, you can override the behaviour of a wrapped Nextflow workflow using the .run() method. Status of a workflows .run() arguments:

    +
      +
    • Works as intended: auto.simplifyInput, auto.simplifyOutput, fromState, toState, map, mapData, mapPassthrough, filter, auto.publish = "state"
    • +
    • Does not work (yet): auto.transcript, auto.publish = true, directives, debug.
    • +
    +

    In a next PR, each of the dependencies will have their values overridden by the arguments of the .run.

  • +
  • NextflowPlatform: The data passed to the input of a component and produced as output by the component are now validated against the arguments defined in the Viash config (PR #518).

  • +
  • NextflowPlatform: Use stageAs to allow duplicate filenames to be used automatigically (PR #518).

  • +
  • NextflowPlatform: When wrapping Nextflow workflows, throw an error if the IDs of the output channel doesn’t match the IDs of the input channel (PR #518). If they don’t, the workflow should store the original ID of the input tuple in the in the _meta.join_id field inside the state as follows: Example input event: ["id", [input: file(...)]], Example output event: ["newid", [output: file(...), _meta: [join_id: "id"]]]

  • +
  • NextflowPlatform: Added new .run() argument runIf - a function that determines whether the module should be run or not (PR #553). If the runIf closure evaluates to true, then the module will be run. Otherwise it will be passed through without running.

  • +
+
+
+

MAJOR CHANGES

+
    +
  • WorkflowHelper.nf: The workflow helper was split into different helper files for each of the helper functions (PR #518). For now, these helper files are pasted together to recreate the WorkflowHelper.nf. In Viash development environments, don’t forget to run ./configure to start using the updated Makefile.

  • +
  • NextflowPlatform: Set default tag to "$id" (#521, PR #518).

  • +
  • NextflowPlatform: Refactoring of helper functions (PR #557).

    +
      +
    • Cleaned up processConfig(): Removed support for functionality.inputs and functionality.outputs
    • +
    • Cleaned up processConfig(): Removed support for .functionality.argument_groups[].argument containing a list of argument ids as opposed to the arguments themselves.
    • +
    • Rewrote --param_list parser.
    • +
    • Removed unused function applyConfig() and applyConfigToOneParamSet().
    • +
    • Refactored channelFromParams() to make use of new helper functions.
    • +
    • Removed deprecated paramsToChannel(), paramsToList(), viashChannel().
    • +
    • Deprecated preprocessInputs() – use the wrapped Viash Nextflow functionality instead.
    • +
    • Refactored preprocessInputs() to make use of new helper functions.
    • +
    • Deprecated run arguments map, mapData, mapPassthrough, renameKeys.
    • +
  • +
+
+
+

MINOR CHANGES

+
    +
  • NextflowPlatform: Throw error when unexpected keys are passed to the .run() method (#512, PR #518).

  • +
  • NextflowPlatform: Use moduleDir instead of projectDir to determine the resource directory.

  • +
  • NextflowPlatform: Rename internal VDSL3 variables to be more consistent with regular Viash component variables and avoid naming clashes (PR #553).

  • +
+
+
+

DOCUMENTATION

+
    +
  • Minor fixes to VDSL3 reference documentation (PR #508).
  • +
+
+
+

BUG FIXES

+
    +
  • WorkflowHelper.nf: Only set default values of output files which are not already set, and if the output file argument is not required (PR #514).

  • +
  • NextflowPlatform: When using fromState and toState, do not throw an error when the state or output is missing an optional argument (PR #515).

  • +
  • export cli_autocomplete: Fix output script format and hide --loglevel and --colorize (PR #544). Masked arguments are usable but might not be very useful to always display in help messages.

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.8.0/ + Sun, 22 Oct 2023 22:00:00 GMT +
+ + Viash 0.7.5 + Viash Team + https://viash.io/blog/posts/viash-0.7.5/ + +

What’s new?

+

This release contains minor breaking change due to deprecated or outdated functionality being removed.

+

New functionality includes:

+
    +
  • Export a JSON schema for the Viash config with viash export json_schema

  • +
  • Export a Bash or Zsh autocomplete script with viash export cli_autocomplete

  • +
  • Nextflow VDSL3 modules now have a fromState and toState argument to allow for better control of the data that gets passed to the module and how the state is managed in a Nextflow workflow.

  • +
+ +
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • viash export cli_schema: Added --format yaml/json argument, default format is now a YAML (PR #448).

  • +
  • viash export config_schema: Added --format yaml/json argument, default format is now a YAML (PR #448).

  • +
  • NextflowLegacyPlatform: Removed deprecated code (PR #469).

  • +
  • viash_*: Remove legacy viash_build, viash_test and viash_push components (PR #470).

  • +
  • ComputationalRequirements, Functionality, DockerPlatform, DockerRequirements: Remove documentation of removed fields (PR #477).

  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • viash export json_schema: Export a json schema derived from the class reflections and annotations already used by the config_schema (PR #446).

  • +
  • viash export config_schema: Output default values of member fields (PR #446).

  • +
  • CI: Test support for different Java versions on GitHub Actions (PR #456). Focussing on LTS releases starting from 11, so this is 11 and 17. Also test latest Java version, currently 20.

  • +
  • viash test and viash ns test: add --setup argument to determine the docker build strategy before a component is tested (PR #451).

  • +
  • viash export cli_autocomplete: Export a Bash or Zsh autocomplete script (PR #465 & #482).

  • +
  • help message: Print the relevant help message of (sub-)command when --help is given as an argument instead of only printing the help message when it is the leading argument and otherwise silently disregarding it (initially added in PR #472, replaced by PR #496). This is a new feature implemented in Scallop 5.0.0.

  • +
  • Logging: Add a Logger helper class (PR #485 & #490). Allows manually enabling or disabling colorizing TTY output by using --colorize. Add provisions for adding debugging or trace code which is not outputted by default. Changing logging level can be changed with --loglevel. These CLI arguments are currently hidden.

  • +
  • NextflowPlatform: Nextflow VDSL3 modules now have a fromState and toState argument to allow for better control of the data that gets passed to the module and how the state is managed in a Nextflow workflow (#479, PR #501).

  • +
+
+
+

MINOR CHANGES

+
    +
  • PythonScript: Pass -B to Python to avoid creating *.pyc and *.pyo files on importing helper functions (PR #442).

  • +
  • viash config: Special double values now support +.inf, -.inf or .nan values (PR #446 and PR #450). The stringified versions "+.inf", "-.inf" or ".nan" are supported as well. This is in line with the yaml spec.

  • +
  • system environment variables: Add wrapper around sys.env and provide access to specific variables (PR #457). Has advantages for documentation output and testbenches.

  • +
  • testbench: Added some minor testbenches to tackle missing coverage (PR #459, #486, #488, #489, #492 & #494).

  • +
  • viash export config_schema: Simplify file structure (PR #464).

  • +
  • helpers.Format: Add a helper for the Format helper object (PR #466).

  • +
  • testbench: Use config deriver to create config variants for testing (PR #498). This reduces the amount of config files that need to be maintained.

  • +
+
+
+

BUG FIXES

+
    +
  • viash config: Validate Viash config Yaml files better and try to give a more informative error message back to the user instead of a stack trace (PR #443).

  • +
  • viash ns build: Fix the error summary when a setup or push failure occurs. These conditions were not displayed and could cause confusion (PR #447).

  • +
  • testbench: Fix the viash version switch test bench not working for newer Java versions (PR #452).

  • +
  • malformed input exception: Capture MalformedInputExceptions when thrown by reading files with invalid Ascii characters when unsupported by Java (PR #458).

  • +
  • viash project file parsing: Give a more informative message when the viash project file fails to parse correctly (PR #475).

  • +
  • DockerPlatform: Fix issue when mounting an input or output folder containing spaces (PR #484).

  • +
  • Config mod: Fix a config mod where the filter should execute multiple deletes (PR #503).

  • +
+
+
+

DOCUMENTATION

+
    +
  • NextflowPlatform: Add documentation for the usage and arguments of a VDSL3 module (PR #501).
  • +
+
+
+

INTERNAL CHANGES

+
    +
  • NextflowVDSL3Platform: Renamed to NextflowPlatform (PR #469).

  • +
  • Rename mentions of NextFlow to Nextflow (PR #476).

  • +
  • Reference static pages: Move .qmd files from the website to a local folder here; docs/reference (PR #504). This way we can track behaviour changes that need to be documented locally.

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.7.5/ + Thu, 10 Aug 2023 22:00:00 GMT +
+ + Viash 0.7.4 + Viash Team + https://viash.io/blog/posts/viash-0.7.4/ + +

What’s new?

+

Some small fixes and consistency improvements. A few Quality of Life improvements were made e.g. to override the Docker entrypoint when working with Nextflow and providing default labels when building a Nextflow workflow.

+ +
+

Full changelog

+
+

NEW FUNCTIONALITY

+
    +
  • Add default labels in Nextflow config files that set default values for cpu and memory settings (PR #412). Values are more or less logarithmically spaced (1, 2, 5, 10, …).

  • +
  • Author: Added info field to authors. Deprecated props field (PR #423).

  • +
  • viash config view and viash ns list: Set the .info.output path when a platform argument is provided.

  • +
  • viash ns exec: Added two more fields:

    +
      +
    • {output}: path to the destination directory when building the component
    • +
    • {abs-output}: absolute path to the destination directory when building the component
    • +
  • +
  • DockerPlatform: Add entrypoint and cmd parameters to the docker platform config that allows overriding the default docker container settings (PR #432).

  • +
+
+
+

MINOR CHANGES

+
    +
  • Nextflow VDSL3:

    +
      +
    • Add profiles to the Nextflow Config file when the main script is a NextflowScript (#408).
    • +
    • Add a script parameter in Nextflow Config file to add a single string or list of strings to the nextflow.config (PR #430).
    • +
  • +
  • Scripts: Remove the entrypoint parameter for all script types except NextflowScript (#409). All these scripts had to check individually whether the parameter was unset, now it can be done in the Script apply method.

  • +
  • schema export:

    +
      +
    • Restructure Nextflow-Directives, -Auto and -Config into a nextflowParameters group (PR #412). Previously only NextflowDirectives was exposed.
    • +
    • Restructure the format to group authors & computational requirements together with functionality (PR #426).
    • +
    • Restructure the Viash Config and Project Config pages under a config category (PR #426).
    • +
    • Add references in Functionality and Nextflow VDSL3 to the new documentation pages (PR #426).
    • +
    • Add description and/or examples for platforms and requirements (PR #428).
    • +
  • +
+
+
+

BUG FIXES

+
    +
  • viash config inject: Fix an empty line being added at the script start for each time viash config inject was run (#377).

  • +
  • WorkflowHelper: Fixed an issue where passing a remote file URI (for example http:// or s3://) as param_list caused No such file errors.

  • +
  • BashWrapper: Fix escaping of the included script where a line starting with a pipe character with optional leading spaces is stripped of the leading spaces and pipe character. This was quite unlikely to happen except when viash config inject was called on a Nextflow Script, which lead to no real config code being injected however workflows were getting corrupted. (#421)

  • +
  • Deprecation testbench: Add missing classes to be checked (PR #426).

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.7.4/ + Tue, 30 May 2023 22:00:00 GMT +
+ + Viash 0.7.3 + Viash Team + https://viash.io/blog/posts/viash-0.7.3/ + +

What’s new?

+

Fix minor issues in the documentation and with the way parent paths of resources are printed a config view.

+ +
+

Full changelog

+
+

BUG FIXES

+
    +
  • DockerPlatform: Fixed example in documentation for the namespace_separator parameter (PR #396).

  • +
  • viash config view: Resource parent paths should be directories and not file (PR #398).

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.7.3/ + Tue, 18 Apr 2023 22:00:00 GMT +
+ + Viash 0.7.2 + Viash Team + https://viash.io/blog/posts/viash-0.7.2/ + +

What’s new?

+

This update adds functionality to resolve paths starting with a slash as relative to the project directory, improves handling of info metadata in the config, and fixes to the operator precedence of config mods.

+ +
+

Full changelog

+
+

NEW FUNCTIONALITY

+
    +
  • Resolve resource and merge paths starting with a slash (/) as relative to the project directory (PR #380). To define absolute paths (which is not recommended anyway), prefix the path with the file:// protocol. Examples:

    +
      +
    • /foo is a file or directory called foo in the current project directory.
    • +
    • file:/foo is a file or directory called foo in the system root.
    • +
  • +
+
+
+

MINOR CHANGES

+
    +
  • viash config view: Do not modify (e.g. strip empty fields) of the .functionality.info and .functionality.arguments[].info fields (#386).
  • +
+
+
+

BUG FIXES

+
    +
  • ConfigMods: Fix operator precedence issues with conditions in the config mod parsers (PR #390).
  • +
+
+
+

INTERNAL CHANGES

+
    +
  • Clean up unused code (PR #380).

  • +
  • Move circe encoders/decoders for File and Path from io.viash.functionality.arguments to io.viash.helpers.circe (PR #380).

  • +
  • Store the project root directory (that is, the directory of the _viash.yaml) in a ViashProject object (PR #380).

  • +
  • Tests: Reworked language tests to be grouped in their own subfolder and split off the bash language test from the general testbash folder (PR #381).

  • +
  • Tests: Add additional language tests for viash config inject (PR #381).

  • +
  • Tests: Added test for io.viash.helpers.IO (PR #380).

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.7.2/ + Sun, 16 Apr 2023 22:00:00 GMT +
+ + Viash 0.7.1 + Viash Team + https://viash.io/blog/posts/viash-0.7.1/ + +

What’s new?

+

This is a minor release which improves caching in VDSL3 components and changes the formats of the schema files for the Viash config and CLI.

+ +
+

Full changelog

+
+

MINOR CHANGES

+
    +
  • DataflowHelper: Add assertions and defs.
  • +
+
+
+

BUG FIXES

+
    +
  • VDSL3: Only the first two elements from an event in a channel are now passed to a process. This avoids calculating cache entries based on arguments that are not used by the process, causing false-negative cache misses.

  • +
  • config_schema:

    +
      +
    • Correct some incorrect markdown tags.
    • +
    • Add project config.
    • +
    • Correct documentation/markdown tags to the correct order.
    • +
    • Add summary description and example for ‘resource’ and ‘argument’, to be used on the reference website.
    • +
    • Add documentation for the Nextflow directives.
    • +
  • +
  • cli_schema: Correct documentation/markdown tags to the correct order.

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.7.1/ + Tue, 07 Mar 2023 23:00:00 GMT +
+ + Viash 0.7.0 + Viash Team + https://viash.io/blog/posts/viash-0.7.0/ + +

What’s new?

+
    +
  • Default namespace separator has been changed from _ to /. This means Docker images will be named <Registry>/<Organization>/<Namespace>/<Name> by default. For example, ghcr.io/openpipelines-bio/mapping/cellranger_count instead of ghcr.io/openpipelines-bio/mapping_cellranger_count.

  • +
  • Removed deprecated code of unused functionality to simplify code.

    +
      +
    • Shorthand notation for specitying input/output arguments
    • +
    • Shorthand notation for specifying Docker requirements
    • +
    • Legacy Nextflow platform
    • +
  • +
  • Improvements in VDSL3 and the Nextflow Workflow Helper to make behaviour more predictable and fixing some bugs in the meantime. Run the following to get access to the updated helpers:

    +
    WF_DIR="src/wf_utils"
    +[[ -d $WF_DIR ]] || mkdir -p $WF_DIR
    +viash export resource platforms/nextflow/ProfilesHelper.config > $WF_DIR/ProfilesHelper.config
    +viash export resource platforms/nextflow/WorkflowHelper.nf > $WF_DIR/WorkflowHelper.nf
    +viash export resource platforms/nextflow/DataflowHelper.nf > $WF_DIR/DataflowHelper.nf
  • +
  • Improvements to test benches and several bug fixes.

  • +
+ +
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • Viash config: Previously deprecated fields are now removed.

    +
      +
    • functionality.inputs: Use arguments or argument_groups instead.
    • +
    • functionality.outputs: Use arguments or argument_groups instead.
    • +
    • functionality.tests: Use test_resources instead. No functional difference.
    • +
    • functionality.enabled: Use status: enabled instead.
    • +
    • functionality.requirements.n_proc: Use cpus instead.
    • +
    • platforms.DockerPlatform.privileged: Add a --privileged flag in run_args instead.
    • +
    • platforms.DockerPlatform.apk: Use setup: [{ type: apk, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.apt: Use setup: [{ type: apt, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.yum: Use setup: [{ type: yum, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.r: Use setup: [{ type: r, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.python: Use setup: [{ type: python, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.docker: Use setup: [{ type: docker, run: ... }] instead.
    • +
    • platforms.DockerPlatform.docker.setup.resources: Use setup: [{ type: docker, copy: ... }] instead.
    • +
    • platforms.NextflowLegacy: Use the Nextflow VDSL3 platform instead.
    • +
    • functionality.ArgumentGroups: No longer supports strings referring to arguments in the arguments: section. Instead directly put the arguments inside the argument groups.
    • +
  • +
  • viash_install: The bootstrap script has been reworked in line with the project config introduced in 0.6.4:

    +
      +
    • The default location for installing the Viash executable is now ./viash (was: bin/viash).
    • +
    • The new viash_install support --output and --tag.
    • +
    • The various settings that existed in viash_install (organisation, tag, …) are moved to the project config.
    • +
    +

    Please note that this new viash_install bootstrap script can be run from the CLI using:

    +
    curl -fsSL dl.viash.io | bash
    +

    The old get.viash.io is still available but points to the version 0.6.7 version of this component and is deprecated.

  • +
  • WorkflowHelper: paramsToList, paramsToChannel and viashChannel are now deprecated and will be removed in a future release.

  • +
  • viash (ns) build: Change the default value of the namespace separator in a Docker platform from _ to /. Add ".platforms[.type == 'docker'].namespace_separator := '_'" to the project config _viash.yaml to revert to the previous behaviour.

  • +
+
+
+

MAJOR CHANGES

+
    +
  • VDSL3: now uses the newly implemented channelFromParams and preprocessInputs instead of viashChannel.
  • +
+
+
+

NEW FEATURES

+
    +
  • WorkflowHelper: Added preprocessInputs and channelFromParams to replace paramsToList, paramsToChannel and viashChannel. This refactor allows processing parameters that are already in a Channel using preprocessInputs, which is necessary when passing parameters from a workflow to a subworkflow in a Nextflow pipeline.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Main: Capture build, setup and push errors and output an exit code.

  • +
  • File downloading: Add check to pre-emptively catch file errors (e.g. 404).

  • +
  • Scala: Updated to Scala 2.13 and updated several dependencies.

  • +
  • Main: Improve match completeness in some edge cases and throw exceptions where needed.

  • +
  • Changelog: Reformat the changelog to a more structured format. For every release, there is now a date, title, and summary. This both improves the changelog itself but can then also be used to postprocess the CHANGELOG programmatically.

  • +
  • VDSL3: Add a default value for id when running a VDSL3 module as a standalone pipeline.

  • +
  • TestBenches:

    +
      +
    • Verify switching of Viash versions
    • +
    • Prepare ConfigDeriver by copying base resources to the targetFolder. Use cases so far showed that it’s always required and it simplifies the usage.
    • +
    • Remove some old & unmaintained IntelliJ Idea editor-fold tags. Given that the testbenches were split up, these were broken but also no longer needed.
    • +
    • Add 2 testbenches for computational requirements when running viash run or viash test.
    • +
    • Added tests for different values for the --id and --param_list parameters of VDSL3 modules.
    • +
  • +
  • viash test: Use test as a random tag during testing, instead of test plus a random string.

  • +
+
+
+

BUG FIXES

+
    +
  • WorkflowHelper: fixed where passing a relative path as --param_list would cause incorrect resolving of input files.

  • +
  • Testbenches: Fix GitTest testbench to correctly increment temporary folder naming and dispose them after the test finishes.

  • +
  • viash xxx url: Fix passing a url to viash as the config file to process. Add a short testbench to test principle functionality.

  • +
  • Testbenches: Simplify testr container.

  • +
  • Main: Improve error reporting to the user in some cases where files or folders can’t be found. Depending on the thrown exception, more or less context was given.

  • +
  • VDSL3: Create parent directory of output files before starting the script.

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.7.0/ + Mon, 27 Feb 2023 23:00:00 GMT +
+ + Viash 0.6.7 + Viash Team + https://viash.io/blog/posts/viash-0.6.7/ + +

What’s new?

+

Another minor release which contains several quality of life improvements for the Nextflow VDSL3 platform, as well as automated warnings for deprecated functionality.

+ +
+

Full changelog

+
+

MINOR CHANGES

+
    +
  • NextflowPlatform: Create directories during a stub run when output path is a nested directory (PR #314).

  • +
  • Automatically generate a warning for deprecated parameters while parsing a .viash.yaml configuration file using the inline documentation deprecation annotations.

  • +
  • Add a “planned removal” field in the deprecation annotations.

  • +
  • Add testbenches to verify proper formatting of the deprecation versions and compare current version to the planned removal version so no deprecated parameters get to stick around beyond what was planned.

  • +
  • NextflowPlatform: Nextflow processes are created lazily; that is, only when running a Nextflow workflow (PR #321).

  • +
+
+
+

BUG FIXES

+
    +
  • NextflowPlatform: Automatically split Viash config strings into strings of length 65000 since the JVM has a limit (65536) on the length of string constants (PR #323).
  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.6.7/ + Tue, 13 Dec 2022 23:00:00 GMT +
+ + Viash 0.6.6 + Viash Team + https://viash.io/blog/posts/viash-0.6.6/ + +

What’s new?

+

This release fixes an issue where stderr was being redirected to stdout.

+ +
+

Full changelog

+
+

BUG FIXES

+
    +
  • Don’t redirect stderr to stdout when switching Viash versions (#312).
  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.6.6/ + Mon, 05 Dec 2022 23:00:00 GMT +
+ + Viash 0.6.5 + Viash Team + https://viash.io/blog/posts/viash-0.6.5/ + +

What’s new?

+

A small update which fixes an issue with viash ns list that was introduced in Viash 0.6.3.

+ +
+

Full changelog

+
+

BUG FIXES

+
    +
  • viash ns list: When the -p <platform> is defined, filter the output by that platform.
  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.6.5/ + Thu, 01 Dec 2022 23:00:00 GMT +
+ + Viash 0.6.4 + Viash Team + https://viash.io/blog/posts/viash-0.6.4/ + +

What’s new?

+

This release adds features related to managing Viash projects and allows for better runtime introspection of Nextflow VDSL3 modules.

+

The most notable changes are:

+
    +
  • You can switch versions of Viash using the VIASH_VERSION environment variable! Example:

    +
    VIASH_VERSION=0.6.0 viash --version
    +

    More importantly, you can specify the version of Viash you want in a project config. See below for more info.

  • +
  • Introducing Viash project config files as an experimental feature. It allows storing project-related settings in a _viash.yaml config file which you should store at the root of your repository. Example:

    +
    viash_version: 0.6.4
    +source: src
    +target: target
    +config_mods: |
    +  .platforms[.type == 'docker'].target_registry := 'ghcr.io'
    +  .platforms[.type == 'docker'].target_organization := 'viash-io'
    +  .platforms[.type == 'docker'].namespace_separator := '/'
    +  .platforms[.type == 'docker'].target_image_source := 'https://github.com/viash-io/viash'
  • +
  • It’s now possible to specify in which order Viash will merge Viash configs. Example:

    +
    functionality:
    +  name: foo
    +  arguments:
    +    - __merge__: obj_input.yaml
    +      name: "--one"
    +    - __merge__: [., obj_input.yaml]
    +      name: "--two"
    +    - __merge__: [obj_input.yaml, .]
    +     name: "--three"
  • +
+

Please take note of the following breaking changes:

+
    +
  • Passing non-existent paths to a Viash component will cause the component to generate an error when no file or folder is found. Set must_exist to false to revert to the previous behaviour.

  • +
  • The arguments --write_meta/-w and --meta/-m no longer exist, because every viash build/run/test run will generate a .config.vsh.yaml meta file.

  • +
+ +
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • Config: Viash configs whose filenames start with a . are ignored (PR #291).

  • +
  • viash build: --write_meta/-m and --meta/-m arguments have been removed. Instead, the .config.vsh.yaml file is always created when building Viash components (PR #293).

  • +
  • FileArgument: Default setting of must_exist was changed from false to true. As such, the component will throw an error by default if an input file or output file is missing (PR #295).

  • +
  • Config merging: __inherits__ has been renamed to __merge__.

  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • You can switch versions of Viash using the VIASH_VERSION environment variable (PR #304)! Example:

    +
    VIASH_VERSION=0.6.0 viash --version
  • +
  • Traceability: Running viash build and viash test creates a .config.vsh.yaml file by default, which contains the processed config of the component. As a side effect, this allows for reading in the .config.vsh.yaml from within the component to learn more about the component being tested (PR #291 and PR #293).

  • +
  • FileArgument: Added create_parent option, which will check if the directory of an output file exists and create it if necessary (PR #295).

  • +
+
+
+

MINOR CHANGES

+
    +
  • viash run, viash test: When running or testing a component, Viash will add an extension to the temporary file that is created. Before: /tmp/viash-run-wdckjnce, now: /tmp/viash-run-wdckjnce.py (PR #302).

  • +
  • NextflowPlatform: Add DataflowHelper.nf as a retrievable resource in Viash (PR #301).

  • +
  • NextflowPlatform: During a stubrun, argument requirements are turned off and the publishDir, cpus, memory, and label directives are also removed from the process (PR #301).

  • +
  • NextflowPlatform: Added a filter processing argument to filter the incoming channel after the map, mapData, mapId and mapPassthrough have been applied (PR #296).

  • +
  • NextflowPlatform: Added the Viash config to the Nextflow module for later introspection (PR #296). For example:

    +
    include { foo } from "$targetDir/path/foo/main.nf"
    +
    +foo.run(filter: { tup ->
    +  def preferredNormalization = foo.config.functionality.info.preferred_normalization
    +  tup.normalization_id == preferredNormalization
    +})
    +

    BUG FIXES

  • +
  • BashWrapper: Don’t overwrite meta values when trailing arguments are provided (PR #295).

  • +
+
+
+

EXPERIMENTAL FEATURES

+
    +
  • Viash Project: Viash will automatically search for a _viash.yaml file in the directory of a component and its parent directories (PR #294).

    +

    Contents of _viash.yaml:

    +
    source: src
    +target: target
    +config_mods: |
    +  .platforms[.type == 'docker'].target_registry := 'ghcr.io'
    +  .platforms[.type == 'docker'].target_organization := 'viash-io'
    +  .platforms[.type == 'docker'].namespace_separator := '/'
    +  .platforms[.type == 'docker'].target_image_source := 'https://github.com/viash-io/viash'
  • +
  • Config merging: Allow specifying the order in which Viash will merge configs (PR #289). If . is not in the list of inherited objects, it will be added at the end.

    +

    Contents of config.vsh.yaml:

    +
    functionality:
    +  name: foo
    +  arguments:
    +    - __merge__: obj_input.yaml
    +      name: "--one"
    +    - __merge__: [., obj_input.yaml]
    +      name: "--two"
    +    - __merge__: [obj_input.yaml, .]
    +      name: "--three"
    +

    Contents of obj_input.yaml:

    +
    type: file
    +name: --input
    +description: A h5ad file
    +

    Output of viash config view config.vsh.yaml (stripped irrelevant bits):

    +
    functionality:
    +  arguments:
    +  - type: "file"
    +    name: "--one"
    +    description: "A h5ad file"
    +  - type: "file"
    +    name: "--input"
    +    description: "A h5ad file"
    +  - type: "file"
    +    name: "--three"
    +    description: "A h5ad file"
  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.6.4/ + Tue, 29 Nov 2022 23:00:00 GMT +
+ + Viash 0.6.3 + Viash Team + https://viash.io/blog/posts/viash-0.6.3/ + +

What’s new?

+

This release features contains mostly quality of life improvements and some experimental functionality. Most notably:

+
    +
  • viash ns list now only returns a config just once instead of once per platform.

  • +
  • A functionality’s info field can contain any data structures. An .info field was added to arguments as well.

  • +
  • Bug fixes for using Viash with podman, Nextflow>=22.10 and R<4.0.

  • +
  • Experimental support for inheriting from config partials.

  • +
+ +
+

Full changelog

+
+

MAJOR CHANGES

+
    +
  • Config: Made major internal changes w.r.t. how config files are read and at which point a platform (native, docker, nextflow) is applied to the functionality script. The only visible side effect is that viash ns list will output each config only once instead of multiple times.

  • +
  • Functionality: Structured annotation can be added to a functionality and its arguments using the info field. Example:

    +
    functionality:
    +  name: foo
    +  info:
    +    site: https://abc.xyz
    +    tags: [ one, two, three ]
    +  arguments:
    +    - name: --foo
    +      type: string
    +      info:
    +        foo: bar
    +        a:
    +          b:
    +            c
  • +
+
+
+

MINOR CHANGES

+
    +
  • BashWrapper: Allow printing the executor command by adding ---verbose ---verbose to a viash run or an executable.

  • +
  • Testbenches: Rework MainBuildAuxiliaryNativeParameterCheck to create stimulus files and loop over the file from bash instead of looping natively. This prevents creating thousands of new processes which would only test a single parameter. Note this still calls the main script for each stimulus separately, but that was the case anyway, only much much worse.

  • +
  • Testbenches: Split some grouped test benches into slightly smaller test benches that group tested functionality better.

  • +
  • Annotations: Complete the config schema annotations. Make sure all arguments are documented. Added an annotation internalFunctionality and undocumented for arguments that should not be documented. Added a testbench that verifies that all arguments are in fact annotated, skipping those that are not in the class constructor. Adds a hierarchy field in the __this__ member to list the relation of the own and parent classes.

  • +
  • Testbenches: Add exit code to helper method testMainWithStdErr.

  • +
  • Testbenches: Add testbench to verify viash underscore components (viash_build, viash_install, viash_push, viash_skeleton, viash_test).

  • +
  • Testbenches: Update viash underscore component tests to use $meta_executable.

  • +
  • viash ns exec: Allow choosing whether the {platform} field should be filled in, based on the --apply_platform parameter.

  • +
+
+
+

BUG FIXES

+
    +
  • DockerPlatform: Remove duplicate auto-mounts (#257).

  • +
  • Underscore component tests: Fix tests for viash_skeleton and viash_test components.

  • +
  • NextflowVDSL3Platform: Fix ‘Module scriptPath has not been defined yet’ error when Nextflow>=22.10 (#269).

  • +
  • config inject: Doesn’t work when must_exist == true (#273).

  • +
  • RScript: Fix compatibility issue where the new character escaping in r_script required R>=4.0 (#275). Escaping is now handled without using the new r'(foo)' notation.

  • +
+
+
+

DEPRECATION

+
    +
  • DockerRequirements: The resources: setting has been deprecated and will be removed in Viash 0.7.0. Please use copy: instead.

  • +
  • DockerRequirements: The privileged: setting has been deprecated and will be removed in Viash 0.7.0. Please use run_args: "--privileged" instead.

  • +
+
+
+

EXPERIMENTAL FUNCTIONALITY

+
    +
  • Config: Any part of a Viash config can use inheritance to fill data (PR #271). For example: Contents of src/test/config.vsh.yaml:

    +
    __inherits__: ../api/base.yaml
    +functionality:
    +  name: test
    +  resources:
    +    - type: bash_script
    +      path: script.sh
    +      text: |
    +        echo Copying $par_input to $par_output
    +        cp $par_input $par_output
    +

    Contents of src/api/base.yaml:

    +
    functionality:
    +  arguments:
    +    - name: "--input"
    +      type: file
    +    - name: "--output"
    +      type: file
    +      direction: output
    +

    The resulting yaml will be:

    +
    functionality:
    +  name: test
    +  arguments:
    +    - name: "--input"
    +      type: file
    +    - name: "--output"
    +      type: file
    +      direction: output
    +  resources:
    +    - type: bash_script
    +      path: script.sh
    +      text: |
    +        echo Copying $par_input to $par_output
    +        cp $par_input $par_output
  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.6.3/ + Tue, 08 Nov 2022 23:00:00 GMT +
+ + Viash 0.6.2 + Viash Team + https://viash.io/blog/posts/viash-0.6.2/ + +

What’s new?

+

This is a quick release to push two bug fixes related to security and being able to run Nextflow with optional output files.

+ +
+

Full changelog

+
+

BUG FIXES

+
    +
  • Git: Strip credentials from remote repositories when retrieving the path.

  • +
  • VDSL3: Allow optional output files to be null.

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.6.2/ + Mon, 10 Oct 2022 22:00:00 GMT +
+ + Viash 0.6.1 + Viash Team + https://viash.io/blog/posts/viash-0.6.1/ + +

What’s new?

+

This release contains mostly minor improvements of functionality released in Viash 0.6.0. Most notably:

+
    +
  • Support was added for type: long arguments

  • +
  • meta["n_proc"] has been renamed to meta["cpus"]. meta["cpus"] is now an integer, whereas meta["memory_*"] are now longs.

  • +
  • viash ns exec is able to recognise {platform} and {namespace} fields.

  • +
  • And various bug fixes and improvements to documentation and unit testing.

  • +
+ +
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • Deprecated usage resources_dir variable inside scripts, use meta["resources_dir"] instead (or $meta_resources_dir in Bash, or meta$resources_dir in R).

  • +
  • Deprecated meta["n_proc"] in favour for meta["cpus"].

  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • viash ns exec: Added two more fields:

    +
      +
    • {platform}: the platform name (if applicable)
    • +
    • {namespace}: the namespace of the component
    • +
  • +
  • LongArgument: Added support for 64-bit integers with type: long as opposed to type: integer which are 32-bit integers.

  • +
+
+
+

MAJOR CHANGES

+
    +
  • Allow passing integers/doubles/booleans to string parameters (#225). Removed the ‘Version’ helper class.
  • +
+
+
+

MINOR CHANGES

+
    +
  • meta["cpus"] is now an integer, meta["memory_*"] are now longs (#224).

  • +
  • DockerPlatform: Only store author names in the authors metadata.

  • +
  • NextflowPlatform: Only store author names in the authors metadata.

  • +
  • Argument[_]: Turn multiple_sep from Char into String.

  • +
+
+
+

INTERNAL CHANGES

+
    +
  • All meta[...] variables are now processed similar to Argument[_]s, instead of using custom code to convert object types and detect Docker mounts.

  • +
  • Escaper: Make more generic Escaper helper class.

  • +
+
+
+

DOCUMENTATION

+
    +
  • Hardcoded URLs pointing to viash.io in the documentation annotations were replaced with a new keyword system.

  • +
  • Replaced references to “DSL” with “Dynamic Config Modding” in the --help output.

  • +
  • Added an example for Ruby based Docker setups.

  • +
+
+
+

BUG FIXES

+
    +
  • viash ns: Reverse exit code outputs, was returning 1 when everything was OK and 0 when errors were detected (PR #227).

  • +
  • viash config inject: Fix processing of arguments when argument groups are defined (#231).

  • +
  • Fixed a few typos in the CLI.

  • +
  • Fixed the formatting of ns exec documentation.

  • +
  • VDSL3: Fix stub functionality.

  • +
  • VDSL3: Fix error during error message.

  • +
  • viash test: Fix issue where VIASH_TEMP could not be a relative directory when running viash test (#242).

  • +
  • BashScript, CSharpScript, JavaScriptScript, PythonScript, RScript, ScalaScript: Fix quoting issues of certain characters (#113).

  • +
+
+
+

DEPRECATION

+
    +
  • NextflowPlatform: Deprecate --param_list_format parameter.
  • +
+
+
+

TESTING

+
    +
  • BashScript, CSharpScript, JavaScriptScript, PythonScript, RScript, ScalaScript: Implement more rigorous testing of which characters are escaped.

  • +
  • BashWrapper: Escape usage of multiple_sep. This fixes various checks and transformations not working when when multiple_sep is set to ";" (#235).

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.6.1/ + Sun, 02 Oct 2022 22:00:00 GMT +
+ + Viash 0.6.0 + Viash Team + https://viash.io/blog/posts/viash-0.6.0/ + +

What’s new?

+

The first (major) release this year! The biggest changes are:

+
    +
  • Nextflow VDSL3 is now the default Nextflow platform, whereas the legacy Nextflow platform has been deprecated.

  • +
  • Support for tracking memory and cpu requirements more elegantly.

  • +
  • Grouping arguments in groups more concisely.

  • +
  • The addition of a viash ns exec command, to be able to execute commands on Viash components more easily.

  • +
+ +
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • NextflowPlatform: variant: vdsl3 is now the default NextflowPlatform. variant: legacy has been deprecated.

  • +
  • Functionality: Fields .inputs and .outputs has been deprecated. Please use .argument_groups instead (#186). Before:

    +
    functionality:
    +  inputs:
    +    - name: "--foo"
    +  outputs:
    +    - name: "--bar"
    +

    Now:

    +
    functionality:
    +  argument_groups:
    +    - name: Inputs
    +      arguments:
    +        - name: "--foo"
    +          type: file
    +    - name: Outputs
    +      arguments:
    +        - name: "--bar"
    +          type: file
    +          direction: output
  • +
  • Passing strings to an argument group’s arguments has been deprecated. Please simply copy the argument itself into the argument group (#186). Before:

    +
    functionality:
    +  arguments:
    +    - name: "--foo"
    +      type: file
    +    - name: "--bar"
    +      type: file
    +      direction: output
    +  argument_groups:
    +    - name: Inputs
    +      arguments: [ foo ]
    +    - name: Outputs
    +      arguments: [ bar ]
    +

    Now:

    +
    functionality:
    +  argument_groups:
    +    - name: Inputs
    +      arguments:
    +        - name: "--foo"
    +          type: file
    +    - name: Outputs
    +      arguments:
    +        - name: "--bar"
    +          type: file
    +          direction: output
  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • Allow setting the number of processes and memory limit from within the Viash config, as well as a list of required commands. Example:

    +
    functionality:
    +name: foo
    +requirements:
    +  cpus: 10
    +  memory: 10GB
    +  commands: [ bash, r, perl ]
    +

    You can override the default requirements at runtime:

    +
      +
    • ./foo ---cpus 4 ---memory 100PB (for NativePlatform or DockerPlatform)
    • +
    • By adding process.cpus = 4 and process.memory "100 PB" to a nextflow.config (for NextflowPlatform)
    • +
    +

    This results the following meta variables to be injected into a script:

    +
      +
    • meta_cpus (in Bash) or meta["cpus"] (in any other language): Number of processes the script is allowed to spawn.
    • +
    • meta_memory_b (in Bash) or meta["memory_b"] (in any other language): Amount of memory the script is allowed to allocate, in bytes.
    • +
    • meta_memory_kb (in Bash) or meta["memory_kb"] (in any other language): Same but in kilobytes, rounded up.
    • +
    • meta_memory_mb (in Bash) or meta["memory_mb"] (in any other language): Same but in megabytes, rounded up.
    • +
    • meta_memory_gb (in Bash) or meta["memory_gb"] (in any other language): Same but in gigabytes, rounded up.
    • +
    • meta_memory_tb (in Bash) or meta["memory_tb"] (in any other language): Same but in terabytes, rounded up.
    • +
    • meta_memory_pb (in Bash) or meta["memory_pb"] (in any other language): Same but in petabytes, rounded up.
    • +
  • +
  • viash ns exec: Added a command for executing arbitrary commands for all found Viash components. The syntax of this command is inspired by find . -exec echo {} \;.

    +

    The following fields are automatically replaced:

    +
      +
    • {} | {path}: path to the config file
    • +
    • {abs-path}: absolute path to the config file
    • +
    • {dir}: path to the parent directory of the config file
    • +
    • {abs-dir}: absolute path to the directory of the config file
    • +
    • {main-script}: path to the main script (if any)
    • +
    • {abs-main-script}: absolute path to the main script (if any)
    • +
    • {functionality-name}: name of the component
    • +
    +

    A command suffixed by \; (or nothing) will execute one command for each of the Viash components, whereas a command suffixed by + will execute one command for all Viash components.

  • +
  • ConfigMod: Added a del(...) config mod to be able to delete a value from the yaml. Example: del(.functionality.version).

  • +
+
+
+

MAJOR CHANGES

+
    +
  • Folder structure: Adjusted the folder structure to correctly reflect the the namespace change of viash from com.dataintuitive.viash to io.viash.

  • +
  • Functionality: Reworked the enabled field from boolean to a status field which can have the following statusses: enabled, disabled and deprecated. When parsing a config file which has the status field set to deprecated a warning message is displayed on stderr. Backwards for enabled is provided where enabled: true => status: enabled and enabled: false => status: false. The enabled field is marked deprecated.

  • +
+
+
+

MINOR CHANGES

+
    +
  • Resources: Handle edge case when no resources are specified in the vsh.yaml config file and display a warning message.

  • +
  • BashWrapper: Add a warning when an argument containing flags (e.g. --foo) is not recognized and will be handled as a positional argument as this is likely a mistake.

  • +
  • Functionality: Add check to verify there are no double argument names or short names in the config vsh.yaml declarations.

  • +
  • BashWrapper: Add check to verify a parameter isn’t declared twice on the CLI, except in the case multiple: true is declared as then it’s a valid use case.

  • +
  • BashWrapper: For int min/max checking: use native bash functionality so there is no dependency to bc. For double min/max checking: add fallback code to use awk in case bc is not present on the system (most likely to happen when running tests in a docker container).

  • +
  • viash ns list/viash config view: Allow viewing the post-processed argument groups by passing the --parse_argument_groups parameter.

  • +
+
+
+

TESTING

+
    +
  • ConfigMod: Added unit tests for condition config mods.

  • +
  • MainTestDockerSuite: Derive config alternatives from the base vsh.yaml instead of adding the changes in separate files. This both reduces file clutter and prevents having to change several files when there are updates in the config format.

  • +
  • GitTest: Added unit tests for Git helper (PR #216).

  • +
+
+
+

BUG FIXES

+
    +
  • csharp_script, javascript_script, python_script, r_script, scala_script: Make meta fields for memory and cpus optional.

  • +
  • NextflowVdsl3Platform: Don’t generate an error when --publish_dir is not defined and -profile no_publish is used.

  • +
  • Viash run: Viash now properly returns the exit code from the executed script.

  • +
  • Git: Fix incorrect metadata when git repository is empty (PR #216).

  • +
+ + +
+
+ + ]]>
+ New Release + https://viash.io/blog/posts/viash-0.6.0/ + Tue, 06 Sep 2022 22:00:00 GMT +
+
+
diff --git a/_versioned/0_8_5/blog/posts/say-hello/index.html b/_versioned/0_8_5/blog/posts/say-hello/index.html new file mode 100644 index 00000000..82165457 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/say-hello/index.html @@ -0,0 +1,665 @@ + + + + + + + + + + + +Viash - Say hello to Viash 👋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Say hello to Viash 👋

+

Introducing Viash, helping you turn a script into a reusable and reproducible Nextflow module to use in your pipelines.

+
+
News
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

May 13, 2020

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +

Look out for more info soon!

+

+ + + +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.0.1/index.html b/_versioned/0_8_5/blog/posts/viash-0.0.1/index.html new file mode 100644 index 00000000..23e04999 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.0.1/index.html @@ -0,0 +1,675 @@ + + + + + + + + + + + +Viash - Viash 0.0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.0.1

+

Initial release

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

May 5, 2020

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
    +
  • Initial proof of concept.
  • +
+ + +
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.1.0/index.html b/_versioned/0_8_5/blog/posts/viash-0.1.0/index.html new file mode 100644 index 00000000..e4fafc17 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.1.0/index.html @@ -0,0 +1,729 @@ + + + + + + + + + + + +Viash - Viash 0.1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.1.0

+

Changes to functionality and the native/docker platforms

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

May 14, 2020

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
+

Changes to functionality.yaml

+
    +
  • ftype has been renamed to function_type. The value for this field is also being checked.
  • +
  • platform has been removed.
  • +
  • Instead, the first resource listed is expected to have type: r_script, type: bash_script, type: python_script, or type: executable. The other resources are expected to have type: file by default, and are left untouched by Viash.
  • +
  • in the arguments, field flagValue has been removed. Instead, use type: boolean_true and type: boolean_false to achieve the same effect.
  • +
+
+
+

Changes to platform_(docker/native).yaml

+
    +
  • The r: packages: field has been renamed to r: cran:.
  • +
+
+
+
+

Full changelog

+
+

MAJOR CHANGES

+
    +
  • Refactoring of the Functionality class as discussed in VIP1 (#1). This has resulted in a lot of internal changes, but the changes with regard to the yaml definitions are relatively minor. See the section below for more info.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Updated the functionality.yamls under atoms/ and src/test/ to reflect these aforementioned changes.
  • +
  • Allow for bioconductor and other repositories in the R environment.
  • +
  • Add support for pip versioning syntax.
  • +
+
+
+

BUG FIXES

+
    +
  • Do not quote passthrough flags.
  • +
  • Allow for spaces inside of Docker volume paths.
  • +
+
+
+

DOCUMENTATION

+
    +
  • Updated the README.md.
  • +
  • Provide some small examples at doc/examples.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.2.0/index.html b/_versioned/0_8_5/blog/posts/viash-0.2.0/index.html new file mode 100644 index 00000000..a8d61b4c --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.2.0/index.html @@ -0,0 +1,819 @@ + + + + + + + + + + + +Viash - Viash 0.2.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.2.0

+

Autoresolve docker paths

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

September 1, 2020

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
+

Changes to functionality metadata

+
    +
  • Added version attribute
  • +
+
+

Autoresolve docker paths

+

Arguments of type: file are processed to automatically create a mount in docker. More specifically, when you pass an argument value: --input /path/to/file, this will be processed such that the following parameters are passed to docker:

+
docker run -v /path/to:/viash_automount/path/to ... --input /viash_automount/path/to/file
+

If, for some reason, you need to manually specify a mount, you can do this with ---mount /path/to/mount:/mymount.

+
+
+

Argument multiplicity

+

For all parameter types (except for boolean_true and boolean_false), you can specify multiple: true in order to turn this argument into an array-based argument. What this does is allow you to pass multiple values for this argument, e.g. --input file1 --input file2 --input file3:file4:file5.

+

The default separator is : but this can be overridden by changing the separator by setting it to multiple_sep: "," (for example).

+
+
+

New format

+

Viash now supports placing the functionality.yaml, platform*.yaml(s) and script into a single file. For example, this could be a merged script.R:

+
#' functionality:
+#'   name: r-estimate
+#'   arguments: ...
+#' platforms:
+#' - type: native
+#' - type: docker
+#'   image: rocker/tidyverse
+library(tidyverse)
+cat("Hello world!\n")
+

Instead of running:

+
viash run -f functionality.yaml -p platform_docker.yaml -- arg1
+

With this format, you can now run:

+
viash run script.R                     # run script.R with the first platform
+viash run -P docker script.R           # run script.R with the platform called 'docker' with the large P argument
+# use small p to override the platform with a custom yaml:
+viash run -p common_resources/platform_docker.yaml script.R
+# note that any arguments for the run command (e.g. -p or -P) should come before the script.R, as script.R is considered a trailing argument.
+
+
+
+
+

Full changelog

+
+

NEW FEATURES

+
    +
  • Allow (optional) version attributes in functionality.yaml and platform.yaml.
  • +
  • Allow testing a component with the viash test functionality. Tests are executed in a temporary directory on the specified platform. The temporary directory contains all the resource and test files.
  • +
  • viash --version: Add flag for printing the version of viash.
  • +
  • Allow fetching resources from URL (http:// and https://)
  • +
  • Allow retrieving functionality and platform YAMLs from URL.
  • +
  • For docker containers, autoresolve path names of files. Use ---v path:path or ---volume path:path to manually mount a specific folder.
  • +
  • Implement parameter multiplicity. Set multiple: true to denote an argument to have higher multiplicity. Run ./cmd --foo one --foo two --foo three:four in order for multiple values to be added to the same parameter list.
  • +
  • Added a new format for defining functionality in which the user passes the script in which the functionality and platforms are listed as yaml headers.
  • +
  • A ---chown flag has been added to Docker executables to automatically change the ownership of output files to the current user.
  • +
  • viash ns build: A command for building a whole namespace.
  • +
  • NXF: Join operations are now fully supported by means of multiple.
  • +
  • NXF: Modules that perform joins can take either arrays (multiple input files or the same type to be joined) or hashes (multiple input files passed using different options on the CLI). Please refer to the docs for more info.
  • +
+
+
+

MAJOR CHANGES

+
    +
  • Remove passthrough parameters.
  • +
  • Since CLI generation is now performed in the outer script, viash pimp has been deprecated.
  • +
  • Write out meta.yaml containing viash run information as well as the original functionality.yaml and platform.yaml content.
  • +
  • Renamed viash export to viash build.
  • +
+
+
+

MINOR CHANGES

+
    +
  • viash run and viash test: Allow changing the temporary directory by defining VIASH_TEMP as a environment variable. Temporary directories are cleaned up after successful executions.
  • +
  • viash run and viash test: Exit(1) when execution or test fails.
  • +
  • viash build: Add -m flag for outputting metadata after build.
  • +
  • viash run: Required parameters can have a default value now. Produce error when a required parameter is not passed, even when a default is provided.
  • +
  • NXF: Modules are now stored under target/nextflow by default
  • +
+
+
+

BUG FIXES

+
    +
  • NXF: Correctly escape path variable when running NXF command.
  • +
  • NXF: Surround parameters with quotes when running NXF command.
  • +
+
+
+

INTERNAL CHANGES

+
    +
  • Move CLI from inner script to outer script.
  • +
  • Renamed Target to Platform
  • +
  • Renamed Environment to Requirements
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.2.1/index.html b/_versioned/0_8_5/blog/posts/viash-0.2.1/index.html new file mode 100644 index 00000000..dded71ef --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.2.1/index.html @@ -0,0 +1,809 @@ + + + + + + + + + + + +Viash - Viash 0.2.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.2.1

+

Docker chown by default

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

September 11, 2020

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
+

Docker chown by default

+

Running a script using a Docker platform will now chown output files by default, as well as any temporary files. You can turn off this feature by specifying chown: false in the yaml of a Docker platform.

+
+
+

[NXF] Data references

+

Data references in Map form can now have values being lists. In other words, we can have multiple options which have one or more values.

+
+
+

viash ns build -P docker –parallel –setup

+

viash ns build has been greatly improved! You can automatically build the docker container by adding --setup to the command, as well as make the whole thing run in parallel using the --parallel or -l flag.

+

To build a docker container, you can run either of the following:

+
viash run -f path/to/config.yaml -P docker -- ---setup
+viash build -f path/to/functionality.yaml -P docker -o target/docker/path/to --setup
+

Note that the first will only build the docker container, whereas the second will build the executable and then build the docker container.

+

To build a lot of them all at once, run:

+
viash ns build -P docker --parallel --setup
+
+
+

Custom order of platform requirements

+

You can now choose the order in which platform requirements are installed!

+

Before:

+
type: docker
+image: rocker/tidyverse
+target_image: "viash_test/r"
+r:
+  cran:
+  - optparse
+  github:
+  - dynverse/dynutils@devel
+  bioc:
+  - limma
+apt:
+  packages:
+  - libhdf5-serial-dev
+docker:
+  build_arg:
+  - GITHUB_PAT="$GITHUB_PAT"
+  run:
+  - git clone --depth 1 https://github.com/data-intuitive/viash_docs.git && rm -r viash_docs/.git
+↑ in which order will these three components be run? Who knows!
+

Now:

+
type: docker
+image: rocker/tidyverse
+target_image: "viash_test/r"
+setup:
+- type: docker
+  build_arg:
+  - GITHUB_PAT="$GITHUB_PAT"
+- type: apt
+  packages:
+  - libhdf5-serial-dev
+- type: r
+  cran:
+  - optparse
+  - dynutils
+  github:
+  - rcannood/princurve@devel
+  bioc:
+  - limma
+- type: docker
+  run:
+  - git clone --depth 1 https://github.com/data-intuitive/viash_docs.git && rm -r viash_docs/.git
+

This will ensure that the setup instructions are installed in the given order.

+
+
+
+

Full changelog

+
+

NEW FEATURES

+
    +
  • NXF: Data references in Map form can now have values being lists. In other words, we can have multiple options which have one or more values.
  • +
  • viash ns build: Added –parallel and –setup flag.
  • +
  • viash build: Added –setup flag.
  • +
  • Allow changing the order of setup commands using the setup: variable.
  • +
  • (HIDDEN) Do not escape ${VIASH_...} elements in default values and descriptions!
  • +
+
+
+

MINOR CHANGES

+
    +
  • Remove ---chown flag, move to platform.docker.chown; is set to true by default.
  • +
  • Perform chown during both run and test using a Docker platform.
  • +
+
+
+

BUG FIXES

+
    +
  • Issue trying to parse positional arguments even when none is provided.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.2.2/index.html b/_versioned/0_8_5/blog/posts/viash-0.2.2/index.html new file mode 100644 index 00000000..075115fe --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.2.2/index.html @@ -0,0 +1,736 @@ + + + + + + + + + + + +Viash - Viash 0.2.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.2.2

+

Generation of placeholder code now possible without VIASH START and VIASH END

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

September 22, 2020

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Allow generating placeholder without VIASH START/VIASH END blocks.

+

A script does not need to contain a VIASH START/VIASH END block in order to function.

+

Previously, each script had to contain a codeblock as follows:

+
## VIASH START
+par <- list(
+  input = "foo",
+  output = "bar
+)
+## VIASH END
+
+
+

Full changelog

+
+

MINOR CHANGES

+
    +
  • Allow generating placeholder without VIASH START/VIASH END blocks.
  • +
+
+
+

BUG FIXES

+
    +
  • viash ns build: Some platforms would sometimes not be detected.
  • +
  • viash run: Avoid error when no arguments need to be chowned.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.3.0/index.html b/_versioned/0_8_5/blog/posts/viash-0.3.0/index.html new file mode 100644 index 00000000..3642daf2 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.3.0/index.html @@ -0,0 +1,740 @@ + + + + + + + + + + + +Viash - Viash 0.3.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.3.0

+

Combine functionality and platform into one config, remove temporary files

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

November 24, 2020

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

config.vsh.yaml is the new standard format, temporary files are removed when using run and test commands.

+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • File format functionality.yaml is no longer supported. Use config.vsh.yaml or script.vsh.R/py/... instead.

  • +
  • viash run and viash test: By default, temporary files are removed when the execution succeeded, otherwise they are kept. This behaviour can be overridden by specifying --keep true to always keep the temporary files, and --keep false to always remove them.

  • +
  • NXF: function_type: todir now returns the output directory on the Channel rather than its contents.

  • +
+
+
+

NEW FEATURES

+
    +
  • Added viash ns test: Run all tests in a particular namespace. For each test, the exit code and duration is reported. Results can be written to a tsv file.
  • +
  • Added support for JavaScript scripts.
  • +
  • Added support for Scala scripts.
  • +
  • NXF: publishing has a few more options: +
      +
    • publish: Publish or yes (default is false)
    • +
    • per_id: Publish results in directories containing the unique (sample) ID (default is true)
    • +
    • path: A prefix path for the results to be published (default is empty)
    • +
  • +
  • Functionality resources and tests: Allow copying whole directories instead of only single files. Also allow to rename the destination folder by specifying a value for ‘dest’.
  • +
  • Platform R / Python dependencies: Allow running a simple command.
  • +
+
+
+

MAJOR CHANGES

+
    +
  • The -P <platform> parameter will be deprecated. For now, all -P values are simply passed to -p.
  • +
  • viash ns build and viash ns test: Now use all available platforms if -p is not specified.
  • +
  • By default, python packages will not be installed as user. Use user: true to modify this behaviour.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Name of autogenerated Docker image is now ns/tool.
  • +
  • Internal changes to make it easier to extend viash with more scripting languages.
  • +
  • NXF: Default image is now ns/tool for consistency.
  • +
  • NXF: Repurpose asis function type for having simple publishing steps (see docs).
  • +
  • NXF: Add component name to main process name
  • +
  • R dependencies: by default, do not reinstall Bioconductor packages. Set bioc_force_install: true to revert this behaviour.
  • +
+
+
+

BUG FIXES

+
    +
  • viash build: Do not display error messages when pwd is not a git repository.
  • +
+
+
+

TESTING

+
    +
  • viash test: Add tests for viash test functionality.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.3.1/index.html b/_versioned/0_8_5/blog/posts/viash-0.3.1/index.html new file mode 100644 index 00000000..2a888d49 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.3.1/index.html @@ -0,0 +1,793 @@ + + + + + + + + + + + +Viash - Viash 0.3.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.3.1

+

Add fields for specifying authors and the Docker registry

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

January 26, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Add authors field to config, added registry fields to Docker platform config.

+
+
+

Full changelog

+
+

NEW FEATURES

+
    +
  • Functionality: Added list of authors field. Example:

    +
    functionality:
    +  authors:
    +    - name: Bob Cando
    +      roles: [maintainer, author]
    +      email: bob@cando.com
    +      props: {github: bobcando, orcid: XXXAAABBB}
  • +
  • Docker: Allow specifying the registry with target_registry. Example:

    +
    - type: docker
    +  image: bash:4.0
    +  target_registry: foo.io
    +  target_image: bar
    +  target_tag: 0.1
  • +
  • Docker: version is now a synonym for target_tag. If both version and target_tag are not defined, functionality.version will be used instead.

  • +
  • Docker: Can change the Docker Setup Strategy by specifying

    +
      +
    • in the yaml: setup_strategy: xxx
    • +
    • on command-line: ---docker_setup_strategy xxx or ---dss xxx
    • +
    +

    Supported values for the setup strategy are:

    +
      +
    • alwaysbuild / build: build the image from the dockerfile (DEFAULT)
    • +
    • alwayscachedbuild / cachedbuild: build the image from the dockerfile, with caching
    • +
    • alwayspull / pull: pull the image from a registry
    • +
    • alwayspullelsebuild / pullelsebuild: try to pull the image from a registry, else build it
    • +
    • alwayspullelsecachedbuild / pullelsecachedbuild: try to pull the image from a registry, else build it with caching
    • +
    • ifneedbebuild: if the image does not exist locally, build the image
    • +
    • ifneedbecachedbuild: if the image does not exist locally, build the image with caching
    • +
    • ifneedbepull: if the image does not exist locally, pull the image
    • +
    • ifneedbepullelsebuild: if the image does not exist locally, pull the image else build it
    • +
    • ifneedbepullelsecachedbuild: if the image does not exist locally, pull the image else build it with caching
    • +
    • donothing / meh: do not build or pull anything
    • +
  • +
+
+
+

MAJOR CHANGES

+
    +
  • License: viash is now licensed under GPL-3.
  • +
+
+
+

MINOR CHANGES

+
    +
  • CLI: Allow parameters before and after specifying a viash config yaml. For example, both following commands now work. Up until now, only the latter would work.

    +
      +
    • viash run config.vsh.yaml -p docker
    • +
    • viash run -p docker config.vsh.yaml
    • +
  • +
  • Functionality: Arguments field can now be omitted.

  • +
  • Scripts: Wrapped scripts now contain a minimal header at the top.

  • +
+
+
+

BUG FIXES

+
    +
  • NXF viash build: Do not assume each config yaml has at least one test.

  • +
  • Scripts: Fix Docker chown failing when multiple outputs are defined (#21).

  • +
  • JavaScriptRequirements: Fix type getting set to “python” when unparsing.

  • +
  • viash run . ---debug: Debug session should now work again

  • +
  • Native ---setup: Fix missing newlines when running native —setup commands.

  • +
  • Main: Fix crashing when no arguments are supplied.

  • +
  • Namespace: Show error message when the config file can’t be parsed.

  • +
  • Executable resource: Fix Docker automount handling for Executable resources.

  • +
+
+
+

TESTING

+
    +
  • YAML: Test invertibility of parsing/unparsing config objects.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.3.2/index.html b/_versioned/0_8_5/blog/posts/viash-0.3.2/index.html new file mode 100644 index 00000000..4e9ddca7 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.3.2/index.html @@ -0,0 +1,710 @@ + + + + + + + + + + + +Viash - Viash 0.3.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.3.2

+

Don’t auto-generate viash.yaml and add beta unit testing in Nextflow

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

February 4, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

The viash build command doesn’t generate a viash.yaml automatically anymore, added beta functionality for running tests in Nextflow.

+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • viash build: Do not automatically generate a viash.yaml when creating an executable. Instead, you need to add the -w|--write_meta flag in order to let viash know that it should generate a viash.yaml in the resources dir.
  • +
+
+
+

MAJOR CHANGES

+
    +
  • NXF: Add beta functionality for running viash tests in Nextflow.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Resources: Rework the way resources paths are converted to absolute URIs, should not have any impact on UX.
  • +
+
+
+

BUG FIXES

+
    +
  • NXF: Add temporary workaround for determining the used image name when running a component.

  • +
  • Docker Platform: Set default setup strategy to “alwayscachedbuild” as this used to be the default viash behaviour.

  • +
  • NXF: Fix issue where resource dir would not get mounted depending on which inputs are provided.

  • +
  • NXF: Accept multiple inputs when component is running as standalone.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.4.0.1/index.html b/_versioned/0_8_5/blog/posts/viash-0.4.0.1/index.html new file mode 100644 index 00000000..14e46709 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.4.0.1/index.html @@ -0,0 +1,687 @@ + + + + + + + + + + + +Viash - Viash 0.4.0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.4.0.1

+

Three small bug fixes.

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

May 12, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
+
+

Full changelog

+
+

BUG FIX

+
    +
  • NXF: Return original_params instead of updated params for now.

  • +
  • NXF: Reinstate function_type: asis in line with the refactored module generation code

  • +
  • viash ns test: print header when --tsv foo.tsv --append true but foo.tsv doesn’t exist yet. Fixes #45.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.4.0/index.html b/_versioned/0_8_5/blog/posts/viash-0.4.0/index.html new file mode 100644 index 00000000..3e47c276 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.4.0/index.html @@ -0,0 +1,744 @@ + + + + + + + + + + + +Viash - Viash 0.4.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.4.0

+

Config mod DSL and renames to viash ns arguments

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

April 14, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

The viash ns command’s –namespace argument has been renamed to –query_namespace, introduction of custom DSL for overriding config properties at runtime.

+
+
+

Full changelog

+
+

NEW FEATURES

+
    +
  • Config modding: A custom viash DSL allows overriding viash config properties at runtime. See online documentation for more information. Example:

    +
    viash ns test \
    +  -p docker \
    +  -c '.functionality.version := "1.0.0"' \
    +  -c '.platforms[.type == "docker"].target_registry := "my.docker-registry.com"' \
    +  -c '.platforms[.type == "docker"].setup_strategy := "pull"' \
    +  -l
  • +
  • viash build: The image can be pushed with --push. The same can be done by passing ---push to a viash executable.

  • +
  • viash ns can query the name, namespace, or both, with the following arguments:

    +
      +
    • --query_namespace or -n: filter the namespace with a regex.
    • +
    • --query_name: filter the name with a regex.
    • +
    • --query or -q: filter the namespace/name with a regex.
    • +
  • +
  • Added the project_build, project_clean, project_push and project_test components to this repository.

  • +
  • Added a field .functionality.info of type Map[String, String] in order to be able to specify custom annotations to the component.

  • +
+
+
+

BREAKING CHANGES

+
    +
  • viash ns: Argument --namespace has been renamed to --query_namespace.

  • +
  • viash ns: Argument --namespace does not implicitly change the namespace of the functionality anymore. You can use the command DSL to reproduce this effect; for example: -c '.functionality.namespace := "foo"'.

  • +
  • Docker & NXF: Attribute version is deprecated. Instead, the default value will be .functionality.version, which can be overridden by using the tag attribute.

  • +
  • NXF: When running a viash component as a Nextflow module on its own, you now need to specify all input files on the command line. For instance, if --input and --reference are input file arguments, you need to start the process by running nextflow run main.nf --input <...> --reference <...> <other arguments>. Previously only the input file needed to be specified.

  • +
  • Docker & NXF: Default separator between namespace and image name has been changed from "/" to "_".

  • +
+
+
+

MINOR CHANGES

+
    +
  • Docker & NXF: Parsing of image attributes for both Docker and Nextflow platforms are better aligned. You can define an image by specifying either of the following: +
      +
    • { image: 'ubuntu:latest' }
    • +
    • { image: ubuntu, tag: latest }
    • +
  • +
  • Docker & NXF: Allow changing the separator between a namespace and the image name.
  • +
+
+
+

NEXTFLOW REFACTORING

+

The generation of Nextflow modules has been refactored thoroughly.

+
    +
  • NXF: The implicitly generated names for output files/directories have been improved leading to less clashes.

  • +
  • NXF: Allow for multiple output files/directories from a module while keeping compatibility for single output. Please refer to the docs.

  • +
  • NXF: Allow for zero input files by means of passing an empty list [] in the triplet

  • +
  • NXF: Remove requirement for function_type: todir

  • +
  • NXF: It is now possible to not only specify label: ... for a nextflow platform but also labels: [ ...].

  • +
+
+
+

BUG FIXES

+
    +
  • Allow quotes in functionality descriptions.

  • +
  • NXF: Providing a default: ... value for output file arguments is no longer necessary.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.0/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.0/index.html new file mode 100644 index 00000000..ff03319a --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.0/index.html @@ -0,0 +1,790 @@ + + + + + + + + + + + +Viash - Viash 0.5.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.0

+

Improvements to running Docker executables, and Nextflow platform argument changes

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

August 16, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Here are the most important changes:

+
    +
  • Improvements to Docker backend: In the past, you needed to perform --setup on your Docker-based components and executables in order for the image to be built before you could run the component or executable. Now you can simply run your component or executable and Viash will do the image building automatically by default if it detects an image isn’t present yet. This behaviour can be changed by using a Docker setup strategy. For example:

    +
    viash build config.vsh.yaml -p docker --setup alwayscachedbuild
  • +
  • Nextflow gets some argument changes: Arguments for the Nextflow platform now have optional required and default values, just like their native and Docker counterparts. For example:

    +
      arguments:
    +    - name: --name
    +      type: string
    +      description: Input name
    +      required: true
    +    - name: --repeat
    +      type: integer
    +      description: Times to repeat the name
    +      default: 100
    +

    Take a look at the Functionality page for more information on arguments and their properties.
    +As long as you use long-option arguments (e.g. --my-option) in the config file for required arguments, the way of specifying argument values for the Nextflow platform is identical to the Docker platform. You still access non-required arguments via this syntax: --<component_name>__<argument_name> <value>. For example:

    +
    my_component -- --my_component__input Hello!
  • +
  • Verbosity levels for viash run: Executables now have 8 levels of verbosity

    +
      +
    1. emergency
    2. +
    3. alert
    4. +
    5. critical
    6. +
    7. error
    8. +
    9. warning
    10. +
    11. notice
    12. +
    13. info
    14. +
    15. debug
    16. +
    +

    The default verbosity level is notice. You can pass the -v or --verbose option to bump up the verbosity by one level. By passing -vv the verbosity goes up by two levels. You can manually set the verbosity by using the --verbosity <int_level> option. For example, if you wanted to only show errors or worse:

    +
    viash run config.vsh.yaml -- --verbosity 3
  • +
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • DockerPlatform: A Docker setup will be performed by default. Default strategy has been changed to ifneedbepullelsecachedbuild (#57). ---setup strategy has been removed and ---docker_setup_strategy has been renamed to ---setup. This change allows running a component for the first time. During first time setup, the Docker container will be pulled or built automatically.

  • +
  • NativePlatform: Deprecated the native setup field.

  • +
+
+
+

MAJOR CHANGES

+
    +
  • NXF: This version changes the handling logic for arguments. An argument can be either required or not and can have a default: ... value or not. Checks are implemented to verify that required arguments are effectively provided during pipeline running.

  • +
  • NXF: If one sticks to long-option argments in the viash config, for all arguments that are required, the way of specifying the arguments on the CLI is identical for the Docker and Nextflow platforms. Non-required arguments can still be accessed from CLI using --<component_name>__<argument_name> ....

  • +
  • NXF: Running a module as a standalone pipeline has become easier.

  • +
  • viash run: Implement verbosity levels (#58). viash executables now have 7 levels of verbosity: emergency, alert, critical, error, warning, notice, info, debug. The default verbosity level is ‘notice’. Passing -v or --verbose bumps up the verbosity level by one, -vv by two. The verbosity level can be set manually by passing --verbosity x.

  • +
+
+
+

MINOR CHANGES

+
    +
  • Docker Platform: Added privileged argument, allowing to run docker with the --privileged flag.

  • +
  • Docker Requirements: Allow specifying environment variables in the Dockerfile.

  • +
  • Config modding: Added a +0= operator to prepend items to a list.

  • +
  • viash run: Added a --version flag to viash executables for viewing the version of the component.

  • +
  • Functionality: Added checks on the functionality and argument names.

  • +
  • viash run: Added examples to functionality and arguments. Reworked --help formatting to include more information and be more consistent (#56).

  • +
+
+
+

BUG FIXES

+
    +
  • Docker R Requirements: Install remotes when using { type: r, packages: [ foo ] }.

  • +
  • config: Throw error when user made a typo in the viash config (#62).

  • +
+
+
+

TESTING

+
    +
  • NXF: Add an end-to-end test for running a nextflow pipeline using viash components.

  • +
  • Docker: Reorganized viash docker build testbench into a main testbench with smaller auxiliary testbenches to keep them more manageable and clear what happens where.

  • +
  • viash ns: Added a basic testbench for namespace tests.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.1/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.1/index.html new file mode 100644 index 00000000..4dfddac7 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.1/index.html @@ -0,0 +1,801 @@ + + + + + + + + + + + +Viash - Viash 0.5.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.1

+

Viash 0.5.1 adds support for C# scripts and fixes a few bugs

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

July 14, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
+

C# script support

+

We’ve added C# scripts (.csx) as a supported language using dotnet-script.
+To run C# scripts natively, you’ll need to install .NET Core and execute the following command in a terminal:

+
dotnet tool install -g dotnet-script
+

You can now run C# scripts like this:

+
dotnet script hello_viash.csx
+

To use C# scripts as components, use the new csharp_script type in the functionality section of your config file:

+
  resources:
+  - type: csharp_script
+    path: script.csx
+

Here’s an example of a simple C# script with Viash in mind:

+
// VIASH START
+var par = new {
+  input = "Hello World",
+  name = "Mike"
+};
+// VIASH END
+
+System.Console.WriteLine(input + ", " + name + "!");
+

The language-specific guide for creating C# script components will be added in the near future.

+
+
+

Bug fixes

+

First off, these special characters can now be used in the description, usage, default and example fields of components:

+
    +
  • +
  • `
  • +
  • \
  • +
  • +
  • $
  • +
+

Nextflow output files with the same extension won’t overwrite each other any more, like it was the case for arguments like this:

+
functionality:
+  name: bar
+  arguments:
+    - name: "--input"
+      type: file
+      example: input.txt
+    - name: "--output1"
+      type: file
+      direction: output
+      required: true
+      example: output.txt
+    - name: "--output2"
+      type: file
+      direction: output
+      required: true
+      example: optional.txt
+

In this case, the two output files would have been identical in the past. ___

+
+
+
+

Full changelog

+
+

NEW FEATURES

+
    +
  • CSharpScript: Added support for C# scripts (type: "csharp_script") to viash.
  • +
+
+
+

MINOR CHANGES

+
    +
  • NextflowPlatform: Added directive_cpus, directive_max_forks, directive_memory and directive_time parameters.
  • +
+
+
+

BUG FIXES

+
    +
  • BashWrapper: Refactor escaping descriptions, usages, defaults, and examples (#34).

  • +
  • NextflowPlatform: Refactor escaping descriptions, usages, defaults and examples (#75).

  • +
  • NextflowPlatform: Add argument to output path to avoid naming conflicts for components with multiple output files (#76).

  • +
  • NextflowPlatform, renderCLI(): Only add flag to rendered command when boolean_true is actually true (#78).

  • +
  • DockerPlatform: Only chown when output file exists.

  • +
+
+
+

TESTING

+
    +
  • viash build: Capture stdout messages when errors are expected, so that they don’t clutter the expected output.

  • +
  • viash build: Check --help description output on the whole text instead of per letter or word basis.

  • +
  • TestingAllComponentsSuite: Only testing bash natively, because other dependencies might not be available.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.10.1/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.10.1/index.html new file mode 100644 index 00000000..660cc32b --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.10.1/index.html @@ -0,0 +1,686 @@ + + + + + + + + + + + +Viash - Viash 0.5.10.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.10.1

+

A quick bug fix

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

March 16, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This quick release fixes a bug that prevented the correct passthrough of the new organization field.

+
+
+

Full changelog

+
+

BUG FIX

+
    +
  • NextflowPlatform: Fix passthrough of organization field.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.10/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.10/index.html new file mode 100644 index 00000000..23693cec --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.10/index.html @@ -0,0 +1,725 @@ + + + + + + + + + + + +Viash - Viash 0.5.10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.10

+

Rework of the Viash helper components

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

March 15, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

The viash_install, viash_build, viash_test and viash_push components have been reworked.

+
+
+

Full changelog

+
+

MAJOR CHANGES

+
    +
  • viash_install: +
      +
    • Added --log_prefix: This prefix is used to determine the path of the log files for viash_build, viash_test and viash_push.
    • +
    • Added --organization: Id of the organisation to be used in the Docker image name, i.e. <registry>/<organization>/<namespace><namespace_sep><name>.
    • +
    • Added --target_image_source: Url to the Git repo in which this project resides.
    • +
    • Removed --log.
    • +
  • +
  • viash_build: +
      +
    • Reduce code duplication by contructing the command with Bash Arrays.
    • +
    • Renamed --platforms to --platform.
    • +
    • Added --organization: Id of the organisation to be used in the Docker image name, i.e. <registry>/<organization>/<namespace><namespace_sep><name>.
    • +
    • Added --target_image_source: Url to the Git repo in which this project resides.
    • +
    • Changed default of --log from log.txt to .viash_build_log.txt.
    • +
    • Added --verbose: Print out the underlying viash ns build command before running it.
    • +
  • +
  • viash_test: +
      +
    • Reduce code duplication by contructing the command with Bash Arrays.
    • +
    • Renamed --platforms to --platform.
    • +
    • Added --organization: Id of the organisation to be used in the Docker image name, i.e. <registry>/<organization>/<namespace><namespace_sep><name>.
    • +
    • Added --target_image_source: Url to the Git repo in which this project resides.
    • +
    • Changed default of --log from log.txt to .viash_test_log.txt.
    • +
    • Changed default of --tsv from log.tsv to .viash_test_log.tsv.
    • +
    • Added --verbose: Print out the underlying viash ns test command before running it.
    • +
  • +
  • viash_push: +
      +
    • Reduce code duplication by contructing the command with Bash Arrays.
    • +
    • Added --organization: Id of the organisation to be used in the Docker image name, i.e. <registry>/<organization>/<namespace><namespace_sep><name>.
    • +
    • Changed default of --log from log.txt to .viash_push_log.txt.
    • +
    • Added --verbose: Print out the underlying viash ns build command before running it.
    • +
  • +
+
+
+

MINOR CHANGES

+
    +
  • NextflowPlatform: Added the organization field to the nextflow platform as well.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.11/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.11/index.html new file mode 100644 index 00000000..33ace3d7 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.11/index.html @@ -0,0 +1,781 @@ + + + + + + + + + + + +Viash - Viash 0.5.11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.11

+

Nextflow VDSL3 is here!

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

May 9, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release contains additional sugar syntax for specifying inputs and outputs in a Viash config, a beta implementation for the next-generation Viash platform, and several other minor improvements.

+
+
+

Full changelog

+
+

MAJOR CHANGES

+
    +
  • Functionality: Now also accepts ‘inputs’ and ‘outputs’ in addition to ‘arguments’. For inputs and outputs, any specified arguments will have default type: file and direction: input or direction: output respectively.
  • +
+
+
+

MINOR CHANGES

+
    +
  • DockerPlatform: Move description labels to the end of the Dockerfile to improve cross-component caching.

  • +
  • Functionality: Arguments where .multiple is true can now have lists as default and example.

  • +
  • viash_build: Added unit test for this component.

  • +
  • viash_test: Added unit test for this component.

  • +
  • PythonRequirements: Allow upgrading dependencies. Example: [ type: python. pypi: anndata, upgrade: true ].

  • +
  • NextflowLegacyPlatform: Remove annoying messages when building Nxf modules.

  • +
  • ConfigMods: Expanded the DSL to allow specifying at which point to apply a config mod. This functionality was necessary to allow for setting fields which alter the way configs are parsed. Example of when this is useful: <preparse> .platforms[.type == "nextflow"].variant := "vdsl3". Updating workflow of parsing a config file is:

    +
      +
    • read Yaml from file
    • +
    • apply preparse config mods
    • +
    • parse resulting Json as Config, thereby instantiating default values etc.
    • +
    • convert Config back to Json
    • +
    • apply postparse config mods (original config mods)
    • +
    • convert final Json back to Config
    • +
  • +
+
+
+

BETA FUNCTIONALITY

+
    +
  • NextflowVdsl3Platform: A beta implementation of the next-generation Viash+Nextflow platform. See https://github.com/viash-io/viash/issues/82 for more information. You can access the previous Nextflow platform by using the variant parameter:

    +
    - type: nextflow
    +  variant: legacy
    +  separate_multiple_outputs: false
  • +
+
+
+

BUG FIXES

+
    +
  • viash_build and viash_test: The query_name and query_namespace arguments were switched around. These arguments are now passed correctly.

  • +
  • BashScript, JavaScriptScript, PythonScript, RScript: Correctly escape ' (#113). Update unit tests accordingly.

  • +
  • CSharpScript, ScalaScript: Correctly escape " (#113). Update unit tests accordingly.

  • +
  • viash_build, viash_test, viash_push: Don’t try to remove log files if they don’t exist.

  • +
+
+
+

INTERNAL CHANGES

+
    +
  • DataObject: +
      +
    • Renamed otype to flags.
    • +
    • Renamed oType to type
    • +
    • Deprecated tag (unused feature).
    • +
  • +
  • All abstract / inherited classes: Renamed oType to type.
  • +
+
+
+

DEPRECATION

+
    +
  • Functionality: Deprecated function_type and add_resources_to_path. These should be unused features, by now.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.12/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.12/index.html new file mode 100644 index 00000000..e91b8391 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.12/index.html @@ -0,0 +1,714 @@ + + + + + + + + + + + +Viash - Viash 0.5.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.12

+

Improvements for VDSL3 and the Bash wrapper + several bug fixes

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

May 24, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release contains a bunch improvements for VDSL3 and adds some parameters to the viash test and viash test ns commands.

+
+
+

Full changelog

+
+

MINOR CHANGES

+
    +
  • --help: Don’t print “my_component ” when no version is specified, but instead simply “my_component”.

  • +
  • NextflowVdsl3Platform: Set mode=copy for auto.publish and auto.transcript.

  • +
  • NextflowVdsl3Platform: When a module is used multiple times in the same workflow, don’t throw an error anymore, instead simply generate a warning.

  • +
  • NextflowVdsl3Platform: Throw an error when an input file was not found.

  • +
  • viash build: Indent auto-generated code according the indentation of VIASH START when found.

  • +
  • Main: Handle not finding the config file or resources in a config file better. Display a more helpful message instead of a stack trace.

  • +
  • BashWrapper: Add checks on parameters for valid integer, double and boolean values.

  • +
  • BashWrapper: Add option to limit string and integer values to specific choice values.

  • +
  • BashWrapper: Add option to set min and max values for integer and double values.

  • +
  • Dependencies:

    +
      +
    • Scala was upgraded from 2.12.10 to 2.12.15
    • +
    • sbt was upgraded from 1.3.4 to 1.6.1
    • +
    • sbt-scoverage was upgraded from 1.5.1 to 1.9.3
    • +
  • +
+
+
+

BUG FIXES

+
    +
  • viash_test: Add back --no_cache parameter to viash_test.

  • +
  • viash_test: Fix --append parameter for viash_test, was not getting passed through.

  • +
  • viash ns test: Fix --append parameter, actually start from a clean file if append is false.

  • +
  • viash_push: Fix component not being built during a release of Viash.

  • +
  • PythonRequirements: Fix packages being mentioned twice in a Dockerfile.

  • +
  • Main: Added support spaces in filenames of config files and resources

  • +
  • BashWrapper: Display a message when the last parsed argument would require more values than are still available. Now display a message that values are missing, used to silently crash the wrapper.

  • +
  • viash config inject: Fix error when file argument is must_exist: true.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.13/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.13/index.html new file mode 100644 index 00000000..f28d767d --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.13/index.html @@ -0,0 +1,714 @@ + + + + + + + + + + + +Viash - Viash 0.5.13 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.13

+

Added overriding of the container registry for the VDSL3 + VDSL3 bug fixes

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

June 10, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

VDSL3 gets even more improvements and bug fixes.

+
+
+

Full changelog

+
+

NEW FUNCTIONALITY

+
    +
  • NextflowVdsl3Platform: Allow overriding the container registry of all Viash components by setting the params.override_container_registry value. Only works for auto-derived image names.
  • +
+
+
+

MAJOR CHANGES

+
    +
  • Functionality: renamed tests to test_resources. Backwards compatibility provided but a notification message is displayed on the console.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Functionality and viash ns: Added .enabled in functionality, set to true by default. Filter for disabled components in namespace commands.

  • +
  • DockerPlatform: Add org.opencontainers.image annotations to built docker images.

  • +
  • Functionality: when defining text resources, permit defining path instead of dest. If both dest and path are unset, use a default file name depending on the resource type, such as script.sh or text.txt.

  • +
  • viash build: Errors are printed in red.

  • +
+
+
+

BUG FIXES

+
    +
  • NextflowVdsl3Platform: Undefined input files should not inject a VIASH_PAR_* variable when multiple: true.

  • +
  • NextflowVdsl3Platform: Make injected resources dir absolute.

  • +
  • NextflowVdsl3Platform: Fix escaping of triple single quotes.

  • +
  • NextflowVdsl3Platform: Also apply auto.simplifyInput to Lists.

  • +
  • DockerPlatform: added a test_setup that allows adding apt/apk/… setup requirements. These are only executed when running tests.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.14/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.14/index.html new file mode 100644 index 00000000..79994dea --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.14/index.html @@ -0,0 +1,773 @@ + + + + + + + + + + + +Viash - Viash 0.5.14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.14

+

Argument groups can now be defined in the Viash config

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

June 30, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Argument groups allow for grouping arguments together by function or category, making the --help output a lot more clear for components with a lot of arguments.

+
+
+

Full changelog

+
+

NEW FUNCTIONALITY

+
    +
  • Functionality: Allow specifying argument groups. Example:

    +
    functionality:
    +  ...
    +  argument_groups:
    +    - name: First group
    +      arguments: [foo, bar]
    +      description: Description
  • +
  • Addition of the viash_nxf_schema component for converting a Viash config (for a workflow) into a nextflow schema file.

  • +
  • NextflowVdsl3Platform: Use --param_list to initialise a Nextflow channel with multiple parameter sets. Possible formats are csv, json, yaml, or simply a yaml_blob. A csv should have column names which correspond to the different arguments of this pipeline. A json or a yaml file should be a list of maps, each of which has keys corresponding to the arguments of the pipeline. A yaml blob can also be passed directly as a parameter. Inside the Nextflow pipeline code, params.param_list can also be used to directly a list of parameter sets. When passing a csv, json or yaml, relative path names are relativized to the location of the parameter file.

    +

    Examples:

    +
    nextflow run "target/foo/bar/main.nf" --param_list '[{"id": "foo", "input": "/path/to/bar"}]'
    +nextflow run "target/foo/bar/main.nf" --param_list "params.csv" --reference "/path/to/ref"
  • +
+
+
+

MAJOR CHANGES

+
    +
  • NextflowVdsl3Platform: The functionality is now slurped from a json instead of manually taking care of the formatting in Groovy.

  • +
  • NextflowVdsl3Platform: The --help is auto-generated from the config.

  • +
+
+
+

MINOR CHANGES

+
    +
  • NextflowVdsl3Platform: Allow both --publish_dir and --publishDir when auto.publish = true.

  • +
  • NextflowVdsl3Platform: Allow passing parameters with multiplicity > 1 from Nextflow CLI.

  • +
  • Main: Added viash --cli_export which outputs the internal cli construction information to console. This is to be used to automate populating the documentation website.

  • +
  • viash ns: Display success and failure summary statistics, printed to stderr.

  • +
  • DataObject: .alternatives is now a OneOrMore[String] instead of List[String], meaning you can now specify { type: string, name: "--foo", alternatives: "-f" } instead of { type: string, name: "--foo", alternatives: [ "-f" ] }

  • +
  • BashWrapper: Added metadata field meta_executable, which is a shorthand notation for meta_executable="$meta_resources_dir/$meta_functionality_name"

  • +
+
+
+

INTERNAL CHANGES

+
    +
  • Arguments: Internal naming of functionality.arguments is changed from DataObject to Arguments. Change is also applied to child classes, e.g. StringObject -> StringArgument.

  • +
  • Script: Allow more control over where injected code ends up.

  • +
  • Restructure type system to allow type-specific arguments.

  • +
+
+
+

BUG FIXES

+
    +
  • DockerPlatform: Change org.opencontainers.image.version annotation to functionality.version when set. Additionally fixed retrieving the git tag possibly returning fatal: No names found, cannot describe anything. or similar.

  • +
  • viash config inject: Fix config inject when .functionality.inputs or .functionality.outputs is used.

  • +
  • BashWrapper: Don’t add bc as dependency. Only perform integer/float min/max checks when bc is available, otherwise ignore.

  • +
  • DockerPlatform: Fix inputs & outputs arguments being present twice.

  • +
  • viash ns test: Silently skip Nextflow platforms as these don’t support tests and will always fail.

  • +
  • Testbenches: Better capture expected error messages while running testbenches. Having these show on the console could be confusing.

  • +
  • NextflowVdsl3Platform: Fix issue when running multiple VDSL3 modules concurrently on the same channel.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.15/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.15/index.html new file mode 100644 index 00000000..8f4a1bb3 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.15/index.html @@ -0,0 +1,727 @@ + + + + + + + + + + + +Viash - Viash 0.5.15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.15

+

Added testbenches, default argument groups and bugfixes for VDSL3

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

July 14, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release introduces testbenches and new default argument groups: Inputs, Outputs and Arguments.

+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • WorkflowHelper::helpMessage: Now only takes one argument, namely the config.
  • +
+
+
+

MAJOR CHANGES

+
    +
  • Namespace: Changed the namespace of viash from com.dataintuitive.viash to io.viash.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Testbenches: Add a testbench framework to test lots of character sequences, single or repeating to be tested in the yaml config. This can be used to later extend to other tests.

  • +
  • Testbenches::vdsl3: Add testbenches to verify functionality:

    +
      +
    • Vdsl3’s param_list (yamlblob, yaml, json, csv).
    • +
    • Nextflow’s own params-file.
    • +
    • Vdsl3’s recalculating resource file paths to be relative to the param_list file instead of the workflow file (only available for yaml, json, csv).
    • +
    • Vdsl3’s wrapping of modules to run these as a separate workflow automagically out of the box.
    • +
  • +
  • Main: Added viash --schema_export which outputs a schema of the Viash config file to console. This is to be used to automate populating the documentation website.

  • +
  • Helper: Split help message by argument group.

  • +
  • Helper: Remove unneeded arguments.

  • +
  • Functionality: Add default groups Inputs, Outputs and Arguments for all arguments missing from user-defined argument_groups.

  • +
  • WorkflowHelper::helpMessage: Rewrite to bring on par with Viash’s help message.

  • +
  • BooleanArguments: Renamed internal class names for BooleanArguments to be better in line with how they are named in the config yaml. BooleanArgumentRegular -> BooleanArgument (in line with boolean) BooleanArgumentTrue -> BooleanTrueArgument (in line with boolean_true) BooleanArgumentFalse -> BooleanFalseArgument (in line with boolean_false)

  • +
+
+
+

BUG FIXES

+
    +
  • NextflowVdsl3Platform: Change how --id is processed when a VDSL3 module is called from the CLI.

  • +
  • NextflowVdsl3Platform: Fix error when param_list is null.

  • +
  • NextflowVdsl3Platform: Fix error when optional, multiple arguments are set to null.

  • +
  • Testbenches: Better capture expected error messages while running testbenches again. Code changes right before previous release re-introduced some of the messages.

  • +
  • NextflowVdsl3Platform: Fix issue where optional parameters aren’t removed when .run(args: [optarg: null]).

  • +
  • WorkflowHelper::readCsv: Treat empty values as undefined instead of throwing an error.

  • +
  • NextflowVdsl3Platform: Use $NXF_TEMP or $VIASH_TEMP as temporary directory if the container engine is not set to docker, podman or charlieengine, else set to /tmp.

  • +
  • Resources: When adding a resource folder, allow a trailing / at the end of the path. Previously this caused the target folder to be erased and the content of the resource folder to be written directly into the target folder.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.2/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.2/index.html new file mode 100644 index 00000000..47dbea6c --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.2/index.html @@ -0,0 +1,737 @@ + + + + + + + + + + + +Viash - Viash 0.5.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.2

+

More settings for Docker and Nextflow platform, and a bug fixes for components with resources

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

August 13, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This is a small release containing two small features and a bug fix. The new run_args field allows you to add docker run arguments to the Docker platform section of a config file. For example:

+
platforms:
+  - type: docker
+    image: bash:4.0
+    run_args: "--expose 127.0.0.1:80:8080/tcp --env MY_ENV_VAR=foo"
+

There’s also a new field for the Nextflow platform: separate_multiple_outputs. By default, this is set to true and separates the outputs generated by a Nextflow component with multiple outputs as separate events on the channel. You can now choose to disable this behaviour:

+
platforms:
+  - type: nextflow
+    publish: true
+    separate_multiple_outputs: false
+
+
+

Full changelog

+
+

MINOR CHANGES

+
    +
  • DockerPlatform: Added run_args field to allow setting docker run arguments.

  • +
  • NextflowPlatform: Added argument separate_multiple_outputs to allow not separating the outputs generated by a component with multiple outputs as separate events on the channel.

  • +
+
+
+

BUG FIX

+
    +
  • IO: Allow overwriting directory resources upon rebuild.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.3/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.3/index.html new file mode 100644 index 00000000..a32f9d50 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.3/index.html @@ -0,0 +1,762 @@ + + + + + + + + + + + +Viash - Viash 0.5.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.3

+

New meta data list for scripts, VIASH_TEMP environment variable for Nextflow, fixed output formatting with separate outputs

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

September 2, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release provides more information to scripts with the new meta list. This list contains two values for now:

+
    +
  • meta["resources_dir"]: Path to the directory containing the resources
  • +
  • meta["functionality_name"]: Name of the component
  • +
+

A new environment variable is now available for export when working with the Nextflow platform: VIASH_TEMP.

+
+

Resources directory

+

All resources defined in the config file are copied over to a temporary location right before a Viash component is executed. This location is can now be easily accessed in your scripts, allowing you to modify and copy the files as needed.
+Here are some examples in different scripting languages on how to access the meta data, it works similarly to the par list:

+

Bash:

+
echo $meta_resources_dir 
+

Python:

+
print(meta["resources_dir"])
+

R:

+
cat(meta$resources_dir)
+
+
+

Functionality name

+

The name of the component can now be accessed in the same way as the resources directory. This allows you to print the name of the component out to a console window for example. Here’s how to access this data in different scripting languages:

+

Bash:

+
echo $meta_functionality_name
+

Python:

+
print(meta["functionality_name"])
+

R:

+
cat(meta$functionality_name)
+
+
+
+

Full changelog

+
+

NEW FEATURES

+
    +
  • Similar to par, each script now also has a meta list. meta contains meta information about the component or the execution thereof. It currently has the following fields: +
      +
    • meta["resources_dir"]: Path to the directory containing the resources
    • +
    • meta["functionality_name"]: Name of the component
    • +
  • +
  • NextflowPlatform: Export VIASH_TEMP environment variable.
  • +
+
+
+

BUG FIXES

+
    +
  • NextflowPlatform: Fix output formatting when separate_multiple_outputs is false.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.4/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.4/index.html new file mode 100644 index 00000000..a715ad4d --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.4/index.html @@ -0,0 +1,729 @@ + + + + + + + + + + + +Viash - Viash 0.5.4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.4

+

Added cache directive to specify the typing of caching to be performed for the Nextflow platform

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

September 20, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

A cache type can now be specified in the config file for the Nextflow platform. Previously this was hardcoded to be deep, but the default caching method is now default.
+To use deep caching again, add this to your config file:

+
cache: deep
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • NextflowPlatform: The default caching mechanism is now what Nextflow uses as default. In order to replicate earlier caching, cache: deep should be specified in the Viash config file.
  • +
+
+
+

NEW FEATURES

+
    +
  • NextflowPlatform: Added cache directive to specify the typing of caching to be performed.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.5/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.5/index.html new file mode 100644 index 00000000..9fe9daee --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.5/index.html @@ -0,0 +1,742 @@ + + + + + + + + + + + +Viash - Viash 0.5.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.5

+

Resources dir no longer added to PATH automatically and minor changes

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

December 17, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

The resources directory is no longer added to the PATH variable by default. You can re-enable this behaviour by setting add_resources_to_path to true in the functionality part of the config file.
+Here’s a snippet of a config file to illustrate this:

+
functionality:
+  name: example_component
+  description: Serve as a simple example.
+  add_resources_to_path: true
+  ...
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • Functionality: The resources dir no longer automatically added to the PATH variable. To alter this behaviour, set .functionality.add_resources_to_path to true.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Bash Script: only define variables which have values.

  • +
  • CSharp Test Component: Change Docker image to dataintuitive/dotnet-script to have more control over the lifecycle of versioned tags.

  • +
  • Updated Code of Conduct from v2.0 to v2.1.

  • +
+
+
+

BUG FIXES

+
    +
  • Viash namespace: Fix incorrect output path when the parent directory of a Viash component is not equal to the value of .functionality.name.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.6/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.6/index.html new file mode 100644 index 00000000..597a5fb7 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.6/index.html @@ -0,0 +1,712 @@ + + + + + + + + + + + +Viash - Viash 0.5.6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.6

+

Forbidden Bash flags have been renamed

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

February 3, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
    +
  • Viash can now be installed without Docker needing to be installed on your system. You do need unzip and wget to complete the installation.
  • +
  • The Docker related messages are more user friendly now.
  • +
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • BashWrapper: Forbidden flags -v, --verbose, --verbosity have been renamed to ---v, ---verbose, ---verbosity.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Set version of helper scripts to the same version as Viash.

  • +
  • DockerPlatform: Produce helpful warning message when Docker image can’t be found remotely (#94).

  • +
  • DockerPlatform: Produce helpful error message when Docker isn’t installed or the daemon is not running (#94 bis).

  • +
+
+
+

BUG FIXES

+
    +
  • viash_install:

    +
      +
    • Passing Viash path as a string instead of as a file to ensure the path is not converted to an absolute path
    • +
    • Switch from Docker backend to a Native backend, ‘unzip’ and ‘wget’ are required.
    • +
    • Correctly set the log file for viash_test.
    • +
  • +
  • DockerPlatform: Added sleep workaround to avoid concurrency issue where a file is executed to build docker containers but apparently still in the process of being written.

  • +
  • DockerPlatform: Fix order issue of —verbose flag in combination with —setup, allowing to run viash run config.vsh.yaml -- ---setup cb ---verbose and actually get output.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.7/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.7/index.html new file mode 100644 index 00000000..a8c1ee8f --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.7/index.html @@ -0,0 +1,753 @@ + + + + + + + + + + + +Viash - Viash 0.5.7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.7

+

Argument examples need to be of the same type as the argument itself

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

February 16, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Examples for arguments now need to be of the same type as the argument itself. You can’t provide an integer for a string-based argument for example.
+A handy new command has been added: viash config inject. This can be used to inject a Viash header into a script based on the arguments of the config file.

+

There have been some improvements to the Docker platform as well.
+You can now add yum packages as a requirement:

+
platforms:
+  - type: docker
+    image: bash:latest
+    setup:
+      - type: yum
+        packages: [ wget ]
+

You can now include ADD and COPY instructions in the config file:

+
platforms:
+  - type: docker
+    image: bash:latest
+    setup:
+      - type: docker
+        add: [ "http://foo.bar ." ]
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • viash config: An argument’s example now needs to be of the same type as the argument itself. For example, [ type: integer, name: foo, example: 10 ] is valid, whereas [ type: integer, name: foo, example: bar ] is not, as ‘bar’ cannot be cast to an integer.
  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • viash config inject: A command for inserting a Viash header into your script.

  • +
  • YumRequirement: Added a requirement setup for installing through yum. Example: setup: [ [ type: yum, packages: [ wget] ] ]

  • +
  • DockerRequirement: Allow using copy and add instructions. Example: setup: [ [ type: docker, add: [ "http://foo.bar ." ]]]

  • +
+
+
+

BUG FIXES

+
    +
  • ViashTest: Fix verbosity passthrough.

  • +
  • --help: Fix repeated usage flag when printing the help.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.8/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.8/index.html new file mode 100644 index 00000000..c1e4ccd1 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.8/index.html @@ -0,0 +1,770 @@ + + + + + + + + + + + +Viash - Viash 0.5.8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.8

+

Allow defining a Docker image organization, and single values can be used in place of lists

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

February 28, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
+
+

Full changelog

+
+

NEW FUNCTIONALITY

+
    +
  • DockerPlatform: Allow defining a container’s organisation. Example:

    +
      - type: docker
    +    registry: ghcr.io
    +    organisation: viash-io
    +    image: viash
    +    tag: "1.0"
    +    target_registry: ghcr.io
    +    target_organization: viash-io
  • +
  • DockerRequirement: Add label instructions. Example: setup: [ [ type: docker, label: [ "foo BAR" ]]]

  • +
  • Config: In specific places, allow parsing a value as a list of values. Fixes #97. This mostly applies to list values in DockerPlatform, but also to author roles. Examples:

    +
    functionality:
    +  name: foo
    +  authors:
    +    - name: Alice
    +      role: author # can be a string or a list
    +platforms:
    +  - type: docker
    +    port: "80:80" # can be a string or a list
    +    setup:
    +      - type: r
    +        packages: incgraph # can be a string or a list
  • +
+
+
+

BREAKING CHANGES

+
    +
  • viash test: This command doesn’t automatically add the resources dir to the path.
  • +
+
+
+

BUG FIXES

+
    +
  • Functionality: Fix .functionality.add_resources_to_path not being picked up correctly.

  • +
  • AptRequirement: Set DEBIAN_FRONTEND=noninteractive by default. This can be turned off by specifying:

    +
      - type: apt
    +    packages: [ foo, bar ]
    +    interactive: true
  • +
+
+
+

MINOR CHANGES

+
    +
  • Main: Slightly better error messages when parsing of viash yaml file fails. Before:

    +
    $ viash test src/test/resources/testbash/config_failed_build.vsh.yaml 
    +Exception in thread "main" DecodingFailure(Unexpected field: [package]; valid fields: packages, interactive, type, List(DownField(apt), DownArray, DownField(platforms)))
    +

    After:

    +
    $ viash test src/test/resources/testbash/config_failed_build.vsh.yaml 
    +Error parsing 'file:/path/to/viash/src/test/resources/testbash/config_failed_build.vsh.yaml'. Details:
    +Unexpected field: [package]; valid fields: packages, interactive, type: DownField(apt),DownArray,DownField(platforms)
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.5.9/index.html b/_versioned/0_8_5/blog/posts/viash-0.5.9/index.html new file mode 100644 index 00000000..89e192f6 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.5.9/index.html @@ -0,0 +1,740 @@ + + + + + + + + + + + +Viash - Viash 0.5.9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.5.9

+

Allow interrupting Viash components

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

March 12, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

The biggest change in this release is that long running Viash components (VS Code server or R Studio server for example) can now be interrupted by pressing CTRL-C or by sending it an INT or SIGINT signal. Before this release, you had to manually stop the Docker container to get the component to terminate.

+
+
+

Full changelog

+
+

NEW FEATURES

+
    +
  • viash run: A long running Viash component can be interrupted by pressing CTRL-C or by sending it an INT or SIGINT signal.

  • +
  • DockerPlatform: Automatically add a few labels based on metadata to Dockerfile.

  • +
  • DockerPlatform: Added value target_image_source for setting the source of the target image. This is used for defining labels in the dockerfile. Example:

    +
    target_image_source: https://github.com/foo/bar
  • +
+
+
+

MINOR CHANGES

+
    +
  • viash ns list: Added --format yaml/json argument to be able to return the output as a json as well. Useful for when jq is installed but yq is not. Example:

    +
      viash ns list -p docker -f json | jq '.[] | .info.config'
  • +
  • viash config view: Same as above.

  • +
+
+
+

DEPRECATION

+
    +
  • CLI: Deprecated -P flag use -p intead.

  • +
  • DockerPlatform: Deprecated version value.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.6.0/index.html b/_versioned/0_8_5/blog/posts/viash-0.6.0/index.html new file mode 100644 index 00000000..cf3fb33d --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.6.0/index.html @@ -0,0 +1,849 @@ + + + + + + + + + + + +Viash - Viash 0.6.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.6.0

+

Nextflow VDSL3 is now the default, support for tracking memory and cpu requirements more elegantly

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

September 7, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

The first (major) release this year! The biggest changes are:

+
    +
  • Nextflow VDSL3 is now the default Nextflow platform, whereas the legacy Nextflow platform has been deprecated.

  • +
  • Support for tracking memory and cpu requirements more elegantly.

  • +
  • Grouping arguments in groups more concisely.

  • +
  • The addition of a viash ns exec command, to be able to execute commands on Viash components more easily.

  • +
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • NextflowPlatform: variant: vdsl3 is now the default NextflowPlatform. variant: legacy has been deprecated.

  • +
  • Functionality: Fields .inputs and .outputs has been deprecated. Please use .argument_groups instead (#186). Before:

    +
    functionality:
    +  inputs:
    +    - name: "--foo"
    +  outputs:
    +    - name: "--bar"
    +

    Now:

    +
    functionality:
    +  argument_groups:
    +    - name: Inputs
    +      arguments:
    +        - name: "--foo"
    +          type: file
    +    - name: Outputs
    +      arguments:
    +        - name: "--bar"
    +          type: file
    +          direction: output
  • +
  • Passing strings to an argument group’s arguments has been deprecated. Please simply copy the argument itself into the argument group (#186). Before:

    +
    functionality:
    +  arguments:
    +    - name: "--foo"
    +      type: file
    +    - name: "--bar"
    +      type: file
    +      direction: output
    +  argument_groups:
    +    - name: Inputs
    +      arguments: [ foo ]
    +    - name: Outputs
    +      arguments: [ bar ]
    +

    Now:

    +
    functionality:
    +  argument_groups:
    +    - name: Inputs
    +      arguments:
    +        - name: "--foo"
    +          type: file
    +    - name: Outputs
    +      arguments:
    +        - name: "--bar"
    +          type: file
    +          direction: output
  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • Allow setting the number of processes and memory limit from within the Viash config, as well as a list of required commands. Example:

    +
    functionality:
    +name: foo
    +requirements:
    +  cpus: 10
    +  memory: 10GB
    +  commands: [ bash, r, perl ]
    +

    You can override the default requirements at runtime:

    +
      +
    • ./foo ---cpus 4 ---memory 100PB (for NativePlatform or DockerPlatform)
    • +
    • By adding process.cpus = 4 and process.memory "100 PB" to a nextflow.config (for NextflowPlatform)
    • +
    +

    This results the following meta variables to be injected into a script:

    +
      +
    • meta_cpus (in Bash) or meta["cpus"] (in any other language): Number of processes the script is allowed to spawn.
    • +
    • meta_memory_b (in Bash) or meta["memory_b"] (in any other language): Amount of memory the script is allowed to allocate, in bytes.
    • +
    • meta_memory_kb (in Bash) or meta["memory_kb"] (in any other language): Same but in kilobytes, rounded up.
    • +
    • meta_memory_mb (in Bash) or meta["memory_mb"] (in any other language): Same but in megabytes, rounded up.
    • +
    • meta_memory_gb (in Bash) or meta["memory_gb"] (in any other language): Same but in gigabytes, rounded up.
    • +
    • meta_memory_tb (in Bash) or meta["memory_tb"] (in any other language): Same but in terabytes, rounded up.
    • +
    • meta_memory_pb (in Bash) or meta["memory_pb"] (in any other language): Same but in petabytes, rounded up.
    • +
  • +
  • viash ns exec: Added a command for executing arbitrary commands for all found Viash components. The syntax of this command is inspired by find . -exec echo {} \;.

    +

    The following fields are automatically replaced:

    +
      +
    • {} | {path}: path to the config file
    • +
    • {abs-path}: absolute path to the config file
    • +
    • {dir}: path to the parent directory of the config file
    • +
    • {abs-dir}: absolute path to the directory of the config file
    • +
    • {main-script}: path to the main script (if any)
    • +
    • {abs-main-script}: absolute path to the main script (if any)
    • +
    • {functionality-name}: name of the component
    • +
    +

    A command suffixed by \; (or nothing) will execute one command for each of the Viash components, whereas a command suffixed by + will execute one command for all Viash components.

  • +
  • ConfigMod: Added a del(...) config mod to be able to delete a value from the yaml. Example: del(.functionality.version).

  • +
+
+
+

MAJOR CHANGES

+
    +
  • Folder structure: Adjusted the folder structure to correctly reflect the the namespace change of viash from com.dataintuitive.viash to io.viash.

  • +
  • Functionality: Reworked the enabled field from boolean to a status field which can have the following statusses: enabled, disabled and deprecated. When parsing a config file which has the status field set to deprecated a warning message is displayed on stderr. Backwards for enabled is provided where enabled: true => status: enabled and enabled: false => status: false. The enabled field is marked deprecated.

  • +
+
+
+

MINOR CHANGES

+
    +
  • Resources: Handle edge case when no resources are specified in the vsh.yaml config file and display a warning message.

  • +
  • BashWrapper: Add a warning when an argument containing flags (e.g. --foo) is not recognized and will be handled as a positional argument as this is likely a mistake.

  • +
  • Functionality: Add check to verify there are no double argument names or short names in the config vsh.yaml declarations.

  • +
  • BashWrapper: Add check to verify a parameter isn’t declared twice on the CLI, except in the case multiple: true is declared as then it’s a valid use case.

  • +
  • BashWrapper: For int min/max checking: use native bash functionality so there is no dependency to bc. For double min/max checking: add fallback code to use awk in case bc is not present on the system (most likely to happen when running tests in a docker container).

  • +
  • viash ns list/viash config view: Allow viewing the post-processed argument groups by passing the --parse_argument_groups parameter.

  • +
+
+
+

TESTING

+
    +
  • ConfigMod: Added unit tests for condition config mods.

  • +
  • MainTestDockerSuite: Derive config alternatives from the base vsh.yaml instead of adding the changes in separate files. This both reduces file clutter and prevents having to change several files when there are updates in the config format.

  • +
  • GitTest: Added unit tests for Git helper (PR #216).

  • +
+
+
+

BUG FIXES

+
    +
  • csharp_script, javascript_script, python_script, r_script, scala_script: Make meta fields for memory and cpus optional.

  • +
  • NextflowVdsl3Platform: Don’t generate an error when --publish_dir is not defined and -profile no_publish is used.

  • +
  • Viash run: Viash now properly returns the exit code from the executed script.

  • +
  • Git: Fix incorrect metadata when git repository is empty (PR #216).

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.6.1/index.html b/_versioned/0_8_5/blog/posts/viash-0.6.1/index.html new file mode 100644 index 00000000..a560d6fb --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.6.1/index.html @@ -0,0 +1,768 @@ + + + + + + + + + + + +Viash - Viash 0.6.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.6.1

+

Minor improvements in functionality

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

October 3, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release contains mostly minor improvements of functionality released in Viash 0.6.0. Most notably:

+
    +
  • Support was added for type: long arguments

  • +
  • meta["n_proc"] has been renamed to meta["cpus"]. meta["cpus"] is now an integer, whereas meta["memory_*"] are now longs.

  • +
  • viash ns exec is able to recognise {platform} and {namespace} fields.

  • +
  • And various bug fixes and improvements to documentation and unit testing.

  • +
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • Deprecated usage resources_dir variable inside scripts, use meta["resources_dir"] instead (or $meta_resources_dir in Bash, or meta$resources_dir in R).

  • +
  • Deprecated meta["n_proc"] in favour for meta["cpus"].

  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • viash ns exec: Added two more fields:

    +
      +
    • {platform}: the platform name (if applicable)
    • +
    • {namespace}: the namespace of the component
    • +
  • +
  • LongArgument: Added support for 64-bit integers with type: long as opposed to type: integer which are 32-bit integers.

  • +
+
+
+

MAJOR CHANGES

+
    +
  • Allow passing integers/doubles/booleans to string parameters (#225). Removed the ‘Version’ helper class.
  • +
+
+
+

MINOR CHANGES

+
    +
  • meta["cpus"] is now an integer, meta["memory_*"] are now longs (#224).

  • +
  • DockerPlatform: Only store author names in the authors metadata.

  • +
  • NextflowPlatform: Only store author names in the authors metadata.

  • +
  • Argument[_]: Turn multiple_sep from Char into String.

  • +
+
+
+

INTERNAL CHANGES

+
    +
  • All meta[...] variables are now processed similar to Argument[_]s, instead of using custom code to convert object types and detect Docker mounts.

  • +
  • Escaper: Make more generic Escaper helper class.

  • +
+
+
+

DOCUMENTATION

+
    +
  • Hardcoded URLs pointing to viash.io in the documentation annotations were replaced with a new keyword system.

  • +
  • Replaced references to “DSL” with “Dynamic Config Modding” in the --help output.

  • +
  • Added an example for Ruby based Docker setups.

  • +
+
+
+

BUG FIXES

+
    +
  • viash ns: Reverse exit code outputs, was returning 1 when everything was OK and 0 when errors were detected (PR #227).

  • +
  • viash config inject: Fix processing of arguments when argument groups are defined (#231).

  • +
  • Fixed a few typos in the CLI.

  • +
  • Fixed the formatting of ns exec documentation.

  • +
  • VDSL3: Fix stub functionality.

  • +
  • VDSL3: Fix error during error message.

  • +
  • viash test: Fix issue where VIASH_TEMP could not be a relative directory when running viash test (#242).

  • +
  • BashScript, CSharpScript, JavaScriptScript, PythonScript, RScript, ScalaScript: Fix quoting issues of certain characters (#113).

  • +
+
+
+

DEPRECATION

+
    +
  • NextflowPlatform: Deprecate --param_list_format parameter.
  • +
+
+
+

TESTING

+
    +
  • BashScript, CSharpScript, JavaScriptScript, PythonScript, RScript, ScalaScript: Implement more rigorous testing of which characters are escaped.

  • +
  • BashWrapper: Escape usage of multiple_sep. This fixes various checks and transformations not working when when multiple_sep is set to ";" (#235).

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.6.2/index.html b/_versioned/0_8_5/blog/posts/viash-0.6.2/index.html new file mode 100644 index 00000000..c5ddf9be --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.6.2/index.html @@ -0,0 +1,687 @@ + + + + + + + + + + + +Viash - Viash 0.6.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.6.2

+

Two bug fixes

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

October 11, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This is a quick release to push two bug fixes related to security and being able to run Nextflow with optional output files.

+
+
+

Full changelog

+
+

BUG FIXES

+
    +
  • Git: Strip credentials from remote repositories when retrieving the path.

  • +
  • VDSL3: Allow optional output files to be null.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.6.3/index.html b/_versioned/0_8_5/blog/posts/viash-0.6.3/index.html new file mode 100644 index 00000000..36225704 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.6.3/index.html @@ -0,0 +1,812 @@ + + + + + + + + + + + +Viash - Viash 0.6.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.6.3

+

Quality-of-life improvements in Viash.

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

November 9, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release features contains mostly quality of life improvements and some experimental functionality. Most notably:

+
    +
  • viash ns list now only returns a config just once instead of once per platform.

  • +
  • A functionality’s info field can contain any data structures. An .info field was added to arguments as well.

  • +
  • Bug fixes for using Viash with podman, Nextflow>=22.10 and R<4.0.

  • +
  • Experimental support for inheriting from config partials.

  • +
+
+
+

Full changelog

+
+

MAJOR CHANGES

+
    +
  • Config: Made major internal changes w.r.t. how config files are read and at which point a platform (native, docker, nextflow) is applied to the functionality script. The only visible side effect is that viash ns list will output each config only once instead of multiple times.

  • +
  • Functionality: Structured annotation can be added to a functionality and its arguments using the info field. Example:

    +
    functionality:
    +  name: foo
    +  info:
    +    site: https://abc.xyz
    +    tags: [ one, two, three ]
    +  arguments:
    +    - name: --foo
    +      type: string
    +      info:
    +        foo: bar
    +        a:
    +          b:
    +            c
  • +
+
+
+

MINOR CHANGES

+
    +
  • BashWrapper: Allow printing the executor command by adding ---verbose ---verbose to a viash run or an executable.

  • +
  • Testbenches: Rework MainBuildAuxiliaryNativeParameterCheck to create stimulus files and loop over the file from bash instead of looping natively. This prevents creating thousands of new processes which would only test a single parameter. Note this still calls the main script for each stimulus separately, but that was the case anyway, only much much worse.

  • +
  • Testbenches: Split some grouped test benches into slightly smaller test benches that group tested functionality better.

  • +
  • Annotations: Complete the config schema annotations. Make sure all arguments are documented. Added an annotation internalFunctionality and undocumented for arguments that should not be documented. Added a testbench that verifies that all arguments are in fact annotated, skipping those that are not in the class constructor. Adds a hierarchy field in the __this__ member to list the relation of the own and parent classes.

  • +
  • Testbenches: Add exit code to helper method testMainWithStdErr.

  • +
  • Testbenches: Add testbench to verify viash underscore components (viash_build, viash_install, viash_push, viash_skeleton, viash_test).

  • +
  • Testbenches: Update viash underscore component tests to use $meta_executable.

  • +
  • viash ns exec: Allow choosing whether the {platform} field should be filled in, based on the --apply_platform parameter.

  • +
+
+
+

BUG FIXES

+
    +
  • DockerPlatform: Remove duplicate auto-mounts (#257).

  • +
  • Underscore component tests: Fix tests for viash_skeleton and viash_test components.

  • +
  • NextflowVDSL3Platform: Fix ‘Module scriptPath has not been defined yet’ error when Nextflow>=22.10 (#269).

  • +
  • config inject: Doesn’t work when must_exist == true (#273).

  • +
  • RScript: Fix compatibility issue where the new character escaping in r_script required R>=4.0 (#275). Escaping is now handled without using the new r'(foo)' notation.

  • +
+
+
+

DEPRECATION

+
    +
  • DockerRequirements: The resources: setting has been deprecated and will be removed in Viash 0.7.0. Please use copy: instead.

  • +
  • DockerRequirements: The privileged: setting has been deprecated and will be removed in Viash 0.7.0. Please use run_args: "--privileged" instead.

  • +
+
+
+

EXPERIMENTAL FUNCTIONALITY

+
    +
  • Config: Any part of a Viash config can use inheritance to fill data (PR #271). For example: Contents of src/test/config.vsh.yaml:

    +
    __inherits__: ../api/base.yaml
    +functionality:
    +  name: test
    +  resources:
    +    - type: bash_script
    +      path: script.sh
    +      text: |
    +        echo Copying $par_input to $par_output
    +        cp $par_input $par_output
    +

    Contents of src/api/base.yaml:

    +
    functionality:
    +  arguments:
    +    - name: "--input"
    +      type: file
    +    - name: "--output"
    +      type: file
    +      direction: output
    +

    The resulting yaml will be:

    +
    functionality:
    +  name: test
    +  arguments:
    +    - name: "--input"
    +      type: file
    +    - name: "--output"
    +      type: file
    +      direction: output
    +  resources:
    +    - type: bash_script
    +      path: script.sh
    +      text: |
    +        echo Copying $par_input to $par_output
    +        cp $par_input $par_output
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.6.4/index.html b/_versioned/0_8_5/blog/posts/viash-0.6.4/index.html new file mode 100644 index 00000000..22ac75c3 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.6.4/index.html @@ -0,0 +1,824 @@ + + + + + + + + + + + +Viash - Viash 0.6.4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.6.4

+

Add backwards compability by supporting switching to older Viash versions

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

November 30, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release adds features related to managing Viash projects and allows for better runtime introspection of Nextflow VDSL3 modules.

+

The most notable changes are:

+
    +
  • You can switch versions of Viash using the VIASH_VERSION environment variable! Example:

    +
    VIASH_VERSION=0.6.0 viash --version
    +

    More importantly, you can specify the version of Viash you want in a project config. See below for more info.

  • +
  • Introducing Viash project config files as an experimental feature. It allows storing project-related settings in a _viash.yaml config file which you should store at the root of your repository. Example:

    +
    viash_version: 0.6.4
    +source: src
    +target: target
    +config_mods: |
    +  .platforms[.type == 'docker'].target_registry := 'ghcr.io'
    +  .platforms[.type == 'docker'].target_organization := 'viash-io'
    +  .platforms[.type == 'docker'].namespace_separator := '/'
    +  .platforms[.type == 'docker'].target_image_source := 'https://github.com/viash-io/viash'
  • +
  • It’s now possible to specify in which order Viash will merge Viash configs. Example:

    +
    functionality:
    +  name: foo
    +  arguments:
    +    - __merge__: obj_input.yaml
    +      name: "--one"
    +    - __merge__: [., obj_input.yaml]
    +      name: "--two"
    +    - __merge__: [obj_input.yaml, .]
    +     name: "--three"
  • +
+

Please take note of the following breaking changes:

+
    +
  • Passing non-existent paths to a Viash component will cause the component to generate an error when no file or folder is found. Set must_exist to false to revert to the previous behaviour.

  • +
  • The arguments --write_meta/-w and --meta/-m no longer exist, because every viash build/run/test run will generate a .config.vsh.yaml meta file.

  • +
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • Config: Viash configs whose filenames start with a . are ignored (PR #291).

  • +
  • viash build: --write_meta/-m and --meta/-m arguments have been removed. Instead, the .config.vsh.yaml file is always created when building Viash components (PR #293).

  • +
  • FileArgument: Default setting of must_exist was changed from false to true. As such, the component will throw an error by default if an input file or output file is missing (PR #295).

  • +
  • Config merging: __inherits__ has been renamed to __merge__.

  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • You can switch versions of Viash using the VIASH_VERSION environment variable (PR #304)! Example:

    +
    VIASH_VERSION=0.6.0 viash --version
  • +
  • Traceability: Running viash build and viash test creates a .config.vsh.yaml file by default, which contains the processed config of the component. As a side effect, this allows for reading in the .config.vsh.yaml from within the component to learn more about the component being tested (PR #291 and PR #293).

  • +
  • FileArgument: Added create_parent option, which will check if the directory of an output file exists and create it if necessary (PR #295).

  • +
+
+
+

MINOR CHANGES

+
    +
  • viash run, viash test: When running or testing a component, Viash will add an extension to the temporary file that is created. Before: /tmp/viash-run-wdckjnce, now: /tmp/viash-run-wdckjnce.py (PR #302).

  • +
  • NextflowPlatform: Add DataflowHelper.nf as a retrievable resource in Viash (PR #301).

  • +
  • NextflowPlatform: During a stubrun, argument requirements are turned off and the publishDir, cpus, memory, and label directives are also removed from the process (PR #301).

  • +
  • NextflowPlatform: Added a filter processing argument to filter the incoming channel after the map, mapData, mapId and mapPassthrough have been applied (PR #296).

  • +
  • NextflowPlatform: Added the Viash config to the Nextflow module for later introspection (PR #296). For example:

    +
    include { foo } from "$targetDir/path/foo/main.nf"
    +
    +foo.run(filter: { tup ->
    +  def preferredNormalization = foo.config.functionality.info.preferred_normalization
    +  tup.normalization_id == preferredNormalization
    +})
    +

    BUG FIXES

  • +
  • BashWrapper: Don’t overwrite meta values when trailing arguments are provided (PR #295).

  • +
+
+
+

EXPERIMENTAL FEATURES

+
    +
  • Viash Project: Viash will automatically search for a _viash.yaml file in the directory of a component and its parent directories (PR #294).

    +

    Contents of _viash.yaml:

    +
    source: src
    +target: target
    +config_mods: |
    +  .platforms[.type == 'docker'].target_registry := 'ghcr.io'
    +  .platforms[.type == 'docker'].target_organization := 'viash-io'
    +  .platforms[.type == 'docker'].namespace_separator := '/'
    +  .platforms[.type == 'docker'].target_image_source := 'https://github.com/viash-io/viash'
  • +
  • Config merging: Allow specifying the order in which Viash will merge configs (PR #289). If . is not in the list of inherited objects, it will be added at the end.

    +

    Contents of config.vsh.yaml:

    +
    functionality:
    +  name: foo
    +  arguments:
    +    - __merge__: obj_input.yaml
    +      name: "--one"
    +    - __merge__: [., obj_input.yaml]
    +      name: "--two"
    +    - __merge__: [obj_input.yaml, .]
    +      name: "--three"
    +

    Contents of obj_input.yaml:

    +
    type: file
    +name: --input
    +description: A h5ad file
    +

    Output of viash config view config.vsh.yaml (stripped irrelevant bits):

    +
    functionality:
    +  arguments:
    +  - type: "file"
    +    name: "--one"
    +    description: "A h5ad file"
    +  - type: "file"
    +    name: "--input"
    +    description: "A h5ad file"
    +  - type: "file"
    +    name: "--three"
    +    description: "A h5ad file"
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.6.5/index.html b/_versioned/0_8_5/blog/posts/viash-0.6.5/index.html new file mode 100644 index 00000000..1389d02d --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.6.5/index.html @@ -0,0 +1,686 @@ + + + + + + + + + + + +Viash - Viash 0.6.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.6.5

+

A small bugfix release

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

December 2, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

A small update which fixes an issue with viash ns list that was introduced in Viash 0.6.3.

+
+
+

Full changelog

+
+

BUG FIXES

+
    +
  • viash ns list: When the -p <platform> is defined, filter the output by that platform.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.6.6/index.html b/_versioned/0_8_5/blog/posts/viash-0.6.6/index.html new file mode 100644 index 00000000..2a6db79e --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.6.6/index.html @@ -0,0 +1,686 @@ + + + + + + + + + + + +Viash - Viash 0.6.6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.6.6

+

A small bugfix release

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

December 6, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release fixes an issue where stderr was being redirected to stdout.

+
+
+

Full changelog

+
+

BUG FIXES

+
    +
  • Don’t redirect stderr to stdout when switching Viash versions (#312).
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.6.7/index.html b/_versioned/0_8_5/blog/posts/viash-0.6.7/index.html new file mode 100644 index 00000000..759c843a --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.6.7/index.html @@ -0,0 +1,697 @@ + + + + + + + + + + + +Viash - Viash 0.6.7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.6.7

+

A minor release with several QoL improvements

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

December 14, 2022

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Another minor release which contains several quality of life improvements for the Nextflow VDSL3 platform, as well as automated warnings for deprecated functionality.

+
+
+

Full changelog

+
+

MINOR CHANGES

+
    +
  • NextflowPlatform: Create directories during a stub run when output path is a nested directory (PR #314).

  • +
  • Automatically generate a warning for deprecated parameters while parsing a .viash.yaml configuration file using the inline documentation deprecation annotations.

  • +
  • Add a “planned removal” field in the deprecation annotations.

  • +
  • Add testbenches to verify proper formatting of the deprecation versions and compare current version to the planned removal version so no deprecated parameters get to stick around beyond what was planned.

  • +
  • NextflowPlatform: Nextflow processes are created lazily; that is, only when running a Nextflow workflow (PR #321).

  • +
+
+
+

BUG FIXES

+
    +
  • NextflowPlatform: Automatically split Viash config strings into strings of length 65000 since the JVM has a limit (65536) on the length of string constants (PR #323).
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.7.0/index.html b/_versioned/0_8_5/blog/posts/viash-0.7.0/index.html new file mode 100644 index 00000000..45c8fa6b --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.7.0/index.html @@ -0,0 +1,810 @@ + + + + + + + + + + + +Viash - Viash 0.7.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.7.0

+

Major code cleanup and minor improvements to VDSL3

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

February 28, 2023

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
    +
  • Default namespace separator has been changed from _ to /. This means Docker images will be named <Registry>/<Organization>/<Namespace>/<Name> by default. For example, ghcr.io/openpipelines-bio/mapping/cellranger_count instead of ghcr.io/openpipelines-bio/mapping_cellranger_count.

  • +
  • Removed deprecated code of unused functionality to simplify code.

    +
      +
    • Shorthand notation for specitying input/output arguments
    • +
    • Shorthand notation for specifying Docker requirements
    • +
    • Legacy Nextflow platform
    • +
  • +
  • Improvements in VDSL3 and the Nextflow Workflow Helper to make behaviour more predictable and fixing some bugs in the meantime. Run the following to get access to the updated helpers:

    +
    WF_DIR="src/wf_utils"
    +[[ -d $WF_DIR ]] || mkdir -p $WF_DIR
    +viash export resource platforms/nextflow/ProfilesHelper.config > $WF_DIR/ProfilesHelper.config
    +viash export resource platforms/nextflow/WorkflowHelper.nf > $WF_DIR/WorkflowHelper.nf
    +viash export resource platforms/nextflow/DataflowHelper.nf > $WF_DIR/DataflowHelper.nf
  • +
  • Improvements to test benches and several bug fixes.

  • +
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • Viash config: Previously deprecated fields are now removed.

    +
      +
    • functionality.inputs: Use arguments or argument_groups instead.
    • +
    • functionality.outputs: Use arguments or argument_groups instead.
    • +
    • functionality.tests: Use test_resources instead. No functional difference.
    • +
    • functionality.enabled: Use status: enabled instead.
    • +
    • functionality.requirements.n_proc: Use cpus instead.
    • +
    • platforms.DockerPlatform.privileged: Add a --privileged flag in run_args instead.
    • +
    • platforms.DockerPlatform.apk: Use setup: [{ type: apk, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.apt: Use setup: [{ type: apt, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.yum: Use setup: [{ type: yum, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.r: Use setup: [{ type: r, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.python: Use setup: [{ type: python, packages: ... }] instead.
    • +
    • platforms.DockerPlatform.docker: Use setup: [{ type: docker, run: ... }] instead.
    • +
    • platforms.DockerPlatform.docker.setup.resources: Use setup: [{ type: docker, copy: ... }] instead.
    • +
    • platforms.NextflowLegacy: Use the Nextflow VDSL3 platform instead.
    • +
    • functionality.ArgumentGroups: No longer supports strings referring to arguments in the arguments: section. Instead directly put the arguments inside the argument groups.
    • +
  • +
  • viash_install: The bootstrap script has been reworked in line with the project config introduced in 0.6.4:

    +
      +
    • The default location for installing the Viash executable is now ./viash (was: bin/viash).
    • +
    • The new viash_install support --output and --tag.
    • +
    • The various settings that existed in viash_install (organisation, tag, …) are moved to the project config.
    • +
    +

    Please note that this new viash_install bootstrap script can be run from the CLI using:

    +
    curl -fsSL dl.viash.io | bash
    +

    The old get.viash.io is still available but points to the version 0.6.7 version of this component and is deprecated.

  • +
  • WorkflowHelper: paramsToList, paramsToChannel and viashChannel are now deprecated and will be removed in a future release.

  • +
  • viash (ns) build: Change the default value of the namespace separator in a Docker platform from _ to /. Add ".platforms[.type == 'docker'].namespace_separator := '_'" to the project config _viash.yaml to revert to the previous behaviour.

  • +
+
+
+

MAJOR CHANGES

+
    +
  • VDSL3: now uses the newly implemented channelFromParams and preprocessInputs instead of viashChannel.
  • +
+
+
+

NEW FEATURES

+
    +
  • WorkflowHelper: Added preprocessInputs and channelFromParams to replace paramsToList, paramsToChannel and viashChannel. This refactor allows processing parameters that are already in a Channel using preprocessInputs, which is necessary when passing parameters from a workflow to a subworkflow in a Nextflow pipeline.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Main: Capture build, setup and push errors and output an exit code.

  • +
  • File downloading: Add check to pre-emptively catch file errors (e.g. 404).

  • +
  • Scala: Updated to Scala 2.13 and updated several dependencies.

  • +
  • Main: Improve match completeness in some edge cases and throw exceptions where needed.

  • +
  • Changelog: Reformat the changelog to a more structured format. For every release, there is now a date, title, and summary. This both improves the changelog itself but can then also be used to postprocess the CHANGELOG programmatically.

  • +
  • VDSL3: Add a default value for id when running a VDSL3 module as a standalone pipeline.

  • +
  • TestBenches:

    +
      +
    • Verify switching of Viash versions
    • +
    • Prepare ConfigDeriver by copying base resources to the targetFolder. Use cases so far showed that it’s always required and it simplifies the usage.
    • +
    • Remove some old & unmaintained IntelliJ Idea editor-fold tags. Given that the testbenches were split up, these were broken but also no longer needed.
    • +
    • Add 2 testbenches for computational requirements when running viash run or viash test.
    • +
    • Added tests for different values for the --id and --param_list parameters of VDSL3 modules.
    • +
  • +
  • viash test: Use test as a random tag during testing, instead of test plus a random string.

  • +
+
+
+

BUG FIXES

+
    +
  • WorkflowHelper: fixed where passing a relative path as --param_list would cause incorrect resolving of input files.

  • +
  • Testbenches: Fix GitTest testbench to correctly increment temporary folder naming and dispose them after the test finishes.

  • +
  • viash xxx url: Fix passing a url to viash as the config file to process. Add a short testbench to test principle functionality.

  • +
  • Testbenches: Simplify testr container.

  • +
  • Main: Improve error reporting to the user in some cases where files or folders can’t be found. Depending on the thrown exception, more or less context was given.

  • +
  • VDSL3: Create parent directory of output files before starting the script.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.7.1/index.html b/_versioned/0_8_5/blog/posts/viash-0.7.1/index.html new file mode 100644 index 00000000..d64dc4ea --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.7.1/index.html @@ -0,0 +1,702 @@ + + + + + + + + + + + +Viash - Viash 0.7.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.7.1

+

Minor improvements to VDSL3 and schema functionality.

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

March 8, 2023

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This is a minor release which improves caching in VDSL3 components and changes the formats of the schema files for the Viash config and CLI.

+
+
+

Full changelog

+
+

MINOR CHANGES

+
    +
  • DataflowHelper: Add assertions and defs.
  • +
+
+
+

BUG FIXES

+
    +
  • VDSL3: Only the first two elements from an event in a channel are now passed to a process. This avoids calculating cache entries based on arguments that are not used by the process, causing false-negative cache misses.

  • +
  • config_schema:

    +
      +
    • Correct some incorrect markdown tags.
    • +
    • Add project config.
    • +
    • Correct documentation/markdown tags to the correct order.
    • +
    • Add summary description and example for ‘resource’ and ‘argument’, to be used on the reference website.
    • +
    • Add documentation for the Nextflow directives.
    • +
  • +
  • cli_schema: Correct documentation/markdown tags to the correct order.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.7.2/index.html b/_versioned/0_8_5/blog/posts/viash-0.7.2/index.html new file mode 100644 index 00000000..c9e058fb --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.7.2/index.html @@ -0,0 +1,716 @@ + + + + + + + + + + + +Viash - Viash 0.7.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.7.2

+

Project-relative paths and improved metadata handling

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

April 17, 2023

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This update adds functionality to resolve paths starting with a slash as relative to the project directory, improves handling of info metadata in the config, and fixes to the operator precedence of config mods.

+
+
+

Full changelog

+
+

NEW FUNCTIONALITY

+
    +
  • Resolve resource and merge paths starting with a slash (/) as relative to the project directory (PR #380). To define absolute paths (which is not recommended anyway), prefix the path with the file:// protocol. Examples:

    +
      +
    • /foo is a file or directory called foo in the current project directory.
    • +
    • file:/foo is a file or directory called foo in the system root.
    • +
  • +
+
+
+

MINOR CHANGES

+
    +
  • viash config view: Do not modify (e.g. strip empty fields) of the .functionality.info and .functionality.arguments[].info fields (#386).
  • +
+
+
+

BUG FIXES

+
    +
  • ConfigMods: Fix operator precedence issues with conditions in the config mod parsers (PR #390).
  • +
+
+
+

INTERNAL CHANGES

+
    +
  • Clean up unused code (PR #380).

  • +
  • Move circe encoders/decoders for File and Path from io.viash.functionality.arguments to io.viash.helpers.circe (PR #380).

  • +
  • Store the project root directory (that is, the directory of the _viash.yaml) in a ViashProject object (PR #380).

  • +
  • Tests: Reworked language tests to be grouped in their own subfolder and split off the bash language test from the general testbash folder (PR #381).

  • +
  • Tests: Add additional language tests for viash config inject (PR #381).

  • +
  • Tests: Added test for io.viash.helpers.IO (PR #380).

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.7.3/index.html b/_versioned/0_8_5/blog/posts/viash-0.7.3/index.html new file mode 100644 index 00000000..2224faa4 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.7.3/index.html @@ -0,0 +1,687 @@ + + + + + + + + + + + +Viash - Viash 0.7.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.7.3

+

Minor bug fixes in documentation and config view

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

April 19, 2023

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Fix minor issues in the documentation and with the way parent paths of resources are printed a config view.

+
+
+

Full changelog

+
+

BUG FIXES

+
    +
  • DockerPlatform: Fixed example in documentation for the namespace_separator parameter (PR #396).

  • +
  • viash config view: Resource parent paths should be directories and not file (PR #398).

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.7.4/index.html b/_versioned/0_8_5/blog/posts/viash-0.7.4/index.html new file mode 100644 index 00000000..5e328c87 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.7.4/index.html @@ -0,0 +1,724 @@ + + + + + + + + + + + +Viash - Viash 0.7.4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.7.4

+

Minor bug fixes and minor improvements to VDSL3

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

May 31, 2023

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Some small fixes and consistency improvements. A few Quality of Life improvements were made e.g. to override the Docker entrypoint when working with Nextflow and providing default labels when building a Nextflow workflow.

+
+
+

Full changelog

+
+

NEW FUNCTIONALITY

+
    +
  • Add default labels in Nextflow config files that set default values for cpu and memory settings (PR #412). Values are more or less logarithmically spaced (1, 2, 5, 10, …).

  • +
  • Author: Added info field to authors. Deprecated props field (PR #423).

  • +
  • viash config view and viash ns list: Set the .info.output path when a platform argument is provided.

  • +
  • viash ns exec: Added two more fields:

    +
      +
    • {output}: path to the destination directory when building the component
    • +
    • {abs-output}: absolute path to the destination directory when building the component
    • +
  • +
  • DockerPlatform: Add entrypoint and cmd parameters to the docker platform config that allows overriding the default docker container settings (PR #432).

  • +
+
+
+

MINOR CHANGES

+
    +
  • Nextflow VDSL3:

    +
      +
    • Add profiles to the Nextflow Config file when the main script is a NextflowScript (#408).
    • +
    • Add a script parameter in Nextflow Config file to add a single string or list of strings to the nextflow.config (PR #430).
    • +
  • +
  • Scripts: Remove the entrypoint parameter for all script types except NextflowScript (#409). All these scripts had to check individually whether the parameter was unset, now it can be done in the Script apply method.

  • +
  • schema export:

    +
      +
    • Restructure Nextflow-Directives, -Auto and -Config into a nextflowParameters group (PR #412). Previously only NextflowDirectives was exposed.
    • +
    • Restructure the format to group authors & computational requirements together with functionality (PR #426).
    • +
    • Restructure the Viash Config and Project Config pages under a config category (PR #426).
    • +
    • Add references in Functionality and Nextflow VDSL3 to the new documentation pages (PR #426).
    • +
    • Add description and/or examples for platforms and requirements (PR #428).
    • +
  • +
+
+
+

BUG FIXES

+
    +
  • viash config inject: Fix an empty line being added at the script start for each time viash config inject was run (#377).

  • +
  • WorkflowHelper: Fixed an issue where passing a remote file URI (for example http:// or s3://) as param_list caused No such file errors.

  • +
  • BashWrapper: Fix escaping of the included script where a line starting with a pipe character with optional leading spaces is stripped of the leading spaces and pipe character. This was quite unlikely to happen except when viash config inject was called on a Nextflow Script, which lead to no real config code being injected however workflows were getting corrupted. (#421)

  • +
  • Deprecation testbench: Add missing classes to be checked (PR #426).

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.7.5/index.html b/_versioned/0_8_5/blog/posts/viash-0.7.5/index.html new file mode 100644 index 00000000..e0d22707 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.7.5/index.html @@ -0,0 +1,752 @@ + + + + + + + + + + + +Viash - Viash 0.7.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.7.5

+

Minor breaking changes and new features

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

August 11, 2023

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release contains minor breaking change due to deprecated or outdated functionality being removed.

+

New functionality includes:

+
    +
  • Export a JSON schema for the Viash config with viash export json_schema

  • +
  • Export a Bash or Zsh autocomplete script with viash export cli_autocomplete

  • +
  • Nextflow VDSL3 modules now have a fromState and toState argument to allow for better control of the data that gets passed to the module and how the state is managed in a Nextflow workflow.

  • +
+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • viash export cli_schema: Added --format yaml/json argument, default format is now a YAML (PR #448).

  • +
  • viash export config_schema: Added --format yaml/json argument, default format is now a YAML (PR #448).

  • +
  • NextflowLegacyPlatform: Removed deprecated code (PR #469).

  • +
  • viash_*: Remove legacy viash_build, viash_test and viash_push components (PR #470).

  • +
  • ComputationalRequirements, Functionality, DockerPlatform, DockerRequirements: Remove documentation of removed fields (PR #477).

  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • viash export json_schema: Export a json schema derived from the class reflections and annotations already used by the config_schema (PR #446).

  • +
  • viash export config_schema: Output default values of member fields (PR #446).

  • +
  • CI: Test support for different Java versions on GitHub Actions (PR #456). Focussing on LTS releases starting from 11, so this is 11 and 17. Also test latest Java version, currently 20.

  • +
  • viash test and viash ns test: add --setup argument to determine the docker build strategy before a component is tested (PR #451).

  • +
  • viash export cli_autocomplete: Export a Bash or Zsh autocomplete script (PR #465 & #482).

  • +
  • help message: Print the relevant help message of (sub-)command when --help is given as an argument instead of only printing the help message when it is the leading argument and otherwise silently disregarding it (initially added in PR #472, replaced by PR #496). This is a new feature implemented in Scallop 5.0.0.

  • +
  • Logging: Add a Logger helper class (PR #485 & #490). Allows manually enabling or disabling colorizing TTY output by using --colorize. Add provisions for adding debugging or trace code which is not outputted by default. Changing logging level can be changed with --loglevel. These CLI arguments are currently hidden.

  • +
  • NextflowPlatform: Nextflow VDSL3 modules now have a fromState and toState argument to allow for better control of the data that gets passed to the module and how the state is managed in a Nextflow workflow (#479, PR #501).

  • +
+
+
+

MINOR CHANGES

+
    +
  • PythonScript: Pass -B to Python to avoid creating *.pyc and *.pyo files on importing helper functions (PR #442).

  • +
  • viash config: Special double values now support +.inf, -.inf or .nan values (PR #446 and PR #450). The stringified versions "+.inf", "-.inf" or ".nan" are supported as well. This is in line with the yaml spec.

  • +
  • system environment variables: Add wrapper around sys.env and provide access to specific variables (PR #457). Has advantages for documentation output and testbenches.

  • +
  • testbench: Added some minor testbenches to tackle missing coverage (PR #459, #486, #488, #489, #492 & #494).

  • +
  • viash export config_schema: Simplify file structure (PR #464).

  • +
  • helpers.Format: Add a helper for the Format helper object (PR #466).

  • +
  • testbench: Use config deriver to create config variants for testing (PR #498). This reduces the amount of config files that need to be maintained.

  • +
+
+
+

BUG FIXES

+
    +
  • viash config: Validate Viash config Yaml files better and try to give a more informative error message back to the user instead of a stack trace (PR #443).

  • +
  • viash ns build: Fix the error summary when a setup or push failure occurs. These conditions were not displayed and could cause confusion (PR #447).

  • +
  • testbench: Fix the viash version switch test bench not working for newer Java versions (PR #452).

  • +
  • malformed input exception: Capture MalformedInputExceptions when thrown by reading files with invalid Ascii characters when unsupported by Java (PR #458).

  • +
  • viash project file parsing: Give a more informative message when the viash project file fails to parse correctly (PR #475).

  • +
  • DockerPlatform: Fix issue when mounting an input or output folder containing spaces (PR #484).

  • +
  • Config mod: Fix a config mod where the filter should execute multiple deletes (PR #503).

  • +
+
+
+

DOCUMENTATION

+
    +
  • NextflowPlatform: Add documentation for the usage and arguments of a VDSL3 module (PR #501).
  • +
+
+
+

INTERNAL CHANGES

+
    +
  • NextflowVDSL3Platform: Renamed to NextflowPlatform (PR #469).

  • +
  • Rename mentions of NextFlow to Nextflow (PR #476).

  • +
  • Reference static pages: Move .qmd files from the website to a local folder here; docs/reference (PR #504). This way we can track behaviour changes that need to be documented locally.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.8.0/index.html b/_versioned/0_8_5/blog/posts/viash-0.8.0/index.html new file mode 100644 index 00000000..ec78cb4a --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.8.0/index.html @@ -0,0 +1,798 @@ + + + + + + + + + + + +Viash - Viash 0.8.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.8.0

+

Nextflow workflows and dependencies

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

October 23, 2023

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Nextflow workflows definitions are picked up by Viash and assembled into a functional Nextflow workflow, reducing the amount of boilerplate code needed to be written by the user. It also adds a new runIf argument to the NextflowPlatform which allows for conditional execution of modules. We added new ‘dependencies’ functionality to allow for more advanced functionality to be offloaded and re-used in components and workflows.

+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • NextflowPlatform: Changed the default value of auto.simplifyOutput from true to false (#522, PR #518). With simplifyOutput set to true, the resulting Map could be simplified into a File or a List[File] depending on the number of outputs. To replicate the previous behaviour, add the following config mod to _viash.yaml:

    +
    config_mods: |
    +  .platforms[.type == 'nextflow'].auto.simplifyOutput := true
  • +
  • VDSL3Helper.nf: Removed from the Viash jar file (PR #518). Its functions have been moved to WorkflowHelper.nf.

  • +
  • DataflowHelper.nf: Added deprecation warning to functions from this file (PR #518).

  • +
  • preprocessInputs() in WorkflowHelper.nf: Added deprecation warning to preprocessInputs() because this function causes a synchronisation event (PR #518).

  • +
  • author.props: Removed deprecated props field (PR #536). Deprecated since 0.7.4.

  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • dependencies: Add dependencies and repositories to functionality (PR #509). The new functionality allows specifying dependencies and where to retrieve (repositories) them in a component, and subsequentially allows advanced functionality to be offloaded and re-used in scripts and projects. This is alike e.g. npm, pip and many others. A big difference is that we aim to provide the needed boilerplate code to ease the usage of the dependencies in scripts, workflows and pipelines. Note that the dependency is required to be a built Viash component or project and not a random file or code project found externally. This is needed to provide the necessary background information to correctly link dependencies into a component.

  • +
  • NextflowScript & NextflowPlatform: Merged code for merging the main.nf files for VDSL3 components and wrapped Nextflow workflows (PR #518). By aligning the codebase for these two, wrapped Nextflow workflows are more similar to VDSL3 components. For example, you can override the behaviour of a wrapped Nextflow workflow using the .run() method. Status of a workflows .run() arguments:

    +
      +
    • Works as intended: auto.simplifyInput, auto.simplifyOutput, fromState, toState, map, mapData, mapPassthrough, filter, auto.publish = "state"
    • +
    • Does not work (yet): auto.transcript, auto.publish = true, directives, debug.
    • +
    +

    In a next PR, each of the dependencies will have their values overridden by the arguments of the .run.

  • +
  • NextflowPlatform: The data passed to the input of a component and produced as output by the component are now validated against the arguments defined in the Viash config (PR #518).

  • +
  • NextflowPlatform: Use stageAs to allow duplicate filenames to be used automatigically (PR #518).

  • +
  • NextflowPlatform: When wrapping Nextflow workflows, throw an error if the IDs of the output channel doesn’t match the IDs of the input channel (PR #518). If they don’t, the workflow should store the original ID of the input tuple in the in the _meta.join_id field inside the state as follows: Example input event: ["id", [input: file(...)]], Example output event: ["newid", [output: file(...), _meta: [join_id: "id"]]]

  • +
  • NextflowPlatform: Added new .run() argument runIf - a function that determines whether the module should be run or not (PR #553). If the runIf closure evaluates to true, then the module will be run. Otherwise it will be passed through without running.

  • +
+
+
+

MAJOR CHANGES

+
    +
  • WorkflowHelper.nf: The workflow helper was split into different helper files for each of the helper functions (PR #518). For now, these helper files are pasted together to recreate the WorkflowHelper.nf. In Viash development environments, don’t forget to run ./configure to start using the updated Makefile.

  • +
  • NextflowPlatform: Set default tag to "$id" (#521, PR #518).

  • +
  • NextflowPlatform: Refactoring of helper functions (PR #557).

    +
      +
    • Cleaned up processConfig(): Removed support for functionality.inputs and functionality.outputs
    • +
    • Cleaned up processConfig(): Removed support for .functionality.argument_groups[].argument containing a list of argument ids as opposed to the arguments themselves.
    • +
    • Rewrote --param_list parser.
    • +
    • Removed unused function applyConfig() and applyConfigToOneParamSet().
    • +
    • Refactored channelFromParams() to make use of new helper functions.
    • +
    • Removed deprecated paramsToChannel(), paramsToList(), viashChannel().
    • +
    • Deprecated preprocessInputs() – use the wrapped Viash Nextflow functionality instead.
    • +
    • Refactored preprocessInputs() to make use of new helper functions.
    • +
    • Deprecated run arguments map, mapData, mapPassthrough, renameKeys.
    • +
  • +
+
+
+

MINOR CHANGES

+
    +
  • NextflowPlatform: Throw error when unexpected keys are passed to the .run() method (#512, PR #518).

  • +
  • NextflowPlatform: Use moduleDir instead of projectDir to determine the resource directory.

  • +
  • NextflowPlatform: Rename internal VDSL3 variables to be more consistent with regular Viash component variables and avoid naming clashes (PR #553).

  • +
+
+
+

DOCUMENTATION

+
    +
  • Minor fixes to VDSL3 reference documentation (PR #508).
  • +
+
+
+

BUG FIXES

+
    +
  • WorkflowHelper.nf: Only set default values of output files which are not already set, and if the output file argument is not required (PR #514).

  • +
  • NextflowPlatform: When using fromState and toState, do not throw an error when the state or output is missing an optional argument (PR #515).

  • +
  • export cli_autocomplete: Fix output script format and hide --loglevel and --colorize (PR #544). Masked arguments are usable but might not be very useful to always display in help messages.

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.8.1/index.html b/_versioned/0_8_5/blog/posts/viash-0.8.1/index.html new file mode 100644 index 00000000..6c2d80fb --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.8.1/index.html @@ -0,0 +1,684 @@ + + + + + + + + + + + +Viash - Viash 0.8.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.8.1

+

Minor bug fix to Nextflow workflows

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

November 20, 2023

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release fixes a bug in the Nextflow platform where calling a workflow with the .run() function without specifying the fromState argument would result in an error when the input channel contained tuples with more than two elements.

+
+
+

Full changelog

+
+

BUG FIXES

+

NextflowPlatform: Fix error when using .run() without using fromState and the input channel holds tuples with more than two elements (PR #587).

+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.8.2/index.html b/_versioned/0_8_5/blog/posts/viash-0.8.2/index.html new file mode 100644 index 00000000..88a48839 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.8.2/index.html @@ -0,0 +1,714 @@ + + + + + + + + + + + +Viash - Viash 0.8.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.8.2

+

Minor changes and bug fixes

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

December 14, 2023

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release fixes a few bugs regarding dependencies and how the Nextflow platform handles Paths.

+
+
+

Full changelog

+
+

MINOR CHANGES

+
    +
  • NextflowTestHelper: Do not hardcode a version of Nextflow in the testbench, but use the version of Nextflow that is installed on the system (PR #593).

  • +
  • GitHub Actions: Test different versions of Nextflow (22.04.5, latest, and latest-edge) (PR #593). Testing the latest Edge version of Nextflow will allow us to catch notice changes in Nextflow earlier.

  • +
  • Updates to the documentation and templates in the Git repo (#598, PR #600):

    +
      +
    • Add contributing guidelines.

    • +
    • Add issue templates.

    • +
    • Reworked the pull request template.

    • +
  • +
+
+
+

BUG FIXES

+
    +
  • config: Fix the main level of a component config not enforcing strict mode and instead allowing any field to be specified (PR #585).

  • +
  • dependencies: Allow the user to define a local dependency with specifying repository: local as sugar syntax (PR #609). A local repository is the default value so it’s not required to be filled in, but allowing it with a sensible sugar syntax makes sense.

  • +
  • Repositories: Fix a structural issue where a repository defined directly in a dependency would require the name field to be set (PR #607). Repository variants are created with and without the name field. Repositories under .functionality.dependencies[] use repositories without the name field, while repositories under .functionality.repositories[] use repositories with the name field.

  • +
  • NextflowPlatform: Do not resolve remote paths relative to the –param_list file (PR #592).

  • +
  • NextflowPlatform: Allow finding .build.yaml file when worktree contains a directory that is a symlink (PR #611).

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.8.3/index.html b/_versioned/0_8_5/blog/posts/viash-0.8.3/index.html new file mode 100644 index 00000000..2947863c --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.8.3/index.html @@ -0,0 +1,688 @@ + + + + + + + + + + + +Viash - Viash 0.8.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.8.3

+

Bug fixes

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

January 8, 2024

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Fix some edge cases and improve usability.

+
+
+

Full changelog

+
+

BUG FIXES

+
    +
  • NextflowPlatform: properly resolve paths when a nextflow workflow has another nextflow workflow as dependency and the worktree contains a directory that is a symlink (PR #614).

  • +
  • Main: Fixes a bug added by #294 which causes Viash to print a stacktrace instead of a helpful error message when viash is run without any arguments (#617, PR #618). Thanks @mberacochea for pointing out this oversight!

  • +
  • Dependency: When an alias is defined, pass the alias as a key to the .run() function (#601, PR #606).

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.8.4/index.html b/_versioned/0_8_5/blog/posts/viash-0.8.4/index.html new file mode 100644 index 00000000..5773300f --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.8.4/index.html @@ -0,0 +1,686 @@ + + + + + + + + + + + +Viash - Viash 0.8.4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.8.4

+

Bug fix

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

January 15, 2024

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Fix building components with dependencies that have symlinks in their paths.

+
+
+

Full changelog

+
+

BUG FIXES

+
    +
  • dependencies: Fix dependencies with paths using symlinks (PR #621). The resolution for the .build.vsh was changed to use the toRealPath previously, so dependency resolution must take account possible resolved symlinks too.
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.8.5/index.html b/_versioned/0_8_5/blog/posts/viash-0.8.5/index.html new file mode 100644 index 00000000..074642f8 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.8.5/index.html @@ -0,0 +1,704 @@ + + + + + + + + + + + +Viash - Viash 0.8.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.8.5

+

Bug fixes and documentation improvements

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

February 21, 2024

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

Fix a bug when building a test docker container which requires a test resource. Additional improvements for the website documentation and support for the latest version of Nextflow are added.

+
+
+

Full changelog

+
+

BUG FIXES

+
    +
  • nextflow runner: Fix an issue with current nextflow-latest (24.01.0-edge) where our supporting library passes a GString instead of a String and results in a type mismatch (PR #640).

  • +
  • test resources: Make non-script test resources available during building of a docker container for viash test (PR #652).

  • +
+
+
+

DOCUMENTATION

+
    +
  • repositories: Improve the repository documentation with links and a overview table with links (PR #643).
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.8.6/index.html b/_versioned/0_8_5/blog/posts/viash-0.8.6/index.html new file mode 100644 index 00000000..3da14157 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.8.6/index.html @@ -0,0 +1,672 @@ + + + + + + + + + + + +Viash - Viash 0.8.6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.8.6

+

TODO Add title

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

December 31, 9999

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+ + +
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.9.0/index.html b/_versioned/0_8_5/blog/posts/viash-0.9.0/index.html new file mode 100644 index 00000000..ca6694c6 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.9.0/index.html @@ -0,0 +1,715 @@ + + + + + + + + + + + +Viash - Viash 0.9.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.9.0

+

Restructure platforms into runners and engines

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

January 26, 2024

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+

This release restructures the platforms field into runners and engines. Additionally changes are made to sanitize the built config output and include additional relevant meta data.

+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • runners and engines: The usage of platforms is deprecated and instead these are split into runners and engines (PR #510). The platforms field is still supported but will be removed in a future release. In brief, the native platform became a native engine and docker platform became a docker engine. Additionally, the native platform and docker platform became a executable runner, nextflow platform became a nextflow runner. The fields of docker platform is split between docker engine and docker runner: port, workdir, setup_strategy, and run_args are captured by the runner as they define how the component is run. The other fields are captured by the engine as they define the environment in which the component is run. One exception is chown which is rarely set to false and is now always enabled.

  • +
  • arguments: Merge arguments into argument_groups during a json decode prepare step (PR #574). The --parse_argument_groups option from ns list and config view is deprecated as it is now always enabled.

  • +
+
+
+

NEW FUNCTIONALITY

+
    +
  • export json_schema: Add a --strict option to output a subset of the schema representing the internal structure of the Viash config (PR #564).

  • +
  • config view and ns list: Do not output internal functionality fields (#564). Additionally, add a validation that no internal fields are present when reading a Viash config file.

  • +
  • project config: Add fields in the project config to specify default values for component config fields (PR #612). This allows for a more DRY approach to defining the same values for multiple components.

  • +
+
+
+

MINOR CHANGES

+
    +
  • testbenches: Add testbenches for local dependencies (PR #565).

  • +
  • testbenches: Refactor testbenches helper functions to uniformize them (PR #565).

  • +
  • logging: Preserve log order of StdOut and StdErr messages during reading configs in namespaces (PR #571).

  • +
  • Java 21 support: Update Scala to 2.13.12 and update dependencies (PR #602).

  • +
  • project config: Output the project config under the default name ProjectConfig instead of Project during schema export (PR #631). This is now important as the project config is now part of the component config. Previously this was overridden as the class name was ViashProject which was less descriptive.

  • +
+
+
+

BUG FIXES

+
    +
  • __merge__: Handle invalid yaml during merging (PR #570). There was not enough error handling during this operation. Switched to the more advanced Convert.textToJson helper method.

  • +
  • config: Anonymize paths in the config when outputting the config (PR #625).

  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.999.999/index.html b/_versioned/0_8_5/blog/posts/viash-0.999.999/index.html new file mode 100644 index 00000000..d03e407e --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.999.999/index.html @@ -0,0 +1,738 @@ + + + + + + + + + + + +Viash - Viash 0.999.999 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.999.999

+

TODO Add title

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

December 31, 9999

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
+
+

Full changelog

+
+

BREAKING CHANGES

+
    +
  • arguments: Change default multiple_sep from : to ; to avoid conflicts with paths like s3://foo/bar (PR #645). The previous behaviour of using multiple_sep: ":" can be achieved by adding a config mod to the _viash.yaml:

    +
    config_mods: |
    +  .functionality.argument_groups[true].arguments[.multiple == true].multiple_sep := ":"
  • +
  • functionality: Remove the functionality layer from the config and move all fields to the top layer (PR #649).

  • +
+
+
+

MINOR CHANGES

+
    +
  • package config: Renamed project config to package config (PR #636). Now that we start using the config more, we came to the conclusion that “package” was better suited that “project”.

  • +
  • ns exec: Added an extra field {name} to replace {functionality-name} (PR #649). No immediate removal of the old field is planned, but it is deprecated.

  • +
  • BashWrapper: Added meta-data field meta_name as a replacement for meta_functionality_name (PR #649). No immediate removal of the old field is planned, but it is deprecated.

  • +
+
+
+

BUG FIXES

+
    +
  • schema: Don’t require undocumented fields to set default values and add the links and reference fields to functionality as they were not meant only to be in the project config (PR #636).
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/blog/posts/viash-0.x.x/index.html b/_versioned/0_8_5/blog/posts/viash-0.x.x/index.html new file mode 100644 index 00000000..6f211781 --- /dev/null +++ b/_versioned/0_8_5/blog/posts/viash-0.x.x/index.html @@ -0,0 +1,684 @@ + + + + + + + + + + +Viash - Viash 0.x.x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Viash 0.x.x

+

TODO Add title

+
+
New Release
+
+
+
+ + +
+ +
+
Author
+
+

Viash Team

+
+
+ +
+
Published
+
+

Invalid Date

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + + +
+

What’s new?

+
+
+

Full changelog

+
+

BUG FIXES

+
    +
  • schema: Don’t require undocumented fields to set default values and add the links and reference fields to functionality as they were not meant only to be in the project config (PR #636).
  • +
+ + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/cheatsheet/viash_cheatsheet_latest.html b/_versioned/0_8_5/cheatsheet/viash_cheatsheet_latest.html new file mode 100644 index 00000000..91f1858d --- /dev/null +++ b/_versioned/0_8_5/cheatsheet/viash_cheatsheet_latest.html @@ -0,0 +1,637 @@ + + + + + + + + + +Viash - Latest Viash cheat sheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Latest Viash cheat sheet

+
+ + + +
+ + + + +
+ + + +
+ + +

+ + + +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/cheatsheet/viash_cheatsheet_v1_1.pdf b/_versioned/0_8_5/cheatsheet/viash_cheatsheet_v1_1.pdf new file mode 100644 index 00000000..b406455f Binary files /dev/null and b/_versioned/0_8_5/cheatsheet/viash_cheatsheet_v1_1.pdf differ diff --git a/_versioned/0_8_5/cheatsheet/viash_cheatsheet_v1_1.png b/_versioned/0_8_5/cheatsheet/viash_cheatsheet_v1_1.png new file mode 100644 index 00000000..dbdcded8 Binary files /dev/null and b/_versioned/0_8_5/cheatsheet/viash_cheatsheet_v1_1.png differ diff --git a/_versioned/0_8_5/cheatsheet/viash_cheatsheet_v1_2.pdf b/_versioned/0_8_5/cheatsheet/viash_cheatsheet_v1_2.pdf new file mode 100644 index 00000000..07269413 Binary files /dev/null and b/_versioned/0_8_5/cheatsheet/viash_cheatsheet_v1_2.pdf differ diff --git a/_versioned/0_8_5/favicon.png b/_versioned/0_8_5/favicon.png new file mode 100644 index 00000000..c4a39ac9 Binary files /dev/null and b/_versioned/0_8_5/favicon.png differ diff --git a/_versioned/0_8_5/getting-started/installation.html b/_versioned/0_8_5/getting-started/installation.html new file mode 100644 index 00000000..14798b7b --- /dev/null +++ b/_versioned/0_8_5/getting-started/installation.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/_versioned/0_8_5/githubRepository.html b/_versioned/0_8_5/githubRepository.html new file mode 100644 index 00000000..259dd3ce --- /dev/null +++ b/_versioned/0_8_5/githubRepository.html @@ -0,0 +1,568 @@ + + + + + + + + + +Viash - Github Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Github Repository

+
+ + + +
+ + + + +
+ + +
+ +

A GitHub repository where remote dependency components can be found.

+

Examples without name field in case used in .functionality.dependencies:

+
type: github
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+
type: github
+repo: viash-io/viash
+tag: 0.7.1
+path: src/test/resources/testns
+

Examples with name field in case used in .functionality.repositories:

+
name: openpipeline
+type: github
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+
name: viash-testns
+type: github
+repo: viash-io/viash
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

repo

+

Type: String

+

The name of the GitHub repository.

+

Example:

+
repo: viash-io/viash
+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a GitHub repository.

+ + +
+ +
+ + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/component/add-dependencies.html b/_versioned/0_8_5/guide/component/add-dependencies.html new file mode 100644 index 00000000..12232e77 --- /dev/null +++ b/_versioned/0_8_5/guide/component/add-dependencies.html @@ -0,0 +1,1593 @@ + + + + + + + + + + +Viash - Add dependencies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Add dependencies

+
+ +
+
+ Adding custom dependencies to a component. +
+
+ + +
+ + + + +
+ + + +
+ + + +

In the previous section, reproducibility of our Viash component was ensured by a predefined Docker image such as bash:4.0 and python:3.10. However, your script might require other software dependencies, such as command-line tools or Python and R packages.

+

By default, Viash will build component-specific Docker images. This means that every Viash component can have its own set of dependencies.

+
+

Extended example

+

Below is an example where additional software is added to a base Docker image using the setup section of a Docker platform.

+
+ +
+
+
functionality:
+  name: example_bash_with_setup
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: bash_script
+      path: script.sh
+platforms:
+  - type: docker
+    image: bash:4.0
+    setup:
+      - type: apk
+        packages:
+          - curl
+          - wget
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_csharp_with_setup
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: csharp_script
+      path: script.csx
+platforms:
+  - type: docker
+    image: ghcr.io/data-intuitive/dotnet-script:1.3.1
+    setup:
+      - type: apk
+        packages:
+          - curl
+          - wget
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_js_with_setup
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: javascript_script
+      path: script.js
+platforms:
+  - type: docker
+    image: node:19-bullseye-slim
+    setup:
+      - type: apt
+        packages:
+          - curl
+          - wget
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_python_with_setup
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: python_script
+      path: script.py
+platforms:
+  - type: docker
+    image: python:3.10-slim
+    setup:
+      - type: apt
+        packages:
+          - curl
+          - wget
+      - type: python
+        packages: anndata
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_r_with_setup
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: r_script
+      path: script.R
+platforms:
+  - type: docker
+    image: eddelbuettel/r2u:22.04
+    setup:
+      - type: apt
+        packages:
+          - curl
+          - wget
+      - type: r
+        packages: tidyverse
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_scala_with_setup
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: scala_script
+      path: script.scala
+platforms:
+  - type: docker
+    image: sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10
+    setup:
+      - type: apt
+        packages:
+          - curl
+          - wget
+  - type: native
+  - type: nextflow
+
+
+
+

You can (re)build a component’s Docker image by passing the ---setup flag to the executable:

+
+ +
+
+

Build the executable:

+
+
viash build config.vsh.yaml --platform docker --output target
+
+

Build the Docker image:

+
+
target/example_bash_with_setup ---setup cachedbuild
+
+
[notice] Building container 'example_bash_with_setup:latest' with Dockerfile
+
+
+
+
+

Build the executable:

+
+
viash build config.vsh.yaml --platform docker --output target
+
+

Build the Docker image:

+
+
target/example_csharp_with_setup ---setup cachedbuild
+
+
[notice] Building container 'example_csharp_with_setup:latest' with Dockerfile
+
+
+
+
+

Build the executable:

+
+
viash build config.vsh.yaml --platform docker --output target
+
+

Build the Docker image:

+
+
target/example_js_with_setup ---setup cachedbuild
+
+
[notice] Building container 'example_js_with_setup:latest' with Dockerfile
+
+
+
+
+

Build the executable:

+
+
viash build config.vsh.yaml --platform docker --output target
+
+

Build the Docker image:

+
+
target/example_python_with_setup ---setup cachedbuild
+
+
[notice] Building container 'example_python_with_setup:latest' with Dockerfile
+
+
+
+
+

Build the executable:

+
+
viash build config.vsh.yaml --platform docker --output target
+
+

Build the Docker image:

+
+
target/example_r_with_setup ---setup cachedbuild
+
+
[notice] Building container 'example_r_with_setup:latest' with Dockerfile
+
+
+
+
+

Build the executable:

+
+
viash build config.vsh.yaml --platform docker --output target
+
+

Build the Docker image:

+
+
target/example_scala_with_setup ---setup cachedbuild
+
+
[notice] Building container 'example_scala_with_setup:latest' with Dockerfile
+
+
+
+
+
+

Alternatively, you can also build the executable and it’s corresponding Docker image in one go:

+
+ +
+
+
viash build config.vsh.yaml --platform docker --output target --setup cachedbuild
+
+
+
viash build config.vsh.yaml --platform docker --output target --setup cachedbuild
+
+
+
viash build config.vsh.yaml --platform docker --output target --setup cachedbuild
+
+
+
viash build config.vsh.yaml --platform docker --output target --setup cachedbuild
+
+
+
viash build config.vsh.yaml --platform docker --output target --setup cachedbuild
+
+
+
viash build config.vsh.yaml --platform docker --output target --setup cachedbuild
+
+
+
+
+
+

Steps for creating a custom Docker platform

+

Here is a series of steps you can follow to add a Docker platform to your Viash component from scratch.

+
+

Step 1: Choose a base image

+

To start off, you’ll need to choose a base Docker image to start working with. In deciding which base image to use, it’s important to consider the size of the image and how trustworthy the source image is.

+
+
+
+ +
+
+Tip +
+
+
+

If the container does not have Bash installed, don’t forget to install this in Step 2.

+
+
+

Here is a list of base images we commonly use:

+ +

See the section on ‘minimum requirements’ when building a custom base image.

+
+
+

Step 2: Installing additional dependencies

+

You can use the setup section to many different types of layers. Here are some examples:

+
    +
  • Apk requirements:

    +
    setup:
    +  - type: apk
    +    packages: [ curl ]
  • +
  • Apt requirements:

    +
    setup:
    +  - type: apt
    +    packages: [ curl ]
  • +
  • Docker requirements:

    +
    setup:
    +  - type: docker
    +    build_args: "R_VERSION=hello_world"
    +    run: |
    +      echo 'Run a custom command'
    +      echo 'Foo' > /path/to/file.txt
  • +
  • Javascript requirements:

    +
    setup:
    +  - type: javascript
    +    packages: [ express ]
    +    github: [ "expressjs/express" ]
  • +
  • Python requirements:

    +
    setup:
    +  - type: python
    +    packages: [ anndata ]
    +  github: [ jkbr/httpie ]
  • +
  • R requirements:

    +
    setup:
    +  - type: r
    +    packages: [ anndata ]
    +    bioc: [ AnnotationDbi, SingleCellExperiment ]
    +    github: rcannood/SCORPIUS
  • +
  • Ruby requirements:

    +
    setup:
    +  - type: ruby
    +    packages: [ pry ]
  • +
  • Yum requirements:

    +
    setup:
    +  - type: ruby
    +    packages: [ pry ]
    +    github: [ "pry/pry" ]
  • +
+

For more information on the possible setup entries, check out the reference documentation.

+
+
+
+ +
+
+Important +
+
+
+

Don’t forget to rebuild the Docker image after making changes to the setup section of your Docker platform (see next step).

+
+
+
+
+

Step 3: Rebuild Docker image

+

After adding additional setup entries, it’s important to rerun ---setup cachedbuild to rebuild the Docker image, as Viash will not rebuild the Docker image when it already exists.

+
+ +
+
+
viash build config.vsh.yaml 
+  --platform docker 
+  --output target 
+  --setup cachedbuild
+
+
+
viash build config.vsh.yaml 
+  --platform docker 
+  --output target 
+  --setup cachedbuild
+
+
+
viash build config.vsh.yaml 
+  --platform docker 
+  --output target 
+  --setup cachedbuild
+
+
+
viash build config.vsh.yaml 
+  --platform docker 
+  --output target 
+  --setup cachedbuild
+
+
+
viash build config.vsh.yaml 
+  --platform docker 
+  --output target 
+  --setup cachedbuild
+
+
+
viash build config.vsh.yaml 
+  --platform docker 
+  --output target 
+  --setup cachedbuild
+
+
+
+

You can choose what strategy to build an executable with when using a Docker backend by passing the --setup option followed by one of the strategies below.

+

Building an image:

+
    +
  • alwaysbuild / build / b: Always build the image from the dockerfile. This is the default setup strategy.
  • +
  • alwayscachedbuild / cachedbuild / cb: Always build the image from the dockerfile, with caching enabled.
  • +
  • ifneedbebuild: Build the image if it does not exist locally.
  • +
  • ifneedbecachedbuild: Build the image with caching enabled if it does not exist locally.
  • +
+

Pulling an image:

+
    +
  • alwayspull / pull / p: Try to pull the container from Docker Hub or the specified docker registry.
  • +
  • alwayspullelsebuild / pullelsebuild: Try to pull the image from a registry and build it if it doesn’t exist.
  • +
  • alwayspullelsecachedbuild / pullelsecachedbuild: Try to pull the image from a registry and build it with caching if it doesn’t exist.
  • +
  • ifneedbepull: If the image does not exist locally, pull the image.
  • +
  • ifneedbepullelsebuild If the image does not exist locally, pull the image. If the image does exist, build it.
  • +
  • ifneedbepullelsecachedbuild: If the image does not exist locally, pull the image. If the image does exist, build it with caching enabled.
  • +
+

Pushing an image:

+ +

Doing nothing:

+
    +
  • donothing / meh: Do not build or pull anything.
  • +
+
+
+
+

Troubleshooting

+

Below are several steps that might help you troubleshoot the image when the setup fails.

+
+

View Dockerfile

+

You can view the actual Dockerfile used by Viash by passing the ---dockerfile flag:

+
+ +
+
+
+
target/example_bash_with_setup ---dockerfile
+
+
FROM bash:4.0
+
+ENTRYPOINT []
+
+
+RUN apk add --no-cache curl wget
+
+LABEL org.opencontainers.image.description="Companion container for running component example_bash_with_setup"
+LABEL org.opencontainers.image.created="2024-01-12T07:56:47+01:00"
+
+
+
+
+
+
target/example_csharp_with_setup ---dockerfile
+
+
FROM ghcr.io/data-intuitive/dotnet-script:1.3.1
+
+ENTRYPOINT []
+
+
+RUN apk add --no-cache curl wget
+
+LABEL org.opencontainers.image.description="Companion container for running component example_csharp_with_setup"
+LABEL org.opencontainers.image.created="2024-01-12T07:56:52+01:00"
+
+
+
+
+
+
target/example_js_with_setup ---dockerfile
+
+
FROM node:19-bullseye-slim
+
+ENTRYPOINT []
+
+
+RUN apt-get update && \
+  DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget && \
+  rm -rf /var/lib/apt/lists/*
+
+LABEL org.opencontainers.image.description="Companion container for running component example_js_with_setup"
+LABEL org.opencontainers.image.created="2024-01-12T07:56:56+01:00"
+
+
+
+
+
+
target/example_python_with_setup ---dockerfile
+
+
FROM python:3.10-slim
+
+ENTRYPOINT []
+
+
+RUN apt-get update && \
+  DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget && \
+  rm -rf /var/lib/apt/lists/*
+
+RUN pip install --upgrade pip && \
+  pip install --upgrade --no-cache-dir "anndata"
+
+LABEL org.opencontainers.image.description="Companion container for running component example_python_with_setup"
+LABEL org.opencontainers.image.created="2024-01-12T07:57:05+01:00"
+
+
+
+
+
+
target/example_r_with_setup ---dockerfile
+
+
FROM eddelbuettel/r2u:22.04
+
+ENTRYPOINT []
+
+
+RUN apt-get update && \
+  DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget && \
+  rm -rf /var/lib/apt/lists/*
+
+RUN Rscript -e 'if (!requireNamespace("remotes", quietly = TRUE)) install.packages("remotes")' && \
+  Rscript -e 'remotes::install_cran(c("tidyverse"), repos = "https://cran.rstudio.com")'
+
+LABEL org.opencontainers.image.description="Companion container for running component example_r_with_setup"
+LABEL org.opencontainers.image.created="2024-01-12T07:57:25+01:00"
+
+
+
+
+
+
target/example_scala_with_setup ---dockerfile
+
+
FROM sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10
+
+ENTRYPOINT []
+
+
+RUN apt-get update && \
+  DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget && \
+  rm -rf /var/lib/apt/lists/*
+
+LABEL org.opencontainers.image.description="Companion container for running component example_scala_with_setup"
+LABEL org.opencontainers.image.created="2024-01-12T07:58:01+01:00"
+
+
+
+
+
+
+
+

Enter debugging session

+

You can also hop in a Bash session inside the Docker image using the ---debug flag:

+
+ +
+
+
target/example_bash_with_setup ---debug
+
[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_bash_with_setup:latest'
+root@93c38006a124:/pwd#
+
+
+
target/example_csharp_with_setup ---debug
+
[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_csharp_with_setup:latest'
+root@93c38006a124:/pwd#
+
+
+
target/example_js_with_setup ---debug
+
[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_js_with_setup:latest'
+root@93c38006a124:/pwd#
+
+
+
target/example_python_with_setup ---debug
+
[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_python_with_setup:latest'
+root@93c38006a124:/pwd#
+
+
+
target/example_r_with_setup ---debug
+
[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_r_with_setup:latest'
+root@93c38006a124:/pwd#
+
+
+
target/example_scala_with_setup ---debug
+
[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_scala_with_setup:latest'
+root@93c38006a124:/pwd#
+
+
+
+

This is useful for interactively debugging issues inside the container. For example, for figuring out whether you need to use apk, apt or yum to install software and to search for the exact name of packages like libcurl4-openssl-dev.

+
+
+
+

Alternative solutions

+

There are multiple ways you might try to find a Docker image which contains the right set of dependencies for your component:

+
    +
  • Browse Docker Hub: Look a Docker image on Docker Hub or other Docker registries which has the right set of dependencies. +
      +
    • This is generally not recommended because it might take a long time to find a pre-existing image with the right set of dependencies
    • +
    • Poses a serious security risk.
    • +
  • +
  • Write a custom Dockerfile: You can write a custom Dockerfile to build your own Docker image and store it in a Docker registry, effectively creating a new ‘trusted’ base image. +
      +
    • Requires manual bookkeeping of which Docker images are used in which components.
    • +
    • Not difficult but requires more know-how on how to build custom Docker images.
    • +
  • +
  • Use Viash setup to build component-specific images: The methodology described above. +
      +
    • Easier to add / change dependencies to one component without breaking another
    • +
    • Store images in a centralized container registry
    • +
  • +
+
+
+

Behind the scenes

+
+

Auto-mount

+

Any executable built by Viash with a Docker platform will automatically mount the directories of files passed to the executable as arguments. For example, when running:

+
./my_executable --input /foo/bar/file.txt --output /dest/path
+

The executable will automatically mount the /foo/bar and /dest folder to /viash_automount/foo/bar/ and /viash_automount/dest inside the Docker container.

+
+
+

Auto-chown

+

By default, files created and modified by a Docker container are owned by root. By default, Viash automatically changes the owner of any files defined in the config file to the user running the executable. This behaviour can be overridden by setting the chown setting to false in your config file.

+

Example with standard Docker:

+
docker run -v `pwd`:/pwd bash:4.0 touch /pwd/file.txt
+ls -l
+
-rw-r--r--. 1 root     root         0 Jan 26 16:03 file.txt
+

Example with a Viash executable:

+
/my_executable --output file.txt
+
-rw-r--r--. 1 myuser   myuser        Jan 26 16:03 file.txt
+
+
+

Minimum requirements for custom Docker images

+

Viash components only require a minimal set of dependencies which need to be available inside the Docker image:

+
    +
  • Bash: bash.
  • +
  • C#: bash and dotnet-script.
  • +
  • JavaScript: bash and node (Node.js).
  • +
  • Python: bash, python and pip.
  • +
  • R: bash and R.
  • +
  • Scala: bash, openjdk-devel and sbt.
  • +
+ + +
+
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/component/add-resources.html b/_versioned/0_8_5/guide/component/add-resources.html new file mode 100644 index 00000000..c6f4590e --- /dev/null +++ b/_versioned/0_8_5/guide/component/add-resources.html @@ -0,0 +1,1315 @@ + + + + + + + + + + +Viash - Add resources + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Add resources

+
+ +
+
+ Accessing additional resources inside a Viash component. +
+
+ + +
+ + + + +
+ + + +
+ + + +

If a script needs access to an external file, it needs to be added as a resource in the config.

+

First, create a file called my_file.txt.

+
+ +
+
+
+
echo 'Here are the contents of my_file.txt' > my_file.txt
+
+
+
+
+
echo 'Here are the contents of my_file.txt' > my_file.txt
+
+
+
+
+
echo 'Here are the contents of my_file.txt' > my_file.txt
+
+
+
+
+
echo 'Here are the contents of my_file.txt' > my_file.txt
+
+
+
+
+
echo 'Here are the contents of my_file.txt' > my_file.txt
+
+
+
+
+
echo 'Here are the contents of my_file.txt' > my_file.txt
+
+
+
+
+

Next, the file needs to be added to the config as a resource. This will let Viash know to copy the new file inside a component’s resource directory.

+
+ +
+
+
functionality:
+  name: example_bash
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: bash_script
+      path: script.sh
+    - path: my_file.txt
+platforms:
+  - type: docker
+    image: bash:4.0
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_csharp
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: csharp_script
+      path: script.csx
+    - path: my_file.txt
+platforms:
+  - type: docker
+    image: ghcr.io/data-intuitive/dotnet-script:1.3.1
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_js
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: javascript_script
+      path: script.js
+    - path: my_file.txt
+platforms:
+  - type: docker
+    image: node:19-bullseye-slim
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_python
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: python_script
+      path: script.py
+    - path: my_file.txt
+platforms:
+  - type: docker
+    image: python:3.10-slim
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_r
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: r_script
+      path: script.R
+    - path: my_file.txt
+platforms:
+  - type: docker
+    image: eddelbuettel/r2u:22.04
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_scala
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: scala_script
+      path: script.scala
+    - path: my_file.txt
+platforms:
+  - type: docker
+    image: sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10
+  - type: native
+  - type: nextflow
+
+
+
+

Lastly, to access a resource from within the script, use the resources_dir meta-variable:

+
+ +
+
+
#!/bin/bash
+
+## VIASH START
+par_input=path/to/file.txt
+par_output=output.txt
+## VIASH END
+
+# view resource file
+cat "$meta_resources_dir/my_file.txt"
+
+# copy file
+echo "Copying '$par_input' to '$par_output'."
+cp -r "$par_input" "$par_output"
+
+
+
using System.IO;
+
+// VIASH START
+var par = new {
+  input = "path/to/file.txt",
+  output = "output.txt"
+};
+// VIASH END
+
+// view resource file
+string myFile = $"{meta.resources_dir}/my_file.txt";
+string text = File.ReadAllText(myFile);
+Console.WriteLine(text);
+
+// copy file
+Console.WriteLine($"Copying '{par.input}' to '{par.output}'.");
+File.Copy(par.input, par.output, true);
+
+
+
const fs = require('fs');
+
+// VIASH START
+let par = {
+  'input': 'path/to/file.txt',
+  'output': 'output.txt'
+};
+// VIASH END
+
+// view resource file
+const my_file = `${meta['resources_dir']}/my_file.txt`
+fs.readFile(my_file, 'utf8', (err, data) => {
+  if (err) throw err;
+  console.log(data);
+});
+
+// copy file
+console.log(`Copying '${par['input']}' to '${par['output']}'`)
+fs.copyFile(par['input'], par['output'], (err) => {
+  if (err) throw err;
+});
+
+
+
import shutil
+
+## VIASH START
+par = {
+  'input': 'file.txt',
+  'output': 'output.txt'
+}
+## VIASH END
+
+# view resource file
+my_file = f"{meta['resources_dir']}/my_file.txt"
+with open(my_file, "r") as f:
+  print(f.read())
+
+# copy file
+print(f"Copying '{par['input']}' to '{par['output']}'.")
+shutil.copyfile(par['input'], par['output'])
+
+
+
## VIASH START
+par <- list(
+  "input" = 'file.txt',
+  "output" = 'output.txt'
+)
+## VIASH END
+
+# view resource file
+lines <- readLines(paste0(meta$resources_dir, "/my_file.txt"))
+cat(lines, sep = "\n")
+
+# copy file
+cat("Copying '", par$input, "' to '", par$output, "'.\n", sep = "")
+file.copy(par$input, par$output)
+
+
+
import java.nio.file.StandardCopyOption.REPLACE_EXISTING
+import java.nio.file.Files
+import java.nio.file.Paths
+
+// VIASH START
+case class ViashPar(input: String, output: String)
+val par = ViashPar(
+  "path/to/file.txt",
+  "output.txt"
+)
+// VIASH END
+
+// view resource file
+val myFile = s"${meta.resources_dir}/my_file.txt"
+val src = scala.io.Source.fromFile(myFile)
+src.getLines.foreach(println)
+
+// copy file
+println(s"Copying '${par.input}' to '${par.output}'.")
+val fileIn = Paths.get(par.input)
+val fileOut = Paths.get(par.output)
+Files.copy(fileIn, fileOut, REPLACE_EXISTING)
+
+
+
+

Now we can run the component as follows:

+
+ +
+
+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Here are the contents of my_file.txt
+Copying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/bash/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/bash/foo.txt'.
+
+
+
+
+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Here are the contents of my_file.txt
+
+Copying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/csharp/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/csharp/foo.txt'.
+
+
+
+
+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Copying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/js/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/js/foo.txt'
+Here are the contents of my_file.txt
+
+
+
+
+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Here are the contents of my_file.txt
+
+Copying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/python/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/python/foo.txt'.
+
+
+
+
+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Here are the contents of my_file.txt
+Copying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/r/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/r/foo.txt'.
+[1] TRUE
+
+
+
+
+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+warning: 1 deprecation
+warning: 1 deprecation (since 2.13.3)
+warning: 2 deprecations in total; re-run with -deprecation for details
+Here are the contents of my_file.txt
+Copying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/scala/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/scala/foo.txt'.
+
+
+
+
+
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/component/create-component.html b/_versioned/0_8_5/guide/component/create-component.html new file mode 100644 index 00000000..51a72757 --- /dev/null +++ b/_versioned/0_8_5/guide/component/create-component.html @@ -0,0 +1,1804 @@ + + + + + + + + + + +Viash - Create a new component + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Create a new component

+
+ +
+
+ Building a reproducible Viash component. +
+
+ + +
+ + + + +
+ + + +
+ + + +

A Viash component can be translated into one or more platforms: Native, Docker, Nextflow. Each of these platforms result in a different artifact:

+ +

Below we will create our first Viash component using any of the languages natively supported by Viash.

+
+

Create a script

+

When creating a new Viash component, you can write a new script or use a pre-existing script. Below is a script that simply copies an input file to an output destination.

+
+ +
+
+

Create a new file named script.sh and copy the following content inside of it. This script will copy an input file to an output destination.

+
#!/bin/bash
+
+## VIASH START
+par_input=path/to/file.txt
+par_output=output.txt
+## VIASH END
+
+# copy file
+echo "Copying '$par_input' to '$par_output'."
+cp -r "$par_input" "$par_output"
+
+
+

Create a new file named script.csx and copy the following content inside of it. This script will copy an input file to an output destination.

+
using System.IO;
+
+// VIASH START
+var par = new {
+  input = "path/to/file.txt",
+  output = "output.txt"
+};
+// VIASH END
+
+// copy file
+Console.WriteLine($"Copying '{par.input}' to '{par.output}'.");
+File.Copy(par.input, par.output, true);
+
+
+

Create a new file named script.js and copy the following content inside of it. This script will copy an input file to an output destination.

+
const fs = require('fs');
+
+// VIASH START
+let par = {
+  'input': 'path/to/file.txt',
+  'output': 'output.txt'
+};
+// VIASH END
+
+// copy file
+console.log(`Copying '${par['input']}' to '${par['output']}'`)
+fs.copyFile(par['input'], par['output'], (err) => {
+  if (err) throw err;
+});
+
+
+

Create a new file named script.py and copy the following content inside of it. This script will copy an input file to an output destination.

+
import shutil
+
+## VIASH START
+par = {
+  'input': 'file.txt',
+  'output': 'output.txt'
+}
+## VIASH END
+
+# copy file
+print(f"Copying '{par['input']}' to '{par['output']}'.")
+shutil.copyfile(par['input'], par['output'])
+
+
+

Create a new file named script.R and copy the following content inside of it. This script will copy an input file to an output destination.

+
## VIASH START
+par <- list(
+  "input" = 'file.txt',
+  "output" = 'output.txt'
+)
+## VIASH END
+
+# copy file
+cat("Copying '", par$input, "' to '", par$output, "'.\n", sep = "")
+file.copy(par$input, par$output)
+
+
+

Create a new file named script.scala and copy the following content inside of it. This script will copy an input file to an output destination.

+
import java.nio.file.StandardCopyOption.REPLACE_EXISTING
+import java.nio.file.Files
+import java.nio.file.Paths
+
+// VIASH START
+case class ViashPar(input: String, output: String)
+val par = ViashPar(
+  "path/to/file.txt",
+  "output.txt"
+)
+// VIASH END
+
+// copy file
+println(s"Copying '${par.input}' to '${par.output}'.")
+val fileIn = Paths.get(par.input)
+val fileOut = Paths.get(par.output)
+Files.copy(fileIn, fileOut, REPLACE_EXISTING)
+
+
+
+
+
+
+ +
+
+Note +
+
+
+

The par variable(s) appear to be hard coded, but they’re not! When running this script with Viash, Viash will strip away the section between VIASH START and VIASH END, and replace it with parameter values at runtime. The values included in this script are thus entirely for development and debugging purposes. More information on how this works will be given in Variables and meta-variables.

+
+
+
+
+

Create a config

+

A Viash config file is a YAML file that describes the functionality of a component and the platform(s) it targets.

+
+ +
+
+

Create a file named config.vsh.yaml and add the contents below based on your chosen scripting language.

+
functionality:
+  name: example_bash
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: bash_script
+      path: script.sh
+platforms:
+  - type: docker
+    image: "bash:4.0"
+  - type: native
+  - type: nextflow
+
+
+

Create a file named config.vsh.yaml and add the contents below based on your chosen scripting language.

+
functionality:
+  name: example_csharp
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: csharp_script
+      path: script.csx
+platforms:
+  - type: docker
+    image: "ghcr.io/data-intuitive/dotnet-script:1.3.1"
+  - type: native
+  - type: nextflow
+
+
+

Create a file named config.vsh.yaml and add the contents below based on your chosen scripting language.

+
functionality:
+  name: example_js
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: javascript_script
+      path: script.js
+platforms:
+  - type: docker
+    image: "node:19-bullseye-slim"
+  - type: native
+  - type: nextflow
+
+
+

Create a file named config.vsh.yaml and add the contents below based on your chosen scripting language.

+
functionality:
+  name: example_python
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: python_script
+      path: script.py
+platforms:
+  - type: docker
+    image: "python:3.10-slim"
+  - type: native
+  - type: nextflow
+
+
+

Create a file named config.vsh.yaml and add the contents below based on your chosen scripting language.

+
functionality:
+  name: example_r
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: r_script
+      path: script.R
+platforms:
+  - type: docker
+    image: "eddelbuettel/r2u:22.04"
+  - type: native
+  - type: nextflow
+
+
+

Create a file named config.vsh.yaml and add the contents below based on your chosen scripting language.

+
functionality:
+  name: example_scala
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: scala_script
+      path: script.scala
+platforms:
+  - type: docker
+    image: "sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10"
+  - type: native
+  - type: nextflow
+
+
+
+

Here’s a breakdown of the different sections:

+
    +
  • functionality: A description of what the component does. +
      +
    • name: The name of the component.
    • +
    • arguments: The input and output parameters of the script.
    • +
    • resources: References to all necessary files and folders to make the component work.
    • +
  • +
  • platforms: Lists which platforms a component can target (i.e. Native, Docker or Nextflow).
  • +
+
+
+

Run the component

+

That’s it! With these two steps, you created your first component. Next, you can use the viash run command to test whether it actually works as intended.

+
+ +
+
+

You can call use the component’s --help functionality to get an overview its parameters and descriptions.

+
+
viash run config.vsh.yaml -- --help
+
+
example_bash
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+

As expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.

+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
[notice] Checking if Docker image is available at 'example_bash:latest'
+[warning] Could not pull from 'example_bash:latest'. Docker image doesn't exist or is not accessible.
+[notice] Building container 'example_bash:latest' with Dockerfile
+Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/bash/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/bash/foo.txt'.
+
+
+
+
+

You can call use the component’s --help functionality to get an overview its parameters and descriptions.

+
+
viash run config.vsh.yaml -- --help
+
+
example_csharp
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+

As expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.

+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
[notice] Checking if Docker image is available at 'example_csharp:latest'
+[warning] Could not pull from 'example_csharp:latest'. Docker image doesn't exist or is not accessible.
+[notice] Building container 'example_csharp:latest' with Dockerfile
+Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/csharp/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/csharp/foo.txt'.
+
+
+
+
+

You can call use the component’s --help functionality to get an overview its parameters and descriptions.

+
+
viash run config.vsh.yaml -- --help
+
+
example_js
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+

As expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.

+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
[notice] Checking if Docker image is available at 'example_js:latest'
+[warning] Could not pull from 'example_js:latest'. Docker image doesn't exist or is not accessible.
+[notice] Building container 'example_js:latest' with Dockerfile
+Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/js/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/js/foo.txt'
+
+
+
+
+

You can call use the component’s --help functionality to get an overview its parameters and descriptions.

+
+
viash run config.vsh.yaml -- --help
+
+
example_python
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+

As expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.

+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
[notice] Checking if Docker image is available at 'example_python:latest'
+[warning] Could not pull from 'example_python:latest'. Docker image doesn't exist or is not accessible.
+[notice] Building container 'example_python:latest' with Dockerfile
+Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/python/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/python/foo.txt'.
+
+
+
+
+

You can call use the component’s --help functionality to get an overview its parameters and descriptions.

+
+
viash run config.vsh.yaml -- --help
+
+
example_r
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+

As expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.

+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
[notice] Checking if Docker image is available at 'example_r:latest'
+[warning] Could not pull from 'example_r:latest'. Docker image doesn't exist or is not accessible.
+[notice] Building container 'example_r:latest' with Dockerfile
+Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/r/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/r/foo.txt'.
+[1] TRUE
+
+
+
+
+

You can call use the component’s --help functionality to get an overview its parameters and descriptions.

+
+
viash run config.vsh.yaml -- --help
+
+
example_scala
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+

As expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.

+
+
viash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt
+
+
[notice] Checking if Docker image is available at 'example_scala:latest'
+[warning] Could not pull from 'example_scala:latest'. Docker image doesn't exist or is not accessible.
+[notice] Building container 'example_scala:latest' with Dockerfile
+warning: 1 deprecation; re-run with -deprecation for details
+Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/scala/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/scala/foo.txt'.
+
+
+
+
+
+
+
+
+ +
+
+Note +
+
+
+

The double dash (--) between the viash command and the arguments is used to signify the end of the arguments passed to Viash and the start of those passed to the script. If you forgot to add these, you’ll get an error similar to this:

+
+
viash run config.vsh.yaml \
+  --input foo.txt \
+  --output bar.txt
+
+
[scallop] Error: Unknown option 'input'
+
+
+
+
+
+
+

Build an executable

+

We will now turn the Viash component into an executable.

+
+ +
+
+

Use the viash build command to generate an executable:

+
+
viash build config.vsh.yaml --output target
+
+

This will generate an executable in the target/ directory:

+
+
tree
+
+
.
+├── config.vsh.yaml
+├── foo.txt
+├── script.sh
+└── target
+    └── example_bash
+
+2 directories, 4 files
+
+
+
+
+

Use the viash build command to generate an executable:

+
+
viash build config.vsh.yaml --output target
+
+

This will generate an executable in the target/ directory:

+
+
tree
+
+
.
+├── config.vsh.yaml
+├── foo.txt
+├── script.csx
+└── target
+    └── example_csharp
+
+2 directories, 4 files
+
+
+
+
+

Use the viash build command to generate an executable:

+
+
viash build config.vsh.yaml --output target
+
+

This will generate an executable in the target/ directory:

+
+
tree
+
+
.
+├── config.vsh.yaml
+├── foo.txt
+├── script.js
+└── target
+    └── example_js
+
+2 directories, 4 files
+
+
+
+
+

Use the viash build command to generate an executable:

+
+
viash build config.vsh.yaml --output target
+
+

This will generate an executable in the target/ directory:

+
+
tree
+
+
.
+├── config.vsh.yaml
+├── foo.txt
+├── script.py
+└── target
+    └── example_python
+
+2 directories, 4 files
+
+
+
+
+

Use the viash build command to generate an executable:

+
+
viash build config.vsh.yaml --output target
+
+

This will generate an executable in the target/ directory:

+
+
tree
+
+
.
+├── config.vsh.yaml
+├── foo.txt
+├── script.R
+└── target
+    └── example_r
+
+2 directories, 4 files
+
+
+
+
+

Use the viash build command to generate an executable:

+
+
viash build config.vsh.yaml --output target
+
+

This will generate an executable in the target/ directory:

+
+
tree
+
+
.
+├── config.vsh.yaml
+├── foo.txt
+├── script.scala
+└── target
+    └── example_scala
+
+2 directories, 4 files
+
+
+
+
+
+
+
+

Displaying the help text

+

It’s often useful to know what arguments an executable expects before trying to run it.

+
+ +
+
+

To display its documentation, run the executable with just the --help argument:

+
+
target/example_bash --help
+
+
example_bash
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+
+
+

To display its documentation, run the executable with just the --help argument:

+
+
target/example_csharp --help
+
+
example_csharp
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+
+
+

To display its documentation, run the executable with just the --help argument:

+
+
target/example_js --help
+
+
example_js
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+
+
+

To display its documentation, run the executable with just the --help argument:

+
+
target/example_python --help
+
+
example_python
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+
+
+

To display its documentation, run the executable with just the --help argument:

+
+
target/example_r --help
+
+
example_r
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+
+
+

To display its documentation, run the executable with just the --help argument:

+
+
target/example_scala --help
+
+
example_scala
+
+A minimal example component.
+
+Arguments:
+    --input
+        type: file, required parameter, file must exist
+        example: file.txt
+
+    --output
+        type: file, required parameter, output, file must exist
+        example: output.txt
+
+
+
+
+
+

This executable takes a file as input and will create an output file.

+
+
+

Running the executable

+

Running an executable is the same as any other executable on your system.

+
+ +
+
+

You can run the executable by providing a value for --input and --output:

+
+
target/example_bash --input config.vsh.yaml --output output.txt
+
+
Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/bash/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/bash/output.txt'.
+
+
+

This results in the following output:

+
+
ls -l
+
+
total 16
+-rw-r--r-- 1 hendrik hendrik 428 Jan 12 07:52 config.vsh.yaml
+-rw-r--r-- 1 hendrik hendrik 428 Jan 12 07:53 foo.txt
+-rw-r--r-- 1 hendrik hendrik 428 Jan 12 07:54 output.txt
+-rwxr-xr-x 1 hendrik hendrik 181 Jan 12 07:52 script.sh
+drwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target
+
+
+
+
+

You can run the executable by providing a value for --input and --output:

+
+
target/example_csharp --input config.vsh.yaml --output output.txt
+
+
Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/csharp/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/csharp/output.txt'.
+
+
+

This results in the following output:

+
+
ls -l
+
+
total 16
+-rw-r--r-- 1 hendrik hendrik 467 Jan 12 07:52 config.vsh.yaml
+-rw-r--r-- 1 hendrik hendrik 467 Jan 12 07:52 foo.txt
+-rw-r--r-- 1 hendrik hendrik 467 Jan 12 07:52 output.txt
+-rw-r--r-- 1 hendrik hendrik 237 Jan 12 07:52 script.csx
+drwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target
+
+
+
+
+

You can run the executable by providing a value for --input and --output:

+
+
target/example_js --input config.vsh.yaml --output output.txt
+
+
Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/js/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/js/output.txt'
+
+
+

This results in the following output:

+
+
ls -l
+
+
total 16
+-rw-r--r-- 1 hendrik hendrik 445 Jan 12 07:52 config.vsh.yaml
+-rw-r--r-- 1 hendrik hendrik 445 Jan 12 07:53 foo.txt
+-rw-r--r-- 1 hendrik hendrik 445 Jan 12 07:54 output.txt
+-rwxr-xr-x 1 hendrik hendrik 282 Jan 12 07:52 script.js
+drwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target
+
+
+
+
+

You can run the executable by providing a value for --input and --output:

+
+
target/example_python --input config.vsh.yaml --output output.txt
+
+
Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/python/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/python/output.txt'.
+
+
+

This results in the following output:

+
+
ls -l
+
+
total 16
+-rw-r--r-- 1 hendrik hendrik 440 Jan 12 07:52 config.vsh.yaml
+-rw-r--r-- 1 hendrik hendrik 440 Jan 12 07:53 foo.txt
+-rw-r--r-- 1 hendrik hendrik 440 Jan 12 07:54 output.txt
+-rwxr-xr-x 1 hendrik hendrik 216 Jan 12 07:52 script.py
+drwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target
+
+
+
+
+

You can run the executable by providing a value for --input and --output:

+
+
target/example_r --input config.vsh.yaml --output output.txt
+
+
Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/r/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/r/output.txt'.
+[1] TRUE
+
+
+

This results in the following output:

+
+
ls -l
+
+
total 16
+-rw-r--r-- 1 hendrik hendrik 435 Jan 12 07:52 config.vsh.yaml
+-rw-r--r-- 1 hendrik hendrik 435 Jan 12 07:53 foo.txt
+-rw-r--r-- 1 hendrik hendrik 435 Jan 12 07:54 output.txt
+-rwxr-xr-x 1 hendrik hendrik 207 Jan 12 07:52 script.R
+drwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target
+
+
+
+
+

You can run the executable by providing a value for --input and --output:

+
+
target/example_scala --input config.vsh.yaml --output output.txt
+
+
warning: 1 deprecation; re-run with -deprecation for details
+Copying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/scala/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/scala/output.txt'.
+
+
+

This results in the following output:

+
+
ls -l
+
+
total 16
+-rw-r--r-- 1 hendrik hendrik 479 Jan 12 07:52 config.vsh.yaml
+-rw-r--r-- 1 hendrik hendrik 479 Jan 12 07:54 foo.txt
+-rw-r--r-- 1 hendrik hendrik 479 Jan 12 07:55 output.txt
+-rw-r--r-- 1 hendrik hendrik 435 Jan 12 07:52 script.scala
+drwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target
+
+
+
+
+
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/component/index.html b/_versioned/0_8_5/guide/component/index.html new file mode 100644 index 00000000..820062bb --- /dev/null +++ b/_versioned/0_8_5/guide/component/index.html @@ -0,0 +1,781 @@ + + + + + + + + + +Viash - Component + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Component

+
+ + + +
+ + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/component/unit-testing.html b/_versioned/0_8_5/guide/component/unit-testing.html new file mode 100644 index 00000000..f09b739c --- /dev/null +++ b/_versioned/0_8_5/guide/component/unit-testing.html @@ -0,0 +1,1656 @@ + + + + + + + + + + +Viash - Unit testing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Unit testing

+
+ +
+
+ How to ensure high quality components. +
+
+ + +
+ + + + +
+ + + +
+ + + +

We recommend adding unit tests to all of your components in a project as soon as possible. Implementing unit tests not only ensures that your component works, but it also makes the project more maintainable in the long run as you will be notified when a component breaks.

+

This page describes how to add a unit test to your component.

+
+

Create unit test

+

Below is an example of how to add a unit test to a Viash component.

+
+ +
+
+
#!/bin/bash
+
+## VIASH START
+meta_executable="target/example_bash"
+## VIASH END
+
+echo ">>> Create input test file"
+echo "foo" > foo.txt
+
+echo ">>> Run executable"
+$meta_executable --input foo.txt --output bar.txt
+
+echo ">>> Check whether output file exists"
+[[ -f bar.txt ]] (echo "Output file could not be found!" && exit 1)
+
+echo ">>> Check whether input and output file are the same"
+cmp foo.txt bar.tx (echo "Input and output files are different!" && exit 1)
+
+echo ">>> Test finished successfully"
+
+
+
using System;
+using System.IO;
+using System.Diagnostics;
+
+// VIASH START
+var meta = new {
+  executable = "target/example_csharp"
+};
+// VIASH END
+
+string inputPath = "foo.txt";
+string outputPath = "bar.txt";
+string content = "hello\nthere\n";
+
+Console.WriteLine(">>> Create input test file");
+File.WriteAllText(inputPath, content);
+
+Console.WriteLine(">>> Run executable");
+
+var startInfo = new ProcessStartInfo(meta.executable)
+{
+    Arguments = $"--input {inputPath} --output {outputPath}",
+    UseShellExecute = false,
+    RedirectStandardOutput = true,
+    CreateNoWindow = true
+};
+using(var cmd = Process.Start(startInfo))
+{
+    cmd.WaitForExit();
+}
+
+
+Console.WriteLine(">>> Check whether output file exists");
+if (!File.Exists(outputPath)) {
+    Console.WriteLine("Output file was not found");
+    Environment.Exit(1);
+}
+
+Console.WriteLine(">>> Check whether input and output file are the same");
+var outputLines = File.ReadAllText(outputPath);
+if (content != outputLines) {
+    Console.WriteLine(
+        "Input and output should be the same\n" +
+        $"expected content: {content}\n" +
+        $"found: {outputLines}\n"
+    );
+    Environment.Exit(1);
+}
+
+Console.WriteLine(">>> Test finished successfully");
+
+
+
const fs = require('fs');
+const child_process = require('child_process');
+
+// VIASH START
+let meta = {
+  'executable': 'target/example_js'
+};
+// VIASH END
+
+const inputPath = 'foo.txt';
+const outputPath = 'bar.txt';
+const content = 'hello\nthere\n';
+
+console.log('>>> Create input test file');
+fs.writeFileSync(inputPath, content, 'utf8');
+
+console.log('>>> Run executable');
+const cmdArgs = [
+  '--input', inputPath,
+  '--output', outputPath
+];
+const child = child_process.spawnSync(meta["executable"], cmdArgs);
+if (child.error) {
+  console.error(`Error: ${child.error}`);
+  process.exit(1);
+}
+
+console.log('>>> Check whether output file exists');
+if (!fs.existsSync(outputPath)) {
+  console.error('Output file was not found');
+  process.exit(1);
+}
+
+console.log('>>> Check whether input and output file are the same');
+const outputLines = fs.readFileSync(outputPath, 'utf8');
+if (content !== outputLines) {
+  console.error(
+    `Input and output should be the same\n` +
+    `expected content: ${content}\n` +
+    `found: ${outputLines}\n`
+  );
+  process.exit(1);
+}
+
+console.log('>>> Test finished successfully');
+
+
+
import subprocess
+import os
+
+input_path = "foo.txt"
+output_path = "bar.txt"
+content = "hello\nthere\n"
+
+## VIASH START
+meta = {
+  "executable": "target/example_python"
+}
+## VIASH END
+
+print(">>> Create input test file")
+with open(input_path, "w") as file:
+  file.write(content)
+
+print(">>> Run executable")
+cmd_args = [
+  meta["executable"],
+  "--input", input_path,
+  "--output", output_path
+]
+subprocess.run(cmd_args, check=True)
+
+print(">>> Check whether output file exists")
+assert os.path.exists(output_path), "Output file was not found"
+
+print(">>> Check whether input and output file are the same")
+with open(output_path, "r", encoding="utf8") as file:
+  output_lines = file.read()
+
+assert content == output_lines, \
+  "Input and output should be the same" \
+  f"expected content: {content}" \
+  f"found: {output_lines}"
+
+print(">>> Test finished successfully")
+
+
+
## VIASH START
+meta <- list(
+  "target/example_r"
+)
+## VIASH END
+
+input_path <- "foo.txt"
+output_path <- "bar.txt"
+content <- c("hello", "there")
+
+cat(">>> Create input test file\n")
+writeLines(content, input_path)
+
+cat(">>> Run executable\n")
+system2(
+  meta$executable,
+  c(
+    "--input", input_path,
+    "--output", output_path
+  )
+)
+
+cat(">>> Check whether output file exists\n")
+if (!file.exists(output_path)) {
+  stop("Output file was not found")
+}
+
+cat(">>> Check whether input and output file are the same\n")
+output_lines <- readLines(output_path)
+
+if (!identical(content, output_lines)) {
+  stop(paste0(
+    "Input and output should be the same\n",
+    "expected content: ", content, "\n",
+    "found: ", output_lines, "\n"
+  ))
+}
+
+cat(">>> Test finished successfully\n")
+
+
+
import scala.sys.process._
+import java.nio.file.{Files, Paths}
+import scala.io.Source
+
+// VIASH START
+case class ViashMeta(executable: String)
+val meta = ViashMeta(
+  "target/example_scala"
+)
+// VIASH END
+val inputPath = Paths.get("foo.txt")
+val outputPath = Paths.get("bar.txt")
+val content = "hello\nthere"
+
+println(">>> Create input test file")
+Files.write(inputPath, content.getBytes("UTF-8"))
+
+println(">>> Run executable")
+s"${meta.executable} --input $inputPath --output $outputPath".!
+
+println(">>> Check whether output file exists")
+assert(Files.exists(outputPath), "Output file not found")
+
+println(">>> Check whether input and output file are the same")
+val outputLines = Source.fromFile(outputPath.toFile()).getLines.mkString("\n")
+assert(
+  content == outputLines, 
+  s"""Output not the same
+expected: '$content'
+found: '$outputLines'
+""".stripMargin
+)
+
+println(">>> Test finished successfully")
+
+
+
+
    +
  1. Create an input file “foo.txt” with some sample content.
  2. +
  3. Run an executable file specified in the “meta” dictionary with the arguments “–input foo.txt” and “–output bar.txt”.
  4. +
  5. Check whether the output file “bar.txt” exists.
  6. +
  7. Check whether the content of the output file is the same as the content of the input file.
  8. +
  9. If both checks pass, the script prints “Test finished successfully”.
  10. +
+
+
+
+ +
+
+Important +
+
+
+

A test script doesn’t need to be written in the same scripting language as the main script, as long as all of the required dependencies are available. This means the main script could be written in R, but the unit test could be written in Bash.

+
+
+
+
+

Add test to config

+

Next, we need to add the unit test to the test_resources section in the Viash config.

+
+ +
+
+
functionality:
+  name: example_bash
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: bash_script
+      path: script.sh
+  test_resources:
+    - type: bash_script
+      path: test.sh
+platforms:
+  - type: docker
+    image: bash:4.0
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_csharp
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: csharp_script
+      path: script.csx
+  test_resources:
+    - type: csharp_script
+      path: test.csx
+platforms:
+  - type: docker
+    image: ghcr.io/data-intuitive/dotnet-script:1.3.1
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_js
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: javascript_script
+      path: script.js
+  test_resources:
+    - type: javascript_script
+      path: test.js
+platforms:
+  - type: docker
+    image: node:19-bullseye-slim
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_python
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: python_script
+      path: script.py
+  test_resources:
+    - type: python_script
+      path: test.py
+platforms:
+  - type: docker
+    image: python:3.10-slim
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_r
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: r_script
+      path: script.R
+  test_resources:
+    - type: r_script
+      path: test.R
+platforms:
+  - type: docker
+    image: eddelbuettel/r2u:22.04
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_scala
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: scala_script
+      path: script.scala
+  test_resources:
+    - type: scala_script
+      path: test.scala
+platforms:
+  - type: docker
+    image: sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10
+  - type: native
+  - type: nextflow
+
+
+
+

Note that if you can add multiple unit tests to the test_resources section, they will all be evaluated. You can also add other resources, similar to what is described in the page on adding resources.

+
+
+

Run the unit test

+

You can run the unit test as follows:

+
+ +
+
+
+
viash test config.vsh.yaml
+
+
Running tests in temporary directory: '/tmp/viash_test_example_bash18292550620849723514'
+====================================================================
++/tmp/viash_test_example_bash18292550620849723514/build_executable/example_bash ---verbosity 6 ---setup cachedbuild
+[notice] Building container 'example_bash:test' with Dockerfile
+[info] Running 'docker build -t example_bash:test /tmp/viash_test_example_bash18292550620849723514/build_executable -f /tmp/viash_test_example_bash18292550620849723514/build_executable/tmp/dockerbuild-example_bash-R8Dghd/Dockerfile'
+#0 building with "default" instance using docker driver
+
+#1 [internal] load .dockerignore
+#1 transferring context: 2B done
+#1 DONE 0.0s
+
+#2 [internal] load build definition from Dockerfile
+#2 transferring dockerfile: 291B done
+#2 DONE 0.0s
+
+#3 [internal] load metadata for docker.io/library/bash:4.0
+#3 DONE 0.0s
+
+#4 [1/2] FROM docker.io/library/bash:4.0
+#4 DONE 0.0s
+
+#5 [2/2] RUN :
+#5 CACHED
+
+#6 exporting to image
+#6 exporting layers done
+#6 writing image sha256:448683cc1642a674c384ef251923d377c9cceccdaf046d0dd3e388210e02b485 done
+#6 naming to docker.io/library/example_bash:test 0.0s done
+#6 DONE 0.0s
+====================================================================
++/tmp/viash_test_example_bash18292550620849723514/test_test/test_executable
+>>> Create input test file
+>>> Run executable
+Copying 'foo.txt' to 'bar.txt'.
+>>> Check whether output file exists
+>>> Check whether input and output file are the same
+>>> Test finished successfully
+====================================================================
+SUCCESS! All 1 out of 1 test scripts succeeded!
+Cleaning up temporary directory
+
+
+
+
+
+
viash test config.vsh.yaml
+
+
Running tests in temporary directory: '/tmp/viash_test_example_csharp7780981861313166489'
+====================================================================
++/tmp/viash_test_example_csharp7780981861313166489/build_executable/example_csharp ---verbosity 6 ---setup cachedbuild
+[notice] Building container 'example_csharp:test' with Dockerfile
+[info] Running 'docker build -t example_csharp:test /tmp/viash_test_example_csharp7780981861313166489/build_executable -f /tmp/viash_test_example_csharp7780981861313166489/build_executable/tmp/dockerbuild-example_csharp-lUAKJp/Dockerfile'
+#0 building with "default" instance using docker driver
+
+#1 [internal] load build definition from Dockerfile
+#1 transferring dockerfile: 327B done
+#1 DONE 0.0s
+
+#2 [internal] load .dockerignore
+#2 transferring context: 2B done
+#2 DONE 0.0s
+
+#3 [internal] load metadata for ghcr.io/data-intuitive/dotnet-script:1.3.1
+#3 DONE 0.0s
+
+#4 [1/2] FROM ghcr.io/data-intuitive/dotnet-script:1.3.1
+#4 DONE 0.0s
+
+#5 [2/2] RUN :
+#5 CACHED
+
+#6 exporting to image
+#6 exporting layers done
+#6 writing image sha256:7784f281ba2845fc802ecb0d975a3c33fc15ee741e41be3824160e073adef6ed done
+#6 naming to docker.io/library/example_csharp:test 0.0s done
+#6 DONE 0.0s
+====================================================================
++/tmp/viash_test_example_csharp7780981861313166489/test_test/test_executable
+>>> Create input test file
+>>> Run executable
+>>> Check whether output file exists
+>>> Check whether input and output file are the same
+>>> Test finished successfully
+====================================================================
+SUCCESS! All 1 out of 1 test scripts succeeded!
+Cleaning up temporary directory
+
+
+
+
+
+
viash test config.vsh.yaml
+
+
Running tests in temporary directory: '/tmp/viash_test_example_js10119711192418158286'
+====================================================================
++/tmp/viash_test_example_js10119711192418158286/build_executable/example_js ---verbosity 6 ---setup cachedbuild
+[notice] Building container 'example_js:test' with Dockerfile
+[info] Running 'docker build -t example_js:test /tmp/viash_test_example_js10119711192418158286/build_executable -f /tmp/viash_test_example_js10119711192418158286/build_executable/tmp/dockerbuild-example_js-ZzCu2l/Dockerfile'
+#0 building with "default" instance using docker driver
+
+#1 [internal] load build definition from Dockerfile
+#1 transferring dockerfile: 302B done
+#1 DONE 0.0s
+
+#2 [internal] load .dockerignore
+#2 transferring context: 2B done
+#2 DONE 0.0s
+
+#3 [internal] load metadata for docker.io/library/node:19-bullseye-slim
+#3 DONE 0.5s
+
+#4 [1/2] FROM docker.io/library/node:19-bullseye-slim@sha256:f58f1fcf5c9ff9e3752993edb4ed6dbd35697124c85a43f3b97aa054500b0534
+#4 DONE 0.0s
+
+#5 [2/2] RUN :
+#5 CACHED
+
+#6 exporting to image
+#6 exporting layers done
+#6 writing image sha256:1689d64c5586a234446c7990d6e57fab5756b25e46a28d83473a7aa09a1c2d18 done
+#6 naming to docker.io/library/example_js:test 0.0s done
+#6 DONE 0.0s
+====================================================================
++/tmp/viash_test_example_js10119711192418158286/test_test/test_executable
+>>> Create input test file
+>>> Run executable
+>>> Check whether output file exists
+>>> Check whether input and output file are the same
+>>> Test finished successfully
+====================================================================
+SUCCESS! All 1 out of 1 test scripts succeeded!
+Cleaning up temporary directory
+
+
+
+
+
+
viash test config.vsh.yaml
+
+
Running tests in temporary directory: '/tmp/viash_test_example_python5862734617689695437'
+====================================================================
++/tmp/viash_test_example_python5862734617689695437/build_executable/example_python ---verbosity 6 ---setup cachedbuild
+[notice] Building container 'example_python:test' with Dockerfile
+[info] Running 'docker build -t example_python:test /tmp/viash_test_example_python5862734617689695437/build_executable -f /tmp/viash_test_example_python5862734617689695437/build_executable/tmp/dockerbuild-example_python-N3nE7L/Dockerfile'
+#0 building with "default" instance using docker driver
+
+#1 [internal] load .dockerignore
+#1 transferring context: 2B done
+#1 DONE 0.0s
+
+#2 [internal] load build definition from Dockerfile
+#2 transferring dockerfile: 301B done
+#2 DONE 0.0s
+
+#3 [internal] load metadata for docker.io/library/python:3.10-slim
+#3 DONE 0.4s
+
+#4 [1/2] FROM docker.io/library/python:3.10-slim@sha256:669b88d5947f8bc66039e97949099baa52fe6b02b9d6846836667d2c8d9859fe
+#4 DONE 0.0s
+
+#5 [2/2] RUN :
+#5 CACHED
+
+#6 exporting to image
+#6 exporting layers done
+#6 writing image sha256:f070e931a7ad3c6a5be9647968475ae9d71725fc532242357191d473afe6ba99 done
+#6 naming to docker.io/library/example_python:test 0.0s done
+#6 DONE 0.0s
+====================================================================
++/tmp/viash_test_example_python5862734617689695437/test_test/test_executable
+Copying 'foo.txt' to 'bar.txt'.
+>>> Create input test file
+>>> Run executable
+>>> Check whether output file exists
+>>> Check whether input and output file are the same
+>>> Test finished successfully
+====================================================================
+SUCCESS! All 1 out of 1 test scripts succeeded!
+Cleaning up temporary directory
+
+
+
+
+
+
viash test config.vsh.yaml
+
+
Running tests in temporary directory: '/tmp/viash_test_example_r16409329976605925025'
+====================================================================
++/tmp/viash_test_example_r16409329976605925025/build_executable/example_r ---verbosity 6 ---setup cachedbuild
+[notice] Building container 'example_r:test' with Dockerfile
+[info] Running 'docker build -t example_r:test /tmp/viash_test_example_r16409329976605925025/build_executable -f /tmp/viash_test_example_r16409329976605925025/build_executable/tmp/dockerbuild-example_r-eDqLR9/Dockerfile'
+#0 building with "default" instance using docker driver
+
+#1 [internal] load .dockerignore
+#1 transferring context: 2B done
+#1 DONE 0.0s
+
+#2 [internal] load build definition from Dockerfile
+#2 transferring dockerfile: 302B done
+#2 DONE 0.0s
+
+#3 [internal] load metadata for docker.io/eddelbuettel/r2u:22.04
+#3 DONE 0.4s
+
+#4 [1/2] FROM docker.io/eddelbuettel/r2u:22.04@sha256:ad84e9056a4b097c162124a62f5d3d15c86a8297d1e632810e2d591cd57ce05b
+#4 DONE 0.0s
+
+#5 [2/2] RUN :
+#5 CACHED
+
+#6 exporting to image
+#6 exporting layers done
+#6 writing image sha256:84aad914eb34b259133456e7bc66467dbb7beb3d065302c2936db2f41908ba89 done
+#6 naming to docker.io/library/example_r:test 0.0s done
+#6 DONE 0.0s
+====================================================================
++/tmp/viash_test_example_r16409329976605925025/test_test/test_executable
+>>> Create input test file
+>>> Run executable
+Copying 'foo.txt' to 'bar.txt'.
+[1] TRUE
+>>> Check whether output file exists
+>>> Check whether input and output file are the same
+>>> Test finished successfully
+====================================================================
+SUCCESS! All 1 out of 1 test scripts succeeded!
+Cleaning up temporary directory
+
+
+
+
+
+
viash test config.vsh.yaml
+
+
Running tests in temporary directory: '/tmp/viash_test_example_scala1481537244751024579'
+====================================================================
++/tmp/viash_test_example_scala1481537244751024579/build_executable/example_scala ---verbosity 6 ---setup cachedbuild
+[notice] Building container 'example_scala:test' with Dockerfile
+[info] Running 'docker build -t example_scala:test /tmp/viash_test_example_scala1481537244751024579/build_executable -f /tmp/viash_test_example_scala1481537244751024579/build_executable/tmp/dockerbuild-example_scala-0yibuB/Dockerfile'
+#0 building with "default" instance using docker driver
+
+#1 [internal] load build definition from Dockerfile
+#1 transferring dockerfile: 338B done
+#1 DONE 0.0s
+
+#2 [internal] load .dockerignore
+#2 transferring context: 2B done
+#2 DONE 0.0s
+
+#3 [internal] load metadata for docker.io/sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10
+#3 DONE 0.5s
+
+#4 [1/2] FROM docker.io/sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10@sha256:440234e283754375d5ab6bcb35e2d470f9dabeaaeb639d8c0708fac2d3707e0c
+#4 DONE 0.0s
+
+#5 [2/2] RUN :
+#5 CACHED
+
+#6 exporting to image
+#6 exporting layers done
+#6 writing image sha256:ee98221e3c6b53c09b1e87395de0a1ee4bc9dfc8f303fdc23d5c50a515fa0c8e done
+#6 naming to docker.io/library/example_scala:test 0.0s done
+#6 DONE 0.0s
+====================================================================
++/tmp/viash_test_example_scala1481537244751024579/test_test/test_executable
+warning: 1 deprecation
+warning: 1 deprecation (since 2.13.3)
+warning: 2 deprecations in total; re-run with -deprecation for details
+>>> Create input test file
+>>> Run executable
+warning: 1 deprecation; re-run with -deprecation for details
+Copying 'foo.txt' to 'bar.txt'.
+>>> Check whether output file exists
+>>> Check whether input and output file are the same
+>>> Test finished successfully
+====================================================================
+SUCCESS! All 1 out of 1 test scripts succeeded!
+Cleaning up temporary directory
+
+
+
+
+
+

When running viash test, Viash will follow the following steps:

+
    +
  1. Create a temporary directory
  2. +
  3. Build the component into the main executable
  4. +
  5. (Re-)build the Docker image for the component
  6. +
  7. Iterate over all unit test scripts:
  8. +
+
    +
  1. Build the unit test into an executable
  2. +
  3. Run the unit test, passing the main executable as an argument
  4. +
+
    +
  1. Return exit code 0 if all of the above steps succeed, otherwise 0
  2. +
+
+
+

Bonus: unit testing all of the components

+

If you have multiple Viash components located in a directory called src/, what happens when you run the following?

+
viash ns test --parallel --src src/
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/component/use-helper-functions.html b/_versioned/0_8_5/guide/component/use-helper-functions.html new file mode 100644 index 00000000..e553e528 --- /dev/null +++ b/_versioned/0_8_5/guide/component/use-helper-functions.html @@ -0,0 +1,1187 @@ + + + + + + + + + + +Viash - Use helper functions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Use helper functions

+
+ +
+
+ How to load helper functions. +
+
+ + +
+ + + + +
+ + + +
+ + + +

This documentation will walk you through the process of importing and using functions defined in an external file in your Viash component.

+

This can be useful for organizing and reusing code across multiple components or even within a single component.

+

We’ll cover the steps to set up the external file, import the functions, and use them within your Viash component. By the end of this guide, you’ll have a better understanding of how to leverage external files to improve your Viash development workflow.

+
+

Create helper script

+

When you want to reuse a function multiple times, it might make sense to store them in a separate file. For example, your helper file could contain the following helper function:

+
+ +
+
+
function copy_file {
+  echo "Copying '$1' to '$2'."
+  cp -r "$1" "$2"
+}
+
+
+
// No example available yet.
+
+
+
const fs = require('fs');
+
+function copy_file(source, dest) {
+  console.log(`Copying '${source}' to '${dest}'`)
+  fs.copyFile(source, dest, (err) => {
+    if (err) throw err;
+  });
+}
+
+module.exports = {
+  copy_file
+}
+
+
+
import shutil
+
+def copy_file(source, dest):
+  print(f"Copying '{source}' to '{dest}'.")
+  shutil.copyfile(source, dest)
+
+
+
copy_file <- function(source, dest) {
+  cat("Copying '", source, "' to '", dest, "'.\n", sep = "")
+  file.copy(source, dest)
+}
+
+
+
// No example available yet.
+
+
+
+
+
+

Add resource to component

+

To add a helper script as an external resource in a Viash component, you can use the resources section of the component’s config file. Not only does your resources section contain the main script, but it’s also used to specify external resources such as helper scripts and other files that the component needs to function.

+

Here is an example of what the config file might look after adding the helper script:

+
+ +
+
+
functionality:
+  name: example_bash
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: bash_script
+      path: script.sh
+    - path: helper.sh
+platforms:
+  - type: docker
+    image: bash:4.0
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_csharp
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: csharp_script
+      path: script.csx
+    - path: helper.csx
+platforms:
+  - type: docker
+    image: ghcr.io/data-intuitive/dotnet-script:1.3.1
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_js
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: javascript_script
+      path: script.js
+    - path: helper.js
+platforms:
+  - type: docker
+    image: node:19-bullseye-slim
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_python
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: python_script
+      path: script.py
+    - path: helper.py
+platforms:
+  - type: docker
+    image: python:3.10-slim
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_r
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: r_script
+      path: script.R
+    - path: helper.R
+platforms:
+  - type: docker
+    image: eddelbuettel/r2u:22.04
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_scala
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: scala_script
+      path: script.scala
+    - path: helper.scala
+platforms:
+  - type: docker
+    image: sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10
+  - type: native
+  - type: nextflow
+
+
+
+
+
+

Import helper functions

+

Finally, you need to import the helper functions in your script. The procedure will differ depending on the scripting language used. Below is an example of what the main script might look like after importing the helper file.

+
+ +
+
+
#!/bin/bash
+
+## VIASH START
+par_input=path/to/file.txt
+par_output=output.txt
+## VIASH END
+
+# view resource file
+source "$meta_resources_dir/helper.sh"
+
+# copy file
+copy_file "$par_input" "$par_output"
+
+
+
// No example available yet.
+
+
+
// VIASH START
+let par = {
+  'input': 'path/to/file.txt',
+  'output': 'output.txt'
+};
+// VIASH END
+
+// import helper function
+const helper = require(`${meta['resources_dir']}/helper.js`);
+
+// copy file
+helper.copy_file(par['input'], par['output'])
+
+
+
import sys
+
+## VIASH START
+par = {
+  'input': 'file.txt',
+  'output': 'output.txt'
+}
+## VIASH END
+
+# import helper function
+sys.path.append(meta['resources_dir'])
+from helper import copy_file
+
+# copy file
+copy_file(par['input'], par['output'])
+
+
+
## VIASH START
+par <- list(
+  "input" = "file.txt",
+  "output" = "output.txt"
+)
+## VIASH END
+
+# import helper function
+source(paste0(meta$resources_dir, "/helper.R"))
+
+# copy file
+copy_file(par$input, par$output)
+
+
+
// No example available yet.
+
+
+
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/component/variables.html b/_versioned/0_8_5/guide/component/variables.html new file mode 100644 index 00000000..8cd9cf9a --- /dev/null +++ b/_versioned/0_8_5/guide/component/variables.html @@ -0,0 +1,1410 @@ + + + + + + + + + + +Viash - Par and meta variables + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Par and meta variables

+
+ +
+
+ A showcase of the available variables and meta-variables. +
+
+ + +
+ + + + +
+ + + +
+ + + +

When running a Viash component with viash run, Viash will wrap your script into a Bash executable. In doing so, it strips away the “Viash placeholder” code block and replaces it by a bit of code to your script for reading any parameter values at runtime.

+
+

Recognizing the Viash placeholder code block

+

Recall what the script of the previous example looks like:

+
+ +
+
+
#!/bin/bash
+
+## VIASH START
+par_input=path/to/file.txt
+par_output=output.txt
+## VIASH END
+
+# copy file
+echo "Copying '$par_input' to '$par_output'."
+cp -r "$par_input" "$par_output"
+
+
+
using System.IO;
+
+// VIASH START
+var par = new {
+  input = "path/to/file.txt",
+  output = "output.txt"
+};
+// VIASH END
+
+// copy file
+Console.WriteLine($"Copying '{par.input}' to '{par.output}'.");
+File.Copy(par.input, par.output, true);
+
+
+
const fs = require('fs');
+
+// VIASH START
+let par = {
+  'input': 'path/to/file.txt',
+  'output': 'output.txt'
+};
+// VIASH END
+
+// copy file
+console.log(`Copying '${par['input']}' to '${par['output']}'`)
+fs.copyFile(par['input'], par['output'], (err) => {
+  if (err) throw err;
+});
+
+
+
import shutil
+
+## VIASH START
+par = {
+  'input': 'file.txt',
+  'output': 'output.txt'
+}
+## VIASH END
+
+# copy file
+print(f"Copying '{par['input']}' to '{par['output']}'.")
+shutil.copyfile(par['input'], par['output'])
+
+
+
## VIASH START
+par <- list(
+  "input" = 'file.txt',
+  "output" = 'output.txt'
+)
+## VIASH END
+
+# copy file
+cat("Copying '", par$input, "' to '", par$output, "'.\n", sep = "")
+file.copy(par$input, par$output)
+
+
+
import java.nio.file.StandardCopyOption.REPLACE_EXISTING
+import java.nio.file.Files
+import java.nio.file.Paths
+
+// VIASH START
+case class ViashPar(input: String, output: String)
+val par = ViashPar(
+  "path/to/file.txt",
+  "output.txt"
+)
+// VIASH END
+
+// copy file
+println(s"Copying '${par.input}' to '${par.output}'.")
+val fileIn = Paths.get(par.input)
+val fileOut = Paths.get(par.output)
+Files.copy(fileIn, fileOut, REPLACE_EXISTING)
+
+
+
+

A “Viash placeholder” code block is the section between the VIASH START and VIASH END comments.

+
+
+

What happens at runtime

+

By passing arguments to the component, Viash will add your parameter values to your script by replacing the Viash placeholder code block. If no such code block exists yet, the parameters are inserted at the top of the file.

+

The resulting code block will contain two maps (or dictionaries): par and meta. The par map contains the parameter values specified by the user, and meta contains additional information on the current runtime environment. Note that for Bash scripts, the par and meta maps are flattened into separate environment variables.

+
+
+

Previewing the par and meta objects

+

To get insight into how par and meta are defined, you can run viash config inject to replace the current parameter placeholder with an auto-generated parameter placeholder.

+
+
+
+ +
+
+Warning +
+
+
+

This will change the contents of your script!

+
+
+
+ +
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+

The updated script.sh now contains the following code:

+
#!/bin/bash
+
+## VIASH START
+# The following code has been auto-generated by Viash.
+par_input='file.txt'
+par_output='output.txt'
+meta_functionality_name='example_bash'
+meta_resources_dir='/tmp/viash_inject_example_bash14502262743267273460'
+meta_executable='/tmp/viash_inject_example_bash14502262743267273460/example_bash'
+meta_config='/tmp/viash_inject_example_bash14502262743267273460/.config.vsh.yaml'
+meta_temp_dir='/tmp'
+meta_cpus='123'
+meta_memory_b='123'
+meta_memory_kb='123'
+meta_memory_mb='123'
+meta_memory_gb='123'
+meta_memory_tb='123'
+meta_memory_pb='123'
+
+## VIASH END
+
+# copy file
+echo "Copying '$par_input' to '$par_output'."
+cp -r "$par_input" "$par_output"
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+

The updated script.csx now contains the following code:

+
using System.IO;
+
+// VIASH START
+// The following code has been auto-generated by Viash.
+var par = new {
+  input = @"file.txt",
+  output = @"output.txt"
+};
+var meta = new {
+  functionality_name = @"example_csharp",
+  resources_dir = @"/tmp/viash_inject_example_csharp6429441101072582423",
+  executable = @"/tmp/viash_inject_example_csharp6429441101072582423/example_csharp",
+  config = @"/tmp/viash_inject_example_csharp6429441101072582423/.config.vsh.yaml",
+  temp_dir = @"/tmp",
+  cpus = Convert.ToInt32(@"123"),
+  memory_b = Convert.ToInt64(@"123"),
+  memory_kb = Convert.ToInt64(@"123"),
+  memory_mb = Convert.ToInt64(@"123"),
+  memory_gb = Convert.ToInt64(@"123"),
+  memory_tb = Convert.ToInt64(@"123"),
+  memory_pb = Convert.ToInt64(@"123")
+};
+var dep = new {
+  
+};
+
+// VIASH END
+
+// copy file
+Console.WriteLine($"Copying '{par.input}' to '{par.output}'.");
+File.Copy(par.input, par.output, true);
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+

The updated script.js now contains the following code:

+
const fs = require('fs');
+
+// VIASH START
+// The following code has been auto-generated by Viash.
+let par = {
+  'input': String.raw`file.txt`,
+  'output': String.raw`output.txt`
+};
+let meta = {
+  'functionality_name': String.raw`example_js`,
+  'resources_dir': String.raw`/tmp/viash_inject_example_js7815933713774517654`,
+  'executable': String.raw`/tmp/viash_inject_example_js7815933713774517654/example_js`,
+  'config': String.raw`/tmp/viash_inject_example_js7815933713774517654/.config.vsh.yaml`,
+  'temp_dir': String.raw`/tmp`,
+  'cpus': parseInt(String.raw`123`),
+  'memory_b': parseInt(String.raw`123`),
+  'memory_kb': parseInt(String.raw`123`),
+  'memory_mb': parseInt(String.raw`123`),
+  'memory_gb': parseInt(String.raw`123`),
+  'memory_tb': parseInt(String.raw`123`),
+  'memory_pb': parseInt(String.raw`123`)
+};
+let dep = {
+  
+};
+
+// VIASH END
+
+// copy file
+console.log(`Copying '${par['input']}' to '${par['output']}'`)
+fs.copyFile(par['input'], par['output'], (err) => {
+  if (err) throw err;
+});
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+

The updated script.py now contains the following code:

+
import shutil
+
+## VIASH START
+# The following code has been auto-generated by Viash.
+par = {
+  'input': r'file.txt',
+  'output': r'output.txt'
+}
+meta = {
+  'functionality_name': r'example_python',
+  'resources_dir': r'/tmp/viash_inject_example_python10583001356132851438',
+  'executable': r'/tmp/viash_inject_example_python10583001356132851438/example_python',
+  'config': r'/tmp/viash_inject_example_python10583001356132851438/.config.vsh.yaml',
+  'temp_dir': r'/tmp',
+  'cpus': int(r'123'),
+  'memory_b': int(r'123'),
+  'memory_kb': int(r'123'),
+  'memory_mb': int(r'123'),
+  'memory_gb': int(r'123'),
+  'memory_tb': int(r'123'),
+  'memory_pb': int(r'123')
+}
+dep = {
+  
+}
+
+## VIASH END
+
+# copy file
+print(f"Copying '{par['input']}' to '{par['output']}'.")
+shutil.copyfile(par['input'], par['output'])
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+

The updated script.R now contains the following code:

+
## VIASH START
+# The following code has been auto-generated by Viash.
+# treat warnings as errors
+.viash_orig_warn <- options(warn = 2)
+
+par <- list(
+  "input" = 'file.txt',
+  "output" = 'output.txt'
+)
+meta <- list(
+  "functionality_name" = 'example_r',
+  "resources_dir" = '/tmp/viash_inject_example_r14100536581041087495',
+  "executable" = '/tmp/viash_inject_example_r14100536581041087495/example_r',
+  "config" = '/tmp/viash_inject_example_r14100536581041087495/.config.vsh.yaml',
+  "temp_dir" = '/tmp',
+  "cpus" = as.integer('123'),
+  "memory_b" = bit64::as.integer64('123'),
+  "memory_kb" = bit64::as.integer64('123'),
+  "memory_mb" = bit64::as.integer64('123'),
+  "memory_gb" = bit64::as.integer64('123'),
+  "memory_tb" = bit64::as.integer64('123'),
+  "memory_pb" = bit64::as.integer64('123')
+)
+dep <- list(
+  
+)
+
+
+# restore original warn setting
+options(.viash_orig_warn)
+rm(.viash_orig_warn)
+
+## VIASH END
+
+# copy file
+cat("Copying '", par$input, "' to '", par$output, "'.\n", sep = "")
+file.copy(par$input, par$output)
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+

The updated script.scala now contains the following code:

+
import java.nio.file.StandardCopyOption.REPLACE_EXISTING
+import java.nio.file.Files
+import java.nio.file.Paths
+
+// VIASH START
+// The following code has been auto-generated by Viash.
+case class ViashPar(
+  input: Option[String],
+  output: Option[String]
+)
+val par = ViashPar(
+  Some("""file.txt"""),
+  Some("""output.txt""")
+)
+case class ViashMeta(
+  functionality_name: Option[String],
+  resources_dir: Option[String],
+  executable: Option[String],
+  config: Option[String],
+  temp_dir: Option[String],
+  cpus: Option[Int],
+  memory_b: Option[Long],
+  memory_kb: Option[Long],
+  memory_mb: Option[Long],
+  memory_gb: Option[Long],
+  memory_tb: Option[Long],
+  memory_pb: Option[Long]
+)
+val meta = ViashMeta(
+  Some("""example_scala"""),
+  Some("""/tmp/viash_inject_example_scala2108950522793770218"""),
+  Some("""/tmp/viash_inject_example_scala2108950522793770218/example_scala"""),
+  Some("""/tmp/viash_inject_example_scala2108950522793770218/.config.vsh.yaml"""),
+  Some("""/tmp"""),
+  Some("""123""".toInt),
+  Some("""123""".toLong),
+  Some("""123""".toLong),
+  Some("""123""".toLong),
+  Some("""123""".toLong),
+  Some("""123""".toLong),
+  Some("""123""".toLong)
+)
+case class ViashDep(
+  
+)
+val dep = ViashDep(
+  
+)
+
+// VIASH END
+
+// copy file
+println(s"Copying '${par.input}' to '${par.output}'.")
+val fileIn = Paths.get(par.input)
+val fileOut = Paths.get(par.output)
+Files.copy(fileIn, fileOut, REPLACE_EXISTING)
+
+
+
+
+
+

Runtime parameters in par

+

The par object (or par_ environment variables in Bash) will contain argument values passed at runtime. For example, passing --input foo.txt will result in a par["input"] being equal to "foo.txt".

+
+
+
+ +
+
+Tip +
+
+
+

Try adding more arguments with different file types to see what effect this has on the resulting placeholder.

+
+
+
+
+

Meta variables in meta

+

Meta-variables offer information on the runtime environment which you can use from within your script.

+
    +
  • cpus (integer): The maximum number of (logical) cpus a component is allowed to use. By default, this value will be undefined.

  • +
  • config (string): Path to the processed Viash config YAML. This file is usually called .config.vsh.yaml and resides next to the wrapped executable (see below). This YAML file is useful for doing some runtime introspection of the component for writing generic unit tests.

  • +
  • executable (string): The executable being used at runtime; that is, the wrapped script. This variable is used in unit tests.

  • +
  • functionality_name (string): The name of the component, useful for logging.

  • +
  • memory_* (long): The maximum amount of memory a component is allowed to allocate. The following denominations are provided: memory_b, memory_kb, memory_mb, memory_gb, memory_tb, memory_pb. By default, this value will be undefined.

  • +
  • resources_dir (string): Path to where the resources are stored. See the previous section on how to define resources.

  • +
  • temp_dir (string): A temporary directory in which your script is allowed to create new temporary files / directories. By default, this will be set to the VIASH_TEMP environment variable. When the VIASH_TEMP variable is undefined, /tmp is used instead.

  • +
+ +
+

cpus (integer)

+

This field specifies the maximum number of (logical) cpus a component is allowed to use. This is useful when parallellizing your component in such a way that integrates very nicely with pipeline frameworks such as Nextflow. Below is an example usage of the cpus meta-variable.

+
+ +
+
+
#!/bin/bash
+
+## VIASH START
+par_input="path/to/file.txt"
+par_output="output.txt"
+meta_cpus=10
+## VIASH END
+
+# Pass number of cores to the popular_software_tool. Set the default to 1.
+./popular_software_tool --ncores ${meta_cpus:-1}
+
+
+

No example available yet.

+
+
+

No example available yet.

+
+
+
from multiprocessing import Pool
+
+## VIASH START
+par = {}
+meta = {"cpus": 1}
+## VIASH END
+
+def my_fun(x):
+    return x + "!"
+my_data = ["hello", "world"]
+
+with Pool(processes=meta.get("cpus", 1)) as pool:
+    out = pool.map(my_fun, my_data)
+
+
+
library(furrr)
+
+## VIASH START
+par <- list()
+meta <- list(
+  cpus = 1L
+)
+## VIASH END
+
+if (is.null(meta$cpus)) meta$cpus <- 1
+plan(multisession, workers = meta$cpus)
+
+my_data <- c("hello", "world")
+out = future_map(
+  my_data, 
+  function(x) {
+    paste0(x, "!")
+  }
+)
+
+
+
import scala.collection.parallel._
+import java.util.concurrent.ForkJoinPool
+
+// VIASH START
+// ...
+// VIASH END
+
+val pc = mutable.ParArray(1, 2, 3)
+val numCores = meta.cores.getOrElse(1)
+pc.tasksupport = new ForkJoinTaskSupport(new ForkJoinPool(numCores))
+pc map { _ + 1 }
+
+
+
+

You can set the number of cores in your component using any of the following approaches:

+
# as a parameter of viash run
+viash run config.vsh.yaml --cpus 10 -- <my component arguments>
+
+# as a parameter of viash test
+viash test config.vsh.yaml --cpus 10
+
+# or as a parameter of the executable
+viash build config.vsh.yaml -o output
+output/my_executable ---cpus 10
+#                     ↑ notice the triple dash
+ + +
+
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/index.html b/_versioned/0_8_5/guide/index.html new file mode 100644 index 00000000..13cd8c59 --- /dev/null +++ b/_versioned/0_8_5/guide/index.html @@ -0,0 +1,1019 @@ + + + + + + + + + +Viash - Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Guide

+
+ + + +
+ + + + +
+ + + +
+ + +
+

Viash Component

+

A Viash component is a modular software component used in building data pipelines. It consists of a script written in one of the supported scripting languages (Bash, Python, R, Scala, JS, or C#) and a metadata file that outlines its dependencies. Viash components can be converted into standalone executables.

+
+ +
+No matching items +
+
+
+
+

Viash Project

+

A Viash project is a collection of Viash components, typically designed to work together to perform a specific task. Viash projects enable batch processing, making it easier to handle multiple components and data sets simultaneously.

+
+
    + + +
  • + Structure: The project already contains three components which are used to create a Nextflow pipeline with the following topology: +
  • + + + +
  • + Batch processing: Within this project it’s possible to do all of the same things mentioned in the “Component” guide such as build a target executable with viash build and test a component with +
  • + + + + + +
  • + Project config: A _viash.yaml file in the root of the project repository is called a Viash project config. It allows defining project-wide settings such as the location of the Viash… +
  • + + + +
  • + IDE setup: Since a Viash components consists of a script in one of the supported languages and a YAML file, you can use any editor of your choosing to create these files. +
  • + + +
+
+No matching items +
+
+
+
+

Viash+Nextflow VDSL3

+

VDSL3 is a Nextflow module generated by Viash from a script, allowing users to design and run scalable, reproducible data pipelines without requiring expertise in Nextflow.

+
+
    + + +
  • + Create and use a module: Creating a VDSL3 module is as simple as adding { type: nextflow } to the platforms section in the Viash config. Luckily, our previous example already contained such an entry: +
  • + + + + + +
  • + Create a pipeline: This guide explains how to create an example pipeline that’s closer to a typical use-case of a Nextflow bioinformatics pipeline. +
  • + + +
+
+No matching items +
+
+ + + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/nextflow_vdsl3/create-a-pipeline.html b/_versioned/0_8_5/guide/nextflow_vdsl3/create-a-pipeline.html new file mode 100644 index 00000000..86a3afbc --- /dev/null +++ b/_versioned/0_8_5/guide/nextflow_vdsl3/create-a-pipeline.html @@ -0,0 +1,1183 @@ + + + + + + + + + +Viash - Create a pipeline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Create a pipeline

+
+ + + +
+ + + + +
+ + + +
+ + +

This guide explains how to create an example pipeline that’s closer to a typical use-case of a Nextflow bioinformatics pipeline.

+

Please review the VDSL3 principles section for the necessary background.

+
+

Get the template project

+

To get started with building a pipeline, we provide a template project which already contains a few components. First create a new repository by clicking the “Use this template” button in the viash_project_template repository or clicking the button below.

+

Use project template

+

Then clone the repository using the following command.

+
git clone https://github.com/youruser/my_first_pipeline.git
+

The pipeline contains three components and uses two utility components from vsh_utils with which we will build the following pipeline:

+
+
+
+

+
+
graph TD
+   A(file?.tsv) --> X[vsh_flatten] 
+   X --file1.tsv--> B1[/remove_comments/] --> C1[/take_column/] --> Y
+   X --file2.tsv--> B2[/remove_comments/] --> C2[/take_column/] --> Y
+   Y[vsh_toList] --> D[/combine_columns/]
+   D --> E(output)
+
+
+

+
+
+
+
    +
  • vsh_flatten is a component to transform a Channel event containing multiple files (in this case using a glob ?) into multiple Channel events each containing one file to operate on. It is a Viash-compatible version of the Nextflow flatten operator.
  • +
  • remove_comments is a Bash script which removes all lines starting with a # from a file.
  • +
  • take_column is a Python script which extracts one of the columns in a TSV file.
  • +
  • vsh_toList is a component/module that does the oposite as vsh_flatten: turn multiple Channel items into one Channel item containing a list.
  • +
  • combine_columns is an R script which combines multiple files into a TSV.
  • +
+
+
+

Build the VDSL3 modules and workflow

+

First, we need to build the components into VDSL3 modules. Since Viash version 0.8.x this includes the workflows and subworkflows themselves as well since they are (or better /can/ be) stored under src and built to target/.

+
+
viash ns build --setup cachedbuild --parallel
+
+
temporaryFolder: /tmp/viash_hub_repo9316888928173929954 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+Exporting combine_columns (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/combine_columns
+Exporting workflow (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/workflow
+Exporting remove_comments (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/remove_comments
+Exporting take_column (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/take_column
+Exporting combine_columns (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/combine_columns
+Exporting remove_comments (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/remove_comments
+Exporting take_column (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/take_column
+[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/take_column:0.2.3' with Dockerfile
+[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/remove_comments:0.2.3' with Dockerfile
+[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/combine_columns:0.2.3' with Dockerfile
+All 7 configs built successfully
+
+
+

For more information about the --setup and --parallel arguments, please refer to the reference section.

+

The output of viash ns build tells us that

+
    +
  1. two dependencies are fetched (from Viash Hub)
  2. +
  3. the locally defined components are built into Nextflow modules
  4. +
  5. the locally defined worfklow template/workflow is built (see later)
  6. +
  7. containers are built for the local modules
  8. +
+

Once viash ns build is finished, a new target directory has been created containing the executables and modules grouped per platform:

+
+
tree target
+
+
target
+├── dependencies
+│   └── vsh
+│       └── data-intuitive
+│           └── vsh-pipeline-operators
+│               └── v0.2.0
+│                   └── nextflow
+│                       └── join
+│                           └── vsh_toList
+│                               ├── main.nf
+│                               └── nextflow.config
+├── docker
+│   └── template
+│       ├── combine_columns
+│       │   └── combine_columns
+│       ├── remove_comments
+│       │   └── remove_comments
+│       └── take_column
+│           └── take_column
+└── nextflow
+    └── template
+        ├── combine_columns
+        │   ├── main.nf
+        │   └── nextflow.config
+        ├── remove_comments
+        │   ├── main.nf
+        │   └── nextflow.config
+        ├── take_column
+        │   ├── main.nf
+        │   └── nextflow.config
+        └── workflow
+            ├── main.nf
+            └── nextflow.config
+
+20 directories, 13 files
+
+
+
+
+

Import a VDSL3 module

+
+

Viash version 0.8 and beyond

+
+
+
+ +
+
+Note +
+
+
+

This functionality is available since Viash version 0.8.x and assumes the workflow code is encoded as a Viash component with a corresponding config.vsh.yaml config file.

+
+
+

In order to use a module or subworkflow one simply has to add the module (either local or remote) to the dependencies slot in the Viash config file, for example:

+
functionality:
+  dependencies: 
+    - name: template/combine_columns
+      repository: local
+
+  repositories:
+    - name: local
+      type: local
+

After that, the module will be included automatically during the Viash build stage. For more information, please refer to the reference.

+
+
+

All Viash versions

+

As illustrated by the tree output above, a module can be included by pointing to its location. This approach can be used for any Nextflow module (that exposes a compatible API):

+
include { remove_comments } from "./target/nextflow/template/remove_comments/main.nf"
+
+
+
+

Create a pipeline

+
+

All Viash versions

+

We can use a module in a conventional Nextflow pipeline which takes two input files (file1 and file2) and removes the lines that contain comments (lines starting with #) from those files:

+
include { remove_comments } from "./target/nextflow/template/remove_comments/main.nf"
+
+workflow {
+
+  // Create a channel with two events
+  // Each event contains a string (an identifier) and a file (input)
+  Channel.fromList([
+      ["file1", [ input: file("resources_test/file1.tsv") ] ],
+      ["file2", [ input: file("resources_test/file2.tsv") ] ]
+    ])
+
+    // View channel contents
+    | view { tup -> "Input: $tup" }
+    
+    // Process the input file using the 'remove_comments' module.
+    // This removes comment lines from the input TSV.
+    | remove_comments.run(
+      directives: [
+        publishDir: "output/"
+      ]
+    )
+
+    // View channel contents
+    | view { tup -> "Output: $tup" }
+}
+

In plain English, the workflow works as follows:

+
    +
  1. Create a Channel with 2 items, corresponding to 2 input files.
  2. +
  3. Specify the respective input files as corresponding to the --input argument: [ input: ... ].
  4. +
  5. Add a view operation for introspection of the Channel
  6. +
  7. Run the remove_comments step and publish the results to output/. No additional fromState and toState arguments are specified because the defaults suffice.
  8. +
  9. One more view to show the resulting processed Channel items.
  10. +
+

We point the reader to the VDSL3 principles section for more information about how data flow (aka state) is management in a VDSL3 workflow.

+
+
+

Pipeline as a component

+

The run() function is a unique feature for every VDSL3 module which allows dynamically altering the behaviour of a module from within the pipeline. For example, we use it to set the publishDir directive to "output/" so the output of that step in the pipeline will be stored as output.

+
+
+
+ +
+
+Note +
+
+
+

This functionality is available since Viash version 0.8.x.

+
+
+

We can do the same but this time encoding the pipeline as a Viash compoment itself:

+
workflow run_wf {
+  take:
+    input_ch
+
+  main:
+
+    output_ch = 
+
+      // Create a channel with two events
+      // Each event contains a string (an identifier) and a file (input)
+      Channel.fromList([
+          ["file1", [ input: file("resources_test/file1.tsv") ] ],
+          ["file2", [ input: file("resources_test/file2.tsv") ] ]
+        ])
+
+        // View channel contents
+        | view { tup -> "Input: $tup" }
+        
+        // Process the input file using the 'remove_comments' module.
+        // This removes comment lines from the input TSV.
+        | remove_comments
+
+        // View channel contents
+        | view { tup -> "Output: $tup" }
+
+  emit:
+    output_ch
+      | map{ id, state -> [ "run", state ] }
+}
+

Together with a config file like this one:

+
functionality:
+  name: test
+  namespace: template
+  description: |
+    An example pipeline and project template.
+
+  arguments:
+    - name: "--output"
+      alternatives: [ "-o" ]
+      type: file
+      direction: output
+      required: true
+      description: Output TSV file
+      example: output.tsv
+
+  resources:
+    - type: nextflow_script
+      path: main.nf
+      entrypoint: run_wf
+
+  dependencies: 
+    - name: template/remove_comments
+      repository: local
+
+  repositories:
+    - name: local
+      type: local
+
+platforms:
+  - type: nextflow
+
+
+
+

Run the pipeline

+

Now run the pipeline with Nextflow:

+
+
nextflow run . \
+  -main-script main.nf
+
+
N E X T F L O W  ~  version 23.04.1
+Launching `main.nf` [tiny_lamarck] DSL2 - revision: dc137fbfcf
+[-        ] process > remove_comments:processWf:remove_comments_process -
+Input: [file1, [input:/home/hendrik/DI/viash_website/guide/_viash_project_template/resources_test/file1.tsv]]
+Input: [file2, [input:/home/hendrik/DI/viash_website/guide/_viash_project_template/resources_test/file2.tsv]]
+
+executor >  local (2)
+[67/6ae865] process > remove_comments:processWf:remove_comments_process (file1) [100%] 2 of 2 ✔
+Input: [file1, [input:/home/hendrik/DI/viash_website/guide/_viash_project_template/resources_test/file1.tsv]]
+Input: [file2, [input:/home/hendrik/DI/viash_website/guide/_viash_project_template/resources_test/file2.tsv]]
+Output: [file2, [output:/home/hendrik/DI/viash_website/guide/_viash_project_template/work/db/b25365216c63755f29c329549dc621/file2.remove_comments.output.tsv]]
+Output: [file1, [output:/home/hendrik/DI/viash_website/guide/_viash_project_template/work/67/6ae86546ce49a51b6b9a07064adc9e/file1.remove_comments.output.tsv]]
+
+
+
+ +On the example data: + +
+
cat resources_test/file?.tsv
+
+
# this is a header      
+# this is also a header     
+one 0.11    123
+two 0.23    456
+three   0.35    789
+four    0.47    123
+# this is not a header
+# just kidding yes it is
+eins    0.111   234
+zwei    0.222   234
+drei    0.333   123
+vier    0.444   123
+
+
+
+

This results in the following output:

+
+
tree output
+
+
output
+├── file1.remove_comments.output.tsv -> /home/hendrik/DI/viash_website/guide/_viash_project_template/work/67/6ae86546ce49a51b6b9a07064adc9e/file1.remove_comments.output.tsv
+├── file2.remove_comments.output.tsv -> /home/hendrik/DI/viash_website/guide/_viash_project_template/work/db/b25365216c63755f29c329549dc621/file2.remove_comments.output.tsv
+├── run.combine_columns.output
+├── run.workflow.output.tsv
+└── run.workflow.state.yaml
+
+1 directory, 5 files
+
+
+
+
cat output/*
+
+
one 0.11    123
+two 0.23    456
+three   0.35    789
+four    0.47    123
+eins    0.111   234
+zwei    0.222   234
+drei    0.333   123
+vier    0.444   123
+"1" 0.11
+"2" 0.23
+"3" 0.35
+"4" 0.47
+"1" 0.11
+"2" 0.23
+"3" 0.35
+"4" 0.47
+id: run
+output: !file run.workflow.output.tsv
+
+
+
+
+

Discussion

+

The above example pipeline serves as the backbone for creating real-life pipelines. However, for the sake of simplicity it contained several hardcoded elements that should be avoided:

+
    +
  • Input parameters should be provided as an argument to the pipeline or as part of the pipeline configuration
  • +
  • The output directory should be specified as an argument to the pipeline
  • +
+

As illustrated earlier these come for free when encoding the workflow as a Viash component. One even gets parameter checks with it!

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/nextflow_vdsl3/create-and-use-a-module.html b/_versioned/0_8_5/guide/nextflow_vdsl3/create-and-use-a-module.html new file mode 100644 index 00000000..b4db3e57 --- /dev/null +++ b/_versioned/0_8_5/guide/nextflow_vdsl3/create-and-use-a-module.html @@ -0,0 +1,1222 @@ + + + + + + + + + +Viash - Create and use a module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Create and use a module

+
+ + + +
+ + + + +
+ + + +
+ + + +

Creating a VDSL3 module is as simple as adding { type: nextflow } to the platforms section in the Viash config. Luckily, our previous example already contained such an entry:

+
+ +
+
+
functionality:
+  name: example_bash
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: bash_script
+      path: script.sh
+platforms:
+  - type: docker
+    image: "bash:4.0"
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_csharp
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: csharp_script
+      path: script.csx
+platforms:
+  - type: docker
+    image: "ghcr.io/data-intuitive/dotnet-script:1.3.1"
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_js
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: javascript_script
+      path: script.js
+platforms:
+  - type: docker
+    image: "node:19-bullseye-slim"
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_python
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: python_script
+      path: script.py
+platforms:
+  - type: docker
+    image: "python:3.10-slim"
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_r
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: r_script
+      path: script.R
+platforms:
+  - type: docker
+    image: "eddelbuettel/r2u:22.04"
+  - type: native
+  - type: nextflow
+
+
+
functionality:
+  name: example_scala
+  description: A minimal example component.
+  arguments:
+    - type: file
+      name: --input
+      example: file.txt
+      required: true
+    - type: file
+      name: --output
+      direction: output
+      example: output.txt
+      required: true
+  resources:
+    - type: scala_script
+      path: script.scala
+platforms:
+  - type: docker
+    image: "sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10"
+  - type: native
+  - type: nextflow
+
+
+
+
+

Generating a VDSL3 module

+

We will now turn the Viash component into a VDSL3 module. By default, the viash build command will select the first platform in the list of platforms. To select the nextflow platform, use the --platform nextflow argument, or -p nextflow for short.

+
+
viash build config.vsh.yaml -o target -p nextflow
+
+

This will generate a Nextflow module in the target/ directory:

+
+
tree target
+
+
target
+├── main.nf
+└── nextflow.config
+
+1 directory, 2 files
+
+
+

This main.nf file is both a standalone Nextflow pipeline and a module which can be imported as part of another pipeline.

+
+
+
+ +
+
+Tip +
+
+
+

In larger projects it’s recommended to use the viash ns build command to build all of the components in one go. Give it a try!

+
+
+
+
+

Running a module as a standalone pipeline

+

Unlike typical Nextflow modules, VDSL3 modules can actually be used as a standalone pipeline.

+

To run a VDSL3 module as a standalone pipeline, you need to specify the input parameters and a --publish_dir parameter, as Nextflow will automatically choose the parameter names of the output files.

+

You can run the executable by providing a value for --input and --publish_dir:

+
+
nextflow run target/main.nf --input config.vsh.yaml --publish_dir output/
+
+
N E X T F L O W  ~  version 23.04.1
+Launching `target/main.nf` [elegant_pesquet] DSL2 - revision: af32cbce19
+executor >  local (1)
+[f9/015717] process > example_bash:processWf:exam... [  0%] 0 of 1
+[-        ] process > example_bash:publishStatesS... -
+
+executor >  local (2)
+[f9/015717] process > example_bash:processWf:exam... [100%] 1 of 1 ✔
+[cc/55d9c1] process > example_bash:publishStatesS... [100%] 1 of 1 ✔
+
+
+

This results in the following output:

+
+
tree output
+
+
output
+├── run.example_bash.output.txt
+└── run.example_bash.state.yaml
+
+1 directory, 2 files
+
+
+

The pipeline help can be shown by passing the --help parameter (Output not shown).

+
nextflow run target/main.nf --help
+
+
+

Passing a parameter list

+

Every VDSL3 can accept a list of parameters to populate a Nextflow channel with.

+

For example, we create a set of input files which we want to process in parallel.

+
+
touch sample1.txt sample2.txt sample3.txt sample4.txt
+
+

Next, we create a YAML file param_list.yaml containing an id and an input value for each parameter entry.

+
- id: sample1
+  input: /tmp/RtmpdVNoe5/create-a-module59444c772986/bash/sample1.txt
+- id: sample2
+  input: /tmp/RtmpdVNoe5/create-a-module59444c772986/bash/sample2.txt
+- id: sample3
+  input: /tmp/RtmpdVNoe5/create-a-module59444c772986/bash/sample3.txt
+- id: sample4
+  input: /tmp/RtmpdVNoe5/create-a-module59444c772986/bash/sample4.txt
+

You can run the pipeline on the list of parameters using the --param_list parameter.

+
+
nextflow run target/main.nf --param_list param_list.yaml --publish_dir output2
+
+
N E X T F L O W  ~  version 23.04.1
+Launching `target/main.nf` [reverent_gilbert] DSL2 - revision: af32cbce19
+[-        ] process > example_bash:processWf:exam... -
+[-        ] process > example_bash:publishStatesS... -
+
+executor >  local (8)
+[2e/baa859] process > example_bash:processWf:exam... [100%] 4 of 4 ✔
+[ba/85f3e7] process > example_bash:publishStatesS... [100%] 4 of 4 ✔
+
+
+

This results in the following outputs:

+
+
tree output2
+
+
output2
+├── sample1.example_bash.output.txt
+├── sample1.example_bash.state.yaml
+├── sample2.example_bash.output.txt
+├── sample2.example_bash.state.yaml
+├── sample3.example_bash.output.txt
+├── sample3.example_bash.state.yaml
+├── sample4.example_bash.output.txt
+└── sample4.example_bash.state.yaml
+
+1 directory, 8 files
+
+
+
+
+
+ +
+
+Tip +
+
+
+

Instead of a YAML, you can also pass a JSON or a CSV to the --param_list parameter.

+
+
+
+
+

Module as part of a pipeline

+

This module can also be used as part of a Nextflow pipeline. Below is a short preview of what this looks like.

+
include { mymodule1 } from 'target/nextflow/mymodule1/main.nf'
+include { mymodule2 } from 'target/nextflow/mymodule2/main.nf'
+
+workflow {
+  Channel.fromList([
+    [
+      // a unique identifier for this tuple
+      "myid", 
+      // the state for this tuple
+      [
+        input: file("in.txt"),
+        module1_k: 10,
+        module2_k: 4
+      ]
+    ]
+  ])
+    | mymodule1.run(
+      // use a hashmap to define which part of the state is used to run mymodule1
+      fromState: [
+        input: "input",
+        k: "module1_k"
+      ],
+      // use a hashmap to define how the output of mymodule1 is stored back into the state
+      toState: [
+        module1_output: "output"
+      ]
+    )
+    | mymodule2.run(
+      // use a closure to define which data is used to run mymodule2
+      fromState: { id, state -> 
+        [
+          input: state.module1_output,
+          k: state.module2_k
+        ]
+      },
+      // use a closure to return only the output of module2 as a new state
+      toState: { id, output, state ->
+        output
+      },
+      auto: [
+        publish: true
+      ]
+    )
+}
+

We will discuss building pipelines with VDSL3 modules in more detail in Create a pipeline.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/nextflow_vdsl3/index.html b/_versioned/0_8_5/guide/nextflow_vdsl3/index.html new file mode 100644 index 00000000..c92d8b11 --- /dev/null +++ b/_versioned/0_8_5/guide/nextflow_vdsl3/index.html @@ -0,0 +1,807 @@ + + + + + + + + + +Viash - Nextflow VDSL3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow VDSL3

+
+ + + +
+ + + + +
+ + + +
+ + +

Nextflow is a highly popular and widely-used workflow manager in computational biology, featuring outstanding portability, reproducibility and scalability. However, while Nextflow’s advantages are impressive, developing a Nextflow pipeline can be challenging, requiring significant domain knowledge and verbose code that is labour-intensive. Fortunately, Viash provides a solution to the barriers of Nextflow pipeline development.

+

Viash can help developers wrap their code into a state-of-the-art Nextflow script called a VDSL3 module. As we will demonstrate in the remainder of this guide, VDSL3 is effectively a separate DSL layer on top of Nextflow enabled by Viash, hence it is called Viash + Nextflow DSL 3, or VDSL3 for short. VDSL3’s benefits extend beyond Nextflow pipeline development, including reusability, test-driven development, separation of concerns, and continuous testing.

+

You can use Viash to speed up or replace your pipeline development processes in the following steps:

+ +
+

Improvements of VDSL3 modules over standard Nextflow modules

+
    +
  • No need to write any Nextflow Groovy code, just your script and the Viash config.
  • +
  • VDSL3 module are also standalone pipelines.
  • +
  • Help documentation is automatically generated.
  • +
  • Standardized interface for passing parameter lists.
  • +
  • Automatically uses the Docker platform’s container.
  • +
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/nextflow_vdsl3/principles.html b/_versioned/0_8_5/guide/nextflow_vdsl3/principles.html new file mode 100644 index 00000000..9ac3b46d --- /dev/null +++ b/_versioned/0_8_5/guide/nextflow_vdsl3/principles.html @@ -0,0 +1,1237 @@ + + + + + + + + + +Viash - VDSL3 principles + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

VDSL3 principles

+
+ + + +
+ + + + +
+ + + +
+ + +
+
+
+ +
+
+Note +
+
+
+

This section assumes knowledge of how to create and manipulate Nextflow channels using DSL2. For more information, check out the Nextflow reference docs or contact Data Intuitive for a complete Nextflow+Viash course.

+
+
+
+

Quick recap

+
+

Nextflow channel

+

A Nextflow Channel object (later referred to just as channel) is in fact an implementation of the Dataflow Programming model. Nextflow has added a a set of operators for manipulating channels (filter, map, reduce, …) so that it tends more to a Functional Reactive Programming (FRP) model1.

+
+
+

Functional Reactive Programming (FRP)

+

If you’re new to FRP, here is a a list of pointers that will get you started:

+
    +
  • An excellent Medium post from Timo Stöttner
  • +
  • The introduction to Reactive Programming you’ve been missing from André Staltz.
  • +
  • A very insightful presentation by Staltz where he introduces FRP from first principles (with live coding).
  • +
+

In what follows, we will refer to channels and streams in line with those authors but if you’re used to working with Rx you would call this an observable.

+

Using the FRP model for describing data processing workflows is not new, other initiatives have recognized that FRP is a good fit for pipeline development:

+ +
+
+
+

A critique on channels, or is it?

+
+

Illustration by means of an nf-core pipeline

+

Let us start with an illustration of where Nextflow’s implementation (and how people use it) lacks some necessary features. We start by taking a look at one line from one of the most active nf-core pipelines, namely nf-core/rnaseq:

+
    ...
+        STAR_ALIGN_IGENOMES ( reads, index, gtf, star_ignore_sjdbgtf, seq_platform, seq_center )
+        ...
+

This calls a Nextflow process to align the reads according to a reference index and some other (optional) ‘values’. That is, those are not really all values. As the calling worklow indicates:

+
workflow ALIGN_STAR {
+    take:
+    reads               // channel: [ val(meta), [ reads ] ]
+    index               // channel: [ val(meta), [ index ] ]
+    gtf                 // channel: [ val(meta), [ gtf ] ]
+    star_ignore_sjdbgtf // boolean: when using pre-built STAR indices do not re-extract and use splice junctions from the GTF file 
+    seq_platform        // string : sequencing platform
+    seq_center          // string : sequencing center
+    is_aws_igenome      // boolean: whether the genome files are from AWS iGenomes
+    fasta               // channel: /path/to/fasta
+

Luckily, if a plain value rather than a channel is passed to a process it is automatically converted to a channel. Since reads can have a multiplicity larger than one (one usually employs data pipelines because of their ability to process multiple samples in parallel), also the plain values are duplicated so all these inputs end up being channels with the same amount of items or events in them.

+

A similar issue relates to the index or genome reference: the pipeline allows the user to specify a genome reference (params.star_index) to be used for all samples. Also here, Nextflow will notice that multiple items in the reads channel need to be combined with 1 item in the index channel and will therefore automatically duplicate the index channel item as many times as necessary.

+

That’s a lot of magic going one, which in itself is not an issue. It becomes an issue, for instance, if we consider for instance that different samples (reads) would require different genome references (index).

+
+
+

Pain points

+
+

Per-sample settings

+

As illustrated above, a per-sample genome reference would not be possible in the way the nf-core/rnaseq pipeline is currently implemented. In fact, it would involve a lot of extra code to make it possible in the way the channels are used.

+

Let us create a toy example to illustrate this conceptually:

+

We start from a channel with 3 items: 1, 2 and 3. We create a second channel where these values are multiplied by 10 (making use of some of the Nextflow channel magic described earlier) and add both channels.

+

Think about what you would expect to come out and then verify the result below.

+
process add {
+  input:
+    val(input1)
+    val(input2)
+  output:
+    val(output)
+  exec:
+    output = input1 + input2
+}
+ 
+process times {
+  input:
+    val(input1)
+    val(input2)
+  output:
+    val(output)
+  exec:
+    output = input1 * input2
+}
+
+workflow {
+  ch1 = Channel.from( [ 1,  2,  3 ] )
+  ch2 = times(ch1, 10)
+
+  add(ch1, ch2) | view
+}
+
+ +Output + +
+
nextflow run conventional.nf -ansi-log false
+
+
N E X T F L O W  ~  version 23.04.1
+Launching `conventional.nf` [sick_allen] DSL2 - revision: 4111eb632c
+[43/7890cb] Submitted process > times (3)
+[ad/75b82a] Submitted process > times (1)
+[25/57a1ad] Submitted process > times (2)
+[57/29ee3d] Submitted process > add (1)
+[80/9bc295] Submitted process > add (2)
+31
+[bf/9f4234] Submitted process > add (3)
+12
+23
+
+
+
+

This document is auto-generated and may as a result (once in 3 times) return three numbers 11, 22 and 33. But it may as well return 21, 32 and 13. The reason is simple: channels are asynchronous by design and order is therefore not guaranteed.

+

This has huge consequences for keeping track of the flow of data through the pipeline. As a result, one will often see channels contain not only data but also an identifier (ID) in the form of a tuple: [<ID>, <data> ].

+
process add {
+  input:
+    tuple val(id), val(input1), val(input2)
+  output:
+    tuple val(id), val(output)
+  exec:
+    output = input1 + input2
+}
+ 
+process times {
+  input:
+    tuple val(id), val(input)
+  output:
+    tuple val(id), val(output)
+  exec:
+    output = input * 10
+}
+
+workflow {
+  ch1 = Channel.from( [ [ "a", 1], [ "b", 2], [ "c", 3] ] )
+  ch2 = times(ch1)
+
+  ch1
+    | join(ch2)
+    | add
+    | view
+
+}
+

When we run this script, we get the following result:

+
+ +Output + +
+
nextflow run id.nf -ansi-log false
+
+
N E X T F L O W  ~  version 23.04.1
+Launching `id.nf` [trusting_hodgkin] DSL2 - revision: 6939fc5e2e
+[7b/11fa78] Submitted process > times (2)
+[f3/9c6088] Submitted process > times (1)
+[bf/68422d] Submitted process > times (3)
+[e1/16d985] Submitted process > add (1)
+[57/cef4c8] Submitted process > add (2)
+[31/4c821e] Submitted process > add (3)
+[b, 22]
+[a, 11]
+[c, 33]
+
+
+
+

This version does exactly what we want it to do, but please notice that both the API for times as well as add have changed! We can not simply keep juggling with channels if we expect them to be aligned at some point.

+

If we apply this to the Nextflow samples from the nf-core pipelines discussed earlier, we must conclude that only by add an ID consistently will we be able to make sure that we deal with the proper content of the channels.

+

Please note in our latest version that having both inputs for the add step in one channel event makes life much easier: we are sure both values correspond to the same ‘sample’ (i.e. have the same ID).

+
+
+
+ +
+
+Important +
+
+
+

We need to pass an ID with the channel and thus at least have a tuple [ id, <data> ].

+
+
+
+
+

Runtime arguments

+

Dealing with runtime arguments is an extension of the pre-sample issue discussed above: In our experience it occurs regularly that an argument of a step in the pipeline (say the cluster size for a filter) depends on:

+
    +
  • user input, similarly to the genome reference above but then dependent on the sample,
  • +
  • an earlier step in the pipeline that for instance has performed clustering.
  • +
+

To make things worse, maybe the cluster size has a default value an the user can override it but does not necessarily have to.

+

There are in fact three difficulties here:

+
    +
  1. Storing the output of an ealier step so it can be picked up later
  2. +
  3. Connecting the proper argument to the correct sample
  4. +
  5. Making sure this argument is used for the proper step in the pipeline
  6. +
+

As argued above, doing (2) is nearly impossible in vanilla Nextflow and (1) is hard. The example of STAR alignment illustrates how (3) is performed: the ‘argument’ is added as an additional input (channel) to the step in the pipeline.

+

The following

+
process add {
+  input:
+    // This time, input is a hashmap containing .left and .right
+    tuple val(id), val(input)
+  output:
+    tuple val(id), val(output)
+  exec:
+    output = input.left + input.right
+}
+ 
+process times {
+  input:
+    // This time, input is a hashmap containing .left and .right
+    tuple val(id), val(input)
+  output:
+    tuple val(id), val(output)
+  exec:
+    output = input.left * input.right
+}
+
+workflow {
+  ch1 =
+    Channel.from( [ [ "a", 1], [ "b", 2], [ "c", 3] ] )
+  ch2 =
+    ch1
+      | map{ id, value -> [ id, [ left: value, right: params.multiplier ] ] }
+      | times
+
+  ch1
+    | map{ id, value -> [ id, [ left: value ] ] }
+    | join( ch2 | map{ id, value -> [ id, [ right: value ] ] } )
+    | map{ id, left, right -> [ id, left + right ] }
+    | add
+    | view
+
+}
+

Please note that we add map operator to both channels in order to turn both input channels into a channel that contains either the left or the right key for them to be added in one more map operation using the left + right statement2.

+

Also the times step is now extended to take into account input from the user at runtime as well. Remark that this is now very easily done.

+

When we run this script

+
nextflow run hash.nf --multiplier 20
+

we get the following result:

+
+ +Output + +
+
nextflow run hash.nf -ansi-log false --multiplier 20
+
+
N E X T F L O W  ~  version 23.04.1
+Launching `hash.nf` [agitated_kare] DSL2 - revision: 15cf29e2fe
+[84/5b3f23] Submitted process > times (3)
+[9d/3c0fe0] Submitted process > times (2)
+[f6/d57e5b] Submitted process > times (1)
+[71/552c1e] Submitted process > add (1)
+[e4/7413d7] Submitted process > add (2)
+[26/55caab] Submitted process > add (3)
+[c, 63]
+[b, 42]
+[a, 21]
+
+
+
+

The second element of the tuple we refer to as the state. In general, it contains pointers to data, data files, arguments but it may also contains outputs from earlier steps or transcript information, etc.

+
+
+
+ +
+
+Important +
+
+
+

The second element of the tuple passed through the channel is called the state and contains all information we need or want to keep connected to the sample this tuple points to.

+
+
+

Since the state is part of the tuple, it is uniquely connected to the sample ID. In order to be able to pass the output from an earlier step as an argument to a later step, the output has to be a hashmap as well. The following update to the earlier script illustrates this:

+
process add {
+  input:
+    // This time, input is a hashmap containing .left and .right
+    tuple val(id), val(input)
+  output:
+    tuple val(id), val(output)
+  exec:
+    output = [ result: input.left + input.right, left: input.left, right: input.right ]
+}
+ 
+process times {
+  input:
+    // This time, input is a hashmap containing .left and .right
+    tuple val(id), val(input)
+  output:
+    tuple val(id), val(output)
+  exec:
+    output = [ result: input.left * input.right, left: input.left, right: input.right ]
+}
+
+workflow {
+  ch1 =
+    Channel.from( [ [ "a", 1], [ "b", 2], [ "c", 3] ] )
+  ch2 =
+    ch1
+      | map{ id, value -> [ id, [ left: value, right: params.multiplier ] ] }
+      | times
+
+  ch1
+    | map{ id, value -> [ id, [ left: value ] ] }
+    | join( ch2 | map{ id, times_output -> [ id, [ right: times_output.result ] ] } )
+    | map{ id, left_map, right_map -> [ id, left_map + right_map ] }
+    | add
+    | view
+
+}
+

This result in:

+
+ +Output + +
+
nextflow run hash-output.nf -ansi-log false --multiplier 20
+
+
N E X T F L O W  ~  version 23.04.1
+Launching `hash-output.nf` [loving_spence] DSL2 - revision: 43066cbd22
+[ba/dc49ef] Submitted process > times (2)
+[e3/00f148] Submitted process > times (3)
+[79/bccd6f] Submitted process > times (1)
+[38/105602] Submitted process > add (1)
+[e4/a8422e] Submitted process > add (2)
+[4a/54d30f] Submitted process > add (3)
+[b, [result:42, left:2, right:40]]
+[c, [result:63, left:3, right:60]]
+[a, [result:21, left:1, right:20]]
+
+
+
+
+
+
+

Consequences

+

The consequence of the above two major challenges when using vanilla Nextflow and their ideal solution is twofold, as illustated by the last example:

+
    +
  1. One has to write a lot of map operations to tie together every step, especially using hashmaps for the output as well may make the pipeline code hard to reason about.
  2. +
  3. The steps (process definitions) need to be aware of what can be expected to come in and what they should write out. Ideally, though, those should be simple wrappers for existing scripts that have been implemented earlier.
  4. +
+

For instance, imagine doing the above in R or Python, one would have to serialize the incoming hashmap into something readable in the script. That is probably beyond the scope of most researchers that deal with bioinformatics pipelines.

+
+
+

Catch-22

+

In a sense, given the above, we find ourselves in a catch-22. Either we use vanilla Nextflow and are stuck in an environment that allows for a lot of flexibility, just not enough for slightly more complex use-cases. Or we have to start adding a lot of extra code, both in the pipeline script itself as well as all individual components3.

+
+
+

Viash to the rescue

+

The challenges that remain when passing tuples of the form [ id, state ] through the channels in a pipeline can be resolved by adding some boilerplate to the individual steps in the pipeline. But of course, we don’t want to do that manually. Rather, we need to automate this so that it becomes testable and fault-tolerant.

+

That’s basically what Viash can do when building for the platform: nextflow4.

+
+
+
+

VDSL3 module interface

+

VDSL3 modules are actually workflows which take one channel and emit one channel. It expects the channel events to be tuples containing an ‘id’ and a ‘state’:

+
[ id, state ]
+

where id is a unique String and state is a Map[String, Object]. The resulting channel then consists of tuples [id, new_state].

+

Example:

+
workflow {
+  Channel.fromList([
+    ["myid", [input: file("in.txt")]]
+  ])
+    | mymodule
+}
+
+
+
+ +
+
+Note +
+
+
+

If the input tuple has more than two elements, the elements after the second element are passed through to the output tuple. That is, an input tuple [id, input, ...] will result in a tuple [id, output, ...] after running the module. For example, an input tuple ["foo", [input: file("in.txt")], "bar"] will result in an output tuple ["foo", [output: file("out.txt")], "bar"].

+
+
+
+
+

Customizing VDSL3 modules on the fly

+

Usually, Nextflow processes are quite static objects. For example, changing its directives can be tricky. Per-sample settings are practically impossible to achieve with vanilla Nextflow.

+

The run() function is a unique feature for every VDSL3 module which allows dynamically altering the behaviour of a module from within the pipeline. For example, we use it to set the publishDir directive to "output/" so the output of that step in the pipeline will be stored as output.

+

See the reference documentation for a complete list of arguments of .run().

+ + +
+ + +

Footnotes

+ +
    +
  1. Having said that, NextFlow allows one to mix functional and imperative programming to the point that a developer is able to shoot oneselve in the foot.↩︎

  2. +
  3. In principle, we could return a similar hashmap from every step as well and even include the original input or logging information along with it!↩︎

  4. +
  5. In a sense, this is already the case. When taking a look at a typical process definition in the [nv-core/rnaseq] repository, a lot of boilerplate code has (manually) been added to make things work.↩︎

  6. +
  7. Other build platforms are available, as illustrated elsehwere in these pages.↩︎

  8. +
+
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/project/batch-processing.html b/_versioned/0_8_5/guide/project/batch-processing.html new file mode 100644 index 00000000..5a9115f2 --- /dev/null +++ b/_versioned/0_8_5/guide/project/batch-processing.html @@ -0,0 +1,1523 @@ + + + + + + + + + +Viash - Batch processing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Batch processing

+
+ + + +
+ + + + +
+ + + +
+ + +

Within this project it’s possible to do all of the same things mentioned in the “Component” guide such as build a target executable with viash build and test a component with viash test. However, doing this for all components in the repository can bet quite tedious.

+

Luckily, Viash provides a set of commands for building, testing or inspecting all Viash components in the current namespace (ns).

+
+

Build all components

+

You can generate your first full development build using the viash ns build command.

+
viash ns build --setup cachedbuild
+
+ +Output + +
+
+
temporaryFolder: /tmp/viash_hub_repo4827755326463865623 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+temporaryFolder: /tmp/viash_hub_repo10922339893564640824 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+Exporting take_column (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/take_column
+[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/take_column:dev' with Dockerfile
+Exporting take_column (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/take_column
+Exporting workflow (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/workflow
+Exporting combine_columns (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/combine_columns
+[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/combine_columns:dev' with Dockerfile
+Exporting combine_columns (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/combine_columns
+Exporting remove_comments (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/remove_comments
+[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/remove_comments:dev' with Dockerfile
+Exporting remove_comments (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/remove_comments
+All 7 configs built successfully
+
+
+
+

Here are some useful optional arguments:

+
    +
  • --parallel: Run multiple builds in parallel.
  • +
  • --setup cachedbuild: Build Docker images using the cachedbuild strategy.
  • +
  • --query demo: Only select components that have ‘demo’ in the namespace or name.
  • +
+
+
+

Test all components

+

You can run all of the component tests using the viash ns test command.

+
viash ns test
+
+ +Output + +
+
+
temporaryFolder: /tmp/viash_hub_repo7423845407513460024 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+temporaryFolder: /tmp/viash_hub_repo3888698291677718785 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+The working directory for the namespace tests is /tmp/viash_ns_test3142583467010306262
+           namespace        functionality             platform            test_name exit_code duration               result
+            template          take_column               docker                start                                        
+            template          take_column               docker     build_executable         0        1              SUCCESS
+            template          take_column               docker                tests        -1        0              MISSING
+no tests found
+====================================================================
+            template      combine_columns               docker                start                                        
+            template      combine_columns               docker     build_executable         0        1              SUCCESS
+            template      combine_columns               docker                tests        -1        0              MISSING
+no tests found
+====================================================================
+            template      remove_comments               docker                start                                        
+            template      remove_comments               docker     build_executable         0        1              SUCCESS
+            template      remove_comments               docker              test.sh         0        1              SUCCESS
+Not all configs built and tested successfully
+  2/6 tests missing
+  4/6 configs built and tested successfully
+
+
+
+
+
+

Listing components

+

You can run list all components using the viash ns list command.

+
viash ns list
+
+ +Output + +
+
+
temporaryFolder: /tmp/viash_hub_repo15402091541015675898 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+temporaryFolder: /tmp/viash_hub_repo13601619796227807657 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+- functionality:
+    name: "take_column"
+    namespace: "template"
+    version: "dev"
+    arguments:
+    - type: "file"
+      name: "--input"
+      alternatives:
+      - "-i"
+      must_exist: true
+      create_parent: true
+      required: true
+      direction: "input"
+      multiple: false
+      multiple_sep: ":"
+      dest: "par"
+    - type: "file"
+      name: "--output"
+      alternatives:
+      - "-o"
+      must_exist: true
+      create_parent: true
+      required: true
+      direction: "output"
+      multiple: false
+      multiple_sep: ":"
+      dest: "par"
+    - type: "integer"
+      name: "--column"
+      default:
+      - 2
+      required: false
+      direction: "input"
+      multiple: false
+      multiple_sep: ":"
+      dest: "par"
+    resources:
+    - type: "python_script"
+      path: "script.py"
+      is_executable: true
+      parent: "file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/"
+    status: "enabled"
+    set_wd_to_resources_dir: false
+  platforms:
+  - type: "docker"
+    id: "docker"
+    image: "python:3.10-slim"
+    target_organization: "viash-io/viash_project_template"
+    target_registry: "ghcr.io"
+    namespace_separator: "/"
+    resolve_volume: "Automatic"
+    chown: true
+    setup_strategy: "ifneedbepullelsecachedbuild"
+    target_image_source: "https://github.com/viash-io/viash_project_template"
+    setup:
+    - type: "python"
+      user: false
+      packages:
+      - "pandas"
+      upgrade: true
+    entrypoint: []
+  - type: "nextflow"
+    id: "nextflow"
+    directives:
+      tag: "$id"
+    auto:
+      simplifyInput: true
+      simplifyOutput: false
+      transcript: false
+      publish: false
+    config:
+      labels:
+        mem1gb: "memory = 1.GB"
+        mem2gb: "memory = 2.GB"
+        mem4gb: "memory = 4.GB"
+        mem8gb: "memory = 8.GB"
+        mem16gb: "memory = 16.GB"
+        mem32gb: "memory = 32.GB"
+        mem64gb: "memory = 64.GB"
+        mem128gb: "memory = 128.GB"
+        mem256gb: "memory = 256.GB"
+        mem512gb: "memory = 512.GB"
+        mem1tb: "memory = 1.TB"
+        mem2tb: "memory = 2.TB"
+        mem4tb: "memory = 4.TB"
+        mem8tb: "memory = 8.TB"
+        mem16tb: "memory = 16.TB"
+        mem32tb: "memory = 32.TB"
+        mem64tb: "memory = 64.TB"
+        mem128tb: "memory = 128.TB"
+        mem256tb: "memory = 256.TB"
+        mem512tb: "memory = 512.TB"
+        cpu1: "cpus = 1"
+        cpu2: "cpus = 2"
+        cpu5: "cpus = 5"
+        cpu10: "cpus = 10"
+        cpu20: "cpus = 20"
+        cpu50: "cpus = 50"
+        cpu100: "cpus = 100"
+        cpu200: "cpus = 200"
+        cpu500: "cpus = 500"
+        cpu1000: "cpus = 1000"
+    debug: false
+    container: "docker"
+  info:
+    config: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml"
+    viash_version: "0.8.3"
+    git_commit: "d40c842c83ddc159651739dead0fd67fbd6be7d6"
+    git_remote: "https://github.com/viash-io/viash_project_template.git"
+- functionality:
+    name: "workflow"
+    namespace: "template"
+    version: "dev"
+    arguments:
+    - type: "file"
+      name: "--input"
+      alternatives:
+      - "-i"
+      description: "Input TSV files"
+      example:
+      - "file1.tar.gz;file2.tar.gz"
+      must_exist: true
+      create_parent: true
+      required: true
+      direction: "input"
+      multiple: true
+      multiple_sep: ";"
+      dest: "par"
+    - type: "file"
+      name: "--output"
+      alternatives:
+      - "-o"
+      description: "Output TSV file"
+      example:
+      - "output.tsv"
+      must_exist: true
+      create_parent: true
+      required: true
+      direction: "output"
+      multiple: false
+      multiple_sep: ":"
+      dest: "par"
+    resources:
+    - type: "nextflow_script"
+      path: "main.nf"
+      is_executable: true
+      parent: "file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/workflow/"
+      entrypoint: "run_wf"
+    description: "An example pipeline and project template.\n"
+    status: "enabled"
+    dependencies:
+    - name: "template/combine_columns"
+      repository:
+        type: "local"
+        localPath: ""
+      foundConfigPath: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml"
+      configInfo:
+        functionalityName: "combine_columns"
+        git_tag: ""
+        git_remote: "https://github.com/viash-io/viash_project_template.git"
+        viash_version: "0.8.3"
+        config: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml"
+        functionalityNamespace: "template"
+        output: ""
+        platform: ""
+        git_commit: "d40c842c83ddc159651739dead0fd67fbd6be7d6"
+        executable: ""
+    - name: "template/remove_comments"
+      repository:
+        type: "local"
+        localPath: ""
+      foundConfigPath: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml"
+      configInfo:
+        functionalityName: "remove_comments"
+        git_tag: ""
+        git_remote: "https://github.com/viash-io/viash_project_template.git"
+        viash_version: "0.8.3"
+        config: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml"
+        functionalityNamespace: "template"
+        output: ""
+        platform: ""
+        git_commit: "d40c842c83ddc159651739dead0fd67fbd6be7d6"
+        executable: ""
+    - name: "template/take_column"
+      repository:
+        type: "local"
+        localPath: ""
+      foundConfigPath: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml"
+      configInfo:
+        functionalityName: "take_column"
+        git_tag: ""
+        git_remote: "https://github.com/viash-io/viash_project_template.git"
+        viash_version: "0.8.3"
+        config: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml"
+        functionalityNamespace: "template"
+        output: ""
+        platform: ""
+        git_commit: "d40c842c83ddc159651739dead0fd67fbd6be7d6"
+        executable: ""
+    - name: "split/vsh_flatten"
+      repository:
+        type: "vsh"
+        name: ""
+        repo: "data-intuitive/vsh-pipeline-operators"
+        tag: "v0.2.0"
+        localPath: "/tmp/viash_hub_repo15402091541015675898"
+      foundConfigPath: "/tmp/viash_hub_repo15402091541015675898/target/docker/split/vsh_flatten/.config.vsh.yaml"
+      configInfo:
+        functionalityName: "vsh_flatten"
+        git_remote: "git@viash-hub.com:data-intuitive/vsh-pipeline-operators.git"
+        viash_version: "0.8.3"
+        config: "/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/src/split/vsh_flatten/config.vsh.yaml"
+        functionalityNamespace: "split"
+        output: "/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/target/docker/split/vsh_flatten"
+        platform: "docker"
+        git_commit: "05a5bfa4eaa2c04ba473671e4d30c6c18aceec6e"
+        executable: "/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/target/docker/split/vsh_flatten/main.nf"
+    - name: "join/vsh_toList"
+      repository:
+        type: "vsh"
+        name: ""
+        repo: "data-intuitive/vsh-pipeline-operators"
+        tag: "v0.2.0"
+        localPath: "/tmp/viash_hub_repo13601619796227807657"
+      foundConfigPath: "/tmp/viash_hub_repo13601619796227807657/target/nextflow/join/vsh_toList/.config.vsh.yaml"
+      configInfo:
+        functionalityName: "vsh_toList"
+        git_remote: "git@viash-hub.com:data-intuitive/vsh-pipeline-operators.git"
+        viash_version: "0.8.3"
+        config: "/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/src/join/vsh_toList/config.vsh.yaml"
+        functionalityNamespace: "join"
+        output: "/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/target/nextflow/join/vsh_toList"
+        platform: "nextflow"
+        git_commit: "05a5bfa4eaa2c04ba473671e4d30c6c18aceec6e"
+        executable: "/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/target/nextflow/join/vsh_toList/main.nf"
+    repositories:
+    - type: "local"
+      name: "local"
+      localPath: ""
+    - type: "vsh"
+      name: "vsh-pipeline-operators"
+      repo: "data-intuitive/vsh-pipeline-operators"
+      tag: "v0.2.0"
+      localPath: ""
+    set_wd_to_resources_dir: false
+  platforms:
+  - type: "nextflow"
+    id: "nextflow"
+    directives:
+      tag: "$id"
+    auto:
+      simplifyInput: true
+      simplifyOutput: false
+      transcript: false
+      publish: false
+    config:
+      labels:
+        mem1gb: "memory = 1.GB"
+        mem2gb: "memory = 2.GB"
+        mem4gb: "memory = 4.GB"
+        mem8gb: "memory = 8.GB"
+        mem16gb: "memory = 16.GB"
+        mem32gb: "memory = 32.GB"
+        mem64gb: "memory = 64.GB"
+        mem128gb: "memory = 128.GB"
+        mem256gb: "memory = 256.GB"
+        mem512gb: "memory = 512.GB"
+        mem1tb: "memory = 1.TB"
+        mem2tb: "memory = 2.TB"
+        mem4tb: "memory = 4.TB"
+        mem8tb: "memory = 8.TB"
+        mem16tb: "memory = 16.TB"
+        mem32tb: "memory = 32.TB"
+        mem64tb: "memory = 64.TB"
+        mem128tb: "memory = 128.TB"
+        mem256tb: "memory = 256.TB"
+        mem512tb: "memory = 512.TB"
+        cpu1: "cpus = 1"
+        cpu2: "cpus = 2"
+        cpu5: "cpus = 5"
+        cpu10: "cpus = 10"
+        cpu20: "cpus = 20"
+        cpu50: "cpus = 50"
+        cpu100: "cpus = 100"
+        cpu200: "cpus = 200"
+        cpu500: "cpus = 500"
+        cpu1000: "cpus = 1000"
+    debug: false
+    container: "docker"
+  info:
+    config: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/workflow/config.vsh.yaml"
+    viash_version: "0.8.3"
+    git_commit: "d40c842c83ddc159651739dead0fd67fbd6be7d6"
+    git_remote: "https://github.com/viash-io/viash_project_template.git"
+- functionality:
+    name: "combine_columns"
+    namespace: "template"
+    version: "dev"
+    arguments:
+    - type: "file"
+      name: "--input"
+      alternatives:
+      - "-i"
+      must_exist: true
+      create_parent: true
+      required: true
+      direction: "input"
+      multiple: true
+      multiple_sep: ":"
+      dest: "par"
+    - type: "file"
+      name: "--output"
+      alternatives:
+      - "-o"
+      must_exist: true
+      create_parent: true
+      required: true
+      direction: "output"
+      multiple: false
+      multiple_sep: ":"
+      dest: "par"
+    resources:
+    - type: "r_script"
+      path: "script.R"
+      is_executable: true
+      parent: "file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/"
+    status: "enabled"
+    set_wd_to_resources_dir: false
+  platforms:
+  - type: "docker"
+    id: "docker"
+    image: "eddelbuettel/r2u:22.04"
+    target_organization: "viash-io/viash_project_template"
+    target_registry: "ghcr.io"
+    namespace_separator: "/"
+    resolve_volume: "Automatic"
+    chown: true
+    setup_strategy: "ifneedbepullelsecachedbuild"
+    target_image_source: "https://github.com/viash-io/viash_project_template"
+    entrypoint: []
+  - type: "nextflow"
+    id: "nextflow"
+    directives:
+      tag: "$id"
+    auto:
+      simplifyInput: true
+      simplifyOutput: false
+      transcript: false
+      publish: false
+    config:
+      labels:
+        mem1gb: "memory = 1.GB"
+        mem2gb: "memory = 2.GB"
+        mem4gb: "memory = 4.GB"
+        mem8gb: "memory = 8.GB"
+        mem16gb: "memory = 16.GB"
+        mem32gb: "memory = 32.GB"
+        mem64gb: "memory = 64.GB"
+        mem128gb: "memory = 128.GB"
+        mem256gb: "memory = 256.GB"
+        mem512gb: "memory = 512.GB"
+        mem1tb: "memory = 1.TB"
+        mem2tb: "memory = 2.TB"
+        mem4tb: "memory = 4.TB"
+        mem8tb: "memory = 8.TB"
+        mem16tb: "memory = 16.TB"
+        mem32tb: "memory = 32.TB"
+        mem64tb: "memory = 64.TB"
+        mem128tb: "memory = 128.TB"
+        mem256tb: "memory = 256.TB"
+        mem512tb: "memory = 512.TB"
+        cpu1: "cpus = 1"
+        cpu2: "cpus = 2"
+        cpu5: "cpus = 5"
+        cpu10: "cpus = 10"
+        cpu20: "cpus = 20"
+        cpu50: "cpus = 50"
+        cpu100: "cpus = 100"
+        cpu200: "cpus = 200"
+        cpu500: "cpus = 500"
+        cpu1000: "cpus = 1000"
+    debug: false
+    container: "docker"
+  info:
+    config: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml"
+    viash_version: "0.8.3"
+    git_commit: "d40c842c83ddc159651739dead0fd67fbd6be7d6"
+    git_remote: "https://github.com/viash-io/viash_project_template.git"
+- functionality:
+    name: "remove_comments"
+    namespace: "template"
+    version: "dev"
+    arguments:
+    - type: "file"
+      name: "--input"
+      alternatives:
+      - "-i"
+      example:
+      - "file.tsv"
+      must_exist: true
+      create_parent: true
+      required: true
+      direction: "input"
+      multiple: false
+      multiple_sep: ":"
+      dest: "par"
+    - type: "file"
+      name: "--output"
+      alternatives:
+      - "-o"
+      example:
+      - "file.tsv"
+      must_exist: true
+      create_parent: true
+      required: true
+      direction: "output"
+      multiple: false
+      multiple_sep: ":"
+      dest: "par"
+    resources:
+    - type: "bash_script"
+      path: "script.sh"
+      is_executable: true
+      parent: "file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/"
+    test_resources:
+    - type: "bash_script"
+      path: "test.sh"
+      is_executable: true
+      parent: "file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/"
+    status: "enabled"
+    set_wd_to_resources_dir: false
+  platforms:
+  - type: "docker"
+    id: "docker"
+    image: "ubuntu:20.04"
+    target_organization: "viash-io/viash_project_template"
+    target_registry: "ghcr.io"
+    namespace_separator: "/"
+    resolve_volume: "Automatic"
+    chown: true
+    setup_strategy: "ifneedbepullelsecachedbuild"
+    target_image_source: "https://github.com/viash-io/viash_project_template"
+    entrypoint: []
+  - type: "nextflow"
+    id: "nextflow"
+    directives:
+      tag: "$id"
+    auto:
+      simplifyInput: true
+      simplifyOutput: false
+      transcript: false
+      publish: false
+    config:
+      labels:
+        mem1gb: "memory = 1.GB"
+        mem2gb: "memory = 2.GB"
+        mem4gb: "memory = 4.GB"
+        mem8gb: "memory = 8.GB"
+        mem16gb: "memory = 16.GB"
+        mem32gb: "memory = 32.GB"
+        mem64gb: "memory = 64.GB"
+        mem128gb: "memory = 128.GB"
+        mem256gb: "memory = 256.GB"
+        mem512gb: "memory = 512.GB"
+        mem1tb: "memory = 1.TB"
+        mem2tb: "memory = 2.TB"
+        mem4tb: "memory = 4.TB"
+        mem8tb: "memory = 8.TB"
+        mem16tb: "memory = 16.TB"
+        mem32tb: "memory = 32.TB"
+        mem64tb: "memory = 64.TB"
+        mem128tb: "memory = 128.TB"
+        mem256tb: "memory = 256.TB"
+        mem512tb: "memory = 512.TB"
+        cpu1: "cpus = 1"
+        cpu2: "cpus = 2"
+        cpu5: "cpus = 5"
+        cpu10: "cpus = 10"
+        cpu20: "cpus = 20"
+        cpu50: "cpus = 50"
+        cpu100: "cpus = 100"
+        cpu200: "cpus = 200"
+        cpu500: "cpus = 500"
+        cpu1000: "cpus = 1000"
+    debug: false
+    container: "docker"
+  info:
+    config: "/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml"
+    viash_version: "0.8.3"
+    git_commit: "d40c842c83ddc159651739dead0fd67fbd6be7d6"
+    git_remote: "https://github.com/viash-io/viash_project_template.git"
+
+All 4 configs parsed successfully
+
+
+
+
+
+

Custom batch processing

+

The viash ns exec command can be used to run a command on every component.

+
viash ns exec "echo Hello {}"
+
+ +Output + +
+
+
+ echo Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml
+  Exit code: 0
+
+  Output:
+Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml
+
++ echo Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/workflow/config.vsh.yaml
+  Exit code: 0
+
+  Output:
+Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/workflow/config.vsh.yaml
+
++ echo Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml
+  Exit code: 0
+
+  Output:
+Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml
+
++ echo Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml
+  Exit code: 0
+
+  Output:
+Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml
+
+
+
+
+
+

Tips

+
+

Parallel builds

+

Some commands shown above can be optimized by adding the --parallel option:

+
    +
  • viash ns build --parallel will build in parallel
  • +
  • viash ns test --parallel will test in parallel
  • +
+

For example:

+
viash ns test --parallel
+
+ +Output + +
+
+
temporaryFolder: /tmp/viash_hub_repo8088522104532127327 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+temporaryFolder: /tmp/viash_hub_repo1564009392744555776 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+The working directory for the namespace tests is /tmp/viash_ns_test1176799358272149172
+           namespace        functionality             platform            test_name exit_code duration               result
+            template      remove_comments               docker                start                                        
+            template      combine_columns               docker                start                                        
+            template          take_column               docker                start                                        
+            template      combine_columns               docker     build_executable         0        1              SUCCESS
+            template      combine_columns               docker                tests        -1        0              MISSING
+no tests found
+====================================================================
+            template          take_column               docker     build_executable         0        2              SUCCESS
+            template          take_column               docker                tests        -1        0              MISSING
+no tests found
+====================================================================
+            template      remove_comments               docker     build_executable         0        1              SUCCESS
+            template      remove_comments               docker              test.sh         0        1              SUCCESS
+Not all configs built and tested successfully
+  2/6 tests missing
+  4/6 configs built and tested successfully
+
+
+
+
+
+

Subset to components or namespaces

+

In a development context, one often needs to rebuild one or a few components rather than the full repository. For this situation, viash ns has the option to specify query arguments: --query, query_name and query_namespace. We refer to the reference documentation for details and illustrate the use using an example:

+
viash ns build --query "^.*columns$"
+
+ +Output + +
+
+
Exporting combine_columns (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/combine_columns
+Exporting combine_columns (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/combine_columns
+Not all configs built successfully
+  3 configs were disabled
+  2/2 configs built successfully
+
+
+
+

As shown here, the query arguments accept regular expressions.

+ + +
+
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/project/ide-setup.html b/_versioned/0_8_5/guide/project/ide-setup.html new file mode 100644 index 00000000..b90b4161 --- /dev/null +++ b/_versioned/0_8_5/guide/project/ide-setup.html @@ -0,0 +1,890 @@ + + + + + + + + + +Viash - IDE setup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

IDE setup

+
+ + + +
+ + + + +
+ + + +
+ + +

Since a Viash components consists of a script in one of the supported languages and a YAML file, you can use any editor of your choosing to create these files.

+

When building a Nextflow pipeline built from Viash components written in Bash, R, and Python, we highly recommend using Visual Studio Code.

+
+

What is Visual Studio Code?

+

Visual Studio Code is an open source code-editor developed by Microsoft for Windows, Linux and macOS. As of 2021, it’s the #1 most popular developer environment tool, and for good reason. It’s lightweight, supports many languages and has a ton of features. Some of its most prominent features include:

+
    +
  • Syntax highlighting
  • +
  • Intelligent code completion
  • +
  • Code refactoring
  • +
  • Embedded Git
  • +
  • Snippets
  • +
  • Extensions and themes
  • +
+
+
+

Installation

+

VS Code can be downloaded from this page:

+

https://code.visualstudio.com/Download

+

There are installers available for all major operating systems, so simply download and install the version for your system.

+
+ +
+

Markdown

+

If you’re planning on writing documentation for components you write, can supplement the description and the CLI with a Markdown document. VS Code has Markdown support built-in, but the extension below makes writing markdown documents even easier!

+
    +
  • Markdown All in One: Some of the features include keyboard shortcuts for text formatting, list editing, GitHub flavored Markdown and auto completion for Markdown.
  • +
+
+
+

Bash

+
    +
  • shell-format: By installing this extension, you get syntax highlighting and code formatting for shell scripts.
  • +
+
+
+

C#

+
    +
  • C#: Adds syntax highlighting, IntelliSense and debugging capabilities to VS Code for C#.
  • +
+
+
+

Python

+

Python: Adds syntax highlighting, IntelliSense, debugging and code formatting. This extension also installs the PyLance language server and Jupyter for Jupyter Notebook support.

+
+
+

Javascript

+

Node.js Extension Pack: VS Code actually already has a lot of Node.js features out of the box, but this extension pack adds adds even more. The extensions adds JS code hints, module search, code snippets and IntelliSense for NPM and paths just to name a few features.

+
+
+

R

+

R: This extension adds syntax highlighting, code analysis, keyboard shortcuts, package management and a lot more for the R language.

+
+

Note: This extension requires you to install R and the languageserver CRAN package which depends on libxml2-dev, libcurl4-openssl-dev and libssl-dev before the extension will work.

+
+
+
+

Scala

+ +
+
+

WSL2

+

If you’re using WSL2, you’ll probably want to install the Remote - WSL extension. This extension lets you use your Windows version of VS Code in WSL2, as if it was running native.
+The commands, extensions and the terminal will run on WSL, which makes for an ideal hybrid environment.

+

Once installed, you can connect to WSL2 by clicking the green remote button at the bottom left and choosing New WSL Window in the list that pops up. Alternatively, you can use the command code FOLDER/FILE (e.g. code .) on the WSL2 side to open that file or folder in a remote VS Code session.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/project/index.html b/_versioned/0_8_5/guide/project/index.html new file mode 100644 index 00000000..9227a0ee --- /dev/null +++ b/_versioned/0_8_5/guide/project/index.html @@ -0,0 +1,781 @@ + + + + + + + + + +Viash - Project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Project

+
+ + + +
+ + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/project/project-config.html b/_versioned/0_8_5/guide/project/project-config.html new file mode 100644 index 00000000..43576cb5 --- /dev/null +++ b/_versioned/0_8_5/guide/project/project-config.html @@ -0,0 +1,879 @@ + + + + + + + + + +Viash - Project config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Project config

+
+ + + +
+ + + + +
+ + + +
+ + +

A _viash.yaml file in the root of the project repository is called a Viash project config. It allows defining project-wide settings such as the location of the Viash components and which Viash version to use.

+
+

Example project config

+
viash_version: 0.8.3
+
+source: src
+target: target
+
+config_mods: |
+  .functionality.version := 'dev'
+  .platforms[.type == 'docker'].target_registry := 'ghcr.io'
+  .platforms[.type == 'docker'].target_organization := 'viash-io/viash_project_template'
+  .platforms[.type == 'docker'].target_image_source := 'https://github.com/viash-io/viash_project_template'
+  .platforms[.type == 'nextflow'].directives.tag := '$id'
+
+
+

Viash version

+

Pinning the version of Viash used in your project is essential to ensure reproducibility thereof across multiple systems. In doing so, all Viash commands will be run using that version of Viash.

+

Example:

+
+
echo 'viash_version: "0.6.0"' > _viash.yaml
+
+viash --version
+
+
viash 0.6.0 (c) 2020 Data Intuitive
+
+
+
+
+

Source directory

+

Overrides the --src parameter of any viash ns command. This is useful in case the directory containing the Viash component source code is in a directory different from src/.

+
+
+

Destination directory

+

Overrides the --target parameter of any viash ns command. This is useful in case the artifacts generated by Viash should be stored in a directory different from target/.

+
+
+

Advanced configuration

+

Viash allows for rewriting component configuration files using config mods. Config mods allow making changes to the config mods on the fly.

+

The template project contains these default config mods:

+
config_mods: |
+  .functionality.version := 'dev'
+  .platforms[.type == 'docker'].target_registry := 'ghcr.io'
+  .platforms[.type == 'docker'].target_organization := 'viash-io/viash_project_template'
+  .platforms[.type == 'docker'].target_image_source := 'https://github.com/viash-io/viash_project_template'
+  .platforms[.type == 'nextflow'].directives.tag := '$id'
+

This has the following effects:

+
    +
  • Set the version of any components to 'dev'.

  • +
  • Fills the registry, organisation and image sources fields of the Docker platform.

  • +
  • Adds a default directive to the Nextflow platform.

  • +
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/guide/project/structure.html b/_versioned/0_8_5/guide/project/structure.html new file mode 100644 index 00000000..f44c7fd4 --- /dev/null +++ b/_versioned/0_8_5/guide/project/structure.html @@ -0,0 +1,871 @@ + + + + + + + + + +Viash - Structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Structure

+
+ + + +
+ + + + +
+ + + +
+ + +
+

Demo pipeline

+

The project already contains three components which are used to create a Nextflow pipeline with the following topology:

+
+
+
+

+
+
graph LR
+   A(file?.tsv) --> B[/remove_comments/]
+   B --> C[/take_column/]
+   C --> D[/combine_columns/]
+   D --> E(output)
+
+
+

Diagram of the pipeline topology

+
+
+
+
    +
  • remove_comments is a Bash script which removes all lines starting with a # from a file.
  • +
  • take_column is a Python script which extracts one of the columns in a TSV file.
  • +
  • combine_columns is an R script which combines multiple files into a TSV.
  • +
+
+
+

Grouping components in namespaces

+

A namespace is effectively a hierarchical grouping of the components in the src/ directory. Here are some benefits of grouping your components:

+
    +
  • Grouping components in namespaces allows for categorizing components.
  • +
  • Each teams of developers can work on a different set of components in parallel, which improves the separation of concerns.
  • +
  • Generating build targets and unit testing can be done in bulk, with optional filtering by namespace using the viash ns commands.
  • +
+

This guide will cover how to define a namespace and use it with Viash.

+
+
+

Namespace property

+

You can assign a component to a namespace by defining its namespace attribute in the Viash config file:

+
functionality:
+  name: some_component
+  namespace: some_namespace/subnamespace
+...
+

Typically, the Viash config for this component will be located at src/some_namespace/subnamespace/some_component/config.vsh.yaml.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/images/ViashIllustration.svg b/_versioned/0_8_5/images/ViashIllustration.svg new file mode 100644 index 00000000..c3e71c99 --- /dev/null +++ b/_versioned/0_8_5/images/ViashIllustration.svg @@ -0,0 +1,6866 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Viash runtime + + Viash component + + + Script + + + Unit test(s) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Viash config + • Functionality metadata - Component info - Author info - List of arguments - List of resources • Platform-specific metadata - Docker container setup - Nextflow settings + config.vsh.yaml + + Build Nextflowmodule + + Run unittest(s) + + Build Dockercontainer + + + Test results + + + Nextflow module + + + Docker container + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Docker Hub + + + + + + • Supports many scripting languages, including: Bash, Python, R, JavaScript, Scala, C# + • Add one or more unit tests to a component • Unit test can be written in a different language • Unit tests can be shared across components + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nextflow pipeline + + + + + + + + + + + + Create pipelinefrom Nextflowmodules andversioned Dockercontainers + + + + Build standaloneexecutable + + + Executable + + • CLI and --help are generated by Viash • Runs natively or inside Docker container + + + + + Dockerfile isautogeneratedby Viash + Modular scriptis generatedby Viash + A + B + C + + + diff --git a/_versioned/0_8_5/index.css b/_versioned/0_8_5/index.css new file mode 100644 index 00000000..41b1a2e8 --- /dev/null +++ b/_versioned/0_8_5/index.css @@ -0,0 +1,228 @@ +:root { + --hero-bg: #ffffff; + --alt-bg: #f7f9fb; +} + +.content-block { + padding-top: 20px; + padding-bottom: 10px; + margin-left: 30px; + margin-right: 30px; +} + + +@media(min-width: 900px) { +.content-block { + margin-left: 50px; + margin-right: 50px; +} +} + +@media (min-width: 1200px) { +.content-block { + max-width: 1100px; + margin-left: auto; + margin-right: auto; +} +} + +.hero-banner { + position: relative; + background-color: var(--hero-bg); + display: flex; + justify-content: center; +} + +.hero-banner h1 { + color: rgb(153 84 187); + font-size: 2.5rem; +} + + +.hero-banner .hero-image { + position: absolute; + display: none; + height: auto; +} + +@media (min-width: 1000px) { +.hero-banner .hero-image { + display: initial; + width: 270px; +} +} + +@media (min-width: 1200px) { +.hero-banner .hero-image { + width: 340px; +} +} + +@media (min-width: 1400px) { +.hero-banner .hero-image { + width: 440px; +} +} + +.hero-banner .hero-image p { + margin-bottom: 0; +} + +.hero-banner .hero-image-left { + left: 0; + bottom: 0; +} + +.hero-banner .hero-image-right { + right: 0; + bottom: 0; +} + + +.hero-banner .content-block { + max-width: 600px; + z-index: 2; +} + +.hero-banner a { + text-decoration: none; +} + +.hero-banner h3 { + margin-top: 1.3rem; + margin-bottom: 1.3rem; +} + +.hero-banner h4 { + margin-top: 0; +} + +.hero-banner ul { + padding-inline-start: 21px; + font-size: 1.1rem; +} + +.hero-banner ul li { + padding-bottom: 0.4rem; +} + +.hero-buttons a[role="button"] { + margin-right: 17px; + margin-top: 0.6rem; + margin-bottom: 1.6rem; +} + + +.alt-background { + background-color: var(--alt-bg); + border-top: 1px solid #dee2e6; + border-bottom: 1px solid #dee2e6; +} + +.hello-quarto { + padding-bottom: 1rem; +} + +@media (min-width: 600px) { +.hello-quarto-banner { + display: inline-flex; + align-content: center; + justify-content: center; +} + +.hello-quarto-banner h1 { + margin-right: 40px; +} + +.hello-quarto-banner ul { + +} +} + +.hello-quarto-banner .nav-pills .nav-link.active, .nav-pills .show>.nav-link { + border: none; + border-bottom: 2px solid #2780e3 !important; + color: #2780e3; + background-color: transparent; + +} + +.hello-quarto-banner .nav-pills button { + width: 125px; +} + +.hello-quarto .tab-content { + border: none; + padding: 0; + color: rgb(84, 85, 85); +} + +.hello-quarto .tab-content p { + font-size: 1.1em; + margin-bottom: 1.5em; +} + +.hello-quarto div.sourceCode { + background-color: white; + border: 1px solid #dee2e6; +} + +.hello-output { + background-color: white; + border: 1px solid #dee2e6; + max-height: 660px; +} + +.features { + padding-bottom: 2em; +} + +.feature { + margin-top: 20px; +} + +@media (min-width: 800px) { +.features { + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 0 0 0 -30px; + width: calc(100% + 30px); +} +.feature { + width: calc(33% - 30px); + margin: 20px 0 0 30px; +} +} + +.feature h3 { + margin-top: 0; +} + +.feature p:first-of-type { + margin-bottom: 0.2rem; + color: rgb(84, 85, 85); +} + +.get-started { + text-align: center; + padding-bottom: 2rem; +} + +.get-started h3 { + margin-top: 1rem; + margin-bottom: 2rem; +} + +nav.page-navigation { + display: none; +} + +.nav-footer { + border-top: none !important; +} + +.nav-pills .nav-link.active, .nav-pills .show>.nav-link { + color: #fff; + background-color: #ff7518; +} diff --git a/_versioned/0_8_5/index.html b/_versioned/0_8_5/index.html new file mode 100644 index 00000000..36e6afeb --- /dev/null +++ b/_versioned/0_8_5/index.html @@ -0,0 +1,719 @@ + + + + + + + + + +Viash + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/installation/index.html b/_versioned/0_8_5/installation/index.html new file mode 100644 index 00000000..71c53241 --- /dev/null +++ b/_versioned/0_8_5/installation/index.html @@ -0,0 +1,850 @@ + + + + + + + + + +Viash - Installation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/installation/installation.css b/_versioned/0_8_5/installation/installation.css new file mode 100644 index 00000000..960e9a3a --- /dev/null +++ b/_versioned/0_8_5/installation/installation.css @@ -0,0 +1,66 @@ +.step { + padding-top: 20px; + margin-bottom: 10px; + margin-right: 70px; +} +.step h2 { + border-bottom: 0; + margin-bottom: 0; + margin-top: 0; +} +.step h4 { + margin-top: 0; +} + +.step #download-button { + margin-top: 0; + padding-top: 0; +} + +.step .btn-action { + font-size: 1.1em; +} + +.step .btn-action svg { + margin-top: 5px; +} + +.step .table>:not(caption)>*>* { + border-bottom-width: 0; +} + +.tool { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + +} + +.tool a[role="button"] { + width: 100px; + color: rgb(55, 58, 60); + text-align: center; + border: 1px solid rgb(222, 226, 230); + border-radius: 10px; + margin-right: 20px; + margin-bottom: 30px; + margin-top: 10px; + font-size: 0.9em; +} + +.tool .btn-outline-light:hover { + border-color: rgb(80,146,221); + background-color: transparent; +} + +.tool a[role="button"] img { + display: block; + width: 77px; + height: 77px; + margin: auto; + margin-bottom: 5px; +} + + + diff --git a/_versioned/0_8_5/listings.json b/_versioned/0_8_5/listings.json new file mode 100644 index 00000000..2d4f5ad2 --- /dev/null +++ b/_versioned/0_8_5/listings.json @@ -0,0 +1,93 @@ +[ + { + "listing": "/blog/index.html", + "items": [ + "/blog/posts/viash-0.8.5/index.html", + "/blog/posts/viash-0.8.4/index.html", + "/blog/posts/viash-0.8.3/index.html", + "/blog/posts/viash-0.8.2/index.html", + "/blog/posts/viash-0.8.1/index.html", + "/blog/posts/viash-0.8.0/index.html", + "/blog/posts/viash-0.7.5/index.html", + "/blog/posts/viash-0.7.4/index.html", + "/blog/posts/viash-0.7.3/index.html", + "/blog/posts/viash-0.7.2/index.html", + "/blog/posts/viash-0.7.1/index.html", + "/blog/posts/viash-0.7.0/index.html", + "/blog/posts/viash-0.6.7/index.html", + "/blog/posts/viash-0.6.6/index.html", + "/blog/posts/viash-0.6.5/index.html", + "/blog/posts/viash-0.6.4/index.html", + "/blog/posts/viash-0.6.3/index.html", + "/blog/posts/viash-0.6.2/index.html", + "/blog/posts/viash-0.6.1/index.html", + "/blog/posts/viash-0.6.0/index.html", + "/blog/posts/viash-0.5.15/index.html", + "/blog/posts/viash-0.5.14/index.html", + "/blog/posts/viash-0.5.13/index.html", + "/blog/posts/viash-0.5.12/index.html", + "/blog/posts/viash-0.5.11/index.html", + "/blog/posts/viash-0.5.10.1/index.html", + "/blog/posts/viash-0.5.10/index.html", + "/blog/posts/viash-0.5.9/index.html", + "/blog/posts/viash-0.5.8/index.html", + "/blog/posts/viash-0.5.7/index.html", + "/blog/posts/viash-0.5.6/index.html", + "/blog/posts/viash-0.5.5/index.html", + "/blog/posts/viash-0.5.4/index.html", + "/blog/posts/viash-0.5.3/index.html", + "/blog/posts/viash-0.5.0/index.html", + "/blog/posts/viash-0.5.2/index.html", + "/blog/posts/viash-0.5.1/index.html", + "/blog/posts/viash-0.4.0.1/index.html", + "/blog/posts/viash-0.4.0/index.html", + "/blog/posts/viash-0.3.2/index.html", + "/blog/posts/viash-0.3.1/index.html", + "/blog/posts/viash-0.3.0/index.html", + "/blog/posts/viash-0.2.2/index.html", + "/blog/posts/viash-0.2.1/index.html", + "/blog/posts/viash-0.2.0/index.html", + "/blog/posts/viash-0.1.0/index.html", + "/blog/posts/say-hello/index.html", + "/blog/posts/viash-0.0.1/index.html" + ] + }, + { + "listing": "/reference/cli/index.html", + "items": [ + "/reference/cli/build.html", + "/reference/cli/config_inject.html", + "/reference/cli/config_view.html", + "/reference/cli/ns_build.html", + "/reference/cli/ns_exec.html", + "/reference/cli/ns_list.html", + "/reference/cli/ns_test.html", + "/reference/cli/run.html", + "/reference/cli/test.html" + ] + }, + { + "listing": "/reference/index.html", + "items": [] + }, + { + "listing": "/guide/index.html", + "items": [ + "/guide/component/create-component.html", + "/guide/component/add-dependencies.html", + "/guide/component/index.html", + "/guide/component/add-resources.html", + "/guide/component/use-helper-functions.html", + "/guide/component/variables.html", + "/guide/component/unit-testing.html", + "/guide/project/structure.html", + "/guide/project/batch-processing.html", + "/guide/project/index.html", + "/guide/project/project-config.html", + "/guide/project/ide-setup.html", + "/guide/nextflow_vdsl3/create-and-use-a-module.html", + "/guide/nextflow_vdsl3/index.html", + "/guide/nextflow_vdsl3/create-a-pipeline.html" + ] + } +] \ No newline at end of file diff --git a/_versioned/0_8_5/logo/viash.svg b/_versioned/0_8_5/logo/viash.svg new file mode 100644 index 00000000..99c5a6ae --- /dev/null +++ b/_versioned/0_8_5/logo/viash.svg @@ -0,0 +1,111 @@ + +image/svg+xml diff --git a/_versioned/0_8_5/logo/viash_large.svg b/_versioned/0_8_5/logo/viash_large.svg new file mode 100644 index 00000000..bfaa43f4 --- /dev/null +++ b/_versioned/0_8_5/logo/viash_large.svg @@ -0,0 +1,191 @@ + +image/svg+xmlViashfrom scripts to pipelines diff --git a/_versioned/0_8_5/privacy.html b/_versioned/0_8_5/privacy.html new file mode 100644 index 00000000..ba7446f7 --- /dev/null +++ b/_versioned/0_8_5/privacy.html @@ -0,0 +1,673 @@ + + + + + + + + + +Viash - Privacy Policy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Privacy Policy

+
+ + + +
+ + + + +
+ + + +
+ + +

TL;DR: We do not use cookies and we do not collect any personal data.

+
+

Website visitors

+
    +
  • No personal information is collected.
  • +
  • No information is stored in the browser.
  • +
  • No information is shared with, sent to or sold to third-parties.
  • +
  • No information is shared with advertising companies.
  • +
  • No information is mined and harvested for personal and behavioral trends.
  • +
  • No information is monetized.
  • +
+
+
+

Information we collect and what we use it for

+

We run Google Analytics analytics on viash.io. The following information is collected:

+
    +
  • Page URL. We track the page URL of each page view on this website. We use this to understand which pages have been viewed and how many times a particular page has been viewed. For example: https://viash.io/.
  • +
  • HTTP Referrer. We use the referrer string to understand the number of visitors referred to this website from links on other sites. For example: https://github.com/.
  • +
  • Browser. We use this to understand what browsers people use when visiting this website. This is derived from the User-Agent HTTP header. The full User-Agent is discarded. For example: Chrome.
  • +
  • Operating system. We use this to understand what operating systems people use when visiting this website. We only use the brand of the operating system and don’t include the version number or any other details. This is derived from the User-Agent HTTP header. The full User-Agent is discarded. For example: GNU/Linux.
  • +
  • Device type. We use this to understand what devices people use when visiting this website. This is derived from window.innerWidth. The actual width of the browser in pixels is discarded. For example: Desktop.
  • +
  • Visitor Country. We look up the visitor’s country using the IP address. We do not track anything more granular than the country of origin and the IP address of the visitor is discarded. We never store IP addresses in our database or logs. For example: Canada.
  • +
+
+
+

Contact us

+

Contact us if you have any questions.

+ + +
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/quickstart/index.html b/_versioned/0_8_5/quickstart/index.html new file mode 100644 index 00000000..27e96275 --- /dev/null +++ b/_versioned/0_8_5/quickstart/index.html @@ -0,0 +1,876 @@ + + + + + + + + + +Viash - Welcome to Viash! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Welcome to Viash!

+
+ + + +
+ + + + +
+ + + +
+ + +

Viash is your go-to script wrapper for building data pipelines from modular software components. All you need is your trusty script and a metadata file to embark on this journey.

+

Check out some of Viash’s key features:

+ +
+

Requirements

+

This guide assumes you’ve already installed Viash, Docker and Nextflow.

+
+
+

Quickstart example project

+

To get up and running fast, we provide a template project for you to use. It contains three components from the same package as well as 2 custom operators from vsh-pipeline-operators, which are combined into a Nextflow pipeline as follows:

+
+
+
+

+
+
graph TD
+   A(file?.tsv) --> X[vsh_flatten] 
+   X --file1.tsv--> B1[/remove_comments/] --> C1[/take_column/] --> Y
+   X --file2.tsv--> B2[/remove_comments/] --> C2[/take_column/] --> Y
+   Y[vsh_toList] --> D[/combine_columns/]
+   D --> E(output)
+
+
+

+
+
+
+

This pipeline takes one or more TSV files as input and stores its output in an output folder.

+
+
+

Step 1: Get the template

+

First create a new repository by clicking the “Use this template” button. If you can’t see the “Use this template” button, log into GitHub first.

+

Next, clone the repository using the following command.

+
git clone https://github.com/youruser/my_first_pipeline.git && cd my_first_pipeline
+
+
+
+ +
+
+Note +
+
+
+

At the moment of writing, the branch to use should be 0_8_2.

+
+
+

Your new repository should contain the following files:

+
tree my_first_pipeline
+
.
+├── CHANGELOG.md
+├── LICENSE.md
+├── README.md
+├── README.qmd
+├── _viash.yaml
+├── main.nf
+├── resources_test
+│   ├── file1.tsv
+│   └── file2.tsv
+└── src
+    └── template
+        ├── combine_columns
+        │   ├── config.vsh.yaml
+        │   └── script.R
+        ├── remove_comments
+        │   ├── config.vsh.yaml
+        │   ├── script.sh
+        │   └── test.sh
+        ├── take_column
+        │   ├── config.vsh.yaml
+        │   └── script.py
+        └── workflow
+            ├── config.vsh.yaml
+            ├── main.nf
+            └── nextflow.config
+
+
+

Step 2: Build the Viash components

+

With Viash you can turn the components in src/ into Dockerized Nextflow modules by running:

+
viash ns build --setup cachedbuild --parallel
+
+ +Output + +
+
+
temporaryFolder: /tmp/viash_hub_repo13699287300312027561 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git
+Cloning into '.'...
+checkout out: List(git, checkout, tags/v0.2.0, --, .) 0 
+Exporting remove_comments (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/remove_comments
+Exporting combine_columns (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/combine_columns
+Exporting workflow (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/workflow
+Exporting take_column (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/take_column
+Exporting remove_comments (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/remove_comments
+Exporting take_column (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/take_column
+Exporting combine_columns (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/combine_columns
+[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/take_column:0.2.3' with Dockerfile
+[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/combine_columns:0.2.3' with Dockerfile
+[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/remove_comments:0.2.3' with Dockerfile
+All 7 configs built successfully
+
+
+
+

This command not only transforms the Viash components in src/ to Nextflow modules but it also builds the containers when appropriate (starting from the Docker cache when available using the cachedbuild argument). Once everything is built, a new target directory has been created containing the executables and modules grouped per platform:

+
ls -l
+
+ +Output + +
+
+
total 68
+-rw-r--r-- 1 hendrik hendrik  1020 Feb 29 11:40 CHANGELOG.md
+-rw-r--r-- 1 hendrik hendrik 32219 Feb 29 11:40 LICENSE.md
+-rw-r--r-- 1 hendrik hendrik   245 Feb 29 11:40 main.nf
+-rw-r--r-- 1 hendrik hendrik   222 Feb 29 11:40 nextflow.config
+-rw-r--r-- 1 hendrik hendrik  1094 Feb 29 11:40 README.md
+-rw-r--r-- 1 hendrik hendrik  1125 Feb 29 11:40 README.qmd
+drwxr-xr-x 2 hendrik hendrik  4096 Feb 29 11:40 resources_test
+drwxr-xr-x 3 hendrik hendrik  4096 Feb 29 11:40 src
+drwxr-xr-x 5 hendrik hendrik  4096 Feb 29 11:40 target
+-rw-r--r-- 1 hendrik hendrik   417 Feb 29 11:40 _viash.yaml
+
+
+
+
+
+

Step 3: Run the pipeline

+

Now run the pipeline with Nextflow:

+
nextflow run . \
+  -main-script template/workflow/main.nf \
+  -with-docker \
+  --input resources_test/file*.tsv \
+  --publish_dir output
+
+ +Output + +
+
+
N E X T F L O W  ~  version 23.04.1
+Launching `target/nextflow/template/workflow/main.nf` [fabulous_pare] DSL2 - revision: 6121522925
+[dd/089f9a] Submitted process > workflow:run_wf:remove_comments:processWf:remove_comments_process (run)
+[a0/d05ff7] Submitted process > workflow:run_wf:take_column:processWf:take_column_process (run)
+[eb/100864] Submitted process > workflow:run_wf:combine_columns:processWf:combine_columns_process (run)
+[57/ef0e3b] Submitted process > workflow:publishStatesSimpleWf:publishStatesProc (run)
+
+
+
+

This will run the different stages of the workflow , with the final result result being stored in a file named run.combine_columns.output in the output directory output:

+
cat output/run.combine_columns.output
+
+ +Output + +
+
+
"1" 0.11
+"2" 0.23
+"3" 0.35
+"4" 0.47
+
+
+
+
+
+

What’s next?

+

Congratulations, you’ve reached the end of this quickstart tutorial, and we’re excited for you to delve deeper into the world of Viash! Our comprehensive guide and reference documentation is here to help you explore various topics, such as:

+ +

So, get ready to enhance your skills and create outstanding solutions with Viash!

+ + +
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/build.html b/_versioned/0_8_5/reference/cli/build.html new file mode 100644 index 00000000..88b02349 --- /dev/null +++ b/_versioned/0_8_5/reference/cli/build.html @@ -0,0 +1,1175 @@ + + + + + + + + + +Viash - Viash Build + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Build

+
+ + + +
+ + + + +
+ + + +
+ + +

Build an executable from the provided viash config file.

+

Usage:

+

viash build config.vsh.yaml -o output [-p docker] [-m] [-s]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionType
configA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.String
--config_mod, -cModify a viash config at runtime using dynamic config modding.List[String]
--output, -oPath to directory in which the executable and any resources is built to. Default: “output/”. This is a required argument.String
--platform, -pSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.String
--pushWhether or not to push the container to a Docker registry [Docker Platform only].Boolean
--setup, -sWhich setup strategy for creating the container to use [Docker Platform only].String
--help, -hShow help message
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/config_inject.html b/_versioned/0_8_5/reference/cli/config_inject.html new file mode 100644 index 00000000..8776b261 --- /dev/null +++ b/_versioned/0_8_5/reference/cli/config_inject.html @@ -0,0 +1,1160 @@ + + + + + + + + + +Viash - Viash Config Inject + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Config Inject

+
+ + + +
+ + + + +
+ + + +
+ + +

Inject a Viash header into the main script of a Viash component.

+

Usage:

+

viash config inject config.vsh.yaml

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionType
configA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.String
--config_mod, -cModify a viash config at runtime using dynamic config modding.List[String]
--platform, -pSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.String
--help, -hShow help message
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/config_view.html b/_versioned/0_8_5/reference/cli/config_view.html new file mode 100644 index 00000000..e665753b --- /dev/null +++ b/_versioned/0_8_5/reference/cli/config_view.html @@ -0,0 +1,1170 @@ + + + + + + + + + +Viash - Viash Config View + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Config View

+
+ + + +
+ + + + +
+ + + +
+ + +

View the config file after parsing.

+

Usage:

+

viash config view config.vsh.yaml

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionType
configA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.String
--config_mod, -cModify a viash config at runtime using dynamic config modding.List[String]
--format, -fWhich output format to use.String
--parse_argument_groupsWhether or not to postprocess each component’s argument groups.Boolean
--platform, -pSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.String
--help, -hShow help message
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/index.html b/_versioned/0_8_5/reference/cli/index.html new file mode 100644 index 00000000..7918d6f8 --- /dev/null +++ b/_versioned/0_8_5/reference/cli/index.html @@ -0,0 +1,1275 @@ + + + + + + + + + +Viash - CLI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

CLI

+
+ + + +
+ + + + +
+ + + +
+ + +

These are the available commands available on the Command Line Interface:

+
+
    + +
  • + Viash Build: Build an executable from the provided viash config file. +
  • + +
  • + Viash Config Inject: Inject a Viash header into the main script of a Viash component. +
  • + +
  • + Viash Config View: View the config file after parsing. +
  • + +
  • + Viash Ns Build: Build a namespace from many viash config files. +
  • + +
  • + Viash Ns Exec: Execute a command for all found Viash components. The syntax of this command is inspired by find . -exec echo {} \;. +
  • + +
  • + Viash Ns List: List a namespace containing many viash config files. +
  • + +
  • + Viash Ns Test: Test a namespace containing many viash config files. +
  • + +
  • + Viash Run: Executes a viash component from the provided viash config file. viash generates a temporary executable and immediately executes it with the given parameters. +
  • + +
  • + Viash Test: Test the component using the tests defined in the viash config file. +
  • + +
+
+No matching items +
+
+ + + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/ns_build.html b/_versioned/0_8_5/reference/cli/ns_build.html new file mode 100644 index 00000000..67249207 --- /dev/null +++ b/_versioned/0_8_5/reference/cli/ns_build.html @@ -0,0 +1,1200 @@ + + + + + + + + + +Viash - Viash Ns Build + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Ns Build

+
+ + + +
+ + + + +
+ + + +
+ + +

Build a namespace from many viash config files.

+

Usage:

+

viash ns build [-n nmspc] [-s src] [-t target] [-p docker] [--setup] [--push] [--parallel] [--flatten]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionType
--config_mod, -cModify a viash config at runtime using dynamic config modding.List[String]
--flatten, -fFlatten the target builds, handy for building one platform to a bin directory.Boolean
--parallel, -lWhether or not to run the process in parallel.Boolean
--platform, -pActs as a regular expression to filter the platform ids specified in the found config files. If this is not provided, all platforms will be used. If no platforms are defined in a config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.String
--pushWhether or not to push the container to a Docker registry [Docker Platform only].Boolean
--query, -qFilter which components get selected by component and namespace name. Can be a regex. Example: “^mynamespace/component1$”.String
--query_nameFilter which components get selected by component name. Can be a regex. Example: “^component1”.String
--query_namespace, -nFilter which namespaces get selected by namespace name. Can be a regex. Example: “^mynamespace$”.String
--setupWhich setup strategy for creating the container to use [Docker Platform only].String
--src, -sA source directory containing viash config files, possibly structured in a hierarchical folder structure. Default: src/.String
--target, -tA target directory to build the executables into. Default: target/.String
--help, -hShow help message
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/ns_exec.html b/_versioned/0_8_5/reference/cli/ns_exec.html new file mode 100644 index 00000000..0fcc7ebf --- /dev/null +++ b/_versioned/0_8_5/reference/cli/ns_exec.html @@ -0,0 +1,1211 @@ + + + + + + + + + +Viash - Viash Ns Exec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Ns Exec

+
+ + + +
+ + + + +
+ + + +
+ + +

Execute a command for all found Viash components. The syntax of this command is inspired by find . -exec echo {} \;.

+

The following fields are automatically replaced:

+ +

A command suffixed by \; (or nothing) will execute one command for each of the Viash components, whereas a command suffixed by + will execute one command for all Viash components.

+

Usage:

+

viash ns exec 'echo {path} \\;'

+

viash ns exec 'chmod +x {main-script} +'

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionType
--apply_platform, -aFills in the {platform} and {output} field by applying each platform to the config separately. Note that this results in the provided command being applied once for every platform that matches the –platform regex.Boolean
--cmdThe command to execute for each viash config file in the namespace. This is a required argument.String
--config_mod, -cModify a viash config at runtime using dynamic config modding.List[String]
--dry_run, -dPerform a dry run.Boolean
--parallel, -lWhether or not to run the process in parallel.Boolean
--platform, -pActs as a regular expression to filter the platform ids specified in the found config files. If this is not provided, all platforms will be used. If no platforms are defined in a config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.String
--query, -qFilter which components get selected by component and namespace name. Can be a regex. Example: “^mynamespace/component1$”.String
--query_nameFilter which components get selected by component name. Can be a regex. Example: “^component1”.String
--query_namespace, -nFilter which namespaces get selected by namespace name. Can be a regex. Example: “^mynamespace$”.String
--src, -sA source directory containing viash config files, possibly structured in a hierarchical folder structure. Default: src/.String
--help, -hShow help message
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/ns_list.html b/_versioned/0_8_5/reference/cli/ns_list.html new file mode 100644 index 00000000..fc9669d5 --- /dev/null +++ b/_versioned/0_8_5/reference/cli/ns_list.html @@ -0,0 +1,1190 @@ + + + + + + + + + +Viash - Viash Ns List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Ns List

+
+ + + +
+ + + + +
+ + + +
+ + +

List a namespace containing many viash config files.

+

Usage:

+

viash ns list [-n nmspc] [-s src] [-p docker]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionType
--config_mod, -cModify a viash config at runtime using dynamic config modding.List[String]
--format, -fWhich output format to use.String
--parallel, -lWhether or not to run the process in parallel.Boolean
--parse_argument_groupsWhether or not to postprocess each component’s argument groups.Boolean
--platform, -pActs as a regular expression to filter the platform ids specified in the found config files. If this is not provided, all platforms will be used. If no platforms are defined in a config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.String
--query, -qFilter which components get selected by component and namespace name. Can be a regex. Example: “^mynamespace/component1$”.String
--query_nameFilter which components get selected by component name. Can be a regex. Example: “^component1”.String
--query_namespace, -nFilter which namespaces get selected by namespace name. Can be a regex. Example: “^mynamespace$”.String
--src, -sA source directory containing viash config files, possibly structured in a hierarchical folder structure. Default: src/.String
--help, -hShow help message
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/ns_test.html b/_versioned/0_8_5/reference/cli/ns_test.html new file mode 100644 index 00000000..c17dec04 --- /dev/null +++ b/_versioned/0_8_5/reference/cli/ns_test.html @@ -0,0 +1,1210 @@ + + + + + + + + + +Viash - Viash Ns Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Ns Test

+
+ + + +
+ + + + +
+ + + +
+ + +

Test a namespace containing many viash config files.

+

Usage:

+

viash ns test [-n nmspc] [-s src] [-p docker] [--parallel] [--tsv file.tsv] [--setup cachedbuild] [--append]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionType
--append, -aAppend to tsv instead of overwriteBoolean
--config_mod, -cModify a viash config at runtime using dynamic config modding.List[String]
--cpusThe maximum number of (logical) cpus a component is allowed to use.Int
--keep, -kWhether or not to keep temporary files. By default, files will be deleted if all goes well but remain when an error occurs. By specifying –keep true, the temporary files will always be retained, whereas –keep false will always delete them. The temporary directory can be overwritten by setting defining a VIASH_TEMP directory.String
--memoryThe maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.String
--parallel, -lWhether or not to run the process in parallel.Boolean
--platform, -pActs as a regular expression to filter the platform ids specified in the found config files. If this is not provided, all platforms will be used. If no platforms are defined in a config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.String
--query, -qFilter which components get selected by component and namespace name. Can be a regex. Example: “^mynamespace/component1$”.String
--query_nameFilter which components get selected by component name. Can be a regex. Example: “^component1”.String
--query_namespace, -nFilter which namespaces get selected by namespace name. Can be a regex. Example: “^mynamespace$”.String
--setupWhich setup strategy for creating the container to use [Docker Platform only].String
--src, -sA source directory containing viash config files, possibly structured in a hierarchical folder structure. Default: src/.String
--tsv, -tPath to write a summary of the test results to.String
--help, -hShow help message
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/run.html b/_versioned/0_8_5/reference/cli/run.html new file mode 100644 index 00000000..63472fde --- /dev/null +++ b/_versioned/0_8_5/reference/cli/run.html @@ -0,0 +1,1175 @@ + + + + + + + + + +Viash - Viash Run + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Run

+
+ + + +
+ + + + +
+ + + +
+ + +

Executes a viash component from the provided viash config file. viash generates a temporary executable and immediately executes it with the given parameters.

+

Usage:

+

viash run config.vsh.yaml [-p docker] [-k true/false] -- [arguments for script]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionType
configA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.String
--config_mod, -cModify a viash config at runtime using dynamic config modding.List[String]
--cpusThe maximum number of (logical) cpus a component is allowed to use.Int
--keep, -kWhether or not to keep temporary files. By default, files will be deleted if all goes well but remain when an error occurs. By specifying –keep true, the temporary files will always be retained, whereas –keep false will always delete them. The temporary directory can be overwritten by setting defining a VIASH_TEMP directory.String
--memoryThe maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.String
--platform, -pSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.String
--help, -hShow help message
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/cli/test.html b/_versioned/0_8_5/reference/cli/test.html new file mode 100644 index 00000000..8f13d767 --- /dev/null +++ b/_versioned/0_8_5/reference/cli/test.html @@ -0,0 +1,1180 @@ + + + + + + + + + +Viash - Viash Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Test

+
+ + + +
+ + + + +
+ + + +
+ + +

Test the component using the tests defined in the viash config file.

+

Usage:

+

viash test config.vsh.yaml [-p docker] [-k true/false] [--setup cachedbuild]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionType
configA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.String
--config_mod, -cModify a viash config at runtime using dynamic config modding.List[String]
--cpusThe maximum number of (logical) cpus a component is allowed to use.Int
--keep, -kWhether or not to keep temporary files. By default, files will be deleted if all goes well but remain when an error occurs. By specifying –keep true, the temporary files will always be retained, whereas –keep false will always delete them. The temporary directory can be overwritten by setting defining a VIASH_TEMP directory.String
--memoryThe maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.String
--platform, -pSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.String
--setup, -sWhich setup strategy for creating the container to use [Docker Platform only].String
--help, -hShow help message
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/argumentGroup.html b/_versioned/0_8_5/reference/config/argumentGroup.html new file mode 100644 index 00000000..52ab729c --- /dev/null +++ b/_versioned/0_8_5/reference/config/argumentGroup.html @@ -0,0 +1,1194 @@ + + + + + + + + + +Viash - Argument Group + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Argument Group

+
+ + + +
+ + + + +
+ + + +
+ + +

A grouping of the arguments, used to display the help message.

+
+

arguments

+

Type: List of Argument

+

List of arguments.

+
+
+

description

+

Type: String

+

Default: Empty

+

Description of foo`, a description of the argument group. Multiline descriptions are supported.

+
+
+

name

+

Type: String

+

The name of the argument group.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/arguments/boolean.html b/_versioned/0_8_5/reference/config/arguments/boolean.html new file mode 100644 index 00000000..a34ccce8 --- /dev/null +++ b/_versioned/0_8_5/reference/config/arguments/boolean.html @@ -0,0 +1,1318 @@ + + + + + + + + + +Viash - Boolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Boolean

+
+ + + +
+ + + + +
+ + + +
+ + +

A boolean type argument has two possible values: true or false.

+

Example:

+
arguments:
+  - name: --trim
+    type: boolean
+    default: true
+    description: Trim whitespace from the final output
+    alternatives: ["-t"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

default

+

Type: Boolean / List of Boolean

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_boolean
+  type: boolean
+  default: true
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: Boolean / List of Boolean

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_boolean
+  type: boolean
+  example: true
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_boolean
+  type: boolean
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_boolean=true:true:false
+
+
+

multiple_sep

+

Type: String

+

Default: ;

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_boolean
+  type: boolean
+  multiple: true
+  multiple_sep: ";"
+

Here’s an example of how to use this:

+
my_component --my_boolean=true,true,false
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --trim, -t or trim. The number of dashes determines how values can be passed:

+
    +
  • --trim is a long option, which can be passed with executable_name --trim
  • +
  • -t is a short option, which can be passed with executable_name -t
  • +
  • trim is an argument, which can be passed with executable_name trim
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_boolean
+  type: boolean
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/arguments/boolean_false.html b/_versioned/0_8_5/reference/config/arguments/boolean_false.html new file mode 100644 index 00000000..83933fcd --- /dev/null +++ b/_versioned/0_8_5/reference/config/arguments/boolean_false.html @@ -0,0 +1,1257 @@ + + + + + + + + + +Viash - Boolean False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Boolean False

+
+ + + +
+ + + + +
+ + + +
+ + +

An argument of the boolean_false type acts like an inverted boolean flag with a default value of true. When called as an argument it sets the boolean to false.

+

Example:

+
arguments:
+  - name: --no-log
+    type: boolean_false
+    description: Disable logging
+    alternatives: ["-nl"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --no-log, -n or no-log. The number of dashes determines how values can be passed:

+
    +
  • --no-log is a long option, which can be passed with executable_name --no-log
  • +
  • -n is a short option, which can be passed with executable_name -n
  • +
  • no-log is an argument, which can be passed with executable_name no-log
  • +
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/arguments/boolean_true.html b/_versioned/0_8_5/reference/config/arguments/boolean_true.html new file mode 100644 index 00000000..275aca60 --- /dev/null +++ b/_versioned/0_8_5/reference/config/arguments/boolean_true.html @@ -0,0 +1,1257 @@ + + + + + + + + + +Viash - Boolean True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Boolean True

+
+ + + +
+ + + + +
+ + + +
+ + +

An argument of the boolean_true type acts like a boolean flag with a default value of false. When called as an argument it sets the boolean to true.

+

Example:

+
arguments:
+  - name: --silent
+    type: boolean_true
+    description: Ignore console output
+    alternatives: ["-s"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --silent, -s or silent. The number of dashes determines how values can be passed:

+
    +
  • --silent is a long option, which can be passed with executable_name --silent
  • +
  • -s is a short option, which can be passed with executable_name -s
  • +
  • silent is an argument, which can be passed with executable_name silent
  • +
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/arguments/double.html b/_versioned/0_8_5/reference/config/arguments/double.html new file mode 100644 index 00000000..f71ac428 --- /dev/null +++ b/_versioned/0_8_5/reference/config/arguments/double.html @@ -0,0 +1,1340 @@ + + + + + + + + + +Viash - Double + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Double

+
+ + + +
+ + + + +
+ + + +
+ + +

A double type argument has a numeric value with decimal points

+

Example:

+
arguments:
+  - name: --litres
+    type: double
+    default: 1.5
+    description: Litres of fluid to process
+    alternatives: ["-l"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

default

+

Type: Double / List of Double

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_double
+  type: double
+  default: 5.8
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: Double / List of Double

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_double
+  type: double
+  example: 5.8
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

max

+

Type: Double

+

Default: Empty

+

Maximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.

+

Example:

+
- name: --my_double
+  type: double
+  max: 80.4
+
+
+

min

+

Type: Double

+

Default: Empty

+

Minimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.

+

Example:

+
- name: --my_double
+  type: double
+  min: 25.5
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_double
+  type: double
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_double=5.8:22.6:200.4
+
+
+

multiple_sep

+

Type: String

+

Default: ;

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_double
+  type: double
+  multiple: true
+  multiple_sep: ";"
+

Here’s an example of how to use this:

+
my_component --my_double=5.8,22.6,200.4
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_double
+  type: double
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/arguments/file.html b/_versioned/0_8_5/reference/config/arguments/file.html new file mode 100644 index 00000000..f3395c6e --- /dev/null +++ b/_versioned/0_8_5/reference/config/arguments/file.html @@ -0,0 +1,1352 @@ + + + + + + + + + +Viash - File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

File

+
+ + + +
+ + + + +
+ + + +
+ + +

A file type argument has a string value that points to a file or folder path.

+

Example:

+
arguments:
+  - name: --input_csv
+    type: file
+    must_exist: true
+    description: CSV file to read contents from
+    alternatives: ["-i"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

create_parent

+

Type: Boolean

+

Default: True

+

If the output filename is a path and it does not exist, create it before executing the script (only for direction: output).

+

Example:

+
- name: --my_file
+  type: file
+  direction: output
+  create_parent: true
+
+
+

default

+

Type: Path / List of Path

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_file
+  type: file
+  default: data.csv
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

direction

+

Type: Direction

+

Default: Input

+

Makes this argument an input or an output, as in does the file/folder needs to be read or written. input by default.

+

Example:

+
- name: --my_output_file
+  type: file
+  direction: output
+
+
+

example

+

Type: Path / List of Path

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_file
+  type: file
+  example: data.csv
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_files
+  type: file
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_files=firstFile.csv:anotherFile.csv:yetAnother.csv
+
+
+

multiple_sep

+

Type: String

+

Default: ;

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_files
+  type: file
+  multiple: true
+  multiple_sep: ";"
+

Here’s an example of how to use this:

+
my_component --my_files=firstFile.csv,anotherFile.csv,yetAnother.csv
+
+
+

must_exist

+

Type: Boolean

+

Default: True

+

Checks whether the file or folder exists. For input files, this check will happen before the execution of the script, while for output files the check will happen afterwards.

+

Example:

+
- name: --my_file
+  type: file
+  must_exist: true
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_file
+  type: file
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/arguments/index.html b/_versioned/0_8_5/reference/config/arguments/index.html new file mode 100644 index 00000000..f39c4430 --- /dev/null +++ b/_versioned/0_8_5/reference/config/arguments/index.html @@ -0,0 +1,1227 @@ + + + + + + + + + +Viash - Argument + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Argument

+
+ + + +
+ + + + +
+ + + +
+ + +

For each argument, a type and a name must be specified. Depending on the type of argument, different properties can be set. See these reference pages per type for more information:

+ +

Example:

+
arguments:
+  - name: --foo
+    type: file
+    alternatives: [-f]
+    description: Description of foo
+    default: "/foo/bar"
+    must_exist: true
+    direction: output
+    required: false
+    multiple: true
+    multiple_sep: ";"
+  - name: --bar
+    type: string
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/arguments/integer.html b/_versioned/0_8_5/reference/config/arguments/integer.html new file mode 100644 index 00000000..1f65fc5c --- /dev/null +++ b/_versioned/0_8_5/reference/config/arguments/integer.html @@ -0,0 +1,1351 @@ + + + + + + + + + +Viash - Integer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Integer

+
+ + + +
+ + + + +
+ + + +
+ + +

An integer type argument has a numeric value without decimal points.

+

Example:

+
arguments:
+  - name: --core_amount
+    type: integer
+    default: 16
+    description: Amount of CPU cores to use
+    alternatives: ["-c"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

choices

+

Type: List of Int

+

Default: Empty

+

Limit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.

+

Example:

+
- name: --values
+  type: integer
+  choices: [1024, 2048, 4096]
+
+
+

default

+

Type: Int / List of Int

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_integer
+  type: integer
+  default: 100
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: Int / List of Int

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_integer
+  type: integer
+  example: 100
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

max

+

Type: Int

+

Default: Empty

+

Maximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.

+

Example:

+
- name: --my_integer
+  type: integer
+  max: 150
+
+
+

min

+

Type: Int

+

Default: Empty

+

Minimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.

+

Example:

+
- name: --my_integer
+  type: integer
+  min: 50
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_integer
+  type: integer
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_integer=10:80:152
+
+
+

multiple_sep

+

Type: String

+

Default: ;

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_integer
+  type: integer
+  multiple: true
+  multiple_sep: ";"
+

Here’s an example of how to use this:

+
my_component --my_integer=10:80:152
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_integer
+  type: integer
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/arguments/long.html b/_versioned/0_8_5/reference/config/arguments/long.html new file mode 100644 index 00000000..c2066d37 --- /dev/null +++ b/_versioned/0_8_5/reference/config/arguments/long.html @@ -0,0 +1,1351 @@ + + + + + + + + + +Viash - Long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Long

+
+ + + +
+ + + + +
+ + + +
+ + +

An long type argument has a numeric value without decimal points.

+

Example:

+
arguments:
+  - name: --core_amount
+    type: long
+    default: 16
+    description: Amount of CPU cores to use
+    alternatives: ["-c"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

choices

+

Type: List of Long

+

Default: Empty

+

Limit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.

+

Example:

+
- name: --values
+  type: long
+  choices: [1024, 2048, 4096]
+
+
+

default

+

Type: Long / List of Long

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_long
+  type: long
+  default: 100
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: Long / List of Long

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_long
+  type: long
+  example: 100
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

max

+

Type: Long

+

Default: Empty

+

Maximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.

+

Example:

+
- name: --my_long
+  type: long
+  max: 150
+
+
+

min

+

Type: Long

+

Default: Empty

+

Minimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.

+

Example:

+
- name: --my_long
+  type: long
+  min: 50
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_long
+  type: long
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_long=10:80:152
+
+
+

multiple_sep

+

Type: String

+

Default: ;

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_long
+  type: long
+  multiple: true
+  multiple_sep: ";"
+

Here’s an example of how to use this:

+
my_component --my_long=10:80:152
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_long
+  type: long
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/arguments/string.html b/_versioned/0_8_5/reference/config/arguments/string.html new file mode 100644 index 00000000..50d0a820 --- /dev/null +++ b/_versioned/0_8_5/reference/config/arguments/string.html @@ -0,0 +1,1329 @@ + + + + + + + + + +Viash - String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

String

+
+ + + +
+ + + + +
+ + + +
+ + +

A string type argument has a value made up of an ordered sequences of characters, like “Hello” or “I’m a string”.

+

Example:

+
arguments:
+  - name: --search_query
+    type: string
+    default: "meaning of life"
+    description: The term to search for
+    alternatives: ["-q"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

choices

+

Type: List of String

+

Default: Empty

+

Limit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.

+

Example:

+
- name: --language
+  type: string
+  choices: ["python", "r", "javascript"]
+
+
+

default

+

Type: String / List of String

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_string
+  type: string
+  default: "The answer is 42"
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: String / List of String

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_string
+  type: string
+  example: "Hello World"
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_string
+  type: string
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_string=Marc:Susan:Paul
+
+
+

multiple_sep

+

Type: String

+

Default: ;

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_string
+  type: string
+  multiple: true
+  multiple_sep: ";"
+

Here’s an example of how to use this:

+
my_component --my_string=Marc,Susan,Paul
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: Empty

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_string
+  type: string
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/author.html b/_versioned/0_8_5/reference/config/author.html new file mode 100644 index 00000000..174f644f --- /dev/null +++ b/_versioned/0_8_5/reference/config/author.html @@ -0,0 +1,1270 @@ + + + + + + + + + +Viash - Author + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Author

+
+ + + +
+ + + + +
+ + + +
+ + +

Author metadata.

+

Example:

+
name: Jane Doe
+role: [author, maintainer]
+email: jane@doe.com
+info:
+  github: janedoe
+  twitter: janedoe
+  orcid: XXAABBCCXX
+  groups: [ one, two, three ]
+
+

email

+

Type: String

+

Default: Empty

+

E-mail of the author.

+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+
+
+

name

+

Type: String

+

Full name of the author, usually in the name of FirstName MiddleName LastName.

+
+
+

props

+

Type: Map of String to String

+

Default: Empty

+
+
+
+ +
+
+Warning +
+
+
+

Deprecated since 0.7.4. Removed since 0.8.0. Use info instead.

+
+
+

Author properties. Must be a map of strings.

+
+
+

roles

+

Type: String / List of String

+

Default: Empty

+

Role of the author. Suggested items:

+
    +
  • "author": Authors who have made substantial contributions to the component.
  • +
  • "maintainer": The maintainer of the component.
  • +
  • "contributor": Authors who have made smaller contributions (such as code patches etc.).
  • +
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/buildInfo.html b/_versioned/0_8_5/reference/config/buildInfo.html new file mode 100644 index 00000000..2591338e --- /dev/null +++ b/_versioned/0_8_5/reference/config/buildInfo.html @@ -0,0 +1,1237 @@ + + + + + + + + + +Viash - Build Info + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Build Info

+
+ + + +
+ + + + +
+ + + +
+ + +

Meta information fields filled in by Viash during build.

+
+

config

+

Type: String

+

Path to the config used during build.

+
+
+

engine

+

Type: String

+

Default: Empty

+

The engine id used during build.

+
+
+

executable

+

Type: String

+

Default: Empty

+

Output folder with main executable path.

+
+
+

git_commit

+

Type: String

+

Default: Empty

+

Git commit hash.

+
+
+

git_remote

+

Type: String

+

Default: Empty

+

Git remote name.

+
+
+

git_tag

+

Type: String

+

Default: Empty

+

Git tag.

+
+
+

output

+

Type: String

+

Default: Empty

+

Folder path to the build artifacts.

+
+
+

runner

+

Type: String

+

Default: Empty

+

The runner id used during build.

+
+
+

viash_version

+

Type: String

+

Default: Empty

+

The Viash version that was used to build the component.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/computationalRequirements.html b/_versioned/0_8_5/reference/config/computationalRequirements.html new file mode 100644 index 00000000..3b334ff2 --- /dev/null +++ b/_versioned/0_8_5/reference/config/computationalRequirements.html @@ -0,0 +1,1236 @@ + + + + + + + + + +Viash - Computational Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Computational Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Computational requirements related to running the component.

+
+

commands

+

Type: List of String

+

Default: Empty

+

A list of commands which should be present on the system for the script to function.

+

Example:

+
commands: [ which, bash, awk, date, grep, egrep, ps, sed, tail, tee ]
+
+
+

cpus

+

Type: Int

+

Default: Empty

+

The maximum number of (logical) cpus a component is allowed to use.

+

Example:

+
cpus: 10
+
+
+

memory

+

Type: String

+

Default: Empty

+

The maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.

+

Example:

+
memory: 10GB
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/dependencies/index.html b/_versioned/0_8_5/reference/config/dependencies/index.html new file mode 100644 index 00000000..fd129627 --- /dev/null +++ b/_versioned/0_8_5/reference/config/dependencies/index.html @@ -0,0 +1,1248 @@ + + + + + + + + + +Viash - Dependency + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Dependency

+
+ + + +
+ + + + +
+ + + +
+ + +

Specifies a Viash component (script or executable) that should be made available for the code defined in the component. The dependency components are collected and copied to the output folder during the Viash build step.

+

Examples:

+

Definition of dependency with a fully defined repository

+
name: qc/multiqc
+repository: 
+  type: github
+  repo: openpipelines-bio/modules
+  tag: 0.3.0
+

Definition of a dependency with a repository using sugar syntax.

+
name: qc/multiqc
+repository: "github://openpipelines-bio/modules:0.3.0"
+

Definition of a dependency with a repository defined as ‘openpipelines-bio’ under .repositories.

+
name: qc/multiqc
+repository: "openpipelines-bio"
+

Definition of a local dependency. This dependency is present in the current code base and will be built when viash ns build is run.

+
name: qc/multiqc
+
+

alias

+

Type: String

+

Default: Empty

+

An alternative name for the dependency component. This can include a namespace if so needed.

+

Example:

+
alias: my_alias
+
+
+

name

+

Type: String

+

The full name of the dependency component. This should include the namespace.

+

Example:

+
name: "my_namespace"component
+
+
+

repository

+

Type: Either - String - Repository

+

Default: Empty

+

Specifies the repository location where the dependency component can be found. This must either be a full definition of the repository or the name of a repository referenced as it is defined under repositories. Additionally, the full definition can be specified as a single string where all parameters such as repository type, url, branch or tag are specified. Omitting the value sets the dependency as a local dependency, ie. the dependency is available in the same namespace as the component.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/index.html b/_versioned/0_8_5/reference/config/engines/docker/index.html new file mode 100644 index 00000000..f913ba26 --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/index.html @@ -0,0 +1,1370 @@ + + + + + + + + + +Viash - Docker Engine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Docker Engine

+
+ + + +
+ + + + +
+ + + +
+ + +

Run a Viash component on a Docker backend engine. By specifying which dependencies your component needs, users will be able to build a docker container from scratch using the setup flag, or pull it from a docker repository.

+

Example:

+
engines:
+  - type: docker
+    image: "bash:4.0"
+    setup:
+      - type: apt
+        packages: [ curl ]
+
+

cmd

+

Type: Either - String - List of String

+

Default: Empty

+

Set the default command being executed when running the Docker container.

+

Examples:

+

Set CMD using the exec format, which is the prefered form.

+
cmd: ["echo", "$HOME"]
+

Set CMD using the shell format.

+
cmd: "echo $HOME"
+
+
+

entrypoint

+

Type: Either - String - List of String

+

Default: []

+

Override the entrypoint of the base container. Default set ENTRYPOINT [].

+

Examples:

+

Disable the default override.

+
entrypoint: 
+

Entrypoint of the container in the exec format, which is the prefered form.

+
entrypoint: ["top", "-b"]
+

Entrypoint of the container in the shell format.

+
entrypoint: "top -b"
+
+
+

id

+

Type: String

+

Default: docker

+

Name of the engine. As with all engines, you can give a engine a different name. By specifying id: foo, you can target this engine (only) by specifying ... in any of the Viash commands.

+

Examples:

+
id: foo
+
id: foo
+
+
+

image

+

Type: String

+

The base container to start from. You can also add the tag here if you wish.

+

Example:

+
image: "bash:4.0"
+
+
+

namespace_separator

+

Type: String

+

Default: /

+

The separator between the namespace and the name of the component, used for determining the image name. Default: "/".

+

Example:

+
namespace_separator: "_"
+
+
+

organization

+

Type: String

+

Default: Empty

+

Name of a container’s organization.

+
+
+

registry

+

Type: String

+

Default: Empty

+

The URL to the a custom Docker registry

+

Example:

+
registry: https://my-docker-registry.org
+
+
+

setup

+

Type: List of Requirements

+

Default: Empty

+

A list of requirements for installing the following types of packages:

+ +

The order in which these dependencies are specified determines the order in which they will be installed.

+
+
+

tag

+

Type: String

+

Default: Empty

+

Specify a Docker image based on its tag.

+

Example:

+
tag: 4.0
+
+
+

target_image

+

Type: String

+

Default: Empty

+

If anything is specified in the setup section, running the ---setup will result in an image with the name of <target_image>:<version>. If nothing is specified in the setup section, simply image will be used. Advanced usage only.

+

Example:

+
target_image: myfoo
+
+
+

target_image_source

+

Type: String

+

Default: Empty

+

The source of the target image. This is used for defining labels in the dockerfile.

+

Example:

+
target_image_source: https://github.com/foo/bar
+
+
+

target_organization

+

Type: String

+

Default: Empty

+

The organization set in the resulting image. Advanced usage only.

+

Example:

+
target_organization: viash-io
+
+
+

target_registry

+

Type: String

+

Default: Empty

+

The URL where the resulting image will be pushed to. Advanced usage only.

+

Example:

+
target_registry: https://my-docker-registry.org
+
+
+

target_tag

+

Type: String

+

Default: Empty

+

The tag the resulting image gets. Advanced usage only.

+

Example:

+
target_tag: 0.5.0
+
+
+

test_setup

+

Type: List of Requirements

+

Default: Empty

+

Additional requirements specific for running unit tests.

+
+
+

type

+

Type: String

+

Specifies the type of the engine.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/setup/apkRequirements.html b/_versioned/0_8_5/reference/config/engines/docker/setup/apkRequirements.html new file mode 100644 index 00000000..dd116d87 --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/setup/apkRequirements.html @@ -0,0 +1,1228 @@ + + + + + + + + + +Viash - Apk Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Apk Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which apk packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: apk
+    packages: [ sl ]
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install.

+

Example:

+
packages: [ sl ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/setup/aptRequirements.html b/_versioned/0_8_5/reference/config/engines/docker/setup/aptRequirements.html new file mode 100644 index 00000000..f292813e --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/setup/aptRequirements.html @@ -0,0 +1,1235 @@ + + + + + + + + + +Viash - Apt Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Apt Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which apt packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: apt
+    packages: [ sl ]
+
+

interactive

+

Type: Boolean

+

Default: False

+

If false, the Debian frontend is set to non-interactive (recommended). Default: false.

+
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install.

+

Example:

+
packages: [ sl ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/setup/dockerRequirements.html b/_versioned/0_8_5/reference/config/engines/docker/setup/dockerRequirements.html new file mode 100644 index 00000000..f01bf68c --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/setup/dockerRequirements.html @@ -0,0 +1,1278 @@ + + + + + + + + + +Viash - Docker Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Docker Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which Docker commands should be run during setup.

+

Example:

+
setup:
+  - type: docker
+    build_args: "R_VERSION=hello_world"
+    run: |
+      echo 'Run a custom command'
+      echo 'Foo' > /path/to/file.txt
+
+

add

+

Type: String / List of String

+

Default: Empty

+

Specifies which ADD entries to add to the Dockerfile while building it.

+

Example:

+
add: [ "http://foo/bar ." ]
+
+
+

build_args

+

Type: String / List of String

+

Default: Empty

+

Specifies which ARG entries to add to the Dockerfile while building it.

+

Example:

+
build_args: [ "R_VERSION=4.2" ]
+
+
+

copy

+

Type: String / List of String

+

Default: Empty

+

Specifies which COPY entries to add to the Dockerfile while building it.

+

Example:

+
copy: [ "resource.txt /path/to/resource.txt" ]
+
+
+

env

+

Type: String / List of String

+

Default: Empty

+

Specifies which ENV entries to add to the Dockerfile while building it. Unlike ARG, ENV entries are also accessible from inside the container.

+

Example:

+
env: [ "R_VERSION=4.2" ]
+
+
+

label

+

Type: String / List of String

+

Default: Empty

+

Specifies which LABEL entries to add to the Dockerfile while building it.

+

Example:

+
label: [ component="foo" ]
+
+
+

run

+

Type: String / List of String

+

Default: Empty

+

Specifies which RUN entries to add to the Dockerfile while building it.

+

Example:

+
run: |
+  echo 'Run a custom command'
+  echo 'Foo' > /path/to/file.txt
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/setup/index.html b/_versioned/0_8_5/reference/config/engines/docker/setup/index.html new file mode 100644 index 00000000..21296e60 --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/setup/index.html @@ -0,0 +1,1180 @@ + + + + + + + + + +Viash - Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Requirements for installing the following types of packages:

+ + + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/setup/javascriptRequirements.html b/_versioned/0_8_5/reference/config/engines/docker/setup/javascriptRequirements.html new file mode 100644 index 00000000..1f99b08d --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/setup/javascriptRequirements.html @@ -0,0 +1,1267 @@ + + + + + + + + + +Viash - JavaScript Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

JavaScript Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which JavaScript packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: javascript
+    npm: packagename
+    git: "https://some.git.repository/org/repo"
+    github: "owner/repository"
+    url: "https://github.com/org/repo/archive/HEAD.zip"
+
+

git

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Git URI.

+

Example:

+
git: [ https://some.git.repository/org/repo ]
+
+
+

github

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitHub.

+

Example:

+
github: [ owner/repository ]
+
+
+

npm

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from npm.

+

Example:

+
npm: [ packagename ]
+
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from npm.

+

Example:

+
packages: [ packagename ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+
+
+

url

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a generic URI.

+

Example:

+
url: [ https://github.com/org/repo/archive/HEAD.zip ]
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/setup/pythonRequirements.html b/_versioned/0_8_5/reference/config/engines/docker/setup/pythonRequirements.html new file mode 100644 index 00000000..0d9a8d02 --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/setup/pythonRequirements.html @@ -0,0 +1,1336 @@ + + + + + + + + + +Viash - Python Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Python Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which Python packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: python
+    pip: numpy
+    github: [ jkbr/httpie, foo/bar ]
+    url: "https://github.com/some_org/some_pkg/zipball/master"
+
+

bazaar

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Bazaar URI.

+

Example:

+
bazaar: [ http://bazaar.launchpad.net/some_pkg/some_pkg/release-0.1 ]
+
+
+

git

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Git URI.

+

Example:

+
git: [ https://some.git.repository/org/repo ]
+
+
+

github

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitHub.

+

Example:

+
github: [ jkbr/httpie ]
+
+
+

gitlab

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitLab.

+

Example:

+
gitlab: [ foo/bar ]
+
+
+

mercurial

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Mercurial URI.

+

Example:

+
mercurial: [ https://hg.myproject.org/MyProject/#egg=MyProject ]
+
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from pip.

+

Example:

+
packages: [ numpy ]
+
+
+

pip

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from pip.

+

Example:

+
pip: [ numpy ]
+
+
+

pypi

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from PyPI using pip.

+

Example:

+
pypi: [ numpy ]
+
+
+

script

+

Type: String / List of String

+

Default: Empty

+

Specifies a code block to run as part of the build.

+

Example:

+
script: |
+  print("Running custom code")
+  x = 1 + 1 == 2
+
+
+

svn

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using an SVN URI.

+

Example:

+
svn: [ http://svn.repo/some_pkg/trunk/#egg=SomePackage ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+
+
+

upgrade

+

Type: Boolean

+

Default: True

+

Sets the --upgrade flag when set to true. Default: true.

+
+
+

url

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a generic URI.

+

Example:

+
url: [ https://github.com/some_org/some_pkg/zipball/master ]
+
+
+

user

+

Type: Boolean

+

Default: False

+

Sets the --user flag when set to true. Default: false.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/setup/rRequirements.html b/_versioned/0_8_5/reference/config/engines/docker/setup/rRequirements.html new file mode 100644 index 00000000..54f07027 --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/setup/rRequirements.html @@ -0,0 +1,1323 @@ + + + + + + + + + +Viash - R Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

R Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which R packages should be available in order to run the component.

+

Example:

+
setup: 
+  - type: r
+    cran: anndata
+    bioc: [ AnnotationDbi, SingleCellExperiment ]
+    github: rcannood/SCORPIUS
+
+

bioc

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from BioConductor.

+

Example:

+
bioc: [ AnnotationDbi ]
+
+
+

bioc_force_install

+

Type: Boolean

+

Default: False

+

Forces packages specified in bioc to be reinstalled, even if they are already present in the container. Default: false.

+

Example:

+
bioc_force_install: false
+
+
+

bitbucket

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from Bitbucket.

+

Example:

+
bitbucket: [ org/package ]
+
+
+

cran

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from CRAN.

+

Example:

+
cran: [ anndata, ggplot2 ]
+
+
+

git

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Git URI.

+

Example:

+
git: [ https://some.git.repository/org/repo ]
+
+
+

github

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitHub.

+

Example:

+
github: [ rcannood/SCORPIUS ]
+
+
+

gitlab

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitLab.

+

Example:

+
gitlab: [ org/package ]
+
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from CRAN.

+

Example:

+
packages: [ anndata, ggplot2 ]
+
+
+

script

+

Type: String / List of String

+

Default: Empty

+

Specifies a code block to run as part of the build.

+

Example:

+
script: |
+  cat("Running custom code
+")
+  install.packages("anndata")
+
+
+

svn

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using an SVN URI.

+

Example:

+
svn: [ https://path.to.svn/group/repo ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+
+
+

url

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a generic URI.

+

Example:

+
url: [ https://github.com/hadley/stringr/archive/HEAD.zip ]
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/setup/rubyRequirements.html b/_versioned/0_8_5/reference/config/engines/docker/setup/rubyRequirements.html new file mode 100644 index 00000000..72e7d4e8 --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/setup/rubyRequirements.html @@ -0,0 +1,1228 @@ + + + + + + + + + +Viash - Ruby Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Ruby Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which Ruby packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: ruby
+    packages: [ rspec ]
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install.

+

Example:

+
packages: [ rspec ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/docker/setup/yumRequirements.html b/_versioned/0_8_5/reference/config/engines/docker/setup/yumRequirements.html new file mode 100644 index 00000000..b76be4c0 --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/docker/setup/yumRequirements.html @@ -0,0 +1,1228 @@ + + + + + + + + + +Viash - Yum Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Yum Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which yum packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: yum
+    packages: [ sl ]
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install.

+

Example:

+
packages: [ sl ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/index.html b/_versioned/0_8_5/reference/config/engines/index.html new file mode 100644 index 00000000..bb6f32bf --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/index.html @@ -0,0 +1,1213 @@ + + + + + + + + + +Viash - Engine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Engine

+
+ + + +
+ + + + +
+ + + +
+ + +

A list of engines to generate target artifacts for.

+ +

Example:

+
engines:
+  - type: docker
+    image: "bash:4.0"
+  - type: native
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/engines/native/index.html b/_versioned/0_8_5/reference/config/engines/native/index.html new file mode 100644 index 00000000..aced44cf --- /dev/null +++ b/_versioned/0_8_5/reference/config/engines/native/index.html @@ -0,0 +1,1228 @@ + + + + + + + + + +Viash - Native Engine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Native Engine

+
+ + + +
+ + + + +
+ + + +
+ + +

Running a Viash component on a native engine means that the script will be executed in your current environment. Any dependencies are assumed to have been installed by the user, so the native engine is meant for developers (who know what they’re doing) or for simple bash scripts (which have no extra dependencies).

+

Example:

+
engines:
+  - type: native
+
+

id

+

Type: String

+

Default: native

+

Name of the engine. As with all engines, you can give an engine a different name. By specifying id: foo, you can target this engine (only) by specifying ... in any of the Viash commands.

+

Examples:

+
id: foo
+
id: foo
+
+
+

type

+

Type: String

+

Specifies the type of the engine.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/environmentVariables.html b/_versioned/0_8_5/reference/config/environmentVariables.html new file mode 100644 index 00000000..ec30485a --- /dev/null +++ b/_versioned/0_8_5/reference/config/environmentVariables.html @@ -0,0 +1,1182 @@ + + + + + + + + + +Viash - Environment Variables + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Environment Variables

+
+ + + +
+ + + + +
+ + + +
+ + +

Viash checks several environment variables during operation.

+
+

VIASH_HOME

+

Type: String

+

If VIASH_HOME is not defined, the fallback HOME/.viash is used.

+

Location where specific downloaded versions of Viash will be cached and run from.

+
+
+

VIASH_VERSION

+

Type: String

+

Default: Empty

+

A specific Viash version can be set to run the commands with. If so required, the specific Viash version will be downloaded. This is useful when replicating older results or building Viash components that use outdated code.

+

Example:

+
VIASH_VERSION=0.7.0 viash ns build
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality.html b/_versioned/0_8_5/reference/config/functionality.html new file mode 100644 index 00000000..a7242eb1 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality.html @@ -0,0 +1,1623 @@ + + + + + + + + + +Viash - Functionality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Functionality

+
+ + + +
+ + + + +
+ + + +
+ + +
+
+
+ +
+
+Warning +
+
+
+

Deprecated since 0.9.0. Planned removal at 0.10.0. Functionality level is deprecated, all functionality fields are now located on the top level of the config file.

+
+
+

The functionality-part of the config file describes the behaviour of the script in terms of arguments and resources. By specifying a few restrictions (e.g. mandatory arguments) and adding some descriptions, Viash will automatically generate a stylish command-line interface for you.

+
+

argument_groups

+

Type: List of ArgumentGroup

+

Default: Empty

+

A grouping of the arguments, used to display the help message.

+
    +
  • name: foo, the name of the argument group.
  • +
  • description: Description of foo, a description of the argument group. Multiline descriptions are supported.
  • +
  • arguments: [arg1, arg2, ...], list of the arguments.
  • +
+

Examples:

+
argument_groups:
+  - name: "Input"
+    arguments:
+      - name: "--id"
+        type: string
+        required: true
+      - name: "--input"
+        type: file
+        required: true
+  - name: "Output"
+    arguments:
+      - name: "--output"
+        type: file
+        direction: output
+        required: true
+      - name: "--output_optional"
+        type: file
+        direction: output
+

This results in the following output when calling the component with the --help argument:

+
component_name
+
+  Input:
+      --id
+          type: string
+
+      --input
+          type: file
+
+  Output:
+      --output
+          type: file
+
+      --optional_output
+          type: file
+
+
+

arguments

+

Type: List of Argument

+

Default: Empty

+

A list of arguments for this component. For each argument, a type and a name must be specified. Depending on the type of argument, different properties can be set. See these reference pages per type for more information:

+ +

Example:

+
arguments:
+  - name: --foo
+    type: file
+    alternatives: [-f]
+    description: Description of foo
+    default: "/foo/bar"
+    must_exist: true
+    direction: output
+    required: false
+    multiple: true
+    multiple_sep: ";"
+  - name: --bar
+    type: string
+
+
+

authors

+

Type: List of Author

+

Default: Empty

+

A list of authors. An author must at least have a name, but can also have a list of roles, an e-mail address, and a map of custom properties.

+

Suggested values for roles are:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RoleAbbrev.Description
maintainermntfor the maintainer of the code. Ideally, exactly one maintainer is specified.
authorautfor persons who have made substantial contributions to the software.
contributorctbfor persons who have made smaller contributions (such as code patches).
datacontributordtcfor persons or organisations that contributed data sets for the software
copyrightholdercphfor all copyright holders. This is a legal concept so should use the legal name of an institution or corporate body.
funderfndfor persons or organizations that furnished financial support for the development of the software
+

The full list of roles is extremely comprehensive.

+

Example:

+
authors:
+  - name: Jane Doe
+    role: [author, maintainer]
+    email: jane@doe.com
+    info:
+      github: janedoe
+      twitter: janedoe
+      orcid: XXAABBCCXX
+      groups: [ one, two, three ]
+  - name: Tim Farbe
+    roles: [author]
+    email: tim@far.be
+
+
+

dependencies

+

Type: List of Dependency

+

Default: Empty

+

Allows listing Viash components required by this Viash component

+

Examples:

+

Full specification of a repository

+
dependencies:
+  - name: qc/multiqc
+    repository: 
+      type: github
+      uri: openpipelines-bio/modules
+      tag: 0.3.0
+

Full specification of a repository using sugar syntax

+
dependencies:
+  - name: qc/multiqc
+    repository: "github://openpipelines-bio/modules:0.3.0"
+

Reference to a repository fully specified under ‘repositories’

+
dependencies:
+  - name: qc/multiqc
+    repository: "openpipelines-bio"
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the component. This will be displayed with --help.

+

Example:

+
description: |
+  This component performs function Y and Z.
+  It is possible to make this a multiline string.
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  twitter: wizzkid
+  classes: [ one, two, three ]
+
+
+

keywords

+

Type: List of String

+

Default: Empty

+

The keywords of the components.

+

Example:

+
keywords: [ bioinformatics, genomics ]
+
+
+

license

+

Type: String

+

Default: Empty

+

The license of the package.

+
+
+
+ +
+
+Note +
+
+
+

When the license field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.

+
+
+

Example:

+
license: MIT
+
+ +
+

name

+

Type: String

+

Name of the component and the filename of the executable when built with viash build.

+

Example:

+
name: this_is_my_component
+
+
+

namespace

+

Type: String

+

Default: Empty

+

Namespace this component is a part of. See the Namespaces guide for more information on namespaces.

+

Example:

+
namespace: fancy_components
+
+
+

organization

+

Type: String

+

Default: Empty

+

The organization of the package.

+
+
+
+ +
+
+Note +
+
+
+

When the organization field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.

+
+
+

Example:

+
organization: viash-io
+
+
+

references

+

Type: References

+

Default: Empty

+

References to external resources related to the component.

+

Example:

+
references:
+  doi: 10.1000/xx.123456.789
+  bibtex: |
+    @article{foo,
+      title={Foo},
+      author={Bar},
+      journal={Baz},
+      year={2024}
+    }
+
+
+

repositories

+

Type: List of RepositoryWithName

+

Default: Empty

+

(Pre-)defines repositories that can be used as repository in dependencies. Allows reusing repository definitions in case it is used in multiple dependencies.

+
+
+
+ +
+
+Note +
+
+
+

Any repositories defined under .repositories in the project config will be prepended to the repositories defined in a component’s configuration of the .functionality.repositories field.

+
+
+

Example:

+
repositories:
+  - name: openpipelines-bio
+    type: github
+    uri: openpipelines-bio/modules
+    tag: 0.3.0
+
+
+

requirements

+

Type: ComputationalRequirements

+

Default: Empty

+

Computational requirements related to running the component. cpus specifies the maximum number of (logical) cpus a component is allowed to use., whereas memory specifies the maximum amount of memory a component is allowed to allicate. Memory units must be in B, KB, MB, GB, TB or PB.

+

Example:

+
requirements:
+  cpus: 5
+  memory: 10GB
+
+
+

resources

+

Type: List of Resource

+

Default: Empty

+

Resources are files that support the component. The first resource should be a script that will be executed when the functionality is run. Additional resources will be copied to the same directory.

+

Common properties:

+
    +
  • type: file / r_script / python_script / bash_script / javascript_script / scala_script / csharp_script, specifies the type of the resource. The first resource cannot be of type file. When the type is not specified, the default type is simply file.
  • +
  • dest: filename, the resulting name of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.
  • +
  • path: path/to/file, the path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.
  • +
  • text: …multiline text…, the content of the resulting file specified as a string. Mutually exclusive with path.
  • +
  • is_executable: true / false, whether the resulting resource file should be made executable.
  • +
+

Example:

+
resources:
+  - type: r_script
+    path: script.R
+  - type: file
+    path: resource1.txt
+
+
+

status

+

Type: Status

+

Default: Enabled

+

Allows setting a component to active, deprecated or disabled.

+
+
+

test_resources

+

Type: List of Resource

+

Default: Empty

+

One or more scripts to be used to test the component behaviour when viash test is invoked. Additional files of type file will be made available only during testing. Each test script should expect no command-line inputs, be platform-independent, and return an exit code >0 when unexpected behaviour occurs during testing. See Unit Testing for more info.

+

Example:

+
test_resources:
+  - type: bash_script
+    path: tests/test1.sh
+  - type: r_script
+    path: tests/test2.R
+  - path: resource1.txt
+
+
+

usage

+

Type: String

+

Default: Empty

+

A description on how to use the component. This will be displayed with --help under the ‘Usage:’ section.

+

Example:

+
usage: Place the executable in a directory containing TSV files and run it
+
+
+

version

+

Type: String

+

Default: Empty

+

Version of the component. This field will be used to version the executable and the Docker container.

+
+
+
+ +
+
+Note +
+
+
+

When the version field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.

+
+
+

Example:

+
version: 0.8
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/argumentGroup.html b/_versioned/0_8_5/reference/config/functionality/argumentGroup.html new file mode 100644 index 00000000..01f33c9d --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/argumentGroup.html @@ -0,0 +1,1160 @@ + + + + + + + + + +Viash - Argument Group + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Argument Group

+
+ + + +
+ + + + +
+ + + +
+ + +

A grouping of the arguments, used to display the help message.

+
+

arguments

+

Type: List of Argument

+

List of arguments.

+
+
+

description

+

Type: String

+

Default: Empty

+

Description of foo`, a description of the argument group. Multiline descriptions are supported.

+
+
+

name

+

Type: String

+

The name of the argument group.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/arguments/boolean.html b/_versioned/0_8_5/reference/config/functionality/arguments/boolean.html new file mode 100644 index 00000000..5fdf6353 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/arguments/boolean.html @@ -0,0 +1,1275 @@ + + + + + + + + + +Viash - Boolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Boolean

+
+ + + +
+ + + + +
+ + + +
+ + +

A boolean type argument has two possible values: true or false.

+

Example:

+
arguments:
+  - name: --trim
+    type: boolean
+    default: true
+    description: Trim whitespace from the final output
+    alternatives: ["-t"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

default

+

Type: Boolean / List of Boolean

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_boolean
+  type: boolean
+  default: true
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: Boolean / List of Boolean

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_boolean
+  type: boolean
+  example: true
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_boolean
+  type: boolean
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_boolean=true:true:false
+
+
+

multiple_sep

+

Type: String

+

Default: :

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_boolean
+  type: boolean
+  multiple: true
+  multiple_sep: ","
+

Here’s an example of how to use this:

+
my_component --my_boolean=true,true,false
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --trim, -t or trim. The number of dashes determines how values can be passed:

+
    +
  • --trim is a long option, which can be passed with executable_name --trim
  • +
  • -t is a short option, which can be passed with executable_name -t
  • +
  • trim is an argument, which can be passed with executable_name trim
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_boolean
+  type: boolean
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/arguments/boolean_false.html b/_versioned/0_8_5/reference/config/functionality/arguments/boolean_false.html new file mode 100644 index 00000000..9e7ce7df --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/arguments/boolean_false.html @@ -0,0 +1,1214 @@ + + + + + + + + + +Viash - Boolean False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Boolean False

+
+ + + +
+ + + + +
+ + + +
+ + +

An argument of the boolean_false type acts like an inverted boolean flag with a default value of true. When called as an argument it sets the boolean to false.

+

Example:

+
arguments:
+  - name: --no-log
+    type: boolean_false
+    description: Disable logging
+    alternatives: ["-nl"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --no-log, -n or no-log. The number of dashes determines how values can be passed:

+
    +
  • --no-log is a long option, which can be passed with executable_name --no-log
  • +
  • -n is a short option, which can be passed with executable_name -n
  • +
  • no-log is an argument, which can be passed with executable_name no-log
  • +
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/arguments/boolean_true.html b/_versioned/0_8_5/reference/config/functionality/arguments/boolean_true.html new file mode 100644 index 00000000..79a153da --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/arguments/boolean_true.html @@ -0,0 +1,1214 @@ + + + + + + + + + +Viash - Boolean True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Boolean True

+
+ + + +
+ + + + +
+ + + +
+ + +

An argument of the boolean_true type acts like a boolean flag with a default value of false. When called as an argument it sets the boolean to true.

+

Example:

+
arguments:
+  - name: --silent
+    type: boolean_true
+    description: Ignore console output
+    alternatives: ["-s"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --silent, -s or silent. The number of dashes determines how values can be passed:

+
    +
  • --silent is a long option, which can be passed with executable_name --silent
  • +
  • -s is a short option, which can be passed with executable_name -s
  • +
  • silent is an argument, which can be passed with executable_name silent
  • +
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/arguments/double.html b/_versioned/0_8_5/reference/config/functionality/arguments/double.html new file mode 100644 index 00000000..014d2c2e --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/arguments/double.html @@ -0,0 +1,1297 @@ + + + + + + + + + +Viash - Double + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Double

+
+ + + +
+ + + + +
+ + + +
+ + +

A double type argument has a numeric value with decimal points

+

Example:

+
arguments:
+  - name: --litres
+    type: double
+    default: 1.5
+    description: Litres of fluid to process
+    alternatives: ["-l"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

default

+

Type: Double / List of Double

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_double
+  type: double
+  default: 5.8
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: Double / List of Double

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_double
+  type: double
+  example: 5.8
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

max

+

Type: Double

+

Default: Empty

+

Maximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.

+

Example:

+
- name: --my_double
+  type: double
+  max: 80.4
+
+
+

min

+

Type: Double

+

Default: Empty

+

Minimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.

+

Example:

+
- name: --my_double
+  type: double
+  min: 25.5
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_double
+  type: double
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_double=5.8:22.6:200.4
+
+
+

multiple_sep

+

Type: String

+

Default: :

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_double
+  type: double
+  multiple: true
+  multiple_sep: ","
+

Here’s an example of how to use this:

+
my_component --my_double=5.8,22.6,200.4
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_double
+  type: double
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/arguments/file.html b/_versioned/0_8_5/reference/config/functionality/arguments/file.html new file mode 100644 index 00000000..d394028e --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/arguments/file.html @@ -0,0 +1,1309 @@ + + + + + + + + + +Viash - File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

File

+
+ + + +
+ + + + +
+ + + +
+ + +

A file type argument has a string value that points to a file or folder path.

+

Example:

+
arguments:
+  - name: --input_csv
+    type: file
+    must_exist: true
+    description: CSV file to read contents from
+    alternatives: ["-i"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

create_parent

+

Type: Boolean

+

Default: True

+

If the output filename is a path and it does not exist, create it before executing the script (only for direction: output).

+

Example:

+
- name: --my_file
+  type: file
+  direction: output
+  create_parent: true
+
+
+

default

+

Type: Path / List of Path

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_file
+  type: file
+  default: data.csv
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

direction

+

Type: Direction

+

Default: Input

+

Makes this argument an input or an output, as in does the file/folder needs to be read or written. input by default.

+

Example:

+
- name: --my_output_file
+  type: file
+  direction: output
+
+
+

example

+

Type: Path / List of Path

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_file
+  type: file
+  example: data.csv
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_files
+  type: file
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_files=firstFile.csv:anotherFile.csv:yetAnother.csv
+
+
+

multiple_sep

+

Type: String

+

Default: :

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_files
+  type: file
+  multiple: true
+  multiple_sep: ","
+

Here’s an example of how to use this:

+
my_component --my_files=firstFile.csv,anotherFile.csv,yetAnother.csv
+
+
+

must_exist

+

Type: Boolean

+

Default: True

+

Checks whether the file or folder exists. For input files, this check will happen before the execution of the script, while for output files the check will happen afterwards.

+

Example:

+
- name: --my_file
+  type: file
+  must_exist: true
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_file
+  type: file
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/arguments/index.html b/_versioned/0_8_5/reference/config/functionality/arguments/index.html new file mode 100644 index 00000000..985c1a09 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/arguments/index.html @@ -0,0 +1,1184 @@ + + + + + + + + + +Viash - Argument + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Argument

+
+ + + +
+ + + + +
+ + + +
+ + +

For each argument, a type and a name must be specified. Depending on the type of argument, different properties can be set. See these reference pages per type for more information:

+ +

Example:

+
arguments:
+  - name: --foo
+    type: file
+    alternatives: [-f]
+    description: Description of foo
+    default: "/foo/bar"
+    must_exist: true
+    direction: output
+    required: false
+    multiple: true
+    multiple_sep: ","
+  - name: --bar
+    type: string
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/arguments/integer.html b/_versioned/0_8_5/reference/config/functionality/arguments/integer.html new file mode 100644 index 00000000..291514e9 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/arguments/integer.html @@ -0,0 +1,1308 @@ + + + + + + + + + +Viash - Integer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Integer

+
+ + + +
+ + + + +
+ + + +
+ + +

An integer type argument has a numeric value without decimal points.

+

Example:

+
arguments:
+  - name: --core_amount
+    type: integer
+    default: 16
+    description: Amount of CPU cores to use
+    alternatives: ["-c"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

choices

+

Type: List of Int

+

Default: Empty

+

Limit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.

+

Example:

+
- name: --values
+  type: integer
+  choices: [1024, 2048, 4096]
+
+
+

default

+

Type: Int / List of Int

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_integer
+  type: integer
+  default: 100
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: Int / List of Int

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_integer
+  type: integer
+  example: 100
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

max

+

Type: Int

+

Default: Empty

+

Maximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.

+

Example:

+
- name: --my_integer
+  type: integer
+  max: 150
+
+
+

min

+

Type: Int

+

Default: Empty

+

Minimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.

+

Example:

+
- name: --my_integer
+  type: integer
+  min: 50
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_integer
+  type: integer
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_integer=10:80:152
+
+
+

multiple_sep

+

Type: String

+

Default: :

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_integer
+  type: integer
+  multiple: true
+  multiple_sep: ","
+

Here’s an example of how to use this:

+
my_component --my_integer=10:80:152
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_integer
+  type: integer
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/arguments/long.html b/_versioned/0_8_5/reference/config/functionality/arguments/long.html new file mode 100644 index 00000000..5c65f31e --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/arguments/long.html @@ -0,0 +1,1308 @@ + + + + + + + + + +Viash - Long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Long

+
+ + + +
+ + + + +
+ + + +
+ + +

An long type argument has a numeric value without decimal points.

+

Example:

+
arguments:
+  - name: --core_amount
+    type: long
+    default: 16
+    description: Amount of CPU cores to use
+    alternatives: ["-c"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

choices

+

Type: List of Long

+

Default: Empty

+

Limit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.

+

Example:

+
- name: --values
+  type: long
+  choices: [1024, 2048, 4096]
+
+
+

default

+

Type: Long / List of Long

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_long
+  type: long
+  default: 100
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: Long / List of Long

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_long
+  type: long
+  example: 100
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

max

+

Type: Long

+

Default: Empty

+

Maximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.

+

Example:

+
- name: --my_long
+  type: long
+  max: 150
+
+
+

min

+

Type: Long

+

Default: Empty

+

Minimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.

+

Example:

+
- name: --my_long
+  type: long
+  min: 50
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_long
+  type: long
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_long=10:80:152
+
+
+

multiple_sep

+

Type: String

+

Default: :

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_long
+  type: long
+  multiple: true
+  multiple_sep: ","
+

Here’s an example of how to use this:

+
my_component --my_long=10:80:152
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: False

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_long
+  type: long
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/arguments/string.html b/_versioned/0_8_5/reference/config/functionality/arguments/string.html new file mode 100644 index 00000000..cd95fc8c --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/arguments/string.html @@ -0,0 +1,1286 @@ + + + + + + + + + +Viash - String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

String

+
+ + + +
+ + + + +
+ + + +
+ + +

A string type argument has a value made up of an ordered sequences of characters, like “Hello” or “I’m a string”.

+

Example:

+
arguments:
+  - name: --search_query
+    type: string
+    default: "meaning of life"
+    description: The term to search for
+    alternatives: ["-q"]
+
+

alternatives

+

Type: String / List of String

+

Default: Empty

+

List of alternative format variations for this argument.

+
+
+

choices

+

Type: List of String

+

Default: Empty

+

Limit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.

+

Example:

+
- name: --language
+  type: string
+  choices: ["python", "r", "javascript"]
+
+
+

default

+

Type: String / List of String

+

Default: Empty

+

The default value when no argument value is provided. This will not work if the required property is enabled.

+

Example:

+
- name: --my_string
+  type: string
+  default: "The answer is 42"
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the argument. This will be displayed with --help.

+
+
+

example

+

Type: String / List of String

+

Default: Empty

+

An example value for this argument. If no default property was specified, this will be used for that purpose.

+

Example:

+
- name: --my_string
+  type: string
+  example: "Hello World"
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  category: cat1
+  labels: [one, two, three]
+
+
+

multiple

+

Type: Boolean

+

Default: False

+

Treat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.

+

Examples:

+
- name: --my_string
+  type: string
+  multiple: true
+

Here’s an example of how to use this:

+
my_component --my_string=Marc:Susan:Paul
+
+
+

multiple_sep

+

Type: String

+

Default: :

+

The delimiter character for providing multiple values. : by default.

+

Examples:

+
- name: --my_string
+  type: string
+  multiple: true
+  multiple_sep: ","
+

Here’s an example of how to use this:

+
my_component --my_string=Marc,Susan,Paul
+
+
+

name

+

Type: String

+

The name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:

+
    +
  • --foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value
  • +
  • -f is a short option, which can be passed with executable_name -f value
  • +
  • foo is an argument, which can be passed with executable_name value
  • +
+
+
+

required

+

Type: Boolean

+

Default: Empty

+

Make the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.

+

Example:

+
- name: --my_string
+  type: string
+  required: true
+
+
+

type

+

Type: String

+

Specifies the type of the argument.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/author.html b/_versioned/0_8_5/reference/config/functionality/author.html new file mode 100644 index 00000000..0f2ce05e --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/author.html @@ -0,0 +1,1227 @@ + + + + + + + + + +Viash - Author + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Author

+
+ + + +
+ + + + +
+ + + +
+ + +

Author metadata.

+

Example:

+
name: Jane Doe
+role: [author, maintainer]
+email: jane@doe.com
+info:
+  github: janedoe
+  twitter: janedoe
+  orcid: XXAABBCCXX
+  groups: [ one, two, three ]
+
+

email

+

Type: String

+

Default: Empty

+

E-mail of the author.

+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+
+
+

name

+

Type: String

+

Full name of the author, usually in the name of FirstName MiddleName LastName.

+
+
+

props

+

Type: Map of String to String

+

Default: Empty

+
+
+
+ +
+
+Warning +
+
+
+

Deprecated since 0.7.4. Removed since 0.8.0. Use info instead.

+
+
+

Author properties. Must be a map of strings.

+
+
+

roles

+

Type: String / List of String

+

Default: Empty

+

Role of the author. Suggested items:

+
    +
  • "author": Authors who have made substantial contributions to the component.
  • +
  • "maintainer": The maintainer of the component.
  • +
  • "contributor": Authors who have made smaller contributions (such as code patches etc.).
  • +
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/computationalRequirements.html b/_versioned/0_8_5/reference/config/functionality/computationalRequirements.html new file mode 100644 index 00000000..b490decf --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/computationalRequirements.html @@ -0,0 +1,1202 @@ + + + + + + + + + +Viash - Computational Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Computational Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Computational requirements related to running the component.

+
+

commands

+

Type: List of String

+

Default: Empty

+

A list of commands which should be present on the system for the script to function.

+

Example:

+
commands: [ which, bash, awk, date, grep, egrep, ps, sed, tail, tee ]
+
+
+

cpus

+

Type: Int

+

Default: Empty

+

The maximum number of (logical) cpus a component is allowed to use.

+

Example:

+
cpus: 10
+
+
+

memory

+

Type: String

+

Default: Empty

+

The maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.

+

Example:

+
memory: 10GB
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/gitRepository.html b/_versioned/0_8_5/reference/config/functionality/dependencies/gitRepository.html new file mode 100644 index 00000000..4b5987f8 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/gitRepository.html @@ -0,0 +1,1288 @@ + + + + + + + + + +Viash - Git Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Git Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

A Git repository where remote dependency components can be found.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: git
+uri: git+https://github.com/openpipelines-bio/openpipeline.git
+tag: 0.8.0
+

Example without name field in case used in .functionality.dependencies

+
type: git
+uri: git+https://gitlab.com/viash-io/viash.git
+tag: 0.7.1
+path: src/test/resources/testns
+

Example with name field in case used in .functionality.repositories

+
name: openpipeline
+type: git
+uri: git+https://github.com/openpipelines-bio/openpipeline.git
+tag: 0.8.0
+

Example with name field in case used in .functionality.repositories

+
name: viash-testns
+type: git
+uri: git+https://gitlab.com/viash-io/viash.git
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a Git repository.

+
+
+

uri

+

Type: String

+

The URI of the Git repository.

+

Example:

+
uri: "git+https://github.com/openpipelines-bio/openpipeline.git"
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/gitRepositoryWithName.html b/_versioned/0_8_5/reference/config/functionality/dependencies/gitRepositoryWithName.html new file mode 100644 index 00000000..72edd493 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/gitRepositoryWithName.html @@ -0,0 +1,1121 @@ + + + + + + + + + +Viash - Git Repository With Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Git Repository With Name

+
+ + + +
+ + + + +
+ + +
+ +

A Git repository where remote dependency components can be found.

+

Examples:

+
name: openpipeline
+type: git
+uri: git+https://github.com/openpipelines-bio/openpipeline.git
+tag: 0.8.0
+
name: viash-testns
+type: git
+uri: git+https://gitlab.com/viash-io/viash.git
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a Git repository.

+
+
+

uri

+

Type: String

+

The URI of the Git repository.

+

Example:

+
uri: "git+https://github.com/openpipelines-bio/openpipeline.git"
+ + +
+ +
+ + + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/githubRepository.html b/_versioned/0_8_5/reference/config/functionality/dependencies/githubRepository.html new file mode 100644 index 00000000..0302b503 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/githubRepository.html @@ -0,0 +1,1288 @@ + + + + + + + + + +Viash - Github Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Github Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

A GitHub repository where remote dependency components can be found.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: github
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example without name field in case used in .functionality.dependencies

+
type: github
+repo: viash-io/viash
+tag: 0.7.1
+path: src/test/resources/testns
+

Example with name field in case used in .functionality.repositories

+
name: openpipeline
+type: github
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example with name field in case used in .functionality.repositories

+
name: viash-testns
+type: github
+repo: viash-io/viash
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

repo

+

Type: String

+

The name of the GitHub repository.

+

Example:

+
repo: viash-io/viash
+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a GitHub repository.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/githubRepositoryWithName.html b/_versioned/0_8_5/reference/config/functionality/dependencies/githubRepositoryWithName.html new file mode 100644 index 00000000..ac21d027 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/githubRepositoryWithName.html @@ -0,0 +1,1121 @@ + + + + + + + + + +Viash - Github Repository With Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Github Repository With Name

+
+ + + +
+ + + + +
+ + +
+ +

A GitHub repository where remote dependency components can be found.

+

Examples:

+
name: openpipeline
+type: github
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+
name: viash-testns
+type: github
+repo: viash-io/viash
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

repo

+

Type: String

+

The name of the GitHub repository.

+

Example:

+
repo: viash-io/viash
+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a GitHub repository.

+ + +
+ +
+ + + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/index.html b/_versioned/0_8_5/reference/config/functionality/dependencies/index.html new file mode 100644 index 00000000..1ad9fffe --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/index.html @@ -0,0 +1,1205 @@ + + + + + + + + + +Viash - Dependency + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Dependency

+
+ + + +
+ + + + +
+ + + +
+ + +

Specifies a Viash component (script or executable) that should be made available for the code defined in the functionality. The dependency components are collected and copied to the output folder during the Viash build step.

+

Examples:

+

Definition of dependency with a fully defined repository

+
name: qc/multiqc
+repository: 
+  type: github
+  repo: openpipelines-bio/modules
+  tag: 0.3.0
+

Definition of a dependency with a repository using sugar syntax.

+
name: qc/multiqc
+repository: "github://openpipelines-bio/modules:0.3.0"
+

Definition of a dependency with a repository defined as ‘openpipelines-bio’ under .functionality.repositories.

+
name: qc/multiqc
+repository: "openpipelines-bio"
+

Definition of a local dependency. This dependency is present in the current code base and will be built when viash ns build is run.

+
name: qc/multiqc
+
+

alias

+

Type: String

+

Default: Empty

+

An alternative name for the dependency component. This can include a namespace if so needed.

+

Example:

+
alias: my_alias
+
+
+

name

+

Type: String

+

The full name of the dependency component. This should include the namespace.

+

Example:

+
name: "my_namespace"component
+
+
+

repository

+

Type: Either - String - Repository

+

Default: Empty

+

Specifies the repository location where the dependency component can be found. This must either be a full definition of the repository or the name of a repository referenced as it is defined under functionality.repositories. Additionally, the full definition can be specified as a single string where all parameters such as repository type, url, branch or tag are specified. Omitting the value sets the dependency as a local dependency, ie. the dependency is available in the same namespace as the component.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/localRepository.html b/_versioned/0_8_5/reference/config/functionality/dependencies/localRepository.html new file mode 100644 index 00000000..6c4ed06d --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/localRepository.html @@ -0,0 +1,1267 @@ + + + + + + + + + +Viash - Local Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Local Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

Defines a locally present and available repository. This can be used to define components from the same code base as the current component. Alternatively, this can be used to refer to a code repository present on the local hard-drive instead of fetchable remotely, for example during development.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: local
+path: /additional_code/src
+

Example with name field in case used in .functionality.repositories

+
name: my_local_code
+type: local
+path: /additional_code/src
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a locally present and available repository.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/localRepositoryWithName.html b/_versioned/0_8_5/reference/config/functionality/dependencies/localRepositoryWithName.html new file mode 100644 index 00000000..6b89b53c --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/localRepositoryWithName.html @@ -0,0 +1,1108 @@ + + + + + + + + + +Viash - Local Repository With Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Local Repository With Name

+
+ + + +
+ + + + +
+ + +
+ +

Defines a locally present and available repository. This can be used to define components from the same code base as the current component. Alternatively, this can be used to refer to a code repository present on the local hard-drive instead of fetchable remotely, for example during development.

+

Example:

+

Refer to a local code repository under additional_code/src referenced to the Viash Project Config file.

+
name: my_local_code
+type: local
+path: /additional_code/src
+
+

name

+

Type: String

+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository type. This determines how the repository will be fetched and handled.

+ + +
+ +
+ + + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/repository.html b/_versioned/0_8_5/reference/config/functionality/dependencies/repository.html new file mode 100644 index 00000000..fd903ffc --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/repository.html @@ -0,0 +1,1038 @@ + + + + + + + + + +Viash - Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Repository

+
+ + + +
+ + + + +
+ + +
+ +

Specifies a repository where dependency components can be found.

+ + + +
+ + + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/repositoryWithName.html b/_versioned/0_8_5/reference/config/functionality/dependencies/repositoryWithName.html new file mode 100644 index 00000000..7a6045ec --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/repositoryWithName.html @@ -0,0 +1,1038 @@ + + + + + + + + + +Viash - Repository With Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Repository With Name

+
+ + + +
+ + + + +
+ + +
+ +

Specifies a repository where dependency components can be found.

+ + + +
+ + + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/viashhubRepository.html b/_versioned/0_8_5/reference/config/functionality/dependencies/viashhubRepository.html new file mode 100644 index 00000000..1f9519b2 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/viashhubRepository.html @@ -0,0 +1,1288 @@ + + + + + + + + + +Viash - Viashhub Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viashhub Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

A Viash-Hub repository where remote dependency components can be found.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example without name field in case used in .functionality.dependencies

+
type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.7.1
+path: src/test/resources/testns
+

Example with name field in case used in .functionality.repositories

+
name: openpipeline
+type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example with name field in case used in .functionality.repositories

+
name: viash-testns
+type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

repo

+

Type: String

+

The name of the Viash-Hub repository.

+

Example:

+
repo: openpipelines-bio/openpipeline
+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a Viash-Hub repository.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/dependencies/viashhubRepositoryWithName.html b/_versioned/0_8_5/reference/config/functionality/dependencies/viashhubRepositoryWithName.html new file mode 100644 index 00000000..38e72d24 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/dependencies/viashhubRepositoryWithName.html @@ -0,0 +1,1121 @@ + + + + + + + + + +Viash - Viashhub Repository With Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viashhub Repository With Name

+
+ + + +
+ + + + +
+ + +
+ +

A Viash-Hub repository where remote dependency components can be found.

+

Examples:

+
name: openpipeline
+type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+
name: viash-testns
+type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

repo

+

Type: String

+

The name of the Viash-Hub repository.

+

Example:

+
repo: openpipelines-bio/openpipeline
+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a Viash-Hub repository.

+ + +
+ +
+ + + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/index.html b/_versioned/0_8_5/reference/config/functionality/index.html new file mode 100644 index 00000000..9a394650 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/index.html @@ -0,0 +1,1466 @@ + + + + + + + + + +Viash - Functionality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Functionality

+
+ + + +
+ + + + +
+ + + +
+ + +

The functionality-part of the config file describes the behaviour of the script in terms of arguments and resources. By specifying a few restrictions (e.g. mandatory arguments) and adding some descriptions, Viash will automatically generate a stylish command-line interface for you.

+
+

argument_groups

+

Type: List of ArgumentGroup

+

Default: Empty

+

A grouping of the arguments, used to display the help message.

+
    +
  • name: foo, the name of the argument group.
  • +
  • description: Description of foo, a description of the argument group. Multiline descriptions are supported.
  • +
  • arguments: [arg1, arg2, ...], list of the arguments.
  • +
+

Examples:

+
argument_groups:
+  - name: "Input"
+    arguments:
+      - name: "--id"
+        type: string
+        required: true
+      - name: "--input"
+        type: file
+        required: true
+  - name: "Output"
+    arguments:
+      - name: "--output"
+        type: file
+        direction: output
+        required: true
+      - name: "--output_optional"
+        type: file
+        direction: output
+

This results in the following output when calling the component with the --help argument:

+
component_name
+
+  Input:
+      --id
+          type: string
+
+      --input
+          type: file
+
+  Output:
+      --output
+          type: file
+
+      --optional_output
+          type: file
+
+
+

arguments

+

Type: List of Argument

+

Default: Empty

+

A list of arguments for this component. For each argument, a type and a name must be specified. Depending on the type of argument, different properties can be set. See these reference pages per type for more information:

+ +

Example:

+
arguments:
+  - name: --foo
+    type: file
+    alternatives: [-f]
+    description: Description of foo
+    default: "/foo/bar"
+    must_exist: true
+    direction: output
+    required: false
+    multiple: true
+    multiple_sep: ","
+  - name: --bar
+    type: string
+
+
+

authors

+

Type: List of Author

+

Default: Empty

+

A list of authors. An author must at least have a name, but can also have a list of roles, an e-mail address, and a map of custom properties.

+

Suggested values for roles are:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RoleAbbrev.Description
maintainermntfor the maintainer of the code. Ideally, exactly one maintainer is specified.
authorautfor persons who have made substantial contributions to the software.
contributorctbfor persons who have made smaller contributions (such as code patches).
datacontributordtcfor persons or organisations that contributed data sets for the software
copyrightholdercphfor all copyright holders. This is a legal concept so should use the legal name of an institution or corporate body.
funderfndfor persons or organizations that furnished financial support for the development of the software
+

The full list of roles is extremely comprehensive.

+

Example:

+
authors:
+  - name: Jane Doe
+    role: [author, maintainer]
+    email: jane@doe.com
+    info:
+      github: janedoe
+      twitter: janedoe
+      orcid: XXAABBCCXX
+      groups: [ one, two, three ]
+  - name: Tim Farbe
+    roles: [author]
+    email: tim@far.be
+
+
+

dependencies

+

Type: List of Dependency

+

Default: Empty

+

Allows listing Viash components required by this Viash component

+

Examples:

+

Full specification of a repository

+
dependencies:
+  - name: qc/multiqc
+    repository: 
+      type: github
+      uri: openpipelines-bio/modules
+      tag: 0.3.0
+

Full specification of a repository using sugar syntax

+
dependencies:
+  - name: qc/multiqc
+    repository: "github://openpipelines-bio/modules:0.3.0"
+

Reference to a repository fully specified under ‘repositories’

+
dependencies:
+  - name: qc/multiqc
+    repository: "openpipelines-bio"
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the component. This will be displayed with --help.

+

Example:

+
description: |
+  This component performs function Y and Z.
+  It is possible to make this a multiline string.
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  twitter: wizzkid
+  classes: [ one, two, three ]
+
+
+

name

+

Type: String

+

Name of the component and the filename of the executable when built with viash build.

+

Example:

+
name: this_is_my_component
+
+
+

namespace

+

Type: String

+

Default: Empty

+

Namespace this component is a part of. See the Namespaces guide for more information on namespaces.

+

Example:

+
namespace: fancy_components
+
+
+

repositories

+

Type: List of RepositoryWithName

+

Default: Empty

+

(Pre-)defines repositories that can be used as repository in dependencies. Allows reusing repository definitions in case it is used in multiple dependencies.

+

Example:

+
repositories:
+  - name: openpipelines-bio
+    type: github
+    uri: openpipelines-bio/modules
+    tag: 0.3.0
+
+
+

requirements

+

Type: ComputationalRequirements

+

Default: Empty

+

Computational requirements related to running the component. cpus specifies the maximum number of (logical) cpus a component is allowed to use., whereas memory specifies the maximum amount of memory a component is allowed to allicate. Memory units must be in B, KB, MB, GB, TB or PB.

+

Example:

+
requirements:
+  cpus: 5
+  memory: 10GB
+
+
+

resources

+

Type: List of Resource

+

Default: Empty

+

Resources are files that support the component. The first resource should be a script that will be executed when the functionality is run. Additional resources will be copied to the same directory.

+

Common properties:

+
    +
  • type: file / r_script / python_script / bash_script / javascript_script / scala_script / csharp_script, specifies the type of the resource. The first resource cannot be of type file. When the type is not specified, the default type is simply file.
  • +
  • dest: filename, the resulting name of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.
  • +
  • path: path/to/file, the path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.
  • +
  • text: …multiline text…, the content of the resulting file specified as a string. Mutually exclusive with path.
  • +
  • is_executable: true / false, whether the resulting resource file should be made executable.
  • +
+

Example:

+
resources:
+  - type: r_script
+    path: script.R
+  - type: file
+    path: resource1.txt
+
+
+

status

+

Type: Status

+

Default: Enabled

+

Allows setting a component to active, deprecated or disabled.

+
+
+

test_resources

+

Type: List of Resource

+

Default: Empty

+

One or more scripts to be used to test the component behaviour when viash test is invoked. Additional files of type file will be made available only during testing. Each test script should expect no command-line inputs, be platform-independent, and return an exit code >0 when unexpected behaviour occurs during testing. See Unit Testing for more info.

+

Example:

+
test_resources:
+  - type: bash_script
+    path: tests/test1.sh
+  - type: r_script
+    path: tests/test2.R
+  - path: resource1.txt
+
+
+

usage

+

Type: String

+

Default: Empty

+

A description on how to use the component. This will be displayed with --help under the ‘Usage:’ section.

+

Example:

+
usage: Place the executable in a directory containing TSV files and run it
+
+
+

version

+

Type: String

+

Default: Empty

+

Version of the component. This field will be used to version the executable and the Docker container.

+

Example:

+
version: 0.8
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/links.html b/_versioned/0_8_5/reference/config/functionality/links.html new file mode 100644 index 00000000..0ad23ad2 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/links.html @@ -0,0 +1,1302 @@ + + + + + + + + + +Viash - Links + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Links

+
+ + + +
+ + + + +
+ + + +
+ + +

Links to external resources related to the component.

+

Example:

+
repository: "https://github.com/viash-io/viash"
+docker_registry: "https://ghcr.io"
+homepage: "https://viash.io"
+documentation: "https://viash.io/reference/"
+issue_tracker: "https://github.com/viash-io/viash/issues"
+
+

docker_registry

+

Type: String

+

Default: Empty

+

Docker registry url.

+
+
+
+ +
+
+Note +
+
+
+

When the docker_registry field is left empty in a component’s .functionality.links configuration, the value of .links.repository in the project config will be copied during build.

+
+
+

Example:

+
docker_registry: "https://ghcr.io"
+
+
+

documentation

+

Type: String

+

Default: Empty

+

Documentation website url.

+

Example:

+
documentation: "https://viash.io/reference/"
+
+
+

homepage

+

Type: String

+

Default: Empty

+

Homepage website url.

+

Example:

+
homepage: "https://viash.io"
+
+
+

issue_tracker

+

Type: String

+

Default: Empty

+

Issue tracker url.

+

Example:

+
issue_tracker: "https://github.com/viash-io/viash/issues"
+
+
+

repository

+

Type: String

+

Default: Empty

+

Source repository url.

+
+
+
+ +
+
+Note +
+
+
+

When the repository field is left empty in a component’s .functionality.links configuration, the value of .links.repository in the project config will be copied during build.

+
+
+

Example:

+
repository: "https://github.com/viash-io/viash"
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/repositories/gitRepository.html b/_versioned/0_8_5/reference/config/functionality/repositories/gitRepository.html new file mode 100644 index 00000000..0260eed6 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/repositories/gitRepository.html @@ -0,0 +1,1235 @@ + + + + + + + + + +Viash - Git Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Git Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

A Git repository where remote dependency components can be found.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: git
+uri: git+https://github.com/openpipelines-bio/openpipeline.git
+tag: 0.8.0
+

Example without name field in case used in .functionality.dependencies

+
type: git
+uri: git+https://gitlab.com/viash-io/viash.git
+tag: 0.7.1
+path: src/test/resources/testns
+

Example with name field in case used in .functionality.repositories

+
name: openpipeline
+type: git
+uri: git+https://github.com/openpipelines-bio/openpipeline.git
+tag: 0.8.0
+

Example with name field in case used in .functionality.repositories

+
name: viash-testns
+type: git
+uri: git+https://gitlab.com/viash-io/viash.git
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a Git repository.

+
+
+

uri

+

Type: String

+

The URI of the Git repository.

+

Example:

+
uri: "git+https://github.com/openpipelines-bio/openpipeline.git"
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/repositories/githubRepository.html b/_versioned/0_8_5/reference/config/functionality/repositories/githubRepository.html new file mode 100644 index 00000000..0d960497 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/repositories/githubRepository.html @@ -0,0 +1,1235 @@ + + + + + + + + + +Viash - Github Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Github Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

A GitHub repository where remote dependency components can be found.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: github
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example without name field in case used in .functionality.dependencies

+
type: github
+repo: viash-io/viash
+tag: 0.7.1
+path: src/test/resources/testns
+

Example with name field in case used in .functionality.repositories

+
name: openpipeline
+type: github
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example with name field in case used in .functionality.repositories

+
name: viash-testns
+type: github
+repo: viash-io/viash
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

repo

+

Type: String

+

The name of the GitHub repository.

+

Example:

+
repo: viash-io/viash
+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a GitHub repository.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/repositories/index.html b/_versioned/0_8_5/reference/config/functionality/repositories/index.html new file mode 100644 index 00000000..456f66ca --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/repositories/index.html @@ -0,0 +1,1173 @@ + + + + + + + + + +Viash - Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

Specifies a repository where dependency components can be found.

+ +

Example:

+
repositories:
+  - name: openpipelines-bio
+    type: github
+    uri: openpipelines-bio/modules
+    tag: 0.3.0
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/repositories/localRepository.html b/_versioned/0_8_5/reference/config/functionality/repositories/localRepository.html new file mode 100644 index 00000000..fd59cfec --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/repositories/localRepository.html @@ -0,0 +1,1214 @@ + + + + + + + + + +Viash - Local Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Local Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

Defines a locally present and available repository. This can be used to define components from the same code base as the current component. Alternatively, this can be used to refer to a code repository present on the local hard-drive instead of fetchable remotely, for example during development.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: local
+path: /additional_code/src
+

Example with name field in case used in .functionality.repositories

+
name: my_local_code
+type: local
+path: /additional_code/src
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a locally present and available repository.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/repositories/viashhubRepository.html b/_versioned/0_8_5/reference/config/functionality/repositories/viashhubRepository.html new file mode 100644 index 00000000..c0fd6f18 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/repositories/viashhubRepository.html @@ -0,0 +1,1235 @@ + + + + + + + + + +Viash - Viashhub Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viashhub Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

A Viash-Hub repository where remote dependency components can be found.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example without name field in case used in .functionality.dependencies

+
type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.7.1
+path: src/test/resources/testns
+

Example with name field in case used in .functionality.repositories

+
name: openpipeline
+type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example with name field in case used in .functionality.repositories

+
name: viash-testns
+type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

repo

+

Type: String

+

The name of the Viash-Hub repository.

+

Example:

+
repo: openpipelines-bio/openpipeline
+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a Viash-Hub repository.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/bashScript.html b/_versioned/0_8_5/reference/config/functionality/resources/bashScript.html new file mode 100644 index 00000000..352616ec --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/bashScript.html @@ -0,0 +1,1166 @@ + + + + + + + + + +Viash - Bash Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Bash Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable Bash script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a Bash script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/cSharpScript.html b/_versioned/0_8_5/reference/config/functionality/resources/cSharpScript.html new file mode 100644 index 00000000..e0638e3d --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/cSharpScript.html @@ -0,0 +1,1166 @@ + + + + + + + + + +Viash - C# Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

C# Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable C# script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a C# script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/executable.html b/_versioned/0_8_5/reference/config/functionality/resources/executable.html new file mode 100644 index 00000000..c109d419 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/executable.html @@ -0,0 +1,1166 @@ + + + + + + + + + +Viash - Executable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Executable

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable file.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as an executable.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/index.html b/_versioned/0_8_5/reference/config/functionality/resources/index.html new file mode 100644 index 00000000..abf3351e --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/index.html @@ -0,0 +1,1175 @@ + + + + + + + + + +Viash - Resource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Resource

+
+ + + +
+ + + + +
+ + + +
+ + +

Resources are files that support the component. The first resource should be a script that will be executed when the functionality is run. Additional resources will be copied to the same directory.

+

Common properties:

+ +

Example:

+
resources:
+  - type: r_script
+    path: script.R
+  - type: file
+    path: resource1.txt
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/javaScriptScript.html b/_versioned/0_8_5/reference/config/functionality/resources/javaScriptScript.html new file mode 100644 index 00000000..d7b89150 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/javaScriptScript.html @@ -0,0 +1,1166 @@ + + + + + + + + + +Viash - JavaScript Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

JavaScript Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable JavaScript script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a JavaScript script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/nextflowScript.html b/_versioned/0_8_5/reference/config/functionality/resources/nextflowScript.html new file mode 100644 index 00000000..837a4d45 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/nextflowScript.html @@ -0,0 +1,1172 @@ + + + + + + + + + +Viash - Nextflow Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Script

+
+ + + +
+ + + + +
+ + + +
+ + +

A Nextflow script. Work in progress; added mainly for annotation at the moment.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

entrypoint

+

Type: String

+

The name of the workflow to be wrapped.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a Nextflow script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/plainFile.html b/_versioned/0_8_5/reference/config/functionality/resources/plainFile.html new file mode 100644 index 00000000..0a361417 --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/plainFile.html @@ -0,0 +1,1166 @@ + + + + + + + + + +Viash - Plain File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Plain File

+
+ + + +
+ + + + +
+ + + +
+ + +

A plain file. This can only be used as a supporting resource for the main script or unit tests.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a plain file.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/pythonScript.html b/_versioned/0_8_5/reference/config/functionality/resources/pythonScript.html new file mode 100644 index 00000000..9c56d72d --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/pythonScript.html @@ -0,0 +1,1166 @@ + + + + + + + + + +Viash - Python Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Python Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable Python script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a Python script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/rScript.html b/_versioned/0_8_5/reference/config/functionality/resources/rScript.html new file mode 100644 index 00000000..9fce325f --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/rScript.html @@ -0,0 +1,1166 @@ + + + + + + + + + +Viash - R Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

R Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable R script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a R script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/functionality/resources/scalaScript.html b/_versioned/0_8_5/reference/config/functionality/resources/scalaScript.html new file mode 100644 index 00000000..4c0c363e --- /dev/null +++ b/_versioned/0_8_5/reference/config/functionality/resources/scalaScript.html @@ -0,0 +1,1166 @@ + + + + + + + + + +Viash - Scala Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scala Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable Scala script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a Scala script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/index.html b/_versioned/0_8_5/reference/config/index.html new file mode 100644 index 00000000..4661a7a4 --- /dev/null +++ b/_versioned/0_8_5/reference/config/index.html @@ -0,0 +1,1207 @@ + + + + + + + + + +Viash - Config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Config

+
+ + + +
+ + + + +
+ + + +
+ + +

A Viash configuration is a YAML file which contains metadata to describe the behaviour and build target(s) of a component.
+We commonly name this file config.vsh.yaml in our examples, but you can name it however you choose.

+

Example:

+
functionality:
+  name: hello_world
+  arguments:
+    - type: string
+      name: --input
+      default: "world"
+  resources:
+    - type: bash_script
+      path: script.sh
+      text: echo Hello $par_input
+platforms:
+  - type: docker
+    image: "bash:4.0"
+
+

__merge__

+

Type: File

+

Default: Empty

+

Config inheritance by including YAML partials. This is useful for defining common APIs in separate files. __merge__ can be used in any level of the YAML. For example, not just in the config but also in the functionality or any of the platforms.

+

Example:

+
__merge__: ../api/common_interface.yaml
+
+
+

functionality

+

Type: Functionality

+

The functionality describes the behaviour of the script in terms of arguments and resources. By specifying a few restrictions (e.g. mandatory arguments) and adding some descriptions, Viash will automatically generate a stylish command-line interface for you.

+
+
+

platforms

+

Type: List of Platform

+

A list of platforms to generate target artifacts for.

+ + + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/info.html b/_versioned/0_8_5/reference/config/info.html new file mode 100644 index 00000000..610fc4fe --- /dev/null +++ b/_versioned/0_8_5/reference/config/info.html @@ -0,0 +1,1187 @@ + + + + + + + + + +Viash - Info + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Info

+
+ + + +
+ + + + +
+ + + +
+ + +

Meta information fields filled in by Viash during build.

+
+

config

+

Type: String

+

Path to the config used during build.

+
+
+

executable

+

Type: String

+

Default: Empty

+

Output folder with main executable path.

+
+
+

git_commit

+

Type: String

+

Default: Empty

+

Git commit hash.

+
+
+

git_remote

+

Type: String

+

Default: Empty

+

Git remote name.

+
+
+

git_tag

+

Type: String

+

Default: Empty

+

Git tag.

+
+
+

output

+

Type: String

+

Default: Empty

+

Folder path to the build artifacts.

+
+
+

platform

+

Type: String

+

Default: Empty

+

The platform id used during build.

+
+
+

viash_version

+

Type: String

+

Default: Empty

+

The Viash version that was used to build the component.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/links.html b/_versioned/0_8_5/reference/config/links.html new file mode 100644 index 00000000..775bb8ab --- /dev/null +++ b/_versioned/0_8_5/reference/config/links.html @@ -0,0 +1,1286 @@ + + + + + + + + + +Viash - Links + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Links

+
+ + + +
+ + + + +
+ + + +
+ + +

Links to external resources related to the component.

+

Example:

+
repository: "https://github.com/viash-io/viash"
+docker_registry: "https://ghcr.io"
+homepage: "https://viash.io"
+documentation: "https://viash.io/reference/"
+issue_tracker: "https://github.com/viash-io/viash/issues"
+
+

docker_registry

+

Type: String

+

Default: Empty

+

Docker registry url.

+
+
+
+ +
+
+Note +
+
+
+

When the docker_registry field is left empty in a component’s .functionality.links configuration, the value of .links.repository in the project config will be copied during build.

+
+
+

Example:

+
docker_registry: "https://ghcr.io"
+
+
+

documentation

+

Type: String

+

Default: Empty

+

Documentation website url.

+

Example:

+
documentation: "https://viash.io/reference/"
+
+
+

homepage

+

Type: String

+

Default: Empty

+

Homepage website url.

+

Example:

+
homepage: "https://viash.io"
+
+
+

issue_tracker

+

Type: String

+

Default: Empty

+

Issue tracker url.

+

Example:

+
issue_tracker: "https://github.com/viash-io/viash/issues"
+
+
+

repository

+

Type: String

+

Default: Empty

+

Source repository url.

+
+
+
+ +
+
+Note +
+
+
+

When the repository field is left empty in a component’s .functionality.links configuration, the value of .links.repository in the project config will be copied during build.

+
+
+

Example:

+
repository: "https://github.com/viash-io/viash"
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/index.html b/_versioned/0_8_5/reference/config/platforms/docker/index.html new file mode 100644 index 00000000..406366f9 --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/index.html @@ -0,0 +1,1440 @@ + + + + + + + + + +Viash - Docker Platform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Docker Platform

+
+ + + +
+ + + + +
+ + + +
+ + +

Run a Viash component on a Docker backend platform. By specifying which dependencies your component needs, users will be able to build a docker container from scratch using the setup flag, or pull it from a docker repository.

+

Example:

+
platforms:
+  - type: docker
+    image: "bash:4.0"
+    setup:
+      - type: apt
+        packages: [ curl ]
+
+

chown

+

Type: Boolean

+

Default: True

+

In Linux, files created by a Docker container will be owned by root. With chown: true, Viash will automatically change the ownership of output files (arguments with type: file and direction: output) to the user running the Viash command after execution of the component. Default value: true.

+

Example:

+
chown: false
+
+
+

cmd

+

Type: Either - String - List of String

+

Default: Empty

+

Set the default command being executed when running the Docker container.

+

Examples:

+

Set CMD using the exec format, which is the prefered form.

+
cmd: ["echo", "$HOME"]
+

Set CMD using the shell format.

+
cmd: "echo $HOME"
+
+
+

entrypoint

+

Type: Either - String - List of String

+

Default: []

+

Override the entrypoint of the base container. Default set ENTRYPOINT [].

+

Examples:

+

Disable the default override.

+
entrypoint: 
+

Entrypoint of the container in the exec format, which is the prefered form.

+
entrypoint: ["top", "-b"]
+

Entrypoint of the container in the shell format.

+
entrypoint: "top -b"
+
+
+

id

+

Type: String

+

Default: docker

+

As with all platforms, you can give a platform a different name. By specifying id: foo, you can target this platform (only) by specifying -p foo in any of the Viash commands.

+

Example:

+
id: foo
+
+
+

image

+

Type: String

+

The base container to start from. You can also add the tag here if you wish.

+

Example:

+
image: "bash:4.0"
+
+
+

namespace_separator

+

Type: String

+

Default: /

+

The separator between the namespace and the name of the component, used for determining the image name. Default: "/".

+

Example:

+
namespace_separator: "_"
+
+
+

organization

+

Type: String

+

Default: Empty

+

Name of a container’s organization.

+
+
+

port

+

Type: String / List of String

+

Default: Empty

+

A list of enabled ports. This doesn’t change the Dockerfile but gets added as a command-line argument at runtime.

+

Example:

+
port:
+  - 80
+  - 8080
+
+
+

registry

+

Type: String

+

Default: Empty

+

The URL to the a custom Docker registry

+

Example:

+
registry: https://my-docker-registry.org
+
+
+

resolve_volume

+

Type: DockerResolveVolume

+

Default: Automatic

+

Enables or disables automatic volume mapping. Enabled when set to Automatic or disabled when set to Manual. Default: Automatic.

+
+
+

run_args

+

Type: String / List of String

+

Default: Empty

+

Add docker run arguments.

+
+
+

setup

+

Type: List of Requirements

+

Default: Empty

+

A list of requirements for installing the following types of packages:

+ +

The order in which these dependencies are specified determines the order in which they will be installed.

+
+
+

setup_strategy

+

Type: DockerSetupStrategy

+

Default: ifneedbepullelsecachedbuild

+

The Docker setup strategy to use when building a container.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StrategyDescription
alwaysbuild / build / bAlways build the image from the dockerfile. This is the default setup strategy.
alwayscachedbuild / cachedbuild / cbAlways build the image from the dockerfile, with caching enabled.
ifneedbebuildBuild the image if it does not exist locally.
ifneedbecachedbuildBuild the image with caching enabled if it does not exist locally, with caching enabled.
alwayspull / pull / pTry to pull the container from Docker Hub or the specified docker registry.
alwayspullelsebuild / pullelsebuildTry to pull the image from a registry and build it if it doesn’t exist.
alwayspullelsecachedbuild / pullelsecachedbuildTry to pull the image from a registry and build it with caching if it doesn’t exist.
ifneedbepullIf the image does not exist locally, pull the image.
ifneedbepullelsebuildIf the image does not exist locally, pull the image. If the image does exist, build it.
ifneedbepullelsecachedbuildIf the image does not exist locally, pull the image. If the image does exist, build it with caching enabled.
pushPush the container to Docker Hub or the specified docker registry.
pushifnotpresentPush the container to Docker Hub or the specified docker registry if the tag does not exist yet.
donothing / mehDo not build or pull anything.
+

Example:

+
setup_strategy: alwaysbuild
+
+
+

tag

+

Type: String

+

Default: Empty

+

Specify a Docker image based on its tag.

+

Example:

+
tag: 4.0
+
+
+

target_image

+

Type: String

+

Default: Empty

+

If anything is specified in the setup section, running the ---setup will result in an image with the name of <target_image>:<version>. If nothing is specified in the setup section, simply image will be used. Advanced usage only.

+

Example:

+
target_image: myfoo
+
+
+

target_image_source

+

Type: String

+

Default: Empty

+

The source of the target image. This is used for defining labels in the dockerfile.

+

Example:

+
target_image_source: https://github.com/foo/bar
+
+
+

target_organization

+

Type: String

+

Default: Empty

+

The organization set in the resulting image. Advanced usage only.

+

Example:

+
target_organization: viash-io
+
+
+

target_registry

+

Type: String

+

Default: Empty

+

The URL where the resulting image will be pushed to. Advanced usage only.

+

Example:

+
target_registry: https://my-docker-registry.org
+
+
+

target_tag

+

Type: String

+

Default: Empty

+

The tag the resulting image gets. Advanced usage only.

+

Example:

+
target_tag: 0.5.0
+
+
+

test_setup

+

Type: List of Requirements

+

Default: Empty

+

Additional requirements specific for running unit tests.

+
+
+

type

+

Type: String

+

Specifies the type of the platform.

+
+
+

workdir

+

Type: String

+

Default: Empty

+

The working directory when starting the container. This doesn’t change the Dockerfile but gets added as a command-line argument at runtime.

+

Example:

+
workdir: /home/user
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/setup/apkRequirements.html b/_versioned/0_8_5/reference/config/platforms/docker/setup/apkRequirements.html new file mode 100644 index 00000000..7353ca8c --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/setup/apkRequirements.html @@ -0,0 +1,1185 @@ + + + + + + + + + +Viash - Apk Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Apk Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which apk packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: apk
+    packages: [ sl ]
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install.

+

Example:

+
packages: [ sl ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/setup/aptRequirements.html b/_versioned/0_8_5/reference/config/platforms/docker/setup/aptRequirements.html new file mode 100644 index 00000000..69428578 --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/setup/aptRequirements.html @@ -0,0 +1,1192 @@ + + + + + + + + + +Viash - Apt Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Apt Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which apt packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: apt
+    packages: [ sl ]
+
+

interactive

+

Type: Boolean

+

Default: False

+

If false, the Debian frontend is set to non-interactive (recommended). Default: false.

+
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install.

+

Example:

+
packages: [ sl ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/setup/dockerRequirements.html b/_versioned/0_8_5/reference/config/platforms/docker/setup/dockerRequirements.html new file mode 100644 index 00000000..f90c14da --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/setup/dockerRequirements.html @@ -0,0 +1,1235 @@ + + + + + + + + + +Viash - Docker Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Docker Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which Docker commands should be run during setup.

+

Example:

+
setup:
+  - type: docker
+    build_args: "R_VERSION=hello_world"
+    run: |
+      echo 'Run a custom command'
+      echo 'Foo' > /path/to/file.txt
+
+

add

+

Type: String / List of String

+

Default: Empty

+

Specifies which ADD entries to add to the Dockerfile while building it.

+

Example:

+
add: [ "http://foo/bar ." ]
+
+
+

build_args

+

Type: String / List of String

+

Default: Empty

+

Specifies which ARG entries to add to the Dockerfile while building it.

+

Example:

+
build_args: [ "R_VERSION=4.2" ]
+
+
+

copy

+

Type: String / List of String

+

Default: Empty

+

Specifies which COPY entries to add to the Dockerfile while building it.

+

Example:

+
copy: [ "resource.txt /path/to/resource.txt" ]
+
+
+

env

+

Type: String / List of String

+

Default: Empty

+

Specifies which ENV entries to add to the Dockerfile while building it. Unlike ARG, ENV entries are also accessible from inside the container.

+

Example:

+
env: [ "R_VERSION=4.2" ]
+
+
+

label

+

Type: String / List of String

+

Default: Empty

+

Specifies which LABEL entries to add to the Dockerfile while building it.

+

Example:

+
label: [ component="foo" ]
+
+
+

run

+

Type: String / List of String

+

Default: Empty

+

Specifies which RUN entries to add to the Dockerfile while building it.

+

Example:

+
run: |
+  echo 'Run a custom command'
+  echo 'Foo' > /path/to/file.txt
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/setup/index.html b/_versioned/0_8_5/reference/config/platforms/docker/setup/index.html new file mode 100644 index 00000000..14d1b805 --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/setup/index.html @@ -0,0 +1,1137 @@ + + + + + + + + + +Viash - Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Requirements for installing the following types of packages:

+ + + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/setup/javascriptRequirements.html b/_versioned/0_8_5/reference/config/platforms/docker/setup/javascriptRequirements.html new file mode 100644 index 00000000..4548a21b --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/setup/javascriptRequirements.html @@ -0,0 +1,1224 @@ + + + + + + + + + +Viash - JavaScript Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

JavaScript Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which JavaScript packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: javascript
+    npm: packagename
+    git: "https://some.git.repository/org/repo"
+    github: "owner/repository"
+    url: "https://github.com/org/repo/archive/HEAD.zip"
+
+

git

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Git URI.

+

Example:

+
git: [ https://some.git.repository/org/repo ]
+
+
+

github

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitHub.

+

Example:

+
github: [ owner/repository ]
+
+
+

npm

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from npm.

+

Example:

+
npm: [ packagename ]
+
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from npm.

+

Example:

+
packages: [ packagename ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+
+
+

url

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a generic URI.

+

Example:

+
url: [ https://github.com/org/repo/archive/HEAD.zip ]
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/setup/pythonRequirements.html b/_versioned/0_8_5/reference/config/platforms/docker/setup/pythonRequirements.html new file mode 100644 index 00000000..4c25930c --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/setup/pythonRequirements.html @@ -0,0 +1,1293 @@ + + + + + + + + + +Viash - Python Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Python Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which Python packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: python
+    pip: numpy
+    github: [ jkbr/httpie, foo/bar ]
+    url: "https://github.com/some_org/some_pkg/zipball/master"
+
+

bazaar

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Bazaar URI.

+

Example:

+
bazaar: [ http://bazaar.launchpad.net/some_pkg/some_pkg/release-0.1 ]
+
+
+

git

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Git URI.

+

Example:

+
git: [ https://some.git.repository/org/repo ]
+
+
+

github

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitHub.

+

Example:

+
github: [ jkbr/httpie ]
+
+
+

gitlab

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitLab.

+

Example:

+
gitlab: [ foo/bar ]
+
+
+

mercurial

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Mercurial URI.

+

Example:

+
mercurial: [ https://hg.myproject.org/MyProject/#egg=MyProject ]
+
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from pip.

+

Example:

+
packages: [ numpy ]
+
+
+

pip

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from pip.

+

Example:

+
pip: [ numpy ]
+
+
+

pypi

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from PyPI using pip.

+

Example:

+
pypi: [ numpy ]
+
+
+

script

+

Type: String / List of String

+

Default: Empty

+

Specifies a code block to run as part of the build.

+

Example:

+
script: |
+  print("Running custom code")
+  x = 1 + 1 == 2
+
+
+

svn

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using an SVN URI.

+

Example:

+
svn: [ http://svn.repo/some_pkg/trunk/#egg=SomePackage ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+
+
+

upgrade

+

Type: Boolean

+

Default: True

+

Sets the --upgrade flag when set to true. Default: true.

+
+
+

url

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a generic URI.

+

Example:

+
url: [ https://github.com/some_org/some_pkg/zipball/master ]
+
+
+

user

+

Type: Boolean

+

Default: False

+

Sets the --user flag when set to true. Default: false.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/setup/rRequirements.html b/_versioned/0_8_5/reference/config/platforms/docker/setup/rRequirements.html new file mode 100644 index 00000000..774d0d1c --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/setup/rRequirements.html @@ -0,0 +1,1280 @@ + + + + + + + + + +Viash - R Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

R Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which R packages should be available in order to run the component.

+

Example:

+
setup: 
+  - type: r
+    cran: anndata
+    bioc: [ AnnotationDbi, SingleCellExperiment ]
+    github: rcannood/SCORPIUS
+
+

bioc

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from BioConductor.

+

Example:

+
bioc: [ AnnotationDbi ]
+
+
+

bioc_force_install

+

Type: Boolean

+

Default: False

+

Forces packages specified in bioc to be reinstalled, even if they are already present in the container. Default: false.

+

Example:

+
bioc_force_install: false
+
+
+

bitbucket

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from Bitbucket.

+

Example:

+
bitbucket: [ org/package ]
+
+
+

cran

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from CRAN.

+

Example:

+
cran: [ anndata, ggplot2 ]
+
+
+

git

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a Git URI.

+

Example:

+
git: [ https://some.git.repository/org/repo ]
+
+
+

github

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitHub.

+

Example:

+
github: [ rcannood/SCORPIUS ]
+
+
+

gitlab

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from GitLab.

+

Example:

+
gitlab: [ org/package ]
+
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install from CRAN.

+

Example:

+
packages: [ anndata, ggplot2 ]
+
+
+

script

+

Type: String / List of String

+

Default: Empty

+

Specifies a code block to run as part of the build.

+

Example:

+
script: |
+  cat("Running custom code
+")
+  install.packages("anndata")
+
+
+

svn

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using an SVN URI.

+

Example:

+
svn: [ https://path.to.svn/group/repo ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+
+
+

url

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install using a generic URI.

+

Example:

+
url: [ https://github.com/hadley/stringr/archive/HEAD.zip ]
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/setup/rubyRequirements.html b/_versioned/0_8_5/reference/config/platforms/docker/setup/rubyRequirements.html new file mode 100644 index 00000000..1a3ff39f --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/setup/rubyRequirements.html @@ -0,0 +1,1185 @@ + + + + + + + + + +Viash - Ruby Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Ruby Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which Ruby packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: ruby
+    packages: [ rspec ]
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install.

+

Example:

+
packages: [ rspec ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/docker/setup/yumRequirements.html b/_versioned/0_8_5/reference/config/platforms/docker/setup/yumRequirements.html new file mode 100644 index 00000000..cab8b2c6 --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/docker/setup/yumRequirements.html @@ -0,0 +1,1185 @@ + + + + + + + + + +Viash - Yum Requirements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Yum Requirements

+
+ + + +
+ + + + +
+ + + +
+ + +

Specify which yum packages should be available in order to run the component.

+

Example:

+
setup:
+  - type: yum
+    packages: [ sl ]
+
+

packages

+

Type: String / List of String

+

Default: Empty

+

Specifies which packages to install.

+

Example:

+
packages: [ sl ]
+
+
+

type

+

Type: String

+

Specifies the type of the requirement specification.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/index.html b/_versioned/0_8_5/reference/config/platforms/index.html new file mode 100644 index 00000000..15d571ba --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/index.html @@ -0,0 +1,1174 @@ + + + + + + + + + +Viash - Platform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Platform

+
+ + + +
+ + + + +
+ + + +
+ + +

A list of platforms to generate target artifacts for.

+ +

Example:

+
platforms:
+  - type: docker
+    image: "bash:4.0"
+  - type: native
+  - type: nextflow
+    directives:
+      label: [lowcpu, midmem]
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/native/index.html b/_versioned/0_8_5/reference/config/platforms/native/index.html new file mode 100644 index 00000000..1b347a63 --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/native/index.html @@ -0,0 +1,1193 @@ + + + + + + + + + +Viash - Native Platform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Native Platform

+
+ + + +
+ + + + +
+ + + +
+ + +

Running a Viash component on a native platform means that the script will be executed in your current environment. Any dependencies are assumed to have been installed by the user, so the native platform is meant for developers (who know what they’re doing) or for simple bash scripts (which have no extra dependencies).

+

Example:

+
platforms:
+  - type: native
+
+

id

+

Type: String

+

Default: native

+

As with all platforms, you can give a platform a different name. By specifying id: foo, you can target this platform (only) by specifying -p foo in any of the Viash commands.

+

Example:

+
id: foo
+
+
+

type

+

Type: String

+

Specifies the type of the platform.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/nextflow/auto.html b/_versioned/0_8_5/reference/config/platforms/nextflow/auto.html new file mode 100644 index 00000000..19bccda7 --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/nextflow/auto.html @@ -0,0 +1,1164 @@ + + + + + + + + + +Viash - Nextflow Auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Auto

+
+ + + +
+ + + + +
+ + + +
+ + +

Automated processing flags which can be toggled on or off.

+
+

publish

+

Type: Either - Boolean - String

+

Default: False

+

If true, the module’s outputs are automatically published to params.publishDir. If equal to "state", also a .state.yaml file will be published in the publish dir. Will throw an error if params.publishDir is not defined.

+

Default: false.

+
+
+

simplifyInput

+

Type: Boolean

+

Default: True

+

If true, an input tuple only containing only a single File (e.g. ["foo", file("in.h5ad")]) is automatically transformed to a map (i.e. ["foo", [ input: file("in.h5ad") ] ]).

+

Default: true.

+
+
+

simplifyOutput

+

Type: Boolean

+

Default: False

+

If true, an output tuple containing a map with a File (e.g. ["foo", [ output: file("out.h5ad") ] ]) is automatically transformed to a map (i.e. ["foo", file("out.h5ad")]).

+

Default: false.

+
+
+

transcript

+

Type: Boolean

+

Default: False

+

If true, the module’s transcripts from work/ are automatically published to params.transcriptDir. If not defined, params.publishDir + "/_transcripts" will be used. Will throw an error if neither are defined.

+

Default: false.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/nextflow/config.html b/_versioned/0_8_5/reference/config/platforms/nextflow/config.html new file mode 100644 index 00000000..81d54583 --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/nextflow/config.html @@ -0,0 +1,1211 @@ + + + + + + + + + +Viash - Nextflow Config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Config

+
+ + + +
+ + + + +
+ + + +
+ + +

Allows tweaking how the Nextflow Config file is generated.

+
+

labels

+

Type: Map of String to String

+

Default: A series of default labels to specify memory and cpu constraints

+

A series of default labels to specify memory and cpu constraints.

+

The default memory labels are defined as “mem1gb”, “mem2gb”, “mem4gb”, … upto “mem512tb” and follows powers of 2. The default cpu labels are defined as “cpu1”, “cpu2”, “cpu5”, “cpu10”, … upto “cpu1000” and follows a semi logarithmic scale (1, 2, 5 per decade).

+

Conceptually it is possible for a Viash Config to overwrite the full labels parameter, however likely it is more efficient to add additional labels in the Viash Project with a config mod.

+

Examples:

+

Replace the default labels with a different set of labels

+
labels:
+  lowmem: "memory = 4.GB"
+  lowcpu: "cpus = 4"
+  midmem: "memory = 25.GB"
+  midcpu: "cpus = 10"
+  highmem: "memory = 50.GB"
+  highcpu: "cpus = 20"
+  vhighmem: "memory = 100.GB"
+  vhighcpu: "cpus = 40"
+

Add ‘lowmem’ and ‘lowcpu’ to the default labels by using a config mod

+
-c '.platforms[.type == "nextflow"].config.labels.lowmem := "memory = 4.GB";.platforms[.type == "nextflow"].config.labels.lowcpu := "cpus = 4"'
+

Add ‘lowmem’ and ‘lowcpu’ to the default labels by using the Viash Project file

+
config_mods: |
+  .platforms[.type == "nextflow"].config.labels.lowmem := "memory = 4.GB"
+  .platforms[.type == "nextflow"].config.labels.lowcpu := "cpus = 4"
+
+

Replace the default labels with a different set of labels by using the Viash Project file

+
config_mods: |
+  .platforms[.type == "nextflow"].config.labels := { lowmem: "memory = 4.GB", lowcpu: "cpus = 4", midmem: "memory = 25.GB", midcpu: "cpus = 10", highmem: "memory = 50.GB", highcpu: "cpus = 20", vhighmem: "memory = 100.GB", vhighcpu: "cpus = 40" }
+
+
+
+

script

+

Type: String / List of String

+

Default: Empty

+

Includes a single string or list of strings into the nextflow.config file. This can be used to add custom profiles or include an additional config file.

+

Examples:

+
script:
+  - |
+    profiles {
+    ...
+    }
+
script: includeConfig("config.config")
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/nextflow/directives.html b/_versioned/0_8_5/reference/config/platforms/nextflow/directives.html new file mode 100644 index 00000000..35406a1b --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/nextflow/directives.html @@ -0,0 +1,1658 @@ + + + + + + + + + +Viash - Nextflow Directives + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Directives

+
+ + + +
+ + + + +
+ + + +
+ + +

Directives are optional settings that affect the execution of the process.

+

Example:

+
directives:
+    container: rocker/r-ver:4.1
+    label: highcpu
+    cpus: 4
+    memory: 16 GB
+
+

accelerator

+

Type: Map of String to String

+

Default: Empty

+

The accelerator directive allows you to specify the hardware accelerator requirement for the task execution e.g. GPU processor.

+

Viash implements this directive as a map with accepted keywords: type, limit, request, and runtime.

+

See accelerator.

+

Example:

+
[ limit: 4, type: "nvidia-tesla-k80" ]
+
+
+

afterScript

+

Type: String

+

Default: Empty

+

The afterScript directive allows you to execute a custom (Bash) snippet immediately after the main process has run. This may be useful to clean up your staging area.

+

See afterScript.

+

Example:

+
source /cluster/bin/cleanup
+
+
+

beforeScript

+

Type: String

+

Default: Empty

+

The beforeScript directive allows you to execute a custom (Bash) snippet before the main process script is run. This may be useful to initialise the underlying cluster environment or for other custom initialisation.

+

See beforeScript.

+

Example:

+
source /cluster/bin/setup
+
+
+

cache

+

Type: Either - Boolean - String

+

Default: Empty

+

The cache directive allows you to store the process results to a local cache. When the cache is enabled and the pipeline is launched with the resume option, any following attempt to execute the process, along with the same inputs, will cause the process execution to be skipped, producing the stored data as the actual results.

+

The caching feature generates a unique key by indexing the process script and inputs. This key is used to identify univocally the outputs produced by the process execution.

+

The cache is enabled by default, you can disable it for a specific process by setting the cache directive to false.

+

Accepted values are: true, false, "deep", and "lenient".

+

See cache.

+

Examples:

+
true
+
false
+
"deep"
+
"lenient"
+
+
+

conda

+

Type: String / List of String

+

Default: Empty

+

The conda directive allows for the definition of the process dependencies using the Conda package manager.

+

Nextflow automatically sets up an environment for the given package names listed by in the conda directive.

+

See conda.

+

Examples:

+
"bwa=0.7.15"
+
"bwa=0.7.15 fastqc=0.11.5"
+
["bwa=0.7.15", "fastqc=0.11.5"]
+
+
+

container

+

Type: Either - Map of String to String - String

+

Default: Empty

+

The container directive allows you to execute the process script in a Docker container.

+

It requires the Docker daemon to be running in machine where the pipeline is executed, i.e. the local machine when using the local executor or the cluster nodes when the pipeline is deployed through a grid executor.

+

Viash implements allows either a string value or a map. In case a map is used, the allowed keys are: registry, image, and tag. The image value must be specified.

+

See container.

+

Examples:

+
"foo/bar:tag"
+

This is transformed to "reg/im:ta":

+
[ registry: "reg", image: "im", tag: "ta" ]
+

This is transformed to "im:latest":

+
[ image: "im" ]
+
+
+

containerOptions

+

Type: String / List of String

+

Default: Empty

+

The containerOptions directive allows you to specify any container execution option supported by the underlying container engine (ie. Docker, Singularity, etc). This can be useful to provide container settings only for a specific process e.g. mount a custom path.

+

See containerOptions.

+

Examples:

+
"--foo bar"
+
["--foo bar", "-f b"]
+
+
+

cpus

+

Type: Either - Int - String

+

Default: Empty

+

The cpus directive allows you to define the number of (logical) CPU required by the process’ task.

+

See cpus.

+

Examples:

+
1
+
10
+
+
+

disk

+

Type: String

+

Default: Empty

+

The disk directive allows you to define how much local disk storage the process is allowed to use.

+

See disk.

+

Examples:

+
"1 GB"
+
"2TB"
+
"3.2KB"
+
"10.B"
+
+
+

echo

+

Type: Either - Boolean - String

+

Default: Empty

+

By default the stdout produced by the commands executed in all processes is ignored. By setting the echo directive to true, you can forward the process stdout to the current top running process stdout file, showing it in the shell terminal.

+

See echo.

+

Examples:

+
true
+
false
+
+
+

errorStrategy

+

Type: String

+

Default: Empty

+

The errorStrategy directive allows you to define how an error condition is managed by the process. By default when an error status is returned by the executed script, the process stops immediately. This in turn forces the entire pipeline to terminate.

+

Table of available error strategies: | Name | Executor | |——|———-| | terminate | Terminates the execution as soon as an error condition is reported. Pending jobs are killed (default) | | finish | Initiates an orderly pipeline shutdown when an error condition is raised, waiting the completion of any submitted job. | | ignore | Ignores processes execution errors. | | retry | Re-submit for execution a process returning an error condition. |

+

See errorStrategy.

+

Examples:

+
"terminate"
+
"finish"
+
+
+

executor

+

Type: String

+

Default: Empty

+

The executor defines the underlying system where processes are executed. By default a process uses the executor defined globally in the nextflow.config file.

+

The executor directive allows you to configure what executor has to be used by the process, overriding the default configuration. The following values can be used:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameExecutor
awsbatchThe process is executed using the AWS Batch service.
azurebatchThe process is executed using the Azure Batch service.
condorThe process is executed using the HTCondor job scheduler.
google-lifesciencesThe process is executed using the Google Genomics Pipelines service.
igniteThe process is executed using the Apache Ignite cluster.
k8sThe process is executed using the Kubernetes cluster.
localThe process is executed in the computer where Nextflow is launched.
lsfThe process is executed using the Platform LSF job scheduler.
moabThe process is executed using the Moab job scheduler.
nqsiiThe process is executed using the NQSII job scheduler.
ogeAlias for the sge executor.
pbsThe process is executed using the PBS/Torque job scheduler.
pbsproThe process is executed using the PBS Pro job scheduler.
sgeThe process is executed using the Sun Grid Engine / Open Grid Engine.
slurmThe process is executed using the SLURM job scheduler.
tesThe process is executed using the GA4GH TES service.
ugeAlias for the sge executor.
+

See executor.

+

Examples:

+
"local"
+
"sge"
+
+
+

label

+

Type: String / List of String

+

Default: Empty

+

The label directive allows the annotation of processes with mnemonic identifier of your choice.

+

See label.

+

Examples:

+
"big_mem"
+
"big_cpu"
+
["big_mem", "big_cpu"]
+
+
+

machineType

+

Type: String

+

Default: Empty

+

The machineType can be used to specify a predefined Google Compute Platform machine type when running using the Google Life Sciences executor.

+

See machineType.

+

Example:

+
"n1-highmem-8"
+
+
+

maxErrors

+

Type: Either - String - Int

+

Default: Empty

+

The maxErrors directive allows you to specify the maximum number of times a process can fail when using the retry error strategy. By default this directive is disabled.

+

See maxErrors.

+

Examples:

+
1
+
3
+
+
+

maxForks

+

Type: Either - String - Int

+

Default: Empty

+

The maxForks directive allows you to define the maximum number of process instances that can be executed in parallel. By default this value is equals to the number of CPU cores available minus 1.

+

If you want to execute a process in a sequential manner, set this directive to one.

+

See maxForks.

+

Examples:

+
1
+
3
+
+
+

maxRetries

+

Type: Either - String - Int

+

Default: Empty

+

The maxRetries directive allows you to define the maximum number of times a process instance can be re-submitted in case of failure. This value is applied only when using the retry error strategy. By default only one retry is allowed.

+

See maxRetries.

+

Examples:

+
1
+
3
+
+
+

memory

+

Type: String

+

Default: Empty

+

The memory directive allows you to define how much memory the process is allowed to use.

+

See memory.

+

Examples:

+
"1 GB"
+
"2TB"
+
"3.2KB"
+
"10.B"
+
+
+

module

+

Type: String / List of String

+

Default: Empty

+

Environment Modules is a package manager that allows you to dynamically configure your execution environment and easily switch between multiple versions of the same software tool.

+

If it is available in your system you can use it with Nextflow in order to configure the processes execution environment in your pipeline.

+

In a process definition you can use the module directive to load a specific module version to be used in the process execution environment.

+

See module.

+

Examples:

+
"ncbi-blast/2.2.27"
+
"ncbi-blast/2.2.27:t_coffee/10.0"
+
["ncbi-blast/2.2.27", "t_coffee/10.0"]
+
+
+

penv

+

Type: String

+

Default: Empty

+

The penv directive allows you to define the parallel environment to be used when submitting a parallel task to the SGE resource manager.

+

See penv.

+

Example:

+
"smp"
+
+
+

pod

+

Type: Map of String to String / List of Map of String to String

+

Default: Empty

+

The pod directive allows the definition of pods specific settings, such as environment variables, secrets and config maps when using the Kubernetes executor.

+

See pod.

+

Examples:

+
[ label: "key", value: "val" ]
+
[ annotation: "key", value: "val" ]
+
[ env: "key", value: "val" ]
+
[ [label: "l", value: "v"], [env: "e", value: "v"]]
+
+
+

publishDir

+

Type: Either - String - Map of String to String / List of Either - String - Map of String to String

+

Default: Empty

+

The publishDir directive allows you to publish the process output files to a specified folder.

+

Viash implements this directive as a plain string or a map. The allowed keywords for the map are: path, mode, overwrite, pattern, saveAs, enabled. The path key and value are required. The allowed values for mode are: symlink, rellink, link, copy, copyNoFollow, move.

+

See publishDir.

+

Examples:

+
[]
+
[ [ path: "foo", enabled: true ], [ path: "bar", enabled: false ] ]
+

This is transformed to [[ path: "/path/to/dir" ]]:

+
"/path/to/dir"
+

This is transformed to [[ path: "/path/to/dir", mode: "cache" ]]:

+
[ path: "/path/to/dir", mode: "cache" ]
+
+
+

queue

+

Type: String / List of String

+

Default: Empty

+

The queue directory allows you to set the queue where jobs are scheduled when using a grid based executor in your pipeline.

+

See queue.

+

Examples:

+
"long"
+
"short,long"
+
["short", "long"]
+
+
+

scratch

+

Type: Either - Boolean - String

+

Default: Empty

+

The scratch directive allows you to execute the process in a temporary folder that is local to the execution node.

+

See scratch.

+

Examples:

+
true
+
"/path/to/scratch"
+
'$MY_PATH_TO_SCRATCH'
+
"ram-disk"
+
+
+

stageInMode

+

Type: String

+

Default: Empty

+

The stageInMode directive defines how input files are staged-in to the process work directory. The following values are allowed:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ValueDescription
copyInput files are staged in the process work directory by creating a copy.
linkInput files are staged in the process work directory by creating an (hard) link for each of them.
symlinkInput files are staged in the process work directory by creating a symbolic link with an absolute path for each of them (default).
rellinkInput files are staged in the process work directory by creating a symbolic link with a relative path for each of them.
+

See stageInMode.

+

Examples:

+
"copy"
+
"link"
+
+
+

stageOutMode

+

Type: String

+

Default: Empty

+

The stageOutMode directive defines how output files are staged-out from the scratch directory to the process work directory. The following values are allowed:

+ ++++ + + + + + + + + + + + + + + + + + + + + +
ValueDescription
copyOutput files are copied from the scratch directory to the work directory.
moveOutput files are moved from the scratch directory to the work directory.
rsyncOutput files are copied from the scratch directory to the work directory by using the rsync utility.
+

See stageOutMode.

+

Examples:

+
"copy"
+
"link"
+
+
+

storeDir

+

Type: String

+

Default: Empty

+

The storeDir directive allows you to define a directory that is used as a permanent cache for your process results.

+

See storeDir.

+

Example:

+
"/path/to/storeDir"
+
+
+

tag

+

Type: String

+

Default: '$id'

+

The tag directive allows you to associate each process execution with a custom label, so that it will be easier to identify them in the log file or in the trace execution report.

+

For ease of use, the default tag is set to "$id", which allows tracking the progression of the channel events through the workflow more easily.

+

See tag.

+

Example:

+
"foo"
+
+
+

time

+

Type: String

+

Default: Empty

+

The time directive allows you to define how long a process is allowed to run.

+

See time.

+

Examples:

+
"1h"
+
"2days"
+
"1day 6hours 3minutes 30seconds"
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/platforms/nextflow/index.html b/_versioned/0_8_5/reference/config/platforms/nextflow/index.html new file mode 100644 index 00000000..3679efb2 --- /dev/null +++ b/_versioned/0_8_5/reference/config/platforms/nextflow/index.html @@ -0,0 +1,1266 @@ + + + + + + + + + +Viash - Nextflow Platform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Platform

+
+ + + +
+ + + + +
+ + + +
+ + +

Platform for generating Nextflow VDSL3 modules.

+

Example:

+
platforms:
+  - type: nextflow
+    directives:
+      label: [lowcpu, midmem]
+
+

auto

+

Type: NextflowAuto

+

Default: simplifyInput: true simplifyOutput: false transcript: false publish: false

+

Automated processing flags which can be toggled on or off:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlagDescriptionDefault
simplifyInputIf true, an input tuple only containing only a single File (e.g. ["foo", file("in.h5ad")]) is automatically transformed to a map (i.e. ["foo", [ input: file("in.h5ad") ] ]).true
simplifyOutputIf true, an output tuple containing a map with a File (e.g. ["foo", [ output: file("out.h5ad") ] ]) is automatically transformed to a map (i.e. ["foo", file("out.h5ad")]).false
transcriptIf true, the module’s transcripts from work/ are automatically published to params.transcriptDir. If not defined, params.publishDir + "/_transcripts" will be used. Will throw an error if neither are defined.false
publishIf true, the module’s outputs are automatically published to params.publishDir. If equal to "state", also a .state.yaml file will be published in the publish dir. Will throw an error if params.publishDir is not defined.false
+

Example:

+
auto:
+  publish: true
+
+
+

config

+

Type: NextflowConfig

+

Default: A series of default labels to specify memory and cpu constraints

+

Allows tweaking how the Nextflow Config file is generated.

+
+
+

container

+

Type: String

+

Default: docker

+

Specifies the Docker platform id to be used to run Nextflow.

+
+
+

debug

+

Type: Boolean

+

Default: False

+

Whether or not to print debug messages.

+
+
+

directives

+

Type: NextflowDirectives

+

Default: Empty

+

Directives are optional settings that affect the execution of the process. These mostly match up with the Nextflow counterparts.

+

Example:

+
directives:
+  container: rocker/r-ver:4.1
+  label: highcpu
+  cpus: 4
+  memory: 16 GB
+
+
+

id

+

Type: String

+

Default: nextflow

+

Every platform can be given a specific id that can later be referred to explicitly when running or building the Viash component.

+

Example:

+
id: foo
+
+
+

type

+

Type: String

+

Specifies the type of the platform.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/project/references.html b/_versioned/0_8_5/reference/config/project/references.html new file mode 100644 index 00000000..dc08b6bb --- /dev/null +++ b/_versioned/0_8_5/reference/config/project/references.html @@ -0,0 +1,1251 @@ + + + + + + + + + +Viash - References + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

References

+
+ + + +
+ + + + +
+ + + +
+ + +

References to external resources related to the component.

+

Example:

+
doi: 10.1000/xx.123456.789
+bibtex: |
+  @article{foo,
+    title={Foo},
+    author={Bar},
+    journal={Baz},
+    year={2024}
+  }
+
+

bibtex

+

Type: String / List of String

+

One or multiple BibTeX reference(s) of the component.

+

Example:

+
bibtex: |
+  @article{foo,
+    title={Foo},
+    author={Bar},
+    journal={Baz},
+    year={2024}
+  }
+
+
+

doi

+

Type: String / List of String

+

One or multiple DOI reference(s) of the component.

+

Example:

+
doi: 10.1000/xx.123456.789
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/references.html b/_versioned/0_8_5/reference/config/references.html new file mode 100644 index 00000000..aab8edff --- /dev/null +++ b/_versioned/0_8_5/reference/config/references.html @@ -0,0 +1,1240 @@ + + + + + + + + + +Viash - References + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

References

+
+ + + +
+ + + + +
+ + + +
+ + +

References to external resources related to the component.

+

Example:

+
doi: 10.1000/xx.123456.789
+bibtex: |
+  @article{foo,
+    title={Foo},
+    author={Bar},
+    journal={Baz},
+    year={2024}
+  }
+
+

bibtex

+

Type: String / List of String

+

One or multiple BibTeX reference(s) of the component.

+

Example:

+
bibtex: |
+  @article{foo,
+    title={Foo},
+    author={Bar},
+    journal={Baz},
+    year={2024}
+  }
+
+
+

doi

+

Type: String / List of String

+

One or multiple DOI reference(s) of the component.

+

Example:

+
doi: 10.1000/xx.123456.789
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/repositories/gitRepository.html b/_versioned/0_8_5/reference/config/repositories/gitRepository.html new file mode 100644 index 00000000..bf2388cd --- /dev/null +++ b/_versioned/0_8_5/reference/config/repositories/gitRepository.html @@ -0,0 +1,1278 @@ + + + + + + + + + +Viash - Git Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Git Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

A Git repository where remote dependency components can be found.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: git
+uri: git+https://github.com/openpipelines-bio/openpipeline.git
+tag: 0.8.0
+

Example without name field in case used in .functionality.dependencies

+
type: git
+uri: git+https://gitlab.com/viash-io/viash.git
+tag: 0.7.1
+path: src/test/resources/testns
+

Example with name field in case used in .functionality.repositories

+
name: openpipeline
+type: git
+uri: git+https://github.com/openpipelines-bio/openpipeline.git
+tag: 0.8.0
+

Example with name field in case used in .functionality.repositories

+
name: viash-testns
+type: git
+uri: git+https://gitlab.com/viash-io/viash.git
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a Git repository.

+
+
+

uri

+

Type: String

+

The URI of the Git repository.

+

Example:

+
uri: "git+https://github.com/openpipelines-bio/openpipeline.git"
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/repositories/githubRepository.html b/_versioned/0_8_5/reference/config/repositories/githubRepository.html new file mode 100644 index 00000000..eb209542 --- /dev/null +++ b/_versioned/0_8_5/reference/config/repositories/githubRepository.html @@ -0,0 +1,1278 @@ + + + + + + + + + +Viash - Github Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Github Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

A GitHub repository where remote dependency components can be found.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: github
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example without name field in case used in .functionality.dependencies

+
type: github
+repo: viash-io/viash
+tag: 0.7.1
+path: src/test/resources/testns
+

Example with name field in case used in .functionality.repositories

+
name: openpipeline
+type: github
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example with name field in case used in .functionality.repositories

+
name: viash-testns
+type: github
+repo: viash-io/viash
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

repo

+

Type: String

+

The name of the GitHub repository.

+

Example:

+
repo: viash-io/viash
+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a GitHub repository.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/repositories/index.html b/_versioned/0_8_5/reference/config/repositories/index.html new file mode 100644 index 00000000..618bd4e4 --- /dev/null +++ b/_versioned/0_8_5/reference/config/repositories/index.html @@ -0,0 +1,1216 @@ + + + + + + + + + +Viash - Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

Specifies a repository where dependency components can be found.

+ +

Example:

+
repositories:
+  - name: openpipelines-bio
+    type: github
+    uri: openpipelines-bio/modules
+    tag: 0.3.0
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/repositories/localRepository.html b/_versioned/0_8_5/reference/config/repositories/localRepository.html new file mode 100644 index 00000000..68cf6728 --- /dev/null +++ b/_versioned/0_8_5/reference/config/repositories/localRepository.html @@ -0,0 +1,1257 @@ + + + + + + + + + +Viash - Local Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Local Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

Defines a locally present and available repository. This can be used to define components from the same code base as the current component. Alternatively, this can be used to refer to a code repository present on the local hard-drive instead of fetchable remotely, for example during development.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: local
+path: /additional_code/src
+

Example with name field in case used in .functionality.repositories

+
name: my_local_code
+type: local
+path: /additional_code/src
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a locally present and available repository.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/repositories/viashhubRepository.html b/_versioned/0_8_5/reference/config/repositories/viashhubRepository.html new file mode 100644 index 00000000..4c1ca39d --- /dev/null +++ b/_versioned/0_8_5/reference/config/repositories/viashhubRepository.html @@ -0,0 +1,1278 @@ + + + + + + + + + +Viash - Viashhub Repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viashhub Repository

+
+ + + +
+ + + + +
+ + + +
+ + +

A Viash-Hub repository where remote dependency components can be found.

+

Examples:

+

Example without name field in case used in .functionality.dependencies

+
type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example without name field in case used in .functionality.dependencies

+
type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.7.1
+path: src/test/resources/testns
+

Example with name field in case used in .functionality.repositories

+
name: openpipeline
+type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.8.0
+

Example with name field in case used in .functionality.repositories

+
name: viash-testns
+type: viashhub
+repo: openpipelines-bio/openpipeline
+tag: 0.7.1
+path: src/test/resources/testns
+
+

name

+

Type: String

+
+
+
+ +
+
+Warning +
+
+
+

When defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.

+

When defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.

+
+
+

The identifier used to refer to this repository from dependencies.

+
+
+

path

+

Type: String

+

Default: Empty

+

Defines a subfolder of the repository to use as base to look for the dependency components.

+
+
+

repo

+

Type: String

+

The name of the Viash-Hub repository.

+

Example:

+
repo: openpipelines-bio/openpipeline
+
+
+

tag

+

Type: String

+

Default: Empty

+

Defines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.

+
+
+

type

+

Type: String

+

Defines the repository as a Viash-Hub repository.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/bashScript.html b/_versioned/0_8_5/reference/config/resources/bashScript.html new file mode 100644 index 00000000..3962ac6d --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/bashScript.html @@ -0,0 +1,1209 @@ + + + + + + + + + +Viash - Bash Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Bash Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable Bash script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a Bash script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/cSharpScript.html b/_versioned/0_8_5/reference/config/resources/cSharpScript.html new file mode 100644 index 00000000..4b53f4de --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/cSharpScript.html @@ -0,0 +1,1209 @@ + + + + + + + + + +Viash - C# Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

C# Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable C# script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a C# script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/executable.html b/_versioned/0_8_5/reference/config/resources/executable.html new file mode 100644 index 00000000..c4c07257 --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/executable.html @@ -0,0 +1,1209 @@ + + + + + + + + + +Viash - Executable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Executable

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable file.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as an executable.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/index.html b/_versioned/0_8_5/reference/config/resources/index.html new file mode 100644 index 00000000..4119c583 --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/index.html @@ -0,0 +1,1218 @@ + + + + + + + + + +Viash - Resource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Resource

+
+ + + +
+ + + + +
+ + + +
+ + +

Resources are files that support the component. The first resource should be a script that will be executed when the component is run. Additional resources will be copied to the same directory.

+

Common properties:

+ +

Example:

+
resources:
+  - type: r_script
+    path: script.R
+  - type: file
+    path: resource1.txt
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/javaScriptScript.html b/_versioned/0_8_5/reference/config/resources/javaScriptScript.html new file mode 100644 index 00000000..9139e95d --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/javaScriptScript.html @@ -0,0 +1,1209 @@ + + + + + + + + + +Viash - JavaScript Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

JavaScript Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable JavaScript script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a JavaScript script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/nextflowScript.html b/_versioned/0_8_5/reference/config/resources/nextflowScript.html new file mode 100644 index 00000000..c6341971 --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/nextflowScript.html @@ -0,0 +1,1215 @@ + + + + + + + + + +Viash - Nextflow Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Script

+
+ + + +
+ + + + +
+ + + +
+ + +

A Nextflow script. Work in progress; added mainly for annotation at the moment.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

entrypoint

+

Type: String

+

The name of the workflow to be wrapped.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a Nextflow script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/plainFile.html b/_versioned/0_8_5/reference/config/resources/plainFile.html new file mode 100644 index 00000000..37c2633b --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/plainFile.html @@ -0,0 +1,1209 @@ + + + + + + + + + +Viash - Plain File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Plain File

+
+ + + +
+ + + + +
+ + + +
+ + +

A plain file. This can only be used as a supporting resource for the main script or unit tests.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a plain file.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/pythonScript.html b/_versioned/0_8_5/reference/config/resources/pythonScript.html new file mode 100644 index 00000000..e79f4b43 --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/pythonScript.html @@ -0,0 +1,1209 @@ + + + + + + + + + +Viash - Python Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Python Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable Python script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a Python script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/rScript.html b/_versioned/0_8_5/reference/config/resources/rScript.html new file mode 100644 index 00000000..fb356541 --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/rScript.html @@ -0,0 +1,1209 @@ + + + + + + + + + +Viash - R Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

R Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable R script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a R script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/resources/scalaScript.html b/_versioned/0_8_5/reference/config/resources/scalaScript.html new file mode 100644 index 00000000..86d60c7f --- /dev/null +++ b/_versioned/0_8_5/reference/config/resources/scalaScript.html @@ -0,0 +1,1209 @@ + + + + + + + + + +Viash - Scala Script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scala Script

+
+ + + +
+ + + + +
+ + + +
+ + +

An executable Scala script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.

+
+

dest

+

Type: String

+

Default: Empty

+

Resulting filename of the resource. From within a script, the file can be accessed at meta["resources_dir"] + "/" + dest. If unspecified, dest will be set to the basename of the path parameter.

+
+
+

is_executable

+

Type: Boolean

+

Default: Empty

+

Whether the resulting resource file should be made executable.

+
+
+

path

+

Type: String

+

Default: Empty

+

The path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.

+
+
+

text

+

Type: String

+

Default: Empty

+

The content of the resulting file specified as a string. Mutually exclusive with path.

+
+
+

type

+

Type: String

+

Specifies the resource as a Scala script.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/runners/executable/index.html b/_versioned/0_8_5/reference/config/runners/executable/index.html new file mode 100644 index 00000000..44038fff --- /dev/null +++ b/_versioned/0_8_5/reference/config/runners/executable/index.html @@ -0,0 +1,1330 @@ + + + + + + + + + +Viash - Executable Runner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Executable Runner

+
+ + + +
+ + + + +
+ + + +
+ + +

Run code as an executable.

+

This runner is the default runner. It will generate a bash script that can be run directly.

+

This runner is also used for the native engine.

+

This runner is also used for the docker engine.

+

Example:

+
runners:
+  - type: executable
+    port: 8080
+
+

docker_run_args

+

Type: String / List of String

+

Default: Empty

+

Provide runtime arguments to Docker. See the documentation on docker run for more information.

+
+
+

docker_setup_strategy

+

Type: DockerSetupStrategy

+

Default: ifneedbepullelsecachedbuild

+

The Docker setup strategy to use when building a docker engine enrivonment.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StrategyDescription
alwaysbuild / build / bAlways build the image from the dockerfile. This is the default setup strategy.
alwayscachedbuild / cachedbuild / cbAlways build the image from the dockerfile, with caching enabled.
ifneedbebuildBuild the image if it does not exist locally.
ifneedbecachedbuildBuild the image with caching enabled if it does not exist locally, with caching enabled.
alwayspull / pull / pTry to pull the container from Docker Hub or the specified docker registry.
alwayspullelsebuild / pullelsebuildTry to pull the image from a registry and build it if it doesn’t exist.
alwayspullelsecachedbuild / pullelsecachedbuildTry to pull the image from a registry and build it with caching if it doesn’t exist.
ifneedbepullIf the image does not exist locally, pull the image.
ifneedbepullelsebuildIf the image does not exist locally, pull the image. If the image does exist, build it.
ifneedbepullelsecachedbuildIf the image does not exist locally, pull the image. If the image does exist, build it with caching enabled.
pushPush the container to Docker Hub or the specified docker registry.
pushifnotpresentPush the container to Docker Hub or the specified docker registry if the tag does not exist yet.
donothing / mehDo not build or pull anything.
+

Example:

+
setup_strategy: alwaysbuild
+
+
+

id

+

Type: String

+

Default: executable

+

Name of the runner. As with all runners, you can give an runner a different name. By specifying id: foo, you can target this executor (only) by specifying ... in any of the Viash commands.

+

Examples:

+
id: foo
+
id: foo
+
+
+

port

+

Type: String / List of String

+

Default: Empty

+

A list of enabled ports. This doesn’t change the Dockerfile but gets added as a command-line argument at runtime.

+

Example:

+
port:
+  - 80
+  - 8080
+
+
+

type

+

Type: String

+

Specifies the type of the runner.

+
+
+

workdir

+

Type: String

+

Default: Empty

+

The working directory when starting the engine. This doesn’t change the Dockerfile but gets added as a command-line argument at runtime.

+

Example:

+
workdir: /home/user
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/runners/index.html b/_versioned/0_8_5/reference/config/runners/index.html new file mode 100644 index 00000000..976b9330 --- /dev/null +++ b/_versioned/0_8_5/reference/config/runners/index.html @@ -0,0 +1,1212 @@ + + + + + + + + + +Viash - Runner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Runner

+
+ + + +
+ + + + +
+ + + +
+ + +

A list of runners to generate target artifacts for.

+ +

Example:

+
runners:
+  - type: executable
+  - type: nextflow
+ + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/runners/nextflow/auto.html b/_versioned/0_8_5/reference/config/runners/nextflow/auto.html new file mode 100644 index 00000000..8b86d7f0 --- /dev/null +++ b/_versioned/0_8_5/reference/config/runners/nextflow/auto.html @@ -0,0 +1,1207 @@ + + + + + + + + + +Viash - Nextflow Auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Auto

+
+ + + +
+ + + + +
+ + + +
+ + +

Automated processing flags which can be toggled on or off.

+
+

publish

+

Type: Either - Boolean - String

+

Default: False

+

If true, the module’s outputs are automatically published to params.publishDir. If equal to "state", also a .state.yaml file will be published in the publish dir. Will throw an error if params.publishDir is not defined.

+

Default: false.

+
+
+

simplifyInput

+

Type: Boolean

+

Default: True

+

If true, an input tuple only containing only a single File (e.g. ["foo", file("in.h5ad")]) is automatically transformed to a map (i.e. ["foo", [ input: file("in.h5ad") ] ]).

+

Default: true.

+
+
+

simplifyOutput

+

Type: Boolean

+

Default: False

+

If true, an output tuple containing a map with a File (e.g. ["foo", [ output: file("out.h5ad") ] ]) is automatically transformed to a map (i.e. ["foo", file("out.h5ad")]).

+

Default: false.

+
+
+

transcript

+

Type: Boolean

+

Default: False

+

If true, the module’s transcripts from work/ are automatically published to params.transcriptDir. If not defined, params.publishDir + "/_transcripts" will be used. Will throw an error if neither are defined.

+

Default: false.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/runners/nextflow/config.html b/_versioned/0_8_5/reference/config/runners/nextflow/config.html new file mode 100644 index 00000000..4aca5d3a --- /dev/null +++ b/_versioned/0_8_5/reference/config/runners/nextflow/config.html @@ -0,0 +1,1254 @@ + + + + + + + + + +Viash - Nextflow Config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Config

+
+ + + +
+ + + + +
+ + + +
+ + +

Allows tweaking how the Nextflow Config file is generated.

+
+

labels

+

Type: Map of String to String

+

Default: A series of default labels to specify memory and cpu constraints

+

A series of default labels to specify memory and cpu constraints.

+

The default memory labels are defined as “mem1gb”, “mem2gb”, “mem4gb”, … upto “mem512tb” and follows powers of 2. The default cpu labels are defined as “cpu1”, “cpu2”, “cpu5”, “cpu10”, … upto “cpu1000” and follows a semi logarithmic scale (1, 2, 5 per decade).

+

Conceptually it is possible for a Viash Config to overwrite the full labels parameter, however likely it is more efficient to add additional labels in the Viash Package with a config mod.

+

Examples:

+

Replace the default labels with a different set of labels

+
labels:
+  lowmem: "memory = 4.GB"
+  lowcpu: "cpus = 4"
+  midmem: "memory = 25.GB"
+  midcpu: "cpus = 10"
+  highmem: "memory = 50.GB"
+  highcpu: "cpus = 20"
+  vhighmem: "memory = 100.GB"
+  vhighcpu: "cpus = 40"
+

Add ‘lowmem’ and ‘lowcpu’ to the default labels by using a config mod

+
-c '.runners[.type == "nextflow"].config.labels.lowmem := "memory = 4.GB";.runners[.type == "nextflow"].config.labels.lowcpu := "cpus = 4"'
+

Add ‘lowmem’ and ‘lowcpu’ to the default labels by using the Viash Package file

+
config_mods: |
+  .runners[.type == "nextflow"].config.labels.lowmem := "memory = 4.GB"
+  .runners[.type == "nextflow"].config.labels.lowcpu := "cpus = 4"
+
+

Replace the default labels with a different set of labels by using the Viash Package file

+
config_mods: |
+  .runners[.type == "nextflow"].config.labels := { lowmem: "memory = 4.GB", lowcpu: "cpus = 4", midmem: "memory = 25.GB", midcpu: "cpus = 10", highmem: "memory = 50.GB", highcpu: "cpus = 20", vhighmem: "memory = 100.GB", vhighcpu: "cpus = 40" }
+
+
+
+

script

+

Type: String / List of String

+

Default: Empty

+

Includes a single string or list of strings into the nextflow.config file. This can be used to add custom profiles or include an additional config file.

+

Examples:

+
script:
+  - |
+    profiles {
+    ...
+    }
+
script: includeConfig("config.config")
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/runners/nextflow/directives.html b/_versioned/0_8_5/reference/config/runners/nextflow/directives.html new file mode 100644 index 00000000..9d419a02 --- /dev/null +++ b/_versioned/0_8_5/reference/config/runners/nextflow/directives.html @@ -0,0 +1,1701 @@ + + + + + + + + + +Viash - Nextflow Directives + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Directives

+
+ + + +
+ + + + +
+ + + +
+ + +

Directives are optional settings that affect the execution of the process.

+

Example:

+
directives:
+    container: rocker/r-ver:4.1
+    label: highcpu
+    cpus: 4
+    memory: 16 GB
+
+

accelerator

+

Type: Map of String to String

+

Default: Empty

+

The accelerator directive allows you to specify the hardware accelerator requirement for the task execution e.g. GPU processor.

+

Viash implements this directive as a map with accepted keywords: type, limit, request, and runtime.

+

See accelerator.

+

Example:

+
[ limit: 4, type: "nvidia-tesla-k80" ]
+
+
+

afterScript

+

Type: String

+

Default: Empty

+

The afterScript directive allows you to execute a custom (Bash) snippet immediately after the main process has run. This may be useful to clean up your staging area.

+

See afterScript.

+

Example:

+
source /cluster/bin/cleanup
+
+
+

beforeScript

+

Type: String

+

Default: Empty

+

The beforeScript directive allows you to execute a custom (Bash) snippet before the main process script is run. This may be useful to initialise the underlying cluster environment or for other custom initialisation.

+

See beforeScript.

+

Example:

+
source /cluster/bin/setup
+
+
+

cache

+

Type: Either - Boolean - String

+

Default: Empty

+

The cache directive allows you to store the process results to a local cache. When the cache is enabled and the pipeline is launched with the resume option, any following attempt to execute the process, along with the same inputs, will cause the process execution to be skipped, producing the stored data as the actual results.

+

The caching feature generates a unique key by indexing the process script and inputs. This key is used to identify univocally the outputs produced by the process execution.

+

The cache is enabled by default, you can disable it for a specific process by setting the cache directive to false.

+

Accepted values are: true, false, "deep", and "lenient".

+

See cache.

+

Examples:

+
true
+
false
+
"deep"
+
"lenient"
+
+
+

conda

+

Type: String / List of String

+

Default: Empty

+

The conda directive allows for the definition of the process dependencies using the Conda package manager.

+

Nextflow automatically sets up an environment for the given package names listed by in the conda directive.

+

See conda.

+

Examples:

+
"bwa=0.7.15"
+
"bwa=0.7.15 fastqc=0.11.5"
+
["bwa=0.7.15", "fastqc=0.11.5"]
+
+
+

container

+

Type: Either - Map of String to String - String

+

Default: Empty

+

The container directive allows you to execute the process script in a Docker container.

+

It requires the Docker daemon to be running in machine where the pipeline is executed, i.e. the local machine when using the local executor or the cluster nodes when the pipeline is deployed through a grid executor.

+

Viash implements allows either a string value or a map. In case a map is used, the allowed keys are: registry, image, and tag. The image value must be specified.

+

See container.

+

Examples:

+
"foo/bar:tag"
+

This is transformed to "reg/im:ta":

+
[ registry: "reg", image: "im", tag: "ta" ]
+

This is transformed to "im:latest":

+
[ image: "im" ]
+
+
+

containerOptions

+

Type: String / List of String

+

Default: Empty

+

The containerOptions directive allows you to specify any container execution option supported by the underlying container engine (ie. Docker, Singularity, etc). This can be useful to provide container settings only for a specific process e.g. mount a custom path.

+

See containerOptions.

+

Examples:

+
"--foo bar"
+
["--foo bar", "-f b"]
+
+
+

cpus

+

Type: Either - Int - String

+

Default: Empty

+

The cpus directive allows you to define the number of (logical) CPU required by the process’ task.

+

See cpus.

+

Examples:

+
1
+
10
+
+
+

disk

+

Type: String

+

Default: Empty

+

The disk directive allows you to define how much local disk storage the process is allowed to use.

+

See disk.

+

Examples:

+
"1 GB"
+
"2TB"
+
"3.2KB"
+
"10.B"
+
+
+

echo

+

Type: Either - Boolean - String

+

Default: Empty

+

By default the stdout produced by the commands executed in all processes is ignored. By setting the echo directive to true, you can forward the process stdout to the current top running process stdout file, showing it in the shell terminal.

+

See echo.

+

Examples:

+
true
+
false
+
+
+

errorStrategy

+

Type: String

+

Default: Empty

+

The errorStrategy directive allows you to define how an error condition is managed by the process. By default when an error status is returned by the executed script, the process stops immediately. This in turn forces the entire pipeline to terminate.

+

Table of available error strategies: | Name | Executor | |——|———-| | terminate | Terminates the execution as soon as an error condition is reported. Pending jobs are killed (default) | | finish | Initiates an orderly pipeline shutdown when an error condition is raised, waiting the completion of any submitted job. | | ignore | Ignores processes execution errors. | | retry | Re-submit for execution a process returning an error condition. |

+

See errorStrategy.

+

Examples:

+
"terminate"
+
"finish"
+
+
+

executor

+

Type: String

+

Default: Empty

+

The executor defines the underlying system where processes are executed. By default a process uses the executor defined globally in the nextflow.config file.

+

The executor directive allows you to configure what executor has to be used by the process, overriding the default configuration. The following values can be used:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameExecutor
awsbatchThe process is executed using the AWS Batch service.
azurebatchThe process is executed using the Azure Batch service.
condorThe process is executed using the HTCondor job scheduler.
google-lifesciencesThe process is executed using the Google Genomics Pipelines service.
igniteThe process is executed using the Apache Ignite cluster.
k8sThe process is executed using the Kubernetes cluster.
localThe process is executed in the computer where Nextflow is launched.
lsfThe process is executed using the Platform LSF job scheduler.
moabThe process is executed using the Moab job scheduler.
nqsiiThe process is executed using the NQSII job scheduler.
ogeAlias for the sge executor.
pbsThe process is executed using the PBS/Torque job scheduler.
pbsproThe process is executed using the PBS Pro job scheduler.
sgeThe process is executed using the Sun Grid Engine / Open Grid Engine.
slurmThe process is executed using the SLURM job scheduler.
tesThe process is executed using the GA4GH TES service.
ugeAlias for the sge executor.
+

See executor.

+

Examples:

+
"local"
+
"sge"
+
+
+

label

+

Type: String / List of String

+

Default: Empty

+

The label directive allows the annotation of processes with mnemonic identifier of your choice.

+

See label.

+

Examples:

+
"big_mem"
+
"big_cpu"
+
["big_mem", "big_cpu"]
+
+
+

machineType

+

Type: String

+

Default: Empty

+

The machineType can be used to specify a predefined Google Compute Platform machine type when running using the Google Life Sciences executor.

+

See machineType.

+

Example:

+
"n1-highmem-8"
+
+
+

maxErrors

+

Type: Either - String - Int

+

Default: Empty

+

The maxErrors directive allows you to specify the maximum number of times a process can fail when using the retry error strategy. By default this directive is disabled.

+

See maxErrors.

+

Examples:

+
1
+
3
+
+
+

maxForks

+

Type: Either - String - Int

+

Default: Empty

+

The maxForks directive allows you to define the maximum number of process instances that can be executed in parallel. By default this value is equals to the number of CPU cores available minus 1.

+

If you want to execute a process in a sequential manner, set this directive to one.

+

See maxForks.

+

Examples:

+
1
+
3
+
+
+

maxRetries

+

Type: Either - String - Int

+

Default: Empty

+

The maxRetries directive allows you to define the maximum number of times a process instance can be re-submitted in case of failure. This value is applied only when using the retry error strategy. By default only one retry is allowed.

+

See maxRetries.

+

Examples:

+
1
+
3
+
+
+

memory

+

Type: String

+

Default: Empty

+

The memory directive allows you to define how much memory the process is allowed to use.

+

See memory.

+

Examples:

+
"1 GB"
+
"2TB"
+
"3.2KB"
+
"10.B"
+
+
+

module

+

Type: String / List of String

+

Default: Empty

+

Environment Modules is a package manager that allows you to dynamically configure your execution environment and easily switch between multiple versions of the same software tool.

+

If it is available in your system you can use it with Nextflow in order to configure the processes execution environment in your pipeline.

+

In a process definition you can use the module directive to load a specific module version to be used in the process execution environment.

+

See module.

+

Examples:

+
"ncbi-blast/2.2.27"
+
"ncbi-blast/2.2.27:t_coffee/10.0"
+
["ncbi-blast/2.2.27", "t_coffee/10.0"]
+
+
+

penv

+

Type: String

+

Default: Empty

+

The penv directive allows you to define the parallel environment to be used when submitting a parallel task to the SGE resource manager.

+

See penv.

+

Example:

+
"smp"
+
+
+

pod

+

Type: Map of String to String / List of Map of String to String

+

Default: Empty

+

The pod directive allows the definition of pods specific settings, such as environment variables, secrets and config maps when using the Kubernetes executor.

+

See pod.

+

Examples:

+
[ label: "key", value: "val" ]
+
[ annotation: "key", value: "val" ]
+
[ env: "key", value: "val" ]
+
[ [label: "l", value: "v"], [env: "e", value: "v"]]
+
+
+

publishDir

+

Type: Either - String - Map of String to String / List of Either - String - Map of String to String

+

Default: Empty

+

The publishDir directive allows you to publish the process output files to a specified folder.

+

Viash implements this directive as a plain string or a map. The allowed keywords for the map are: path, mode, overwrite, pattern, saveAs, enabled. The path key and value are required. The allowed values for mode are: symlink, rellink, link, copy, copyNoFollow, move.

+

See publishDir.

+

Examples:

+
[]
+
[ [ path: "foo", enabled: true ], [ path: "bar", enabled: false ] ]
+

This is transformed to [[ path: "/path/to/dir" ]]:

+
"/path/to/dir"
+

This is transformed to [[ path: "/path/to/dir", mode: "cache" ]]:

+
[ path: "/path/to/dir", mode: "cache" ]
+
+
+

queue

+

Type: String / List of String

+

Default: Empty

+

The queue directory allows you to set the queue where jobs are scheduled when using a grid based executor in your pipeline.

+

See queue.

+

Examples:

+
"long"
+
"short,long"
+
["short", "long"]
+
+
+

scratch

+

Type: Either - Boolean - String

+

Default: Empty

+

The scratch directive allows you to execute the process in a temporary folder that is local to the execution node.

+

See scratch.

+

Examples:

+
true
+
"/path/to/scratch"
+
'$MY_PATH_TO_SCRATCH'
+
"ram-disk"
+
+
+

stageInMode

+

Type: String

+

Default: Empty

+

The stageInMode directive defines how input files are staged-in to the process work directory. The following values are allowed:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ValueDescription
copyInput files are staged in the process work directory by creating a copy.
linkInput files are staged in the process work directory by creating an (hard) link for each of them.
symlinkInput files are staged in the process work directory by creating a symbolic link with an absolute path for each of them (default).
rellinkInput files are staged in the process work directory by creating a symbolic link with a relative path for each of them.
+

See stageInMode.

+

Examples:

+
"copy"
+
"link"
+
+
+

stageOutMode

+

Type: String

+

Default: Empty

+

The stageOutMode directive defines how output files are staged-out from the scratch directory to the process work directory. The following values are allowed:

+ ++++ + + + + + + + + + + + + + + + + + + + + +
ValueDescription
copyOutput files are copied from the scratch directory to the work directory.
moveOutput files are moved from the scratch directory to the work directory.
rsyncOutput files are copied from the scratch directory to the work directory by using the rsync utility.
+

See stageOutMode.

+

Examples:

+
"copy"
+
"link"
+
+
+

storeDir

+

Type: String

+

Default: Empty

+

The storeDir directive allows you to define a directory that is used as a permanent cache for your process results.

+

See storeDir.

+

Example:

+
"/path/to/storeDir"
+
+
+

tag

+

Type: String

+

Default: '$id'

+

The tag directive allows you to associate each process execution with a custom label, so that it will be easier to identify them in the log file or in the trace execution report.

+

For ease of use, the default tag is set to "$id", which allows tracking the progression of the channel events through the workflow more easily.

+

See tag.

+

Example:

+
"foo"
+
+
+

time

+

Type: String

+

Default: Empty

+

The time directive allows you to define how long a process is allowed to run.

+

See time.

+

Examples:

+
"1h"
+
"2days"
+
"1day 6hours 3minutes 30seconds"
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config/runners/nextflow/index.html b/_versioned/0_8_5/reference/config/runners/nextflow/index.html new file mode 100644 index 00000000..e8ca7560 --- /dev/null +++ b/_versioned/0_8_5/reference/config/runners/nextflow/index.html @@ -0,0 +1,1310 @@ + + + + + + + + + +Viash - Nextflow Runner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow Runner

+
+ + + +
+ + + + +
+ + + +
+ + +

Run a Viash component on a Nextflow backend engine.

+

Example:

+
runners:
+  - type: nextflow
+    directives:
+      label: [lowcpu, midmem]
+
+

auto

+

Type: NextflowAuto

+

Default: simplifyInput: true simplifyOutput: false transcript: false publish: false

+

Automated processing flags which can be toggled on or off:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlagDescriptionDefault
simplifyInputIf true, an input tuple only containing only a single File (e.g. ["foo", file("in.h5ad")]) is automatically transformed to a map (i.e. ["foo", [ input: file("in.h5ad") ] ]).true
simplifyOutputIf true, an output tuple containing a map with a File (e.g. ["foo", [ output: file("out.h5ad") ] ]) is automatically transformed to a map (i.e. ["foo", file("out.h5ad")]).false
transcriptIf true, the module’s transcripts from work/ are automatically published to params.transcriptDir. If not defined, params.publishDir + "/_transcripts" will be used. Will throw an error if neither are defined.false
publishIf true, the module’s outputs are automatically published to params.publishDir. If equal to "state", also a .state.yaml file will be published in the publish dir. Will throw an error if params.publishDir is not defined.false
+

Example:

+
auto:
+  publish: true
+
+
+

config

+

Type: NextflowConfig

+

Default: A series of default labels to specify memory and cpu constraints

+

Allows tweaking how the Nextflow Config file is generated.

+
+
+

container

+

Type: String

+

Default: docker

+

Specifies the Docker engine id to be used to run Nextflow.

+
+
+

debug

+

Type: Boolean

+

Default: False

+

Whether or not to print debug messages.

+
+
+

directives

+

Type: NextflowDirectives

+

Default: Empty

+

Directives are optional settings that affect the execution of the process. These mostly match up with the Nextflow counterparts.

+

Example:

+
directives:
+  container: rocker/r-ver:4.1
+  label: highcpu
+  cpus: 4
+  memory: 16 GB
+
+
+

id

+

Type: String

+

Default: nextflow

+

Name of the runner. As with all runners, you can give an runner a different name. By specifying id: foo, you can target this runner (only) by specifying ... in any of the Viash commands.

+

Examples:

+
id: foo
+
id: foo
+
+
+

type

+

Type: String

+

Specifies the type of the runner.

+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/config_mods/index.html b/_versioned/0_8_5/reference/config_mods/index.html new file mode 100644 index 00000000..0070bc65 --- /dev/null +++ b/_versioned/0_8_5/reference/config_mods/index.html @@ -0,0 +1,1184 @@ + + + + + + + + + +Viash - Dynamic Config Modding + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Dynamic Config Modding

+
+ + + +
+ + + + +
+ + + +
+ + +

Viash can modify a viash config at runtime using a custom Domain Specific Language (DSL). This allows making dynamic changes to your components or projects.
+All Viash subcommands have support for the DSL through the -c|--config_mod parameter. The format for these is as follows:

+
viash COMMAND -c '.SECTION.PROPERTY := VALUE'
+

Multiple config mods can be added by adding more -c|--config_mod parameters:

+
viash COMMAND \
+  -c '.SECTION.PROPERTY := VALUE' \
+  -c '.SECTION.PROPERTY := VALUE'
+
+

Examples

+

Change the version of a component:

+
viash build -c '.functionality.version := "0.3.0"'
+

Change the registry of a docker container:

+
viash build -c \
+  '.platforms[.type == "docker"].container_registry := "url-to-registry"'
+

Add an author to the list:

+
viash build -c '.functionality.authors += { name: "Mr. T", role: "sponsor" }'
+

You can use dynamic config modding to alter the config of multiple components at once:

+
viash ns build \
+  -c '.functionality.version := "0.3.0"' \
+  -c '.platforms[.type == "docker"].container_registry := "url-to-registry"' \
+  -c '.functionality.authors += { name: "Mr. T", role: "sponsor" }'
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/environmentVariables/index.html b/_versioned/0_8_5/reference/environmentVariables/index.html new file mode 100644 index 00000000..3b1b4176 --- /dev/null +++ b/_versioned/0_8_5/reference/environmentVariables/index.html @@ -0,0 +1,1221 @@ + + + + + + + + + +Viash - Environment Variables + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Environment Variables

+
+ + + +
+ + + + +
+ + + +
+ + +

Viash checks several environment variables during operation.

+
+

VIASH_HOME

+

Type: String

+

If VIASH_HOME is not defined, the fallback HOME/.viash is used.

+

Location where specific downloaded versions of Viash will be cached and run from.

+
+
+

VIASH_VERSION

+

Type: String

+

Default: Empty

+

A specific Viash version can be set to run the commands with. If so required, the specific Viash version will be downloaded. This is useful when replicating older results or building Viash components that use outdated code.

+

Example:

+
VIASH_VERSION=0.7.0 viash ns build
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/index.html b/_versioned/0_8_5/reference/index.html new file mode 100644 index 00000000..4ba380f6 --- /dev/null +++ b/_versioned/0_8_5/reference/index.html @@ -0,0 +1,1299 @@ + + + + + + + + + +Viash - Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Reference

+

Reference for Viash commands and the configuration file. See the Guide for more in-depth documentation.

+
+ + + +
+ + + + +
+ + + +
+ + + + + + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/nextflow_vdsl3/import_module.html b/_versioned/0_8_5/reference/nextflow_vdsl3/import_module.html new file mode 100644 index 00000000..96248229 --- /dev/null +++ b/_versioned/0_8_5/reference/nextflow_vdsl3/import_module.html @@ -0,0 +1,1252 @@ + + + + + + + + + +Viash - Import a VDSL3 module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Import a VDSL3 module

+
+ + + +
+ + + + +
+ + + +
+ + +

A VDSL3 module is a Nextflow module generated by Viash. See the guide for a more in-depth explanation on how to create Nextflow workflows with VDSL3 modules.

+
+

Importing a VDSL3 module

+

After building a VDSL3 module from a component, the VDSL3 module can be imported just like any other Nextflow module.

+

Example:

+
include { mymodule } from 'target/nextflow/mymodule/main.nf'
+
+
+

VDSL3 module interface

+

VDSL3 modules are actually workflows which take one channel and emit one channel. It expects the channel events to be tuples containing an ‘id’ and a ‘state’: [id, state], where id is a unique String and state is a Map[String, Object]. The resulting channel then consists of tuples [id, new_state].

+

Example:

+
workflow {
+  Channel.fromList([
+    ["myid", [input: file("in.txt")]]
+  ])
+    | mymodule
+}
+
+
+
+ +
+
+Note +
+
+
+

If the input tuple has more than two elements, the elements after the second element are passed through to the output tuple. That is, an input tuple [id, input, ...] will result in a tuple [id, output, ...] after running the module. For example, an input tuple ["foo", [input: file("in.txt")], "bar"] will result in an output tuple ["foo", [output: file("out.txt")], "bar"].

+
+
+
+
+

Customizing VDSL3 modules on the fly

+

Usually, Nextflow processes are quite static objects. For example, changing its directives can be quite tricky.

+

The .run() function is a unique feature for every VDSL3 module which allows dynamically altering the behaviour of a module from within the pipeline. For example, we use it to set the publishDir directive to "output/" so the output of that step in the pipeline will be stored as output.

+

Example:

+
workflow {
+  Channel.fromList([
+    ["myid", [input: file("in.txt")]]
+  ])
+    | mymodule.run(
+      args: [k: 10],
+      directives: [cpus: 4, memory: "16 GB"]
+    )
+}
+
+

Arguments of .run()

+
    +
  • key (String): A unique key used to trace the process and help make names of output files unique. Default: the name of the Viash component.

  • +
  • args (Map[String, Object]): Argument overrides to be passed to the module.

  • +
  • directives (Map[String, Object]): Custom directives overrides. See the Nextflow documentation for a list of available directives.

  • +
  • auto (Map[String, Boolean]): Whether to apply certain automated processing steps. Default values are inherited from the Viash config.

  • +
  • auto.simplifyInput: If true, if the input tuple is a single file and if the module only has a single input file, the input file will be passed the module accordingly. Default: true (inherited from Viash config).

  • +
  • auto.simplifyOutput: If true, if the output tuple is a single file and if the module only has a single output file, the output map will be transformed into a single file. Default: true (inherited from Viash config).

  • +
  • auto.publish: If true, the output files will be published to the params.publishDir folder. Default: false (inherited from Viash config).

  • +
  • auto.transcript: If true, the module’s transcript will be published to the params.transcriptDir folder. Default: false (inherited from Viash config).

  • +
  • map (Function): Apply a map over the incoming tuple. Example: { tup -> [ tup[0], [input: tup[1].output] ] + tup.drop(2) }. Default: null.

  • +
  • mapId (Function): Apply a map over the ID element of a tuple (i.e. the first element). Example: { id -> id + "_foo" }. Default: null.

  • +
  • mapData (Function): Apply a map over the data element of a tuple (i.e. the second element). Example: { data -> [ input: data.output ] }. Default: null.

  • +
  • mapPassthrough (Function): Apply a map over the passthrough elements of a tuple (i.e. the tuple excl. the first two elements). Example: { pt -> pt.drop(1) }. Default: null.

  • +
  • filter (Function): Filter the channel. Example: { tup -> tup[0] == "foo" }. Default: null.

  • +
  • fromState: Fetch data from the state and pass it to the module without altering the current state. fromState should be null, List[String], Map[String, String] or a function.

    +
      +
    • If it is null, the state will be passed to the module as is.
    • +
    • If it is a List[String], the data will be the values of the state at the given keys.
    • +
    • If it is a Map[String, String], the data will be the values of the state at the given keys, with the keys renamed according to the map.
    • +
    • If it is a function, the tuple ([id, state]) in the channel will be passed to the function, and the result will be used as the data.
    • +
    +

    Example: { id, state -> [input: state.fastq_file] } Default: null

  • +
  • toState: Determine how the state should be updated after the module has been run. toState should be null, List[String], Map[String, String] or a function.

    +
      +
    • If it is null, the state will be replaced with the output of the module.
    • +
    • If it is a List[String], the state will be updated with the values of the data at the given keys.
    • +
    • If it is a Map[String, String], the state will be updated with the values of the data at the given keys, with the keys renamed according to the map.
    • +
    • If it is a function, a tuple ([id, output, state]) will be passed to the function, and the result will be used as the new state.
    • +
    +

    Example: { id, output, state -> state + [counts: state.output] } Default: { id, output, state -> output }

  • +
  • debug: Whether or not to print debug messages. Default: false.

  • +
+ + +
+
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/nextflow_vdsl3/index.html b/_versioned/0_8_5/reference/nextflow_vdsl3/index.html new file mode 100644 index 00000000..aaaa9e7e --- /dev/null +++ b/_versioned/0_8_5/reference/nextflow_vdsl3/index.html @@ -0,0 +1,1175 @@ + + + + + + + + + +Viash - Nextflow VDSL3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nextflow VDSL3

+
+ + + +
+ + + + +
+ + + +
+ + +

Viash supports creating Nextflow workflows in multiple ways.

+ + + + +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/nextflow_vdsl3/run_module.html b/_versioned/0_8_5/reference/nextflow_vdsl3/run_module.html new file mode 100644 index 00000000..bdb4e421 --- /dev/null +++ b/_versioned/0_8_5/reference/nextflow_vdsl3/run_module.html @@ -0,0 +1,1257 @@ + + + + + + + + + +Viash - Run a VDSL3 module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Run a VDSL3 module

+
+ + + +
+ + + + +
+ + + +
+ + +

Unlike typical Nextflow modules, VDSL3 modules can actually be used as a standalone pipeline.

+

To run a VDSL3 module as a standalone pipeline, you need to specify the input parameters and a --publish_dir parameter, as Nextflow will automatically choose the parameter names of the output files.

+
+

Viewing the help message

+

More information regarding a modules arguments can be shown by passing the --help parameter.

+

Example:

+
nextflow run target/nextflow/mycomponent/main.nf --help
+
+
+

Running a module as a standalone pipeline

+

You can run the executable by providing a value for each of the required arguments and --publish_dir (where output files are published).

+

Example:

+
nextflow run target/nextflow/mycomponent/main.nf \
+  --input config.vsh.yaml \
+  --publish_dir output/
+
+
+

Passing a parameter list

+

Every VDSL3 can accept a list of parameters to populate a Nextflow channel with. Assuming we want to process a set of input files in parallel, we can create a yaml file params.yaml containing the following information.

+
param_list:
+  - id: sample1
+    input: data/sample1.txt
+  - id: sample2
+    input: data/sample2.txt
+  - id: sample3
+    input: data/sample3.txt
+  - id: sample4
+    input: data/sample4.txt
+arg1: 10
+arg2: 5
+

You can run the pipeline on the list of parameters using the -params-file parameter.

+
nextflow run target/main.nf -params-file params.yaml --publish_dir output2
+
+
+
+ +
+
+Tip +
+
+
+

You can also pass a YAML, CSV or JSON file to the param_list parameter.

+
+
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/packageConfig/index.html b/_versioned/0_8_5/reference/packageConfig/index.html new file mode 100644 index 00000000..4c6a4797 --- /dev/null +++ b/_versioned/0_8_5/reference/packageConfig/index.html @@ -0,0 +1,1386 @@ + + + + + + + + + +Viash - Package Config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Package Config

+
+ + + +
+ + + + +
+ + + +
+ + +

A Viash package configuration file. It’s name should be _viash.yaml.

+

Example:

+
viash_version: 0.9.0
+source: src
+target: target
+version: 1.0
+organization: viash-io
+links:
+  repository: 'https://github.com/viash-io/viash'
+  docker_registry: 'ghcr.io'
+config_mods: |
+  .runners[.type == 'nextflow'].directives.tag := '$id'
+  .runners[.type == 'nextflow'].config.script := 'includeConfig("configs/custom.config")'
+
+

authors

+

Type: List of Author

+

Default: Empty

+

The authors of the package.

+

Example:

+
authors:
+  - name: Jane Doe
+    role: [author, maintainer]
+    email: jane@doe.com
+    info:
+      github: janedoe
+      twitter: janedoe
+      orcid: XXAABBCCXX
+      groups: [ one, two, three ]
+  - name: Tim Farbe
+    roles: [author]
+    email: tim@far.be
+
+
+

config_mods

+

Type: String / List of String

+

Default: Empty

+

Which config mods to apply.

+

Example:

+
config_mods: ".name := 'foo'"
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the package.

+

Example:

+
description: My package
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  twitter: wizzkid
+  classes: [ one, two, three ]
+
+
+

keywords

+

Type: List of String

+

Default: Empty

+

The keywords of the package.

+

Example:

+
keywords: [ bioinformatics, genomics ]
+
+
+

license

+

Type: String

+

Default: Empty

+

The license of the package.

+

Example:

+
license: MIT
+
+ +
+

name

+

Type: String

+

Default: Empty

+

The name of the package.

+

Example:

+
name: my_package
+
+
+

organization

+

Type: String

+

Default: Empty

+

The organization of the package.

+

Example:

+
organization: viash-io
+
+
+

references

+

Type: References

+

Default: Empty

+

References to external resources related to the package.

+

Example:

+
references:
+  doi: 10.1000/xx.123456.789
+  bibtex: |
+    @article{foo,
+      title={Foo},
+      author={Bar},
+      journal={Baz},
+      year={2024}
+    }
+
+
+

repositories

+

Type: List of RepositoryWithName

+

Default: Empty

+

Common repository definitions for component dependencies.

+

Example:

+
repositories:
+  - name: openpipelines-bio
+    type: github
+    uri: openpipelines-bio/modules
+    tag: 0.3.0
+
+
+

source

+

Type: String

+

Default: Empty

+

Which source directory to use for the viash ns commands.

+

Example:

+
source: src
+
+
+

target

+

Type: String

+

Default: Empty

+

Which target directory to use for viash ns build.

+

Example:

+
target: target
+
+
+

version

+

Type: String

+

Default: Empty

+

The version of the package.

+

Example:

+
version: 0.1.0
+
+
+

viash_version

+

Type: String

+

Default: Empty

+

Which version of Viash to use.

+

Example:

+
viash_versions: 0.6.4
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/project/configLinks.html b/_versioned/0_8_5/reference/project/configLinks.html new file mode 100644 index 00000000..55b97a64 --- /dev/null +++ b/_versioned/0_8_5/reference/project/configLinks.html @@ -0,0 +1,1128 @@ + + + + + + + + + +Viash - Project Config Links + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Project Config Links

+
+ + + +
+ + + + +
+ + +
+ +

Links to external resources related to the project.

+

Example:

+
repository: "https://github.com/viash-io/viash"
+docker_registry: "https://ghcr.io"
+homepage: "https://viash.io"
+documentation: "https://viash.io/reference/"
+issue_tracker: "https://github.com/viash-io/viash/issues"
+
+

docker_registry

+

Type: String

+

Default: Empty

+

Docker registry url.

+

Example:

+
docker_registry: "https://ghcr.io"
+
+
+

documentation

+

Type: String

+

Default: Empty

+

Documentation website url.

+

Example:

+
documentation: "https://viash.io/reference/"
+
+
+

homepage

+

Type: String

+

Default: Empty

+

Homepage website url.

+

Example:

+
homepage: "https://viash.io"
+
+
+

issue_tracker

+

Type: String

+

Default: Empty

+

Issue tracker url.

+

Example:

+
issue_tracker: "https://github.com/viash-io/viash/issues"
+
+
+

repository

+

Type: String

+

Default: Empty

+

Source repository url.

+

Example:

+
repository: "https://github.com/viash-io/viash"
+ + +
+ +
+ + + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/project/configReferences.html b/_versioned/0_8_5/reference/project/configReferences.html new file mode 100644 index 00000000..91a75ab5 --- /dev/null +++ b/_versioned/0_8_5/reference/project/configReferences.html @@ -0,0 +1,1108 @@ + + + + + + + + + +Viash - Project Config References + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Project Config References

+
+ + + +
+ + + + +
+ + +
+ +

References to external resources related to the project.

+

Example:

+
doi: 10.1000/xx.123456.789
+bibtex: |
+  @article{foo,
+    title={Foo},
+    author={Bar},
+    journal={Baz},
+    year={2024}
+  }
+
+

bibtex

+

Type: String / List of String

+

One or multiple BibTeX reference(s) of the project.

+

Example:

+
bibtex: |
+  @article{foo,
+    title={Foo},
+    author={Bar},
+    journal={Baz},
+    year={2024}
+  }
+
+
+

doi

+

Type: String / List of String

+

One or multiple DOI reference(s) of the project.

+

Example:

+
doi: 10.1000/xx.123456.789
+ + +
+ +
+ + + +
+ + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/project/index.html b/_versioned/0_8_5/reference/project/index.html new file mode 100644 index 00000000..d33e6399 --- /dev/null +++ b/_versioned/0_8_5/reference/project/index.html @@ -0,0 +1,1211 @@ + + + + + + + + + +Viash - Project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Project

+
+ + + +
+ + + + +
+ + + +
+ + +

A Viash project configuration file. It’s name should be _viash.yaml.

+

Example:

+
viash_version: 0.6.4
+source: src
+target: target
+config_mods: |
+  .platforms[.type == 'docker'].target_registry := 'ghcr.io'
+  .platforms[.type == 'docker'].target_organization := 'viash-io'
+  .platforms[.type == 'docker'].namespace_separator := '/'
+  .platforms[.type == 'docker'].target_image_source := 'https://github.com/viash-io/viash'
+
+

config_mods

+

Type: String / List of String

+

Default: Empty

+

Which config mods to apply.

+

Example:

+
config_mods: ".functionality.name := 'foo'"
+
+
+

source

+

Type: String

+

Default: Empty

+

Which source directory to use for the viash ns commands.

+

Example:

+
source: src
+
+
+

target

+

Type: String

+

Default: Empty

+

Which target directory to use for viash ns build.

+

Example:

+
target: target
+
+
+

viash_version

+

Type: String

+

Default: Empty

+

Which version of Viash to use.

+

Example:

+
viash_versions: 0.6.4
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/projectConfig/index.html b/_versioned/0_8_5/reference/projectConfig/index.html new file mode 100644 index 00000000..f6b3fd68 --- /dev/null +++ b/_versioned/0_8_5/reference/projectConfig/index.html @@ -0,0 +1,1444 @@ + + + + + + + + + +Viash - Project Config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Project Config

+
+ + + +
+ + + + +
+ + + +
+ + +

A Viash project configuration file. It’s name should be _viash.yaml.

+

Example:

+
viash_version: 0.9.0
+source: src
+target: target
+version: 1.0
+organization: viash-io
+links:
+  repository: 'https://github.com/viash-io/viash'
+  docker_registry: 'ghcr.io'
+config_mods: |
+  .runners[.type == 'nextflow'].directives.tag := '$id'
+  .runners[.type == 'nextflow'].config.script := 'includeConfig("configs/custom.config")'
+
+

authors

+

Type: List of Author

+

Default: Empty

+

The authors of the project.

+

Example:

+
authors:
+  - name: Jane Doe
+    role: [author, maintainer]
+    email: jane@doe.com
+    info:
+      github: janedoe
+      twitter: janedoe
+      orcid: XXAABBCCXX
+      groups: [ one, two, three ]
+  - name: Tim Farbe
+    roles: [author]
+    email: tim@far.be
+
+
+

config_mods

+

Type: String / List of String

+

Default: Empty

+

Which config mods to apply.

+

Example:

+
config_mods: ".functionality.name := 'foo'"
+
+
+

description

+

Type: String

+

Default: Empty

+

A description of the project.

+

Example:

+
description: My project
+
+
+

info

+

Type: Json

+

Default: Empty

+

Structured information. Can be any shape: a string, vector, map or even nested map.

+

Example:

+
info:
+  twitter: wizzkid
+  classes: [ one, two, three ]
+
+
+

keywords

+

Type: List of String

+

Default: Empty

+

The keywords of the project.

+

Example:

+
keywords: [ bioinformatics, genomics ]
+
+
+

license

+

Type: String

+

Default: Empty

+

The license of the project.

+
+
+
+ +
+
+Note +
+
+
+

When the license field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.

+
+
+

Example:

+
license: MIT
+
+ +
+

name

+

Type: String

+

Default: Empty

+

The name of the project.

+

Example:

+
name: my_project
+
+
+

organization

+

Type: String

+

Default: Empty

+

The organization of the project.

+
+
+
+ +
+
+Note +
+
+
+

When the organization field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.

+
+
+

Example:

+
organization: viash-io
+
+
+

reference

+

Type: References

+

Default: Empty

+

References to external resources related to the project.

+

Example:

+
reference:
+  doi: 10.1000/xx.123456.789
+  bibtex: |
+    @article{foo,
+      title={Foo},
+      author={Bar},
+      journal={Baz},
+      year={2024}
+    }
+
+
+

repositories

+

Type: List of RepositoryWithName

+

Default: Empty

+

Common repository definitions for component dependencies.

+
+
+
+ +
+
+Note +
+
+
+

Any repositories defined under .repositories in the project config will be prepended to the repositories defined to a component’s .functionality.repositories field.

+
+
+

Example:

+
repositories:
+  - name: openpipelines-bio
+    type: github
+    uri: openpipelines-bio/modules
+    tag: 0.3.0
+
+
+

source

+

Type: String

+

Default: Empty

+

Which source directory to use for the viash ns commands.

+

Example:

+
source: src
+
+
+

target

+

Type: String

+

Default: Empty

+

Which target directory to use for viash ns build.

+

Example:

+
target: target
+
+
+

version

+

Type: String

+

Default: Empty

+

The version of the project.

+
+
+
+ +
+
+Note +
+
+
+

When the version field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.

+
+
+

Example:

+
version: 0.1.0
+
+
+

viash_version

+

Type: String

+

Default: Empty

+

Which version of Viash to use.

+

Example:

+
viash_versions: 0.6.4
+ + +
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/reference/viash_code_block/index.html b/_versioned/0_8_5/reference/viash_code_block/index.html new file mode 100644 index 00000000..1b09d697 --- /dev/null +++ b/_versioned/0_8_5/reference/viash_code_block/index.html @@ -0,0 +1,1847 @@ + + + + + + + + + +Viash - Viash Code Block + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Viash Code Block

+
+ + + +
+ + + + +
+ + + +
+ + + +

Example:

+

When running a Viash component with viash run, Viash will wrap your script into a Bash executable. In doing so, it strips away the “Viash placeholder” code block and replaces it by a bit of code to your script for reading any parameter values at runtime.

+
+

Recognizing the Viash placeholder code block

+
+ +
+
+
#!/bin/bash
+
+## VIASH START
+par_input=path/to/file.txt
+par_output=output.txt
+## VIASH END
+
+# copy file
+echo "Copying '$par_input' to '$par_output'."
+cp -r "$par_input" "$par_output"
+
+
+
using System.IO;
+
+// VIASH START
+var par = new {
+  input = "path/to/file.txt",
+  output = "output.txt"
+};
+// VIASH END
+
+// copy file
+Console.WriteLine($"Copying '{par.input}' to '{par.output}'.");
+File.Copy(par.input, par.output, true);
+
+
+
const fs = require('fs');
+
+// VIASH START
+let par = {
+  'input': 'path/to/file.txt',
+  'output': 'output.txt'
+};
+// VIASH END
+
+// copy file
+console.log(`Copying '${par['input']}' to '${par['output']}'`)
+fs.copyFile(par['input'], par['output'], (err) => {
+  if (err) throw err;
+});
+
+
+
import shutil
+
+## VIASH START
+par = {
+  'input': 'file.txt',
+  'output': 'output.txt'
+}
+## VIASH END
+
+# copy file
+print(f"Copying '{par['input']}' to '{par['output']}'.")
+shutil.copyfile(par['input'], par['output'])
+
+
+
## VIASH START
+par <- list(
+  "input" = 'file.txt',
+  "output" = 'output.txt'
+)
+## VIASH END
+
+# copy file
+cat("Copying '", par$input, "' to '", par$output, "'.\n", sep = "")
+file.copy(par$input, par$output)
+
+
+
import java.nio.file.StandardCopyOption.REPLACE_EXISTING
+import java.nio.file.Files
+import java.nio.file.Paths
+
+// VIASH START
+case class ViashPar(input: String, output: String)
+val par = ViashPar(
+  "path/to/file.txt",
+  "output.txt"
+)
+// VIASH END
+
+// copy file
+println(s"Copying '${par.input}' to '${par.output}'.")
+val fileIn = Paths.get(par.input)
+val fileOut = Paths.get(par.output)
+Files.copy(fileIn, fileOut, REPLACE_EXISTING)
+
+
+
+

A “Viash placeholder” code block is the section between the VIASH START and VIASH END comments.

+
+
+

What happens at runtime

+

By passing arguments to the component, Viash will add your parameter values to your script by replacing the Viash placeholder code block. If no such code block exists yet, the parameters are inserted at the top of the file.

+

The resulting code block will contain two maps (or dictionaries): par and meta. The par map contains the parameter values specified by the user, and meta contains additional information on the current runtime environment. Note that for Bash scripts, the par and meta maps are flattened into separate environment variables.

+
+
+

Previewing the par and meta objects

+

To get insight into how par and meta are defined, you can run viash config inject to replace the current parameter placeholder with an auto-generated parameter placeholder.

+
+
+
+ +
+
+Warning +
+
+
+

This will change the contents of your script!

+
+
+
+ +
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+
+
+

The updated script.sh now contains the following code:

+
#!/bin/bash
+
+## VIASH START
+# The following code has been auto-generated by Viash.
+par_input='file.txt'
+par_output='output.txt'
+meta_name='example_bash'
+meta_functionality_name='example_bash'
+meta_resources_dir='/tmp/viash_inject_example_bash2630269524526700811'
+meta_executable='/tmp/viash_inject_example_bash2630269524526700811/example_bash'
+meta_config='/tmp/viash_inject_example_bash2630269524526700811/.config.vsh.yaml'
+meta_temp_dir='/tmp'
+meta_cpus='123'
+meta_memory_b='123'
+meta_memory_kb='123'
+meta_memory_mb='123'
+meta_memory_gb='123'
+meta_memory_tb='123'
+meta_memory_pb='123'
+
+## VIASH END
+
+# copy file
+echo "Copying '$par_input' to '$par_output'."
+cp -r "$par_input" "$par_output"
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+
+
+

The updated script.csx now contains the following code:

+
using System.IO;
+
+// VIASH START
+// The following code has been auto-generated by Viash.
+var par = new {
+  input = @"file.txt",
+  output = @"output.txt"
+};
+var meta = new {
+  name = @"example_csharp",
+  functionality_name = @"example_csharp",
+  resources_dir = @"/tmp/viash_inject_example_csharp16671861002550552554",
+  executable = @"/tmp/viash_inject_example_csharp16671861002550552554/example_csharp",
+  config = @"/tmp/viash_inject_example_csharp16671861002550552554/.config.vsh.yaml",
+  temp_dir = @"/tmp",
+  cpus = Convert.ToInt32(@"123"),
+  memory_b = Convert.ToInt64(@"123"),
+  memory_kb = Convert.ToInt64(@"123"),
+  memory_mb = Convert.ToInt64(@"123"),
+  memory_gb = Convert.ToInt64(@"123"),
+  memory_tb = Convert.ToInt64(@"123"),
+  memory_pb = Convert.ToInt64(@"123")
+};
+var dep = new {
+  
+};
+
+// VIASH END
+
+// copy file
+Console.WriteLine($"Copying '{par.input}' to '{par.output}'.");
+File.Copy(par.input, par.output, true);
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+
+
+

The updated script.js now contains the following code:

+
const fs = require('fs');
+
+// VIASH START
+// The following code has been auto-generated by Viash.
+let par = {
+  'input': String.raw`file.txt`,
+  'output': String.raw`output.txt`
+};
+let meta = {
+  'name': String.raw`example_js`,
+  'functionality_name': String.raw`example_js`,
+  'resources_dir': String.raw`/tmp/viash_inject_example_js7178219499071681491`,
+  'executable': String.raw`/tmp/viash_inject_example_js7178219499071681491/example_js`,
+  'config': String.raw`/tmp/viash_inject_example_js7178219499071681491/.config.vsh.yaml`,
+  'temp_dir': String.raw`/tmp`,
+  'cpus': parseInt(String.raw`123`),
+  'memory_b': parseInt(String.raw`123`),
+  'memory_kb': parseInt(String.raw`123`),
+  'memory_mb': parseInt(String.raw`123`),
+  'memory_gb': parseInt(String.raw`123`),
+  'memory_tb': parseInt(String.raw`123`),
+  'memory_pb': parseInt(String.raw`123`)
+};
+let dep = {
+  
+};
+
+// VIASH END
+
+// copy file
+console.log(`Copying '${par['input']}' to '${par['output']}'`)
+fs.copyFile(par['input'], par['output'], (err) => {
+  if (err) throw err;
+});
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+
+
+

The updated script.py now contains the following code:

+
import shutil
+
+## VIASH START
+# The following code has been auto-generated by Viash.
+par = {
+  'input': r'file.txt',
+  'output': r'output.txt'
+}
+meta = {
+  'name': r'example_python',
+  'functionality_name': r'example_python',
+  'resources_dir': r'/tmp/viash_inject_example_python9842362190271714649',
+  'executable': r'/tmp/viash_inject_example_python9842362190271714649/example_python',
+  'config': r'/tmp/viash_inject_example_python9842362190271714649/.config.vsh.yaml',
+  'temp_dir': r'/tmp',
+  'cpus': int(r'123'),
+  'memory_b': int(r'123'),
+  'memory_kb': int(r'123'),
+  'memory_mb': int(r'123'),
+  'memory_gb': int(r'123'),
+  'memory_tb': int(r'123'),
+  'memory_pb': int(r'123')
+}
+dep = {
+  
+}
+
+## VIASH END
+
+# copy file
+print(f"Copying '{par['input']}' to '{par['output']}'.")
+shutil.copyfile(par['input'], par['output'])
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+
+
+

The updated script.R now contains the following code:

+
## VIASH START
+# The following code has been auto-generated by Viash.
+# treat warnings as errors
+.viash_orig_warn <- options(warn = 2)
+
+par <- list(
+  "input" = 'file.txt',
+  "output" = 'output.txt'
+)
+meta <- list(
+  "name" = 'example_r',
+  "functionality_name" = 'example_r',
+  "resources_dir" = '/tmp/viash_inject_example_r13007686674904618048',
+  "executable" = '/tmp/viash_inject_example_r13007686674904618048/example_r',
+  "config" = '/tmp/viash_inject_example_r13007686674904618048/.config.vsh.yaml',
+  "temp_dir" = '/tmp',
+  "cpus" = as.integer('123'),
+  "memory_b" = bit64::as.integer64('123'),
+  "memory_kb" = bit64::as.integer64('123'),
+  "memory_mb" = bit64::as.integer64('123'),
+  "memory_gb" = bit64::as.integer64('123'),
+  "memory_tb" = bit64::as.integer64('123'),
+  "memory_pb" = bit64::as.integer64('123')
+)
+dep <- list(
+  
+)
+
+
+# restore original warn setting
+options(.viash_orig_warn)
+rm(.viash_orig_warn)
+
+## VIASH END
+
+# copy file
+cat("Copying '", par$input, "' to '", par$output, "'.\n", sep = "")
+file.copy(par$input, par$output)
+
+
+

Running viash config inject effectively changes the contents of the script.

+
+
viash config inject config.vsh.yaml
+
+
Warning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.
+Warning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.
+
+
+

The updated script.scala now contains the following code:

+
import java.nio.file.StandardCopyOption.REPLACE_EXISTING
+import java.nio.file.Files
+import java.nio.file.Paths
+
+// VIASH START
+// The following code has been auto-generated by Viash.
+case class ViashPar(
+  input: Option[String],
+  output: Option[String]
+)
+val par = ViashPar(
+  Some("""file.txt"""),
+  Some("""output.txt""")
+)
+case class ViashMeta(
+  name: Option[String],
+  functionality_name: Option[String],
+  resources_dir: Option[String],
+  executable: Option[String],
+  config: Option[String],
+  temp_dir: Option[String],
+  cpus: Option[Int],
+  memory_b: Option[Long],
+  memory_kb: Option[Long],
+  memory_mb: Option[Long],
+  memory_gb: Option[Long],
+  memory_tb: Option[Long],
+  memory_pb: Option[Long]
+)
+val meta = ViashMeta(
+  Some("""example_scala"""),
+  Some("""example_scala"""),
+  Some("""/tmp/viash_inject_example_scala5030083911834201836"""),
+  Some("""/tmp/viash_inject_example_scala5030083911834201836/example_scala"""),
+  Some("""/tmp/viash_inject_example_scala5030083911834201836/.config.vsh.yaml"""),
+  Some("""/tmp"""),
+  Some("""123""".toInt),
+  Some("""123""".toLong),
+  Some("""123""".toLong),
+  Some("""123""".toLong),
+  Some("""123""".toLong),
+  Some("""123""".toLong),
+  Some("""123""".toLong)
+)
+case class ViashDep(
+  
+)
+val dep = ViashDep(
+  
+)
+
+// VIASH END
+
+// copy file
+println(s"Copying '${par.input}' to '${par.output}'.")
+val fileIn = Paths.get(par.input)
+val fileOut = Paths.get(par.output)
+Files.copy(fileIn, fileOut, REPLACE_EXISTING)
+
+
+
+
+
+

Runtime parameters in par

+

The par object (or par_ environment variables in Bash) will contain argument values passed at runtime. For example, passing --input foo.txt will result in a par["input"] being equal to "foo.txt".

+
+
+
+ +
+
+Tip +
+
+
+

Try adding more arguments with different file types to see what effect this has on the resulting placeholder.

+
+
+
+
+

Meta variables in meta

+

Meta-variables offer information on the runtime environment which you can use from within your script.

+
    +
  • cpus (integer): The maximum number of (logical) cpus a component is allowed to use. By default, this value will be undefined.

  • +
  • config (string): Path to the processed Viash config YAML. This file is usually called .config.vsh.yaml and resides next to the wrapped executable (see below). This YAML file is useful for doing some runtime introspection of the component for writing generic unit tests.

  • +
  • executable (string): The executable being used at runtime; that is, the wrapped script. This variable is used in unit tests.

  • +
  • functionality_name (string): The name of the component, useful for logging.

  • +
  • memory_* (long): The maximum amount of memory a component is allowed to allocate. The following denominations are provided: memory_b, memory_kb, memory_mb, memory_gb, memory_tb, memory_pb. By default, this value will be undefined.

  • +
  • resources_dir (string): Path to where the resources are stored.

  • +
  • temp_dir (string): A temporary directory in which your script is allowed to create new temporary files / directories. By default, this will be set to the VIASH_TEMP environment variable. When the VIASH_TEMP variable is undefined, POSIX TMPDIR or /tmp is used instead.

  • +
+
+

cpus (integer)

+

This field specifies the maximum number of (logical) cpus a component is allowed to use. This is useful when parallellizing your component in such a way that integrates very nicely with pipeline frameworks such as Nextflow. Below is an example usage of the cpus meta-variable.

+
+ +
+
+
#!/bin/bash
+
+## VIASH START
+par_input="path/to/file.txt"
+par_output="output.txt"
+meta_cpus=10
+## VIASH END
+
+# Pass number of cores to the popular_software_tool. Set the default to 1.
+./popular_software_tool --ncores ${meta_cpus:-1}
+
+
+

No example available yet.

+
+
+

No example available yet.

+
+
+
from multiprocessing import Pool
+
+## VIASH START
+par = {}
+meta = {"cpus": 1}
+## VIASH END
+
+def my_fun(x):
+    return x + "!"
+my_data = ["hello", "world"]
+
+with Pool(processes=meta.get("cpus", 1)) as pool:
+    out = pool.map(my_fun, my_data)
+
+
+
library(furrr)
+
+## VIASH START
+par <- list()
+meta <- list(
+  cpus = 1L
+)
+## VIASH END
+
+if (is.null(meta$cpus)) meta$cpus <- 1
+plan(multisession, workers = meta$cpus)
+
+my_data <- c("hello", "world")
+out = future_map(
+  my_data, 
+  function(x) {
+    paste0(x, "!")
+  }
+)
+
+
+
import scala.collection.parallel._
+import java.util.concurrent.ForkJoinPool
+
+// VIASH START
+// ...
+// VIASH END
+
+val pc = mutable.ParArray(1, 2, 3)
+val numCores = meta.cores.getOrElse(1)
+pc.tasksupport = new ForkJoinTaskSupport(new ForkJoinPool(numCores))
+pc map { _ + 1 }
+
+
+
+

You can set the number of cores in your component using any of the following approaches:

+
# as a parameter of viash run
+viash run config.vsh.yaml --cpus 10 -- <my component arguments>
+
+# as a parameter of viash test
+viash test config.vsh.yaml --cpus 10
+
+# or as a parameter of the executable
+viash build config.vsh.yaml -o output
+output/my_executable ---cpus 10
+#                     ↑ notice the triple dash
+
+
+

config (string)

+

Path to the processed Viash config YAML. This file is usually called .config.vsh.yaml and resides next to the wrapped executable (see below). This YAML file is useful for doing some runtime introspection of the component for writing generic unit tests.

+
+
+

executable (string)

+

The executable being used at runtime; that is, the wrapped script. This variable is used in unit tests.

+
#!/usr/bin/env bash
+set -x
+
+"$meta_executable" --input input.txt > output.txt
+
+[[ ! -f output.txt ]] && echo "Output file could not be found!" && exit 1
+cat output.txt
+grep -q 'expected output' output.txt
+
+echo Done
+
+
+

functionality_name (string)

+

The name of the component, useful for logging.

+
+
+

memory_* (long)

+

The maximum amount of memory a component is allowed to allocate. The following denominations are provided: memory_b, memory_kb, memory_mb, memory_gb, memory_tb, memory_pb. By default, this value will be undefined.

+

You can set the amount of memory in your component using any of the following approaches:

+
# as a parameter of viash run
+viash run config.vsh.yaml --memory 2GB -- <my component arguments>
+
+# as a parameter of viash test
+viash test config.vsh.yaml --memory 2GB
+
+# or as a parameter of the executable
+viash build config.vsh.yaml -o output
+output/my_executable ---memory 2GB
+#                     ↑ notice the triple dash
+
+
+

resources_dir (string)

+

This field specifies the absolute path to where the resources are stored. During the build phase resources are copied or fetched into this directory so they are ready to be read during execution of the script or test scripts.

+
+
+

temp_dir (string)

+

A temporary directory in which your script is allowed to create new temporary files / directories. By default, this will be set to the VIASH_TEMP environment variable. When the VIASH_TEMP variable is undefined, the POSIX TMPDIR and other common misspellings will be checked and ultimately /tmp is used as fallback.

+ + +
+
+ +
+ + + +
+ + + + + + \ No newline at end of file diff --git a/_versioned/0_8_5/robots.txt b/_versioned/0_8_5/robots.txt new file mode 100644 index 00000000..48d05e31 --- /dev/null +++ b/_versioned/0_8_5/robots.txt @@ -0,0 +1 @@ +Sitemap: https://viash.io/sitemap.xml diff --git a/_versioned/0_8_5/search.json b/_versioned/0_8_5/search.json new file mode 100644 index 00000000..ad8b8216 --- /dev/null +++ b/_versioned/0_8_5/search.json @@ -0,0 +1,12694 @@ +[ + { + "objectID": "privacy.html", + "href": "privacy.html", + "title": "Privacy Policy", + "section": "", + "text": "TL;DR: We do not use cookies and we do not collect any personal data.\n\nWebsite visitors\n\nNo personal information is collected.\nNo information is stored in the browser.\nNo information is shared with, sent to or sold to third-parties.\nNo information is shared with advertising companies.\nNo information is mined and harvested for personal and behavioral trends.\nNo information is monetized.\n\n\n\nInformation we collect and what we use it for\nWe run Google Analytics analytics on viash.io. The following information is collected:\n\nPage URL. We track the page URL of each page view on this website. We use this to understand which pages have been viewed and how many times a particular page has been viewed. For example: https://viash.io/.\nHTTP Referrer. We use the referrer string to understand the number of visitors referred to this website from links on other sites. For example: https://github.com/.\nBrowser. We use this to understand what browsers people use when visiting this website. This is derived from the User-Agent HTTP header. The full User-Agent is discarded. For example: Chrome.\nOperating system. We use this to understand what operating systems people use when visiting this website. We only use the brand of the operating system and don’t include the version number or any other details. This is derived from the User-Agent HTTP header. The full User-Agent is discarded. For example: GNU/Linux.\nDevice type. We use this to understand what devices people use when visiting this website. This is derived from window.innerWidth. The actual width of the browser in pixels is discarded. For example: Desktop.\nVisitor Country. We look up the visitor’s country using the IP address. We do not track anything more granular than the country of origin and the IP address of the visitor is discarded. We never store IP addresses in our database or logs. For example: Canada.\n\n\n\nContact us\nContact us if you have any questions." + }, + { + "objectID": "guide/project/ide-setup.html", + "href": "guide/project/ide-setup.html", + "title": "IDE setup", + "section": "", + "text": "Since a Viash components consists of a script in one of the supported languages and a YAML file, you can use any editor of your choosing to create these files.\nWhen building a Nextflow pipeline built from Viash components written in Bash, R, and Python, we highly recommend using Visual Studio Code.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#what-is-visual-studio-code", + "href": "guide/project/ide-setup.html#what-is-visual-studio-code", + "title": "IDE setup", + "section": "What is Visual Studio Code?", + "text": "What is Visual Studio Code?\nVisual Studio Code is an open source code-editor developed by Microsoft for Windows, Linux and macOS. As of 2021, it’s the #1 most popular developer environment tool, and for good reason. It’s lightweight, supports many languages and has a ton of features. Some of its most prominent features include:\n\nSyntax highlighting\nIntelligent code completion\nCode refactoring\nEmbedded Git\nSnippets\nExtensions and themes", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#installation", + "href": "guide/project/ide-setup.html#installation", + "title": "IDE setup", + "section": "Installation", + "text": "Installation\nVS Code can be downloaded from this page:\nhttps://code.visualstudio.com/Download\nThere are installers available for all major operating systems, so simply download and install the version for your system.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#recommended-extensions", + "href": "guide/project/ide-setup.html#recommended-extensions", + "title": "IDE setup", + "section": "Recommended extensions", + "text": "Recommended extensions\nVisual Studio Code supports installing extensions that extend the capabilities and introduce quality of life changes. The lists below are our recommendations for use with Viash.\n\nGeneral\nThese extensions are useful for most languages:\n\nCode Runner: This allows you to easily run any selected code and output the results to the built-in terminal. Make sure to take a look at the Configuration section of the page to set it up for the languages you’ll work with.\nCode Spell Checker: A quality of life extension that prevents you from making common spelling mistakes in your code by showing squiggly underlines below typos.\nError Lens: This extension makes errors and warnings more prominent by highlighting the entire line and adding the message at the end. This can speed up the writing of scripts tremendously.\nPrettier code formatter: Integrates the prettier code formatter into VS Code, which makes formatting your code extremely easy.\n\n\n\nYAML\nViash config files are written in YAML, so it makes sense to have an extension for that language:\n\nYAML: This extension provides YAML validation, syntax highlighting, auto completion and document outlining for YAML. A must have for writing and editing Viash config files!", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#markdown", + "href": "guide/project/ide-setup.html#markdown", + "title": "IDE setup", + "section": "Markdown", + "text": "Markdown\nIf you’re planning on writing documentation for components you write, can supplement the description and the CLI with a Markdown document. VS Code has Markdown support built-in, but the extension below makes writing markdown documents even easier!\n\nMarkdown All in One: Some of the features include keyboard shortcuts for text formatting, list editing, GitHub flavored Markdown and auto completion for Markdown.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#bash", + "href": "guide/project/ide-setup.html#bash", + "title": "IDE setup", + "section": "Bash", + "text": "Bash\n\nshell-format: By installing this extension, you get syntax highlighting and code formatting for shell scripts.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#c", + "href": "guide/project/ide-setup.html#c", + "title": "IDE setup", + "section": "C#", + "text": "C#\n\nC#: Adds syntax highlighting, IntelliSense and debugging capabilities to VS Code for C#.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#python", + "href": "guide/project/ide-setup.html#python", + "title": "IDE setup", + "section": "Python", + "text": "Python\nPython: Adds syntax highlighting, IntelliSense, debugging and code formatting. This extension also installs the PyLance language server and Jupyter for Jupyter Notebook support.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#javascript", + "href": "guide/project/ide-setup.html#javascript", + "title": "IDE setup", + "section": "Javascript", + "text": "Javascript\nNode.js Extension Pack: VS Code actually already has a lot of Node.js features out of the box, but this extension pack adds adds even more. The extensions adds JS code hints, module search, code snippets and IntelliSense for NPM and paths just to name a few features.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#r", + "href": "guide/project/ide-setup.html#r", + "title": "IDE setup", + "section": "R", + "text": "R\nR: This extension adds syntax highlighting, code analysis, keyboard shortcuts, package management and a lot more for the R language.\n\nNote: This extension requires you to install R and the languageserver CRAN package which depends on libxml2-dev, libcurl4-openssl-dev and libssl-dev before the extension will work.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#scala", + "href": "guide/project/ide-setup.html#scala", + "title": "IDE setup", + "section": "Scala", + "text": "Scala\n\nScala Syntax (official): Adds syntax highlighting for Scala 2 and 3.\nScala (Metals): Adds code completion, debugging, formatting, renaming and much more for Scala.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/ide-setup.html#wsl2", + "href": "guide/project/ide-setup.html#wsl2", + "title": "IDE setup", + "section": "WSL2", + "text": "WSL2\nIf you’re using WSL2, you’ll probably want to install the Remote - WSL extension. This extension lets you use your Windows version of VS Code in WSL2, as if it was running native.\nThe commands, extensions and the terminal will run on WSL, which makes for an ideal hybrid environment.\nOnce installed, you can connect to WSL2 by clicking the green remote button at the bottom left and choosing New WSL Window in the list that pops up. Alternatively, you can use the command code FOLDER/FILE (e.g. code .) on the WSL2 side to open that file or folder in a remote VS Code session.", + "crumbs": [ + "Guide", + "Project", + "IDE setup" + ] + }, + { + "objectID": "guide/project/batch-processing.html", + "href": "guide/project/batch-processing.html", + "title": "Batch processing", + "section": "", + "text": "Within this project it’s possible to do all of the same things mentioned in the “Component” guide such as build a target executable with viash build and test a component with viash test. However, doing this for all components in the repository can bet quite tedious.\nLuckily, Viash provides a set of commands for building, testing or inspecting all Viash components in the current namespace (ns).", + "crumbs": [ + "Guide", + "Project", + "Batch processing" + ] + }, + { + "objectID": "guide/project/batch-processing.html#build-all-components", + "href": "guide/project/batch-processing.html#build-all-components", + "title": "Batch processing", + "section": "Build all components", + "text": "Build all components\nYou can generate your first full development build using the viash ns build command.\nviash ns build --setup cachedbuild\n\n\nOutput\n\n\n\ntemporaryFolder: /tmp/viash_hub_repo4827755326463865623 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \ntemporaryFolder: /tmp/viash_hub_repo10922339893564640824 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \nExporting take_column (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/take_column\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/take_column:dev' with Dockerfile\nExporting take_column (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/take_column\nExporting workflow (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/workflow\nExporting combine_columns (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/combine_columns\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/combine_columns:dev' with Dockerfile\nExporting combine_columns (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/combine_columns\nExporting remove_comments (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/remove_comments\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/remove_comments:dev' with Dockerfile\nExporting remove_comments (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/remove_comments\nAll 7 configs built successfully\n\n\n\nHere are some useful optional arguments:\n\n--parallel: Run multiple builds in parallel.\n--setup cachedbuild: Build Docker images using the cachedbuild strategy.\n--query demo: Only select components that have ‘demo’ in the namespace or name.", + "crumbs": [ + "Guide", + "Project", + "Batch processing" + ] + }, + { + "objectID": "guide/project/batch-processing.html#test-all-components", + "href": "guide/project/batch-processing.html#test-all-components", + "title": "Batch processing", + "section": "Test all components", + "text": "Test all components\nYou can run all of the component tests using the viash ns test command.\nviash ns test\n\n\nOutput\n\n\n\ntemporaryFolder: /tmp/viash_hub_repo7423845407513460024 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \ntemporaryFolder: /tmp/viash_hub_repo3888698291677718785 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \nThe working directory for the namespace tests is /tmp/viash_ns_test3142583467010306262\n namespace functionality platform test_name exit_code duration result\n template take_column docker start \n template take_column docker build_executable 0 1 SUCCESS\n template take_column docker tests -1 0 MISSING\nno tests found\n====================================================================\n template combine_columns docker start \n template combine_columns docker build_executable 0 1 SUCCESS\n template combine_columns docker tests -1 0 MISSING\nno tests found\n====================================================================\n template remove_comments docker start \n template remove_comments docker build_executable 0 1 SUCCESS\n template remove_comments docker test.sh 0 1 SUCCESS\nNot all configs built and tested successfully\n 2/6 tests missing\n 4/6 configs built and tested successfully", + "crumbs": [ + "Guide", + "Project", + "Batch processing" + ] + }, + { + "objectID": "guide/project/batch-processing.html#listing-components", + "href": "guide/project/batch-processing.html#listing-components", + "title": "Batch processing", + "section": "Listing components", + "text": "Listing components\nYou can run list all components using the viash ns list command.\nviash ns list\n\n\nOutput\n\n\n\ntemporaryFolder: /tmp/viash_hub_repo15402091541015675898 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \ntemporaryFolder: /tmp/viash_hub_repo13601619796227807657 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \n- functionality:\n name: \"take_column\"\n namespace: \"template\"\n version: \"dev\"\n arguments:\n - type: \"file\"\n name: \"--input\"\n alternatives:\n - \"-i\"\n must_exist: true\n create_parent: true\n required: true\n direction: \"input\"\n multiple: false\n multiple_sep: \":\"\n dest: \"par\"\n - type: \"file\"\n name: \"--output\"\n alternatives:\n - \"-o\"\n must_exist: true\n create_parent: true\n required: true\n direction: \"output\"\n multiple: false\n multiple_sep: \":\"\n dest: \"par\"\n - type: \"integer\"\n name: \"--column\"\n default:\n - 2\n required: false\n direction: \"input\"\n multiple: false\n multiple_sep: \":\"\n dest: \"par\"\n resources:\n - type: \"python_script\"\n path: \"script.py\"\n is_executable: true\n parent: \"file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/\"\n status: \"enabled\"\n set_wd_to_resources_dir: false\n platforms:\n - type: \"docker\"\n id: \"docker\"\n image: \"python:3.10-slim\"\n target_organization: \"viash-io/viash_project_template\"\n target_registry: \"ghcr.io\"\n namespace_separator: \"/\"\n resolve_volume: \"Automatic\"\n chown: true\n setup_strategy: \"ifneedbepullelsecachedbuild\"\n target_image_source: \"https://github.com/viash-io/viash_project_template\"\n setup:\n - type: \"python\"\n user: false\n packages:\n - \"pandas\"\n upgrade: true\n entrypoint: []\n - type: \"nextflow\"\n id: \"nextflow\"\n directives:\n tag: \"$id\"\n auto:\n simplifyInput: true\n simplifyOutput: false\n transcript: false\n publish: false\n config:\n labels:\n mem1gb: \"memory = 1.GB\"\n mem2gb: \"memory = 2.GB\"\n mem4gb: \"memory = 4.GB\"\n mem8gb: \"memory = 8.GB\"\n mem16gb: \"memory = 16.GB\"\n mem32gb: \"memory = 32.GB\"\n mem64gb: \"memory = 64.GB\"\n mem128gb: \"memory = 128.GB\"\n mem256gb: \"memory = 256.GB\"\n mem512gb: \"memory = 512.GB\"\n mem1tb: \"memory = 1.TB\"\n mem2tb: \"memory = 2.TB\"\n mem4tb: \"memory = 4.TB\"\n mem8tb: \"memory = 8.TB\"\n mem16tb: \"memory = 16.TB\"\n mem32tb: \"memory = 32.TB\"\n mem64tb: \"memory = 64.TB\"\n mem128tb: \"memory = 128.TB\"\n mem256tb: \"memory = 256.TB\"\n mem512tb: \"memory = 512.TB\"\n cpu1: \"cpus = 1\"\n cpu2: \"cpus = 2\"\n cpu5: \"cpus = 5\"\n cpu10: \"cpus = 10\"\n cpu20: \"cpus = 20\"\n cpu50: \"cpus = 50\"\n cpu100: \"cpus = 100\"\n cpu200: \"cpus = 200\"\n cpu500: \"cpus = 500\"\n cpu1000: \"cpus = 1000\"\n debug: false\n container: \"docker\"\n info:\n config: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml\"\n viash_version: \"0.8.3\"\n git_commit: \"d40c842c83ddc159651739dead0fd67fbd6be7d6\"\n git_remote: \"https://github.com/viash-io/viash_project_template.git\"\n- functionality:\n name: \"workflow\"\n namespace: \"template\"\n version: \"dev\"\n arguments:\n - type: \"file\"\n name: \"--input\"\n alternatives:\n - \"-i\"\n description: \"Input TSV files\"\n example:\n - \"file1.tar.gz;file2.tar.gz\"\n must_exist: true\n create_parent: true\n required: true\n direction: \"input\"\n multiple: true\n multiple_sep: \";\"\n dest: \"par\"\n - type: \"file\"\n name: \"--output\"\n alternatives:\n - \"-o\"\n description: \"Output TSV file\"\n example:\n - \"output.tsv\"\n must_exist: true\n create_parent: true\n required: true\n direction: \"output\"\n multiple: false\n multiple_sep: \":\"\n dest: \"par\"\n resources:\n - type: \"nextflow_script\"\n path: \"main.nf\"\n is_executable: true\n parent: \"file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/workflow/\"\n entrypoint: \"run_wf\"\n description: \"An example pipeline and project template.\\n\"\n status: \"enabled\"\n dependencies:\n - name: \"template/combine_columns\"\n repository:\n type: \"local\"\n localPath: \"\"\n foundConfigPath: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml\"\n configInfo:\n functionalityName: \"combine_columns\"\n git_tag: \"\"\n git_remote: \"https://github.com/viash-io/viash_project_template.git\"\n viash_version: \"0.8.3\"\n config: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml\"\n functionalityNamespace: \"template\"\n output: \"\"\n platform: \"\"\n git_commit: \"d40c842c83ddc159651739dead0fd67fbd6be7d6\"\n executable: \"\"\n - name: \"template/remove_comments\"\n repository:\n type: \"local\"\n localPath: \"\"\n foundConfigPath: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml\"\n configInfo:\n functionalityName: \"remove_comments\"\n git_tag: \"\"\n git_remote: \"https://github.com/viash-io/viash_project_template.git\"\n viash_version: \"0.8.3\"\n config: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml\"\n functionalityNamespace: \"template\"\n output: \"\"\n platform: \"\"\n git_commit: \"d40c842c83ddc159651739dead0fd67fbd6be7d6\"\n executable: \"\"\n - name: \"template/take_column\"\n repository:\n type: \"local\"\n localPath: \"\"\n foundConfigPath: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml\"\n configInfo:\n functionalityName: \"take_column\"\n git_tag: \"\"\n git_remote: \"https://github.com/viash-io/viash_project_template.git\"\n viash_version: \"0.8.3\"\n config: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml\"\n functionalityNamespace: \"template\"\n output: \"\"\n platform: \"\"\n git_commit: \"d40c842c83ddc159651739dead0fd67fbd6be7d6\"\n executable: \"\"\n - name: \"split/vsh_flatten\"\n repository:\n type: \"vsh\"\n name: \"\"\n repo: \"data-intuitive/vsh-pipeline-operators\"\n tag: \"v0.2.0\"\n localPath: \"/tmp/viash_hub_repo15402091541015675898\"\n foundConfigPath: \"/tmp/viash_hub_repo15402091541015675898/target/docker/split/vsh_flatten/.config.vsh.yaml\"\n configInfo:\n functionalityName: \"vsh_flatten\"\n git_remote: \"git@viash-hub.com:data-intuitive/vsh-pipeline-operators.git\"\n viash_version: \"0.8.3\"\n config: \"/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/src/split/vsh_flatten/config.vsh.yaml\"\n functionalityNamespace: \"split\"\n output: \"/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/target/docker/split/vsh_flatten\"\n platform: \"docker\"\n git_commit: \"05a5bfa4eaa2c04ba473671e4d30c6c18aceec6e\"\n executable: \"/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/target/docker/split/vsh_flatten/main.nf\"\n - name: \"join/vsh_toList\"\n repository:\n type: \"vsh\"\n name: \"\"\n repo: \"data-intuitive/vsh-pipeline-operators\"\n tag: \"v0.2.0\"\n localPath: \"/tmp/viash_hub_repo13601619796227807657\"\n foundConfigPath: \"/tmp/viash_hub_repo13601619796227807657/target/nextflow/join/vsh_toList/.config.vsh.yaml\"\n configInfo:\n functionalityName: \"vsh_toList\"\n git_remote: \"git@viash-hub.com:data-intuitive/vsh-pipeline-operators.git\"\n viash_version: \"0.8.3\"\n config: \"/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/src/join/vsh_toList/config.vsh.yaml\"\n functionalityNamespace: \"join\"\n output: \"/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/target/nextflow/join/vsh_toList\"\n platform: \"nextflow\"\n git_commit: \"05a5bfa4eaa2c04ba473671e4d30c6c18aceec6e\"\n executable: \"/Users/toni/code/projects/viash-hub/vsh-pipeline-operators/target/nextflow/join/vsh_toList/main.nf\"\n repositories:\n - type: \"local\"\n name: \"local\"\n localPath: \"\"\n - type: \"vsh\"\n name: \"vsh-pipeline-operators\"\n repo: \"data-intuitive/vsh-pipeline-operators\"\n tag: \"v0.2.0\"\n localPath: \"\"\n set_wd_to_resources_dir: false\n platforms:\n - type: \"nextflow\"\n id: \"nextflow\"\n directives:\n tag: \"$id\"\n auto:\n simplifyInput: true\n simplifyOutput: false\n transcript: false\n publish: false\n config:\n labels:\n mem1gb: \"memory = 1.GB\"\n mem2gb: \"memory = 2.GB\"\n mem4gb: \"memory = 4.GB\"\n mem8gb: \"memory = 8.GB\"\n mem16gb: \"memory = 16.GB\"\n mem32gb: \"memory = 32.GB\"\n mem64gb: \"memory = 64.GB\"\n mem128gb: \"memory = 128.GB\"\n mem256gb: \"memory = 256.GB\"\n mem512gb: \"memory = 512.GB\"\n mem1tb: \"memory = 1.TB\"\n mem2tb: \"memory = 2.TB\"\n mem4tb: \"memory = 4.TB\"\n mem8tb: \"memory = 8.TB\"\n mem16tb: \"memory = 16.TB\"\n mem32tb: \"memory = 32.TB\"\n mem64tb: \"memory = 64.TB\"\n mem128tb: \"memory = 128.TB\"\n mem256tb: \"memory = 256.TB\"\n mem512tb: \"memory = 512.TB\"\n cpu1: \"cpus = 1\"\n cpu2: \"cpus = 2\"\n cpu5: \"cpus = 5\"\n cpu10: \"cpus = 10\"\n cpu20: \"cpus = 20\"\n cpu50: \"cpus = 50\"\n cpu100: \"cpus = 100\"\n cpu200: \"cpus = 200\"\n cpu500: \"cpus = 500\"\n cpu1000: \"cpus = 1000\"\n debug: false\n container: \"docker\"\n info:\n config: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/workflow/config.vsh.yaml\"\n viash_version: \"0.8.3\"\n git_commit: \"d40c842c83ddc159651739dead0fd67fbd6be7d6\"\n git_remote: \"https://github.com/viash-io/viash_project_template.git\"\n- functionality:\n name: \"combine_columns\"\n namespace: \"template\"\n version: \"dev\"\n arguments:\n - type: \"file\"\n name: \"--input\"\n alternatives:\n - \"-i\"\n must_exist: true\n create_parent: true\n required: true\n direction: \"input\"\n multiple: true\n multiple_sep: \":\"\n dest: \"par\"\n - type: \"file\"\n name: \"--output\"\n alternatives:\n - \"-o\"\n must_exist: true\n create_parent: true\n required: true\n direction: \"output\"\n multiple: false\n multiple_sep: \":\"\n dest: \"par\"\n resources:\n - type: \"r_script\"\n path: \"script.R\"\n is_executable: true\n parent: \"file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/\"\n status: \"enabled\"\n set_wd_to_resources_dir: false\n platforms:\n - type: \"docker\"\n id: \"docker\"\n image: \"eddelbuettel/r2u:22.04\"\n target_organization: \"viash-io/viash_project_template\"\n target_registry: \"ghcr.io\"\n namespace_separator: \"/\"\n resolve_volume: \"Automatic\"\n chown: true\n setup_strategy: \"ifneedbepullelsecachedbuild\"\n target_image_source: \"https://github.com/viash-io/viash_project_template\"\n entrypoint: []\n - type: \"nextflow\"\n id: \"nextflow\"\n directives:\n tag: \"$id\"\n auto:\n simplifyInput: true\n simplifyOutput: false\n transcript: false\n publish: false\n config:\n labels:\n mem1gb: \"memory = 1.GB\"\n mem2gb: \"memory = 2.GB\"\n mem4gb: \"memory = 4.GB\"\n mem8gb: \"memory = 8.GB\"\n mem16gb: \"memory = 16.GB\"\n mem32gb: \"memory = 32.GB\"\n mem64gb: \"memory = 64.GB\"\n mem128gb: \"memory = 128.GB\"\n mem256gb: \"memory = 256.GB\"\n mem512gb: \"memory = 512.GB\"\n mem1tb: \"memory = 1.TB\"\n mem2tb: \"memory = 2.TB\"\n mem4tb: \"memory = 4.TB\"\n mem8tb: \"memory = 8.TB\"\n mem16tb: \"memory = 16.TB\"\n mem32tb: \"memory = 32.TB\"\n mem64tb: \"memory = 64.TB\"\n mem128tb: \"memory = 128.TB\"\n mem256tb: \"memory = 256.TB\"\n mem512tb: \"memory = 512.TB\"\n cpu1: \"cpus = 1\"\n cpu2: \"cpus = 2\"\n cpu5: \"cpus = 5\"\n cpu10: \"cpus = 10\"\n cpu20: \"cpus = 20\"\n cpu50: \"cpus = 50\"\n cpu100: \"cpus = 100\"\n cpu200: \"cpus = 200\"\n cpu500: \"cpus = 500\"\n cpu1000: \"cpus = 1000\"\n debug: false\n container: \"docker\"\n info:\n config: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml\"\n viash_version: \"0.8.3\"\n git_commit: \"d40c842c83ddc159651739dead0fd67fbd6be7d6\"\n git_remote: \"https://github.com/viash-io/viash_project_template.git\"\n- functionality:\n name: \"remove_comments\"\n namespace: \"template\"\n version: \"dev\"\n arguments:\n - type: \"file\"\n name: \"--input\"\n alternatives:\n - \"-i\"\n example:\n - \"file.tsv\"\n must_exist: true\n create_parent: true\n required: true\n direction: \"input\"\n multiple: false\n multiple_sep: \":\"\n dest: \"par\"\n - type: \"file\"\n name: \"--output\"\n alternatives:\n - \"-o\"\n example:\n - \"file.tsv\"\n must_exist: true\n create_parent: true\n required: true\n direction: \"output\"\n multiple: false\n multiple_sep: \":\"\n dest: \"par\"\n resources:\n - type: \"bash_script\"\n path: \"script.sh\"\n is_executable: true\n parent: \"file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/\"\n test_resources:\n - type: \"bash_script\"\n path: \"test.sh\"\n is_executable: true\n parent: \"file:/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/\"\n status: \"enabled\"\n set_wd_to_resources_dir: false\n platforms:\n - type: \"docker\"\n id: \"docker\"\n image: \"ubuntu:20.04\"\n target_organization: \"viash-io/viash_project_template\"\n target_registry: \"ghcr.io\"\n namespace_separator: \"/\"\n resolve_volume: \"Automatic\"\n chown: true\n setup_strategy: \"ifneedbepullelsecachedbuild\"\n target_image_source: \"https://github.com/viash-io/viash_project_template\"\n entrypoint: []\n - type: \"nextflow\"\n id: \"nextflow\"\n directives:\n tag: \"$id\"\n auto:\n simplifyInput: true\n simplifyOutput: false\n transcript: false\n publish: false\n config:\n labels:\n mem1gb: \"memory = 1.GB\"\n mem2gb: \"memory = 2.GB\"\n mem4gb: \"memory = 4.GB\"\n mem8gb: \"memory = 8.GB\"\n mem16gb: \"memory = 16.GB\"\n mem32gb: \"memory = 32.GB\"\n mem64gb: \"memory = 64.GB\"\n mem128gb: \"memory = 128.GB\"\n mem256gb: \"memory = 256.GB\"\n mem512gb: \"memory = 512.GB\"\n mem1tb: \"memory = 1.TB\"\n mem2tb: \"memory = 2.TB\"\n mem4tb: \"memory = 4.TB\"\n mem8tb: \"memory = 8.TB\"\n mem16tb: \"memory = 16.TB\"\n mem32tb: \"memory = 32.TB\"\n mem64tb: \"memory = 64.TB\"\n mem128tb: \"memory = 128.TB\"\n mem256tb: \"memory = 256.TB\"\n mem512tb: \"memory = 512.TB\"\n cpu1: \"cpus = 1\"\n cpu2: \"cpus = 2\"\n cpu5: \"cpus = 5\"\n cpu10: \"cpus = 10\"\n cpu20: \"cpus = 20\"\n cpu50: \"cpus = 50\"\n cpu100: \"cpus = 100\"\n cpu200: \"cpus = 200\"\n cpu500: \"cpus = 500\"\n cpu1000: \"cpus = 1000\"\n debug: false\n container: \"docker\"\n info:\n config: \"/home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml\"\n viash_version: \"0.8.3\"\n git_commit: \"d40c842c83ddc159651739dead0fd67fbd6be7d6\"\n git_remote: \"https://github.com/viash-io/viash_project_template.git\"\n\nAll 4 configs parsed successfully", + "crumbs": [ + "Guide", + "Project", + "Batch processing" + ] + }, + { + "objectID": "guide/project/batch-processing.html#custom-batch-processing", + "href": "guide/project/batch-processing.html#custom-batch-processing", + "title": "Batch processing", + "section": "Custom batch processing", + "text": "Custom batch processing\nThe viash ns exec command can be used to run a command on every component.\nviash ns exec \"echo Hello {}\"\n\n\nOutput\n\n\n\n+ echo Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml\n Exit code: 0\n\n Output:\nHello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/take_column/config.vsh.yaml\n\n+ echo Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/workflow/config.vsh.yaml\n Exit code: 0\n\n Output:\nHello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/workflow/config.vsh.yaml\n\n+ echo Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml\n Exit code: 0\n\n Output:\nHello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/combine_columns/config.vsh.yaml\n\n+ echo Hello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml\n Exit code: 0\n\n Output:\nHello /home/hendrik/DI/viash_website/guide/_viash_project_template/src/template/remove_comments/config.vsh.yaml", + "crumbs": [ + "Guide", + "Project", + "Batch processing" + ] + }, + { + "objectID": "guide/project/batch-processing.html#tips", + "href": "guide/project/batch-processing.html#tips", + "title": "Batch processing", + "section": "Tips", + "text": "Tips\n\nParallel builds\nSome commands shown above can be optimized by adding the --parallel option:\n\nviash ns build --parallel will build in parallel\nviash ns test --parallel will test in parallel\n\nFor example:\nviash ns test --parallel\n\n\nOutput\n\n\n\ntemporaryFolder: /tmp/viash_hub_repo8088522104532127327 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \ntemporaryFolder: /tmp/viash_hub_repo1564009392744555776 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \nThe working directory for the namespace tests is /tmp/viash_ns_test1176799358272149172\n namespace functionality platform test_name exit_code duration result\n template remove_comments docker start \n template combine_columns docker start \n template take_column docker start \n template combine_columns docker build_executable 0 1 SUCCESS\n template combine_columns docker tests -1 0 MISSING\nno tests found\n====================================================================\n template take_column docker build_executable 0 2 SUCCESS\n template take_column docker tests -1 0 MISSING\nno tests found\n====================================================================\n template remove_comments docker build_executable 0 1 SUCCESS\n template remove_comments docker test.sh 0 1 SUCCESS\nNot all configs built and tested successfully\n 2/6 tests missing\n 4/6 configs built and tested successfully\n\n\n\n\n\nSubset to components or namespaces\nIn a development context, one often needs to rebuild one or a few components rather than the full repository. For this situation, viash ns has the option to specify query arguments: --query, query_name and query_namespace. We refer to the reference documentation for details and illustrate the use using an example:\nviash ns build --query \"^.*columns$\"\n\n\nOutput\n\n\n\nExporting combine_columns (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/combine_columns\nExporting combine_columns (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/combine_columns\nNot all configs built successfully\n 3 configs were disabled\n 2/2 configs built successfully\n\n\n\nAs shown here, the query arguments accept regular expressions.", + "crumbs": [ + "Guide", + "Project", + "Batch processing" + ] + }, + { + "objectID": "guide/component/add-dependencies.html", + "href": "guide/component/add-dependencies.html", + "title": "Add dependencies", + "section": "", + "text": "In the previous section, reproducibility of our Viash component was ensured by a predefined Docker image such as bash:4.0 and python:3.10. However, your script might require other software dependencies, such as command-line tools or Python and R packages.\nBy default, Viash will build component-specific Docker images. This means that every Viash component can have its own set of dependencies.", + "crumbs": [ + "Guide", + "Component", + "Add dependencies" + ] + }, + { + "objectID": "guide/component/add-dependencies.html#extended-example", + "href": "guide/component/add-dependencies.html#extended-example", + "title": "Add dependencies", + "section": "Extended example", + "text": "Extended example\nBelow is an example where additional software is added to a base Docker image using the setup section of a Docker platform.\n\nBashC#JavaScriptPythonRScala\n\n\nfunctionality:\n name: example_bash_with_setup\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: bash_script\n path: script.sh\nplatforms:\n - type: docker\n image: bash:4.0\n setup:\n - type: apk\n packages:\n - curl\n - wget\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_csharp_with_setup\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: csharp_script\n path: script.csx\nplatforms:\n - type: docker\n image: ghcr.io/data-intuitive/dotnet-script:1.3.1\n setup:\n - type: apk\n packages:\n - curl\n - wget\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_js_with_setup\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: javascript_script\n path: script.js\nplatforms:\n - type: docker\n image: node:19-bullseye-slim\n setup:\n - type: apt\n packages:\n - curl\n - wget\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_python_with_setup\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: python_script\n path: script.py\nplatforms:\n - type: docker\n image: python:3.10-slim\n setup:\n - type: apt\n packages:\n - curl\n - wget\n - type: python\n packages: anndata\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_r_with_setup\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: r_script\n path: script.R\nplatforms:\n - type: docker\n image: eddelbuettel/r2u:22.04\n setup:\n - type: apt\n packages:\n - curl\n - wget\n - type: r\n packages: tidyverse\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_scala_with_setup\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: scala_script\n path: script.scala\nplatforms:\n - type: docker\n image: sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10\n setup:\n - type: apt\n packages:\n - curl\n - wget\n - type: native\n - type: nextflow\n\n\n\nYou can (re)build a component’s Docker image by passing the ---setup flag to the executable:\n\nBashC#JavaScriptPythonRScala\n\n\nBuild the executable:\n\nviash build config.vsh.yaml --platform docker --output target\n\nBuild the Docker image:\n\ntarget/example_bash_with_setup ---setup cachedbuild\n\n[notice] Building container 'example_bash_with_setup:latest' with Dockerfile\n\n\n\n\nBuild the executable:\n\nviash build config.vsh.yaml --platform docker --output target\n\nBuild the Docker image:\n\ntarget/example_csharp_with_setup ---setup cachedbuild\n\n[notice] Building container 'example_csharp_with_setup:latest' with Dockerfile\n\n\n\n\nBuild the executable:\n\nviash build config.vsh.yaml --platform docker --output target\n\nBuild the Docker image:\n\ntarget/example_js_with_setup ---setup cachedbuild\n\n[notice] Building container 'example_js_with_setup:latest' with Dockerfile\n\n\n\n\nBuild the executable:\n\nviash build config.vsh.yaml --platform docker --output target\n\nBuild the Docker image:\n\ntarget/example_python_with_setup ---setup cachedbuild\n\n[notice] Building container 'example_python_with_setup:latest' with Dockerfile\n\n\n\n\nBuild the executable:\n\nviash build config.vsh.yaml --platform docker --output target\n\nBuild the Docker image:\n\ntarget/example_r_with_setup ---setup cachedbuild\n\n[notice] Building container 'example_r_with_setup:latest' with Dockerfile\n\n\n\n\nBuild the executable:\n\nviash build config.vsh.yaml --platform docker --output target\n\nBuild the Docker image:\n\ntarget/example_scala_with_setup ---setup cachedbuild\n\n[notice] Building container 'example_scala_with_setup:latest' with Dockerfile\n\n\n\n\n\nAlternatively, you can also build the executable and it’s corresponding Docker image in one go:\n\nBashC#JavaScriptPythonRScala\n\n\nviash build config.vsh.yaml --platform docker --output target --setup cachedbuild\n\n\nviash build config.vsh.yaml --platform docker --output target --setup cachedbuild\n\n\nviash build config.vsh.yaml --platform docker --output target --setup cachedbuild\n\n\nviash build config.vsh.yaml --platform docker --output target --setup cachedbuild\n\n\nviash build config.vsh.yaml --platform docker --output target --setup cachedbuild\n\n\nviash build config.vsh.yaml --platform docker --output target --setup cachedbuild", + "crumbs": [ + "Guide", + "Component", + "Add dependencies" + ] + }, + { + "objectID": "guide/component/add-dependencies.html#steps-for-creating-a-custom-docker-platform", + "href": "guide/component/add-dependencies.html#steps-for-creating-a-custom-docker-platform", + "title": "Add dependencies", + "section": "Steps for creating a custom Docker platform", + "text": "Steps for creating a custom Docker platform\nHere is a series of steps you can follow to add a Docker platform to your Viash component from scratch.\n\nStep 1: Choose a base image\nTo start off, you’ll need to choose a base Docker image to start working with. In deciding which base image to use, it’s important to consider the size of the image and how trustworthy the source image is.\n\n\n\n\n\n\nTip\n\n\n\nIf the container does not have Bash installed, don’t forget to install this in Step 2.\n\n\nHere is a list of base images we commonly use:\n\nBash: bash, ubuntu\nC#: ghcr.io/data-intuitive/dotnet-script\nJavaScript: node\nPython: python, nvcr.io/nvidia/pytorch\nR: eddelbuettel/r2u, rocker/tidyverse\nScala: sbtscala/scala-sbt\n\nSee the section on ‘minimum requirements’ when building a custom base image.\n\n\nStep 2: Installing additional dependencies\nYou can use the setup section to many different types of layers. Here are some examples:\n\nApk requirements:\nsetup:\n - type: apk\n packages: [ curl ]\nApt requirements:\nsetup:\n - type: apt\n packages: [ curl ]\nDocker requirements:\nsetup:\n - type: docker\n build_args: \"R_VERSION=hello_world\"\n run: |\n echo 'Run a custom command'\n echo 'Foo' > /path/to/file.txt\nJavascript requirements:\nsetup:\n - type: javascript\n packages: [ express ]\n github: [ \"expressjs/express\" ]\nPython requirements:\nsetup:\n - type: python\n packages: [ anndata ]\n github: [ jkbr/httpie ]\nR requirements:\nsetup:\n - type: r\n packages: [ anndata ]\n bioc: [ AnnotationDbi, SingleCellExperiment ]\n github: rcannood/SCORPIUS\nRuby requirements:\nsetup:\n - type: ruby\n packages: [ pry ]\nYum requirements:\nsetup:\n - type: ruby\n packages: [ pry ]\n github: [ \"pry/pry\" ]\n\nFor more information on the possible setup entries, check out the reference documentation.\n\n\n\n\n\n\nImportant\n\n\n\nDon’t forget to rebuild the Docker image after making changes to the setup section of your Docker platform (see next step).\n\n\n\n\nStep 3: Rebuild Docker image\nAfter adding additional setup entries, it’s important to rerun ---setup cachedbuild to rebuild the Docker image, as Viash will not rebuild the Docker image when it already exists.\n\nBashC#JavaScriptPythonRScala\n\n\nviash build config.vsh.yaml \n --platform docker \n --output target \n --setup cachedbuild\n\n\nviash build config.vsh.yaml \n --platform docker \n --output target \n --setup cachedbuild\n\n\nviash build config.vsh.yaml \n --platform docker \n --output target \n --setup cachedbuild\n\n\nviash build config.vsh.yaml \n --platform docker \n --output target \n --setup cachedbuild\n\n\nviash build config.vsh.yaml \n --platform docker \n --output target \n --setup cachedbuild\n\n\nviash build config.vsh.yaml \n --platform docker \n --output target \n --setup cachedbuild\n\n\n\nYou can choose what strategy to build an executable with when using a Docker backend by passing the --setup option followed by one of the strategies below.\nBuilding an image:\n\nalwaysbuild / build / b: Always build the image from the dockerfile. This is the default setup strategy.\nalwayscachedbuild / cachedbuild / cb: Always build the image from the dockerfile, with caching enabled.\nifneedbebuild: Build the image if it does not exist locally.\nifneedbecachedbuild: Build the image with caching enabled if it does not exist locally.\n\nPulling an image:\n\nalwayspull / pull / p: Try to pull the container from Docker Hub or the specified docker registry.\nalwayspullelsebuild / pullelsebuild: Try to pull the image from a registry and build it if it doesn’t exist.\nalwayspullelsecachedbuild / pullelsecachedbuild: Try to pull the image from a registry and build it with caching if it doesn’t exist.\nifneedbepull: If the image does not exist locally, pull the image.\nifneedbepullelsebuild If the image does not exist locally, pull the image. If the image does exist, build it.\nifneedbepullelsecachedbuild: If the image does not exist locally, pull the image. If the image does exist, build it with caching enabled.\n\nPushing an image:\n\npush: Push the container to Docker Hub or the specified docker registry.\npushifnotpresent Push the container to Docker Hub or the specified docker registry if the specified tag does not exist yet.\n\nDoing nothing:\n\ndonothing / meh: Do not build or pull anything.", + "crumbs": [ + "Guide", + "Component", + "Add dependencies" + ] + }, + { + "objectID": "guide/component/add-dependencies.html#troubleshooting", + "href": "guide/component/add-dependencies.html#troubleshooting", + "title": "Add dependencies", + "section": "Troubleshooting", + "text": "Troubleshooting\nBelow are several steps that might help you troubleshoot the image when the setup fails.\n\nView Dockerfile\nYou can view the actual Dockerfile used by Viash by passing the ---dockerfile flag:\n\nBashC#JavaScriptPythonRScala\n\n\n\ntarget/example_bash_with_setup ---dockerfile\n\nFROM bash:4.0\n\nENTRYPOINT []\n\n\nRUN apk add --no-cache curl wget\n\nLABEL org.opencontainers.image.description=\"Companion container for running component example_bash_with_setup\"\nLABEL org.opencontainers.image.created=\"2024-01-12T07:56:47+01:00\"\n\n\n\n\n\ntarget/example_csharp_with_setup ---dockerfile\n\nFROM ghcr.io/data-intuitive/dotnet-script:1.3.1\n\nENTRYPOINT []\n\n\nRUN apk add --no-cache curl wget\n\nLABEL org.opencontainers.image.description=\"Companion container for running component example_csharp_with_setup\"\nLABEL org.opencontainers.image.created=\"2024-01-12T07:56:52+01:00\"\n\n\n\n\n\ntarget/example_js_with_setup ---dockerfile\n\nFROM node:19-bullseye-slim\n\nENTRYPOINT []\n\n\nRUN apt-get update && \\\n DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget && \\\n rm -rf /var/lib/apt/lists/*\n\nLABEL org.opencontainers.image.description=\"Companion container for running component example_js_with_setup\"\nLABEL org.opencontainers.image.created=\"2024-01-12T07:56:56+01:00\"\n\n\n\n\n\ntarget/example_python_with_setup ---dockerfile\n\nFROM python:3.10-slim\n\nENTRYPOINT []\n\n\nRUN apt-get update && \\\n DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget && \\\n rm -rf /var/lib/apt/lists/*\n\nRUN pip install --upgrade pip && \\\n pip install --upgrade --no-cache-dir \"anndata\"\n\nLABEL org.opencontainers.image.description=\"Companion container for running component example_python_with_setup\"\nLABEL org.opencontainers.image.created=\"2024-01-12T07:57:05+01:00\"\n\n\n\n\n\ntarget/example_r_with_setup ---dockerfile\n\nFROM eddelbuettel/r2u:22.04\n\nENTRYPOINT []\n\n\nRUN apt-get update && \\\n DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget && \\\n rm -rf /var/lib/apt/lists/*\n\nRUN Rscript -e 'if (!requireNamespace(\"remotes\", quietly = TRUE)) install.packages(\"remotes\")' && \\\n Rscript -e 'remotes::install_cran(c(\"tidyverse\"), repos = \"https://cran.rstudio.com\")'\n\nLABEL org.opencontainers.image.description=\"Companion container for running component example_r_with_setup\"\nLABEL org.opencontainers.image.created=\"2024-01-12T07:57:25+01:00\"\n\n\n\n\n\ntarget/example_scala_with_setup ---dockerfile\n\nFROM sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10\n\nENTRYPOINT []\n\n\nRUN apt-get update && \\\n DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget && \\\n rm -rf /var/lib/apt/lists/*\n\nLABEL org.opencontainers.image.description=\"Companion container for running component example_scala_with_setup\"\nLABEL org.opencontainers.image.created=\"2024-01-12T07:58:01+01:00\"\n\n\n\n\n\n\n\nEnter debugging session\nYou can also hop in a Bash session inside the Docker image using the ---debug flag:\n\nBashC#JavaScriptPythonRScala\n\n\ntarget/example_bash_with_setup ---debug\n[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_bash_with_setup:latest'\nroot@93c38006a124:/pwd#\n\n\ntarget/example_csharp_with_setup ---debug\n[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_csharp_with_setup:latest'\nroot@93c38006a124:/pwd#\n\n\ntarget/example_js_with_setup ---debug\n[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_js_with_setup:latest'\nroot@93c38006a124:/pwd#\n\n\ntarget/example_python_with_setup ---debug\n[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_python_with_setup:latest'\nroot@93c38006a124:/pwd#\n\n\ntarget/example_r_with_setup ---debug\n[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_r_with_setup:latest'\nroot@93c38006a124:/pwd#\n\n\ntarget/example_scala_with_setup ---debug\n[notice] + docker run --entrypoint=bash -i --rm -v `pwd`:/pwd --workdir /pwd -t 'example_scala_with_setup:latest'\nroot@93c38006a124:/pwd#\n\n\n\nThis is useful for interactively debugging issues inside the container. For example, for figuring out whether you need to use apk, apt or yum to install software and to search for the exact name of packages like libcurl4-openssl-dev.", + "crumbs": [ + "Guide", + "Component", + "Add dependencies" + ] + }, + { + "objectID": "guide/component/add-dependencies.html#alternative-solutions", + "href": "guide/component/add-dependencies.html#alternative-solutions", + "title": "Add dependencies", + "section": "Alternative solutions", + "text": "Alternative solutions\nThere are multiple ways you might try to find a Docker image which contains the right set of dependencies for your component:\n\nBrowse Docker Hub: Look a Docker image on Docker Hub or other Docker registries which has the right set of dependencies.\n\nThis is generally not recommended because it might take a long time to find a pre-existing image with the right set of dependencies\nPoses a serious security risk.\n\nWrite a custom Dockerfile: You can write a custom Dockerfile to build your own Docker image and store it in a Docker registry, effectively creating a new ‘trusted’ base image.\n\nRequires manual bookkeeping of which Docker images are used in which components.\nNot difficult but requires more know-how on how to build custom Docker images.\n\nUse Viash setup to build component-specific images: The methodology described above.\n\nEasier to add / change dependencies to one component without breaking another\nStore images in a centralized container registry", + "crumbs": [ + "Guide", + "Component", + "Add dependencies" + ] + }, + { + "objectID": "guide/component/add-dependencies.html#behind-the-scenes", + "href": "guide/component/add-dependencies.html#behind-the-scenes", + "title": "Add dependencies", + "section": "Behind the scenes", + "text": "Behind the scenes\n\nAuto-mount\nAny executable built by Viash with a Docker platform will automatically mount the directories of files passed to the executable as arguments. For example, when running:\n./my_executable --input /foo/bar/file.txt --output /dest/path\nThe executable will automatically mount the /foo/bar and /dest folder to /viash_automount/foo/bar/ and /viash_automount/dest inside the Docker container.\n\n\nAuto-chown\nBy default, files created and modified by a Docker container are owned by root. By default, Viash automatically changes the owner of any files defined in the config file to the user running the executable. This behaviour can be overridden by setting the chown setting to false in your config file.\nExample with standard Docker:\ndocker run -v `pwd`:/pwd bash:4.0 touch /pwd/file.txt\nls -l\n-rw-r--r--. 1 root root 0 Jan 26 16:03 file.txt\nExample with a Viash executable:\n/my_executable --output file.txt\n-rw-r--r--. 1 myuser myuser Jan 26 16:03 file.txt\n\n\nMinimum requirements for custom Docker images\nViash components only require a minimal set of dependencies which need to be available inside the Docker image:\n\nBash: bash.\nC#: bash and dotnet-script.\nJavaScript: bash and node (Node.js).\nPython: bash, python and pip.\nR: bash and R.\nScala: bash, openjdk-devel and sbt.", + "crumbs": [ + "Guide", + "Component", + "Add dependencies" + ] + }, + { + "objectID": "guide/component/add-resources.html", + "href": "guide/component/add-resources.html", + "title": "Add resources", + "section": "", + "text": "If a script needs access to an external file, it needs to be added as a resource in the config.\nFirst, create a file called my_file.txt.\n\nBashC#JavaScriptPythonRScala\n\n\n\necho 'Here are the contents of my_file.txt' > my_file.txt\n\n\n\n\necho 'Here are the contents of my_file.txt' > my_file.txt\n\n\n\n\necho 'Here are the contents of my_file.txt' > my_file.txt\n\n\n\n\necho 'Here are the contents of my_file.txt' > my_file.txt\n\n\n\n\necho 'Here are the contents of my_file.txt' > my_file.txt\n\n\n\n\necho 'Here are the contents of my_file.txt' > my_file.txt\n\n\n\n\nNext, the file needs to be added to the config as a resource. This will let Viash know to copy the new file inside a component’s resource directory.\n\nBashC#JavaScriptPythonRScala\n\n\nfunctionality:\n name: example_bash\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: bash_script\n path: script.sh\n - path: my_file.txt\nplatforms:\n - type: docker\n image: bash:4.0\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_csharp\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: csharp_script\n path: script.csx\n - path: my_file.txt\nplatforms:\n - type: docker\n image: ghcr.io/data-intuitive/dotnet-script:1.3.1\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_js\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: javascript_script\n path: script.js\n - path: my_file.txt\nplatforms:\n - type: docker\n image: node:19-bullseye-slim\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_python\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: python_script\n path: script.py\n - path: my_file.txt\nplatforms:\n - type: docker\n image: python:3.10-slim\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_r\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: r_script\n path: script.R\n - path: my_file.txt\nplatforms:\n - type: docker\n image: eddelbuettel/r2u:22.04\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_scala\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: scala_script\n path: script.scala\n - path: my_file.txt\nplatforms:\n - type: docker\n image: sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10\n - type: native\n - type: nextflow\n\n\n\nLastly, to access a resource from within the script, use the resources_dir meta-variable:\n\nBashC#JavaScriptPythonRScala\n\n\n#!/bin/bash\n\n## VIASH START\npar_input=path/to/file.txt\npar_output=output.txt\n## VIASH END\n\n# view resource file\ncat \"$meta_resources_dir/my_file.txt\"\n\n# copy file\necho \"Copying '$par_input' to '$par_output'.\"\ncp -r \"$par_input\" \"$par_output\"\n\n\nusing System.IO;\n\n// VIASH START\nvar par = new {\n input = \"path/to/file.txt\",\n output = \"output.txt\"\n};\n// VIASH END\n\n// view resource file\nstring myFile = $\"{meta.resources_dir}/my_file.txt\";\nstring text = File.ReadAllText(myFile);\nConsole.WriteLine(text);\n\n// copy file\nConsole.WriteLine($\"Copying '{par.input}' to '{par.output}'.\");\nFile.Copy(par.input, par.output, true);\n\n\nconst fs = require('fs');\n\n// VIASH START\nlet par = {\n 'input': 'path/to/file.txt',\n 'output': 'output.txt'\n};\n// VIASH END\n\n// view resource file\nconst my_file = `${meta['resources_dir']}/my_file.txt`\nfs.readFile(my_file, 'utf8', (err, data) => {\n if (err) throw err;\n console.log(data);\n});\n\n// copy file\nconsole.log(`Copying '${par['input']}' to '${par['output']}'`)\nfs.copyFile(par['input'], par['output'], (err) => {\n if (err) throw err;\n});\n\n\nimport shutil\n\n## VIASH START\npar = {\n 'input': 'file.txt',\n 'output': 'output.txt'\n}\n## VIASH END\n\n# view resource file\nmy_file = f\"{meta['resources_dir']}/my_file.txt\"\nwith open(my_file, \"r\") as f:\n print(f.read())\n\n# copy file\nprint(f\"Copying '{par['input']}' to '{par['output']}'.\")\nshutil.copyfile(par['input'], par['output'])\n\n\n## VIASH START\npar <- list(\n \"input\" = 'file.txt',\n \"output\" = 'output.txt'\n)\n## VIASH END\n\n# view resource file\nlines <- readLines(paste0(meta$resources_dir, \"/my_file.txt\"))\ncat(lines, sep = \"\\n\")\n\n# copy file\ncat(\"Copying '\", par$input, \"' to '\", par$output, \"'.\\n\", sep = \"\")\nfile.copy(par$input, par$output)\n\n\nimport java.nio.file.StandardCopyOption.REPLACE_EXISTING\nimport java.nio.file.Files\nimport java.nio.file.Paths\n\n// VIASH START\ncase class ViashPar(input: String, output: String)\nval par = ViashPar(\n \"path/to/file.txt\",\n \"output.txt\"\n)\n// VIASH END\n\n// view resource file\nval myFile = s\"${meta.resources_dir}/my_file.txt\"\nval src = scala.io.Source.fromFile(myFile)\nsrc.getLines.foreach(println)\n\n// copy file\nprintln(s\"Copying '${par.input}' to '${par.output}'.\")\nval fileIn = Paths.get(par.input)\nval fileOut = Paths.get(par.output)\nFiles.copy(fileIn, fileOut, REPLACE_EXISTING)\n\n\n\nNow we can run the component as follows:\n\nBashC#JavaScriptPythonRScala\n\n\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nHere are the contents of my_file.txt\nCopying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/bash/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/bash/foo.txt'.\n\n\n\n\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nHere are the contents of my_file.txt\n\nCopying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/csharp/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/csharp/foo.txt'.\n\n\n\n\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nCopying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/js/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/js/foo.txt'\nHere are the contents of my_file.txt\n\n\n\n\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nHere are the contents of my_file.txt\n\nCopying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/python/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/python/foo.txt'.\n\n\n\n\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nHere are the contents of my_file.txt\nCopying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/r/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/r/foo.txt'.\n[1] TRUE\n\n\n\n\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nwarning: 1 deprecation\nwarning: 1 deprecation (since 2.13.3)\nwarning: 2 deprecations in total; re-run with -deprecation for details\nHere are the contents of my_file.txt\nCopying '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/scala/config.vsh.yaml' to '/viash_automount/tmp/Rtmp1vGzRZ/add-dependenciese87976822caf/scala/foo.txt'.", + "crumbs": [ + "Guide", + "Component", + "Add resources" + ] + }, + { + "objectID": "guide/component/create-component.html", + "href": "guide/component/create-component.html", + "title": "Create a new component", + "section": "", + "text": "A Viash component can be translated into one or more platforms: Native, Docker, Nextflow. Each of these platforms result in a different artifact:\nBelow we will create our first Viash component using any of the languages natively supported by Viash.", + "crumbs": [ + "Guide", + "Component", + "Create a new component" + ] + }, + { + "objectID": "guide/component/create-component.html#create-a-script", + "href": "guide/component/create-component.html#create-a-script", + "title": "Create a new component", + "section": "Create a script", + "text": "Create a script\nWhen creating a new Viash component, you can write a new script or use a pre-existing script. Below is a script that simply copies an input file to an output destination.\n\nBashC#JavaScriptPythonRScala\n\n\nCreate a new file named script.sh and copy the following content inside of it. This script will copy an input file to an output destination.\n#!/bin/bash\n\n## VIASH START\npar_input=path/to/file.txt\npar_output=output.txt\n## VIASH END\n\n# copy file\necho \"Copying '$par_input' to '$par_output'.\"\ncp -r \"$par_input\" \"$par_output\"\n\n\nCreate a new file named script.csx and copy the following content inside of it. This script will copy an input file to an output destination.\nusing System.IO;\n\n// VIASH START\nvar par = new {\n input = \"path/to/file.txt\",\n output = \"output.txt\"\n};\n// VIASH END\n\n// copy file\nConsole.WriteLine($\"Copying '{par.input}' to '{par.output}'.\");\nFile.Copy(par.input, par.output, true);\n\n\nCreate a new file named script.js and copy the following content inside of it. This script will copy an input file to an output destination.\nconst fs = require('fs');\n\n// VIASH START\nlet par = {\n 'input': 'path/to/file.txt',\n 'output': 'output.txt'\n};\n// VIASH END\n\n// copy file\nconsole.log(`Copying '${par['input']}' to '${par['output']}'`)\nfs.copyFile(par['input'], par['output'], (err) => {\n if (err) throw err;\n});\n\n\nCreate a new file named script.py and copy the following content inside of it. This script will copy an input file to an output destination.\nimport shutil\n\n## VIASH START\npar = {\n 'input': 'file.txt',\n 'output': 'output.txt'\n}\n## VIASH END\n\n# copy file\nprint(f\"Copying '{par['input']}' to '{par['output']}'.\")\nshutil.copyfile(par['input'], par['output'])\n\n\nCreate a new file named script.R and copy the following content inside of it. This script will copy an input file to an output destination.\n## VIASH START\npar <- list(\n \"input\" = 'file.txt',\n \"output\" = 'output.txt'\n)\n## VIASH END\n\n# copy file\ncat(\"Copying '\", par$input, \"' to '\", par$output, \"'.\\n\", sep = \"\")\nfile.copy(par$input, par$output)\n\n\nCreate a new file named script.scala and copy the following content inside of it. This script will copy an input file to an output destination.\nimport java.nio.file.StandardCopyOption.REPLACE_EXISTING\nimport java.nio.file.Files\nimport java.nio.file.Paths\n\n// VIASH START\ncase class ViashPar(input: String, output: String)\nval par = ViashPar(\n \"path/to/file.txt\",\n \"output.txt\"\n)\n// VIASH END\n\n// copy file\nprintln(s\"Copying '${par.input}' to '${par.output}'.\")\nval fileIn = Paths.get(par.input)\nval fileOut = Paths.get(par.output)\nFiles.copy(fileIn, fileOut, REPLACE_EXISTING)\n\n\n\n\n\n\n\n\n\nNote\n\n\n\nThe par variable(s) appear to be hard coded, but they’re not! When running this script with Viash, Viash will strip away the section between VIASH START and VIASH END, and replace it with parameter values at runtime. The values included in this script are thus entirely for development and debugging purposes. More information on how this works will be given in Variables and meta-variables.", + "crumbs": [ + "Guide", + "Component", + "Create a new component" + ] + }, + { + "objectID": "guide/component/create-component.html#create-a-config", + "href": "guide/component/create-component.html#create-a-config", + "title": "Create a new component", + "section": "Create a config", + "text": "Create a config\nA Viash config file is a YAML file that describes the functionality of a component and the platform(s) it targets.\n\nBashC#JavaScriptPythonRScala\n\n\nCreate a file named config.vsh.yaml and add the contents below based on your chosen scripting language.\nfunctionality:\n name: example_bash\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: bash_script\n path: script.sh\nplatforms:\n - type: docker\n image: \"bash:4.0\"\n - type: native\n - type: nextflow\n\n\nCreate a file named config.vsh.yaml and add the contents below based on your chosen scripting language.\nfunctionality:\n name: example_csharp\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: csharp_script\n path: script.csx\nplatforms:\n - type: docker\n image: \"ghcr.io/data-intuitive/dotnet-script:1.3.1\"\n - type: native\n - type: nextflow\n\n\nCreate a file named config.vsh.yaml and add the contents below based on your chosen scripting language.\nfunctionality:\n name: example_js\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: javascript_script\n path: script.js\nplatforms:\n - type: docker\n image: \"node:19-bullseye-slim\"\n - type: native\n - type: nextflow\n\n\nCreate a file named config.vsh.yaml and add the contents below based on your chosen scripting language.\nfunctionality:\n name: example_python\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: python_script\n path: script.py\nplatforms:\n - type: docker\n image: \"python:3.10-slim\"\n - type: native\n - type: nextflow\n\n\nCreate a file named config.vsh.yaml and add the contents below based on your chosen scripting language.\nfunctionality:\n name: example_r\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: r_script\n path: script.R\nplatforms:\n - type: docker\n image: \"eddelbuettel/r2u:22.04\"\n - type: native\n - type: nextflow\n\n\nCreate a file named config.vsh.yaml and add the contents below based on your chosen scripting language.\nfunctionality:\n name: example_scala\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: scala_script\n path: script.scala\nplatforms:\n - type: docker\n image: \"sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10\"\n - type: native\n - type: nextflow\n\n\n\nHere’s a breakdown of the different sections:\n\nfunctionality: A description of what the component does.\n\nname: The name of the component.\narguments: The input and output parameters of the script.\nresources: References to all necessary files and folders to make the component work.\n\nplatforms: Lists which platforms a component can target (i.e. Native, Docker or Nextflow).", + "crumbs": [ + "Guide", + "Component", + "Create a new component" + ] + }, + { + "objectID": "guide/component/create-component.html#run-the-component", + "href": "guide/component/create-component.html#run-the-component", + "title": "Create a new component", + "section": "Run the component", + "text": "Run the component\nThat’s it! With these two steps, you created your first component. Next, you can use the viash run command to test whether it actually works as intended.\n\nBashC#JavaScriptPythonRScala\n\n\nYou can call use the component’s --help functionality to get an overview its parameters and descriptions.\n\nviash run config.vsh.yaml -- --help\n\nexample_bash\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\nAs expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\n[notice] Checking if Docker image is available at 'example_bash:latest'\n[warning] Could not pull from 'example_bash:latest'. Docker image doesn't exist or is not accessible.\n[notice] Building container 'example_bash:latest' with Dockerfile\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/bash/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/bash/foo.txt'.\n\n\n\n\nYou can call use the component’s --help functionality to get an overview its parameters and descriptions.\n\nviash run config.vsh.yaml -- --help\n\nexample_csharp\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\nAs expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\n[notice] Checking if Docker image is available at 'example_csharp:latest'\n[warning] Could not pull from 'example_csharp:latest'. Docker image doesn't exist or is not accessible.\n[notice] Building container 'example_csharp:latest' with Dockerfile\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/csharp/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/csharp/foo.txt'.\n\n\n\n\nYou can call use the component’s --help functionality to get an overview its parameters and descriptions.\n\nviash run config.vsh.yaml -- --help\n\nexample_js\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\nAs expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\n[notice] Checking if Docker image is available at 'example_js:latest'\n[warning] Could not pull from 'example_js:latest'. Docker image doesn't exist or is not accessible.\n[notice] Building container 'example_js:latest' with Dockerfile\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/js/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/js/foo.txt'\n\n\n\n\nYou can call use the component’s --help functionality to get an overview its parameters and descriptions.\n\nviash run config.vsh.yaml -- --help\n\nexample_python\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\nAs expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\n[notice] Checking if Docker image is available at 'example_python:latest'\n[warning] Could not pull from 'example_python:latest'. Docker image doesn't exist or is not accessible.\n[notice] Building container 'example_python:latest' with Dockerfile\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/python/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/python/foo.txt'.\n\n\n\n\nYou can call use the component’s --help functionality to get an overview its parameters and descriptions.\n\nviash run config.vsh.yaml -- --help\n\nexample_r\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\nAs expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\n[notice] Checking if Docker image is available at 'example_r:latest'\n[warning] Could not pull from 'example_r:latest'. Docker image doesn't exist or is not accessible.\n[notice] Building container 'example_r:latest' with Dockerfile\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/r/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/r/foo.txt'.\n[1] TRUE\n\n\n\n\nYou can call use the component’s --help functionality to get an overview its parameters and descriptions.\n\nviash run config.vsh.yaml -- --help\n\nexample_scala\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\nAs expected, this component has an --input and --output parameter. You can execute the component by providing values for these parameters.\n\nviash run config.vsh.yaml -- --input config.vsh.yaml --output foo.txt\n\n[notice] Checking if Docker image is available at 'example_scala:latest'\n[warning] Could not pull from 'example_scala:latest'. Docker image doesn't exist or is not accessible.\n[notice] Building container 'example_scala:latest' with Dockerfile\nwarning: 1 deprecation; re-run with -deprecation for details\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/scala/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/scala/foo.txt'.\n\n\n\n\n\n\n\n\n\n\n\nNote\n\n\n\nThe double dash (--) between the viash command and the arguments is used to signify the end of the arguments passed to Viash and the start of those passed to the script. If you forgot to add these, you’ll get an error similar to this:\n\nviash run config.vsh.yaml \\\n --input foo.txt \\\n --output bar.txt\n\n[scallop] Error: Unknown option 'input'", + "crumbs": [ + "Guide", + "Component", + "Create a new component" + ] + }, + { + "objectID": "guide/component/create-component.html#build-an-executable", + "href": "guide/component/create-component.html#build-an-executable", + "title": "Create a new component", + "section": "Build an executable", + "text": "Build an executable\nWe will now turn the Viash component into an executable.\n\nBashC#JavaScriptPythonRScala\n\n\nUse the viash build command to generate an executable:\n\nviash build config.vsh.yaml --output target\n\nThis will generate an executable in the target/ directory:\n\ntree\n\n.\n├── config.vsh.yaml\n├── foo.txt\n├── script.sh\n└── target\n └── example_bash\n\n2 directories, 4 files\n\n\n\n\nUse the viash build command to generate an executable:\n\nviash build config.vsh.yaml --output target\n\nThis will generate an executable in the target/ directory:\n\ntree\n\n.\n├── config.vsh.yaml\n├── foo.txt\n├── script.csx\n└── target\n └── example_csharp\n\n2 directories, 4 files\n\n\n\n\nUse the viash build command to generate an executable:\n\nviash build config.vsh.yaml --output target\n\nThis will generate an executable in the target/ directory:\n\ntree\n\n.\n├── config.vsh.yaml\n├── foo.txt\n├── script.js\n└── target\n └── example_js\n\n2 directories, 4 files\n\n\n\n\nUse the viash build command to generate an executable:\n\nviash build config.vsh.yaml --output target\n\nThis will generate an executable in the target/ directory:\n\ntree\n\n.\n├── config.vsh.yaml\n├── foo.txt\n├── script.py\n└── target\n └── example_python\n\n2 directories, 4 files\n\n\n\n\nUse the viash build command to generate an executable:\n\nviash build config.vsh.yaml --output target\n\nThis will generate an executable in the target/ directory:\n\ntree\n\n.\n├── config.vsh.yaml\n├── foo.txt\n├── script.R\n└── target\n └── example_r\n\n2 directories, 4 files\n\n\n\n\nUse the viash build command to generate an executable:\n\nviash build config.vsh.yaml --output target\n\nThis will generate an executable in the target/ directory:\n\ntree\n\n.\n├── config.vsh.yaml\n├── foo.txt\n├── script.scala\n└── target\n └── example_scala\n\n2 directories, 4 files", + "crumbs": [ + "Guide", + "Component", + "Create a new component" + ] + }, + { + "objectID": "guide/component/create-component.html#displaying-the-help-text", + "href": "guide/component/create-component.html#displaying-the-help-text", + "title": "Create a new component", + "section": "Displaying the help text", + "text": "Displaying the help text\nIt’s often useful to know what arguments an executable expects before trying to run it.\n\nBashC#JavaScriptPythonRScala\n\n\nTo display its documentation, run the executable with just the --help argument:\n\ntarget/example_bash --help\n\nexample_bash\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\n\n\nTo display its documentation, run the executable with just the --help argument:\n\ntarget/example_csharp --help\n\nexample_csharp\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\n\n\nTo display its documentation, run the executable with just the --help argument:\n\ntarget/example_js --help\n\nexample_js\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\n\n\nTo display its documentation, run the executable with just the --help argument:\n\ntarget/example_python --help\n\nexample_python\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\n\n\nTo display its documentation, run the executable with just the --help argument:\n\ntarget/example_r --help\n\nexample_r\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\n\n\nTo display its documentation, run the executable with just the --help argument:\n\ntarget/example_scala --help\n\nexample_scala\n\nA minimal example component.\n\nArguments:\n --input\n type: file, required parameter, file must exist\n example: file.txt\n\n --output\n type: file, required parameter, output, file must exist\n example: output.txt\n\n\n\n\n\nThis executable takes a file as input and will create an output file.", + "crumbs": [ + "Guide", + "Component", + "Create a new component" + ] + }, + { + "objectID": "guide/component/create-component.html#running-the-executable", + "href": "guide/component/create-component.html#running-the-executable", + "title": "Create a new component", + "section": "Running the executable", + "text": "Running the executable\nRunning an executable is the same as any other executable on your system.\n\nBashC#JavaScriptPythonRScala\n\n\nYou can run the executable by providing a value for --input and --output:\n\ntarget/example_bash --input config.vsh.yaml --output output.txt\n\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/bash/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/bash/output.txt'.\n\n\nThis results in the following output:\n\nls -l\n\ntotal 16\n-rw-r--r-- 1 hendrik hendrik 428 Jan 12 07:52 config.vsh.yaml\n-rw-r--r-- 1 hendrik hendrik 428 Jan 12 07:53 foo.txt\n-rw-r--r-- 1 hendrik hendrik 428 Jan 12 07:54 output.txt\n-rwxr-xr-x 1 hendrik hendrik 181 Jan 12 07:52 script.sh\ndrwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target\n\n\n\n\nYou can run the executable by providing a value for --input and --output:\n\ntarget/example_csharp --input config.vsh.yaml --output output.txt\n\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/csharp/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/csharp/output.txt'.\n\n\nThis results in the following output:\n\nls -l\n\ntotal 16\n-rw-r--r-- 1 hendrik hendrik 467 Jan 12 07:52 config.vsh.yaml\n-rw-r--r-- 1 hendrik hendrik 467 Jan 12 07:52 foo.txt\n-rw-r--r-- 1 hendrik hendrik 467 Jan 12 07:52 output.txt\n-rw-r--r-- 1 hendrik hendrik 237 Jan 12 07:52 script.csx\ndrwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target\n\n\n\n\nYou can run the executable by providing a value for --input and --output:\n\ntarget/example_js --input config.vsh.yaml --output output.txt\n\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/js/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/js/output.txt'\n\n\nThis results in the following output:\n\nls -l\n\ntotal 16\n-rw-r--r-- 1 hendrik hendrik 445 Jan 12 07:52 config.vsh.yaml\n-rw-r--r-- 1 hendrik hendrik 445 Jan 12 07:53 foo.txt\n-rw-r--r-- 1 hendrik hendrik 445 Jan 12 07:54 output.txt\n-rwxr-xr-x 1 hendrik hendrik 282 Jan 12 07:52 script.js\ndrwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target\n\n\n\n\nYou can run the executable by providing a value for --input and --output:\n\ntarget/example_python --input config.vsh.yaml --output output.txt\n\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/python/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/python/output.txt'.\n\n\nThis results in the following output:\n\nls -l\n\ntotal 16\n-rw-r--r-- 1 hendrik hendrik 440 Jan 12 07:52 config.vsh.yaml\n-rw-r--r-- 1 hendrik hendrik 440 Jan 12 07:53 foo.txt\n-rw-r--r-- 1 hendrik hendrik 440 Jan 12 07:54 output.txt\n-rwxr-xr-x 1 hendrik hendrik 216 Jan 12 07:52 script.py\ndrwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target\n\n\n\n\nYou can run the executable by providing a value for --input and --output:\n\ntarget/example_r --input config.vsh.yaml --output output.txt\n\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/r/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/r/output.txt'.\n[1] TRUE\n\n\nThis results in the following output:\n\nls -l\n\ntotal 16\n-rw-r--r-- 1 hendrik hendrik 435 Jan 12 07:52 config.vsh.yaml\n-rw-r--r-- 1 hendrik hendrik 435 Jan 12 07:53 foo.txt\n-rw-r--r-- 1 hendrik hendrik 435 Jan 12 07:54 output.txt\n-rwxr-xr-x 1 hendrik hendrik 207 Jan 12 07:52 script.R\ndrwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target\n\n\n\n\nYou can run the executable by providing a value for --input and --output:\n\ntarget/example_scala --input config.vsh.yaml --output output.txt\n\nwarning: 1 deprecation; re-run with -deprecation for details\nCopying '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/scala/config.vsh.yaml' to '/viash_automount/tmp/RtmptjGlCP/create_new_component682d13b8257c/scala/output.txt'.\n\n\nThis results in the following output:\n\nls -l\n\ntotal 16\n-rw-r--r-- 1 hendrik hendrik 479 Jan 12 07:52 config.vsh.yaml\n-rw-r--r-- 1 hendrik hendrik 479 Jan 12 07:54 foo.txt\n-rw-r--r-- 1 hendrik hendrik 479 Jan 12 07:55 output.txt\n-rw-r--r-- 1 hendrik hendrik 435 Jan 12 07:52 script.scala\ndrwxr-xr-x 2 hendrik hendrik 100 Jan 12 07:54 target", + "crumbs": [ + "Guide", + "Component", + "Create a new component" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/index.html", + "href": "guide/nextflow_vdsl3/index.html", + "title": "Nextflow VDSL3", + "section": "", + "text": "Nextflow is a highly popular and widely-used workflow manager in computational biology, featuring outstanding portability, reproducibility and scalability. However, while Nextflow’s advantages are impressive, developing a Nextflow pipeline can be challenging, requiring significant domain knowledge and verbose code that is labour-intensive. Fortunately, Viash provides a solution to the barriers of Nextflow pipeline development.\nViash can help developers wrap their code into a state-of-the-art Nextflow script called a VDSL3 module. As we will demonstrate in the remainder of this guide, VDSL3 is effectively a separate DSL layer on top of Nextflow enabled by Viash, hence it is called Viash + Nextflow DSL 3, or VDSL3 for short. VDSL3’s benefits extend beyond Nextflow pipeline development, including reusability, test-driven development, separation of concerns, and continuous testing.\nYou can use Viash to speed up or replace your pipeline development processes in the following steps:", + "crumbs": [ + "Guide", + "Nextflow VDSL3" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/index.html#improvements-of-vdsl3-modules-over-standard-nextflow-modules", + "href": "guide/nextflow_vdsl3/index.html#improvements-of-vdsl3-modules-over-standard-nextflow-modules", + "title": "Nextflow VDSL3", + "section": "Improvements of VDSL3 modules over standard Nextflow modules", + "text": "Improvements of VDSL3 modules over standard Nextflow modules\n\nNo need to write any Nextflow Groovy code, just your script and the Viash config.\nVDSL3 module are also standalone pipelines.\nHelp documentation is automatically generated.\nStandardized interface for passing parameter lists.\nAutomatically uses the Docker platform’s container.", + "crumbs": [ + "Guide", + "Nextflow VDSL3" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/principles.html", + "href": "guide/nextflow_vdsl3/principles.html", + "title": "VDSL3 principles", + "section": "", + "text": "Note\n\n\n\nThis section assumes knowledge of how to create and manipulate Nextflow channels using DSL2. For more information, check out the Nextflow reference docs or contact Data Intuitive for a complete Nextflow+Viash course.", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "VDSL3 principles" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/principles.html#quick-recap", + "href": "guide/nextflow_vdsl3/principles.html#quick-recap", + "title": "VDSL3 principles", + "section": "Quick recap", + "text": "Quick recap\n\nNextflow channel\nA Nextflow Channel object (later referred to just as channel) is in fact an implementation of the Dataflow Programming model. Nextflow has added a a set of operators for manipulating channels (filter, map, reduce, …) so that it tends more to a Functional Reactive Programming (FRP) model1.\n\n\nFunctional Reactive Programming (FRP)\nIf you’re new to FRP, here is a a list of pointers that will get you started:\n\nAn excellent Medium post from Timo Stöttner\nThe introduction to Reactive Programming you’ve been missing from André Staltz.\nA very insightful presentation by Staltz where he introduces FRP from first principles (with live coding).\n\nIn what follows, we will refer to channels and streams in line with those authors but if you’re used to working with Rx you would call this an observable.\nUsing the FRP model for describing data processing workflows is not new, other initiatives have recognized that FRP is a good fit for pipeline development:\n\nSkitter\nKrews", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "VDSL3 principles" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/principles.html#a-critique-on-channels-or-is-it", + "href": "guide/nextflow_vdsl3/principles.html#a-critique-on-channels-or-is-it", + "title": "VDSL3 principles", + "section": "A critique on channels, or is it?", + "text": "A critique on channels, or is it?\n\nIllustration by means of an nf-core pipeline\nLet us start with an illustration of where Nextflow’s implementation (and how people use it) lacks some necessary features. We start by taking a look at one line from one of the most active nf-core pipelines, namely nf-core/rnaseq:\n ...\n STAR_ALIGN_IGENOMES ( reads, index, gtf, star_ignore_sjdbgtf, seq_platform, seq_center )\n ...\nThis calls a Nextflow process to align the reads according to a reference index and some other (optional) ‘values’. That is, those are not really all values. As the calling worklow indicates:\nworkflow ALIGN_STAR {\n take:\n reads // channel: [ val(meta), [ reads ] ]\n index // channel: [ val(meta), [ index ] ]\n gtf // channel: [ val(meta), [ gtf ] ]\n star_ignore_sjdbgtf // boolean: when using pre-built STAR indices do not re-extract and use splice junctions from the GTF file \n seq_platform // string : sequencing platform\n seq_center // string : sequencing center\n is_aws_igenome // boolean: whether the genome files are from AWS iGenomes\n fasta // channel: /path/to/fasta\nLuckily, if a plain value rather than a channel is passed to a process it is automatically converted to a channel. Since reads can have a multiplicity larger than one (one usually employs data pipelines because of their ability to process multiple samples in parallel), also the plain values are duplicated so all these inputs end up being channels with the same amount of items or events in them.\nA similar issue relates to the index or genome reference: the pipeline allows the user to specify a genome reference (params.star_index) to be used for all samples. Also here, Nextflow will notice that multiple items in the reads channel need to be combined with 1 item in the index channel and will therefore automatically duplicate the index channel item as many times as necessary.\nThat’s a lot of magic going one, which in itself is not an issue. It becomes an issue, for instance, if we consider for instance that different samples (reads) would require different genome references (index).\n\n\nPain points\n\nPer-sample settings\nAs illustrated above, a per-sample genome reference would not be possible in the way the nf-core/rnaseq pipeline is currently implemented. In fact, it would involve a lot of extra code to make it possible in the way the channels are used.\nLet us create a toy example to illustrate this conceptually:\nWe start from a channel with 3 items: 1, 2 and 3. We create a second channel where these values are multiplied by 10 (making use of some of the Nextflow channel magic described earlier) and add both channels.\nThink about what you would expect to come out and then verify the result below.\nprocess add {\n input:\n val(input1)\n val(input2)\n output:\n val(output)\n exec:\n output = input1 + input2\n}\n \nprocess times {\n input:\n val(input1)\n val(input2)\n output:\n val(output)\n exec:\n output = input1 * input2\n}\n\nworkflow {\n ch1 = Channel.from( [ 1, 2, 3 ] )\n ch2 = times(ch1, 10)\n\n add(ch1, ch2) | view\n}\n\n\nOutput\n\n\nnextflow run conventional.nf -ansi-log false\n\nN E X T F L O W ~ version 23.04.1\nLaunching `conventional.nf` [sick_allen] DSL2 - revision: 4111eb632c\n[43/7890cb] Submitted process > times (3)\n[ad/75b82a] Submitted process > times (1)\n[25/57a1ad] Submitted process > times (2)\n[57/29ee3d] Submitted process > add (1)\n[80/9bc295] Submitted process > add (2)\n31\n[bf/9f4234] Submitted process > add (3)\n12\n23\n\n\n\nThis document is auto-generated and may as a result (once in 3 times) return three numbers 11, 22 and 33. But it may as well return 21, 32 and 13. The reason is simple: channels are asynchronous by design and order is therefore not guaranteed.\nThis has huge consequences for keeping track of the flow of data through the pipeline. As a result, one will often see channels contain not only data but also an identifier (ID) in the form of a tuple: [<ID>, <data> ].\nprocess add {\n input:\n tuple val(id), val(input1), val(input2)\n output:\n tuple val(id), val(output)\n exec:\n output = input1 + input2\n}\n \nprocess times {\n input:\n tuple val(id), val(input)\n output:\n tuple val(id), val(output)\n exec:\n output = input * 10\n}\n\nworkflow {\n ch1 = Channel.from( [ [ \"a\", 1], [ \"b\", 2], [ \"c\", 3] ] )\n ch2 = times(ch1)\n\n ch1\n | join(ch2)\n | add\n | view\n\n}\nWhen we run this script, we get the following result:\n\n\nOutput\n\n\nnextflow run id.nf -ansi-log false\n\nN E X T F L O W ~ version 23.04.1\nLaunching `id.nf` [trusting_hodgkin] DSL2 - revision: 6939fc5e2e\n[7b/11fa78] Submitted process > times (2)\n[f3/9c6088] Submitted process > times (1)\n[bf/68422d] Submitted process > times (3)\n[e1/16d985] Submitted process > add (1)\n[57/cef4c8] Submitted process > add (2)\n[31/4c821e] Submitted process > add (3)\n[b, 22]\n[a, 11]\n[c, 33]\n\n\n\nThis version does exactly what we want it to do, but please notice that both the API for times as well as add have changed! We can not simply keep juggling with channels if we expect them to be aligned at some point.\nIf we apply this to the Nextflow samples from the nf-core pipelines discussed earlier, we must conclude that only by add an ID consistently will we be able to make sure that we deal with the proper content of the channels.\nPlease note in our latest version that having both inputs for the add step in one channel event makes life much easier: we are sure both values correspond to the same ‘sample’ (i.e. have the same ID).\n\n\n\n\n\n\nImportant\n\n\n\nWe need to pass an ID with the channel and thus at least have a tuple [ id, <data> ].\n\n\n\n\nRuntime arguments\nDealing with runtime arguments is an extension of the pre-sample issue discussed above: In our experience it occurs regularly that an argument of a step in the pipeline (say the cluster size for a filter) depends on:\n\nuser input, similarly to the genome reference above but then dependent on the sample,\nan earlier step in the pipeline that for instance has performed clustering.\n\nTo make things worse, maybe the cluster size has a default value an the user can override it but does not necessarily have to.\nThere are in fact three difficulties here:\n\nStoring the output of an ealier step so it can be picked up later\nConnecting the proper argument to the correct sample\nMaking sure this argument is used for the proper step in the pipeline\n\nAs argued above, doing (2) is nearly impossible in vanilla Nextflow and (1) is hard. The example of STAR alignment illustrates how (3) is performed: the ‘argument’ is added as an additional input (channel) to the step in the pipeline.\nThe following\nprocess add {\n input:\n // This time, input is a hashmap containing .left and .right\n tuple val(id), val(input)\n output:\n tuple val(id), val(output)\n exec:\n output = input.left + input.right\n}\n \nprocess times {\n input:\n // This time, input is a hashmap containing .left and .right\n tuple val(id), val(input)\n output:\n tuple val(id), val(output)\n exec:\n output = input.left * input.right\n}\n\nworkflow {\n ch1 =\n Channel.from( [ [ \"a\", 1], [ \"b\", 2], [ \"c\", 3] ] )\n ch2 =\n ch1\n | map{ id, value -> [ id, [ left: value, right: params.multiplier ] ] }\n | times\n\n ch1\n | map{ id, value -> [ id, [ left: value ] ] }\n | join( ch2 | map{ id, value -> [ id, [ right: value ] ] } )\n | map{ id, left, right -> [ id, left + right ] }\n | add\n | view\n\n}\nPlease note that we add map operator to both channels in order to turn both input channels into a channel that contains either the left or the right key for them to be added in one more map operation using the left + right statement2.\nAlso the times step is now extended to take into account input from the user at runtime as well. Remark that this is now very easily done.\nWhen we run this script\nnextflow run hash.nf --multiplier 20\nwe get the following result:\n\n\nOutput\n\n\nnextflow run hash.nf -ansi-log false --multiplier 20\n\nN E X T F L O W ~ version 23.04.1\nLaunching `hash.nf` [agitated_kare] DSL2 - revision: 15cf29e2fe\n[84/5b3f23] Submitted process > times (3)\n[9d/3c0fe0] Submitted process > times (2)\n[f6/d57e5b] Submitted process > times (1)\n[71/552c1e] Submitted process > add (1)\n[e4/7413d7] Submitted process > add (2)\n[26/55caab] Submitted process > add (3)\n[c, 63]\n[b, 42]\n[a, 21]\n\n\n\nThe second element of the tuple we refer to as the state. In general, it contains pointers to data, data files, arguments but it may also contains outputs from earlier steps or transcript information, etc.\n\n\n\n\n\n\nImportant\n\n\n\nThe second element of the tuple passed through the channel is called the state and contains all information we need or want to keep connected to the sample this tuple points to.\n\n\nSince the state is part of the tuple, it is uniquely connected to the sample ID. In order to be able to pass the output from an earlier step as an argument to a later step, the output has to be a hashmap as well. The following update to the earlier script illustrates this:\nprocess add {\n input:\n // This time, input is a hashmap containing .left and .right\n tuple val(id), val(input)\n output:\n tuple val(id), val(output)\n exec:\n output = [ result: input.left + input.right, left: input.left, right: input.right ]\n}\n \nprocess times {\n input:\n // This time, input is a hashmap containing .left and .right\n tuple val(id), val(input)\n output:\n tuple val(id), val(output)\n exec:\n output = [ result: input.left * input.right, left: input.left, right: input.right ]\n}\n\nworkflow {\n ch1 =\n Channel.from( [ [ \"a\", 1], [ \"b\", 2], [ \"c\", 3] ] )\n ch2 =\n ch1\n | map{ id, value -> [ id, [ left: value, right: params.multiplier ] ] }\n | times\n\n ch1\n | map{ id, value -> [ id, [ left: value ] ] }\n | join( ch2 | map{ id, times_output -> [ id, [ right: times_output.result ] ] } )\n | map{ id, left_map, right_map -> [ id, left_map + right_map ] }\n | add\n | view\n\n}\nThis result in:\n\n\nOutput\n\n\nnextflow run hash-output.nf -ansi-log false --multiplier 20\n\nN E X T F L O W ~ version 23.04.1\nLaunching `hash-output.nf` [loving_spence] DSL2 - revision: 43066cbd22\n[ba/dc49ef] Submitted process > times (2)\n[e3/00f148] Submitted process > times (3)\n[79/bccd6f] Submitted process > times (1)\n[38/105602] Submitted process > add (1)\n[e4/a8422e] Submitted process > add (2)\n[4a/54d30f] Submitted process > add (3)\n[b, [result:42, left:2, right:40]]\n[c, [result:63, left:3, right:60]]\n[a, [result:21, left:1, right:20]]\n\n\n\n\n\n\nConsequences\nThe consequence of the above two major challenges when using vanilla Nextflow and their ideal solution is twofold, as illustated by the last example:\n\nOne has to write a lot of map operations to tie together every step, especially using hashmaps for the output as well may make the pipeline code hard to reason about.\nThe steps (process definitions) need to be aware of what can be expected to come in and what they should write out. Ideally, though, those should be simple wrappers for existing scripts that have been implemented earlier.\n\nFor instance, imagine doing the above in R or Python, one would have to serialize the incoming hashmap into something readable in the script. That is probably beyond the scope of most researchers that deal with bioinformatics pipelines.\n\n\nCatch-22\nIn a sense, given the above, we find ourselves in a catch-22. Either we use vanilla Nextflow and are stuck in an environment that allows for a lot of flexibility, just not enough for slightly more complex use-cases. Or we have to start adding a lot of extra code, both in the pipeline script itself as well as all individual components3.\n\n\nViash to the rescue\nThe challenges that remain when passing tuples of the form [ id, state ] through the channels in a pipeline can be resolved by adding some boilerplate to the individual steps in the pipeline. But of course, we don’t want to do that manually. Rather, we need to automate this so that it becomes testable and fault-tolerant.\nThat’s basically what Viash can do when building for the platform: nextflow4.", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "VDSL3 principles" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/principles.html#vdsl3-module-interface", + "href": "guide/nextflow_vdsl3/principles.html#vdsl3-module-interface", + "title": "VDSL3 principles", + "section": "VDSL3 module interface", + "text": "VDSL3 module interface\nVDSL3 modules are actually workflows which take one channel and emit one channel. It expects the channel events to be tuples containing an ‘id’ and a ‘state’:\n[ id, state ]\nwhere id is a unique String and state is a Map[String, Object]. The resulting channel then consists of tuples [id, new_state].\nExample:\nworkflow {\n Channel.fromList([\n [\"myid\", [input: file(\"in.txt\")]]\n ])\n | mymodule\n}\n\n\n\n\n\n\nNote\n\n\n\nIf the input tuple has more than two elements, the elements after the second element are passed through to the output tuple. That is, an input tuple [id, input, ...] will result in a tuple [id, output, ...] after running the module. For example, an input tuple [\"foo\", [input: file(\"in.txt\")], \"bar\"] will result in an output tuple [\"foo\", [output: file(\"out.txt\")], \"bar\"].", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "VDSL3 principles" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/principles.html#customizing-vdsl3-modules-on-the-fly", + "href": "guide/nextflow_vdsl3/principles.html#customizing-vdsl3-modules-on-the-fly", + "title": "VDSL3 principles", + "section": "Customizing VDSL3 modules on the fly", + "text": "Customizing VDSL3 modules on the fly\nUsually, Nextflow processes are quite static objects. For example, changing its directives can be tricky. Per-sample settings are practically impossible to achieve with vanilla Nextflow.\nThe run() function is a unique feature for every VDSL3 module which allows dynamically altering the behaviour of a module from within the pipeline. For example, we use it to set the publishDir directive to \"output/\" so the output of that step in the pipeline will be stored as output.\nSee the reference documentation for a complete list of arguments of .run().", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "VDSL3 principles" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/principles.html#footnotes", + "href": "guide/nextflow_vdsl3/principles.html#footnotes", + "title": "VDSL3 principles", + "section": "Footnotes", + "text": "Footnotes\n\n\nHaving said that, NextFlow allows one to mix functional and imperative programming to the point that a developer is able to shoot oneselve in the foot.↩︎\nIn principle, we could return a similar hashmap from every step as well and even include the original input or logging information along with it!↩︎\nIn a sense, this is already the case. When taking a look at a typical process definition in the [nv-core/rnaseq] repository, a lot of boilerplate code has (manually) been added to make things work.↩︎\nOther build platforms are available, as illustrated elsehwere in these pages.↩︎", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "VDSL3 principles" + ] + }, + { + "objectID": "about.html", + "href": "about.html", + "title": "About Viash", + "section": "", + "text": "Viash is developed and maintained by Data Intuitive.\nYou can find out more information about Viash in our preprint.\nFor more information or support contact us at info@data-intuitive.com." + }, + { + "objectID": "about.html#logos", + "href": "about.html#logos", + "title": "About Viash", + "section": "Logos", + "text": "Logos" + }, + { + "objectID": "reference/config_mods/index.html", + "href": "reference/config_mods/index.html", + "title": "Dynamic Config Modding", + "section": "", + "text": "Viash can modify a viash config at runtime using a custom Domain Specific Language (DSL). This allows making dynamic changes to your components or projects.\nAll Viash subcommands have support for the DSL through the -c|--config_mod parameter. The format for these is as follows:\nMultiple config mods can be added by adding more -c|--config_mod parameters:", + "crumbs": [ + "Reference", + "Dynamic Config Modding" + ] + }, + { + "objectID": "reference/config_mods/index.html#examples", + "href": "reference/config_mods/index.html#examples", + "title": "Dynamic Config Modding", + "section": "Examples", + "text": "Examples\nChange the version of a component:\nviash build -c '.functionality.version := \"0.3.0\"'\nChange the registry of a docker container:\nviash build -c \\\n '.platforms[.type == \"docker\"].container_registry := \"url-to-registry\"'\nAdd an author to the list:\nviash build -c '.functionality.authors += { name: \"Mr. T\", role: \"sponsor\" }'\nYou can use dynamic config modding to alter the config of multiple components at once:\nviash ns build \\\n -c '.functionality.version := \"0.3.0\"' \\\n -c '.platforms[.type == \"docker\"].container_registry := \"url-to-registry\"' \\\n -c '.functionality.authors += { name: \"Mr. T\", role: \"sponsor\" }'", + "crumbs": [ + "Reference", + "Dynamic Config Modding" + ] + }, + { + "objectID": "reference/cli/test.html", + "href": "reference/cli/test.html", + "title": "Viash Test", + "section": "", + "text": "Test the component using the tests defined in the viash config file.\nUsage:\nviash test config.vsh.yaml [-p docker] [-k true/false] [--setup cachedbuild]\n\n\n\nArgument\nDescription\nType\n\n\n\n\nconfig\nA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.\nString\n\n\n--config_mod, -c\nModify a viash config at runtime using dynamic config modding.\nList[String]\n\n\n--cpus\nThe maximum number of (logical) cpus a component is allowed to use.\nInt\n\n\n--keep, -k\nWhether or not to keep temporary files. By default, files will be deleted if all goes well but remain when an error occurs. By specifying –keep true, the temporary files will always be retained, whereas –keep false will always delete them. The temporary directory can be overwritten by setting defining a VIASH_TEMP directory.\nString\n\n\n--memory\nThe maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.\nString\n\n\n--platform, -p\nSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.\nString\n\n\n--setup, -s\nWhich setup strategy for creating the container to use [Docker Platform only].\nString\n\n\n--help, -h\nShow help message", + "crumbs": [ + "Reference", + "CLI", + "Viash Test" + ] + }, + { + "objectID": "reference/cli/config_view.html", + "href": "reference/cli/config_view.html", + "title": "Viash Config View", + "section": "", + "text": "View the config file after parsing.\nUsage:\nviash config view config.vsh.yaml\n\n\n\nArgument\nDescription\nType\n\n\n\n\nconfig\nA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.\nString\n\n\n--config_mod, -c\nModify a viash config at runtime using dynamic config modding.\nList[String]\n\n\n--format, -f\nWhich output format to use.\nString\n\n\n--parse_argument_groups\nWhether or not to postprocess each component’s argument groups.\nBoolean\n\n\n--platform, -p\nSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.\nString\n\n\n--help, -h\nShow help message", + "crumbs": [ + "Reference", + "CLI", + "Viash Config View" + ] + }, + { + "objectID": "reference/cli/ns_build.html", + "href": "reference/cli/ns_build.html", + "title": "Viash Ns Build", + "section": "", + "text": "Build a namespace from many viash config files.\nUsage:\nviash ns build [-n nmspc] [-s src] [-t target] [-p docker] [--setup] [--push] [--parallel] [--flatten]\n\n\n\nArgument\nDescription\nType\n\n\n\n\n--config_mod, -c\nModify a viash config at runtime using dynamic config modding.\nList[String]\n\n\n--flatten, -f\nFlatten the target builds, handy for building one platform to a bin directory.\nBoolean\n\n\n--parallel, -l\nWhether or not to run the process in parallel.\nBoolean\n\n\n--platform, -p\nActs as a regular expression to filter the platform ids specified in the found config files. If this is not provided, all platforms will be used. If no platforms are defined in a config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.\nString\n\n\n--push\nWhether or not to push the container to a Docker registry [Docker Platform only].\nBoolean\n\n\n--query, -q\nFilter which components get selected by component and namespace name. Can be a regex. Example: “^mynamespace/component1$”.\nString\n\n\n--query_name\nFilter which components get selected by component name. Can be a regex. Example: “^component1”.\nString\n\n\n--query_namespace, -n\nFilter which namespaces get selected by namespace name. Can be a regex. Example: “^mynamespace$”.\nString\n\n\n--setup\nWhich setup strategy for creating the container to use [Docker Platform only].\nString\n\n\n--src, -s\nA source directory containing viash config files, possibly structured in a hierarchical folder structure. Default: src/.\nString\n\n\n--target, -t\nA target directory to build the executables into. Default: target/.\nString\n\n\n--help, -h\nShow help message", + "crumbs": [ + "Reference", + "CLI", + "Viash Ns Build" + ] + }, + { + "objectID": "reference/cli/run.html", + "href": "reference/cli/run.html", + "title": "Viash Run", + "section": "", + "text": "Executes a viash component from the provided viash config file. viash generates a temporary executable and immediately executes it with the given parameters.\nUsage:\nviash run config.vsh.yaml [-p docker] [-k true/false] -- [arguments for script]\n\n\n\nArgument\nDescription\nType\n\n\n\n\nconfig\nA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.\nString\n\n\n--config_mod, -c\nModify a viash config at runtime using dynamic config modding.\nList[String]\n\n\n--cpus\nThe maximum number of (logical) cpus a component is allowed to use.\nInt\n\n\n--keep, -k\nWhether or not to keep temporary files. By default, files will be deleted if all goes well but remain when an error occurs. By specifying –keep true, the temporary files will always be retained, whereas –keep false will always delete them. The temporary directory can be overwritten by setting defining a VIASH_TEMP directory.\nString\n\n\n--memory\nThe maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.\nString\n\n\n--platform, -p\nSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.\nString\n\n\n--help, -h\nShow help message", + "crumbs": [ + "Reference", + "CLI", + "Viash Run" + ] + }, + { + "objectID": "reference/cli/ns_exec.html", + "href": "reference/cli/ns_exec.html", + "title": "Viash Ns Exec", + "section": "", + "text": "Execute a command for all found Viash components. The syntax of this command is inspired by find . -exec echo {} \\;.\nThe following fields are automatically replaced:\n\n{} | {path}: path to the config file\n{abs-path}: absolute path to the config file\n{dir}: path to the parent directory of the config file\n{abs-dir}: absolute path to the directory of the config file\n{main-script}: path to the main script (if any)\n{abs-main-script}: absolute path to the main script (if any)\n{functionality-name}: name of the component\n{namespace}: namespace of the component\n{platform}: selected platform id (only when –apply_platform is used)\n{output}: path to the destination directory when building the component\n{abs-output}: absolute path to the destination directory when building the component\n\nA command suffixed by \\; (or nothing) will execute one command for each of the Viash components, whereas a command suffixed by + will execute one command for all Viash components.\nUsage:\nviash ns exec 'echo {path} \\\\;'\nviash ns exec 'chmod +x {main-script} +'\n\n\n\nArgument\nDescription\nType\n\n\n\n\n--apply_platform, -a\nFills in the {platform} and {output} field by applying each platform to the config separately. Note that this results in the provided command being applied once for every platform that matches the –platform regex.\nBoolean\n\n\n--cmd\nThe command to execute for each viash config file in the namespace. This is a required argument.\nString\n\n\n--config_mod, -c\nModify a viash config at runtime using dynamic config modding.\nList[String]\n\n\n--dry_run, -d\nPerform a dry run.\nBoolean\n\n\n--parallel, -l\nWhether or not to run the process in parallel.\nBoolean\n\n\n--platform, -p\nActs as a regular expression to filter the platform ids specified in the found config files. If this is not provided, all platforms will be used. If no platforms are defined in a config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.\nString\n\n\n--query, -q\nFilter which components get selected by component and namespace name. Can be a regex. Example: “^mynamespace/component1$”.\nString\n\n\n--query_name\nFilter which components get selected by component name. Can be a regex. Example: “^component1”.\nString\n\n\n--query_namespace, -n\nFilter which namespaces get selected by namespace name. Can be a regex. Example: “^mynamespace$”.\nString\n\n\n--src, -s\nA source directory containing viash config files, possibly structured in a hierarchical folder structure. Default: src/.\nString\n\n\n--help, -h\nShow help message", + "crumbs": [ + "Reference", + "CLI", + "Viash Ns Exec" + ] + }, + { + "objectID": "reference/config/index.html", + "href": "reference/config/index.html", + "title": "Config", + "section": "", + "text": "A Viash configuration is a YAML file which contains metadata to describe the behaviour and build target(s) of a component.\nWe commonly name this file config.vsh.yaml in our examples, but you can name it however you choose.\nExample:", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#merge__", + "href": "reference/config/index.html#merge__", + "title": "Config", + "section": "__merge__", + "text": "__merge__\nType: File\nDefault: Empty\nConfig inheritance by including YAML partials. This is useful for defining common APIs in separate files. __merge__ can be used in any level of the YAML. For example, not just in the config but also in the functionality or any of the platforms.\nExample:\n__merge__: ../api/common_interface.yaml", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#functionality", + "href": "reference/config/index.html#functionality", + "title": "Config", + "section": "functionality", + "text": "functionality\nType: Functionality\nThe functionality describes the behaviour of the script in terms of arguments and resources. By specifying a few restrictions (e.g. mandatory arguments) and adding some descriptions, Viash will automatically generate a stylish command-line interface for you.", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#platforms", + "href": "reference/config/index.html#platforms", + "title": "Config", + "section": "platforms", + "text": "platforms\nType: List of Platform\nA list of platforms to generate target artifacts for.\n\nNative\nDocker\nNextflow", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/functionality/index.html", + "href": "reference/config/functionality/index.html", + "title": "Functionality", + "section": "", + "text": "The functionality-part of the config file describes the behaviour of the script in terms of arguments and resources. By specifying a few restrictions (e.g. mandatory arguments) and adding some descriptions, Viash will automatically generate a stylish command-line interface for you.", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#argument_groups", + "href": "reference/config/functionality/index.html#argument_groups", + "title": "Functionality", + "section": "argument_groups", + "text": "argument_groups\nType: List of ArgumentGroup\nDefault: Empty\nA grouping of the arguments, used to display the help message.\n\nname: foo, the name of the argument group.\ndescription: Description of foo, a description of the argument group. Multiline descriptions are supported.\narguments: [arg1, arg2, ...], list of the arguments.\n\nExamples:\nargument_groups:\n - name: \"Input\"\n arguments:\n - name: \"--id\"\n type: string\n required: true\n - name: \"--input\"\n type: file\n required: true\n - name: \"Output\"\n arguments:\n - name: \"--output\"\n type: file\n direction: output\n required: true\n - name: \"--output_optional\"\n type: file\n direction: output\nThis results in the following output when calling the component with the --help argument:\ncomponent_name\n\n Input:\n --id\n type: string\n\n --input\n type: file\n\n Output:\n --output\n type: file\n\n --optional_output\n type: file", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#arguments", + "href": "reference/config/functionality/index.html#arguments", + "title": "Functionality", + "section": "arguments", + "text": "arguments\nType: List of Argument\nDefault: Empty\nA list of arguments for this component. For each argument, a type and a name must be specified. Depending on the type of argument, different properties can be set. See these reference pages per type for more information:\n\nstring\nfile\ninteger\ndouble\nboolean\nboolean_true\nboolean_false\n\nExample:\narguments:\n - name: --foo\n type: file\n alternatives: [-f]\n description: Description of foo\n default: \"/foo/bar\"\n must_exist: true\n direction: output\n required: false\n multiple: true\n multiple_sep: \",\"\n - name: --bar\n type: string", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#authors", + "href": "reference/config/functionality/index.html#authors", + "title": "Functionality", + "section": "authors", + "text": "authors\nType: List of Author\nDefault: Empty\nA list of authors. An author must at least have a name, but can also have a list of roles, an e-mail address, and a map of custom properties.\nSuggested values for roles are:\n\n\n\n\n\n\n\n\nRole\nAbbrev.\nDescription\n\n\n\n\nmaintainer\nmnt\nfor the maintainer of the code. Ideally, exactly one maintainer is specified.\n\n\nauthor\naut\nfor persons who have made substantial contributions to the software.\n\n\ncontributor\nctb\nfor persons who have made smaller contributions (such as code patches).\n\n\ndatacontributor\ndtc\nfor persons or organisations that contributed data sets for the software\n\n\ncopyrightholder\ncph\nfor all copyright holders. This is a legal concept so should use the legal name of an institution or corporate body.\n\n\nfunder\nfnd\nfor persons or organizations that furnished financial support for the development of the software\n\n\n\nThe full list of roles is extremely comprehensive.\nExample:\nauthors:\n - name: Jane Doe\n role: [author, maintainer]\n email: jane@doe.com\n info:\n github: janedoe\n twitter: janedoe\n orcid: XXAABBCCXX\n groups: [ one, two, three ]\n - name: Tim Farbe\n roles: [author]\n email: tim@far.be", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#dependencies", + "href": "reference/config/functionality/index.html#dependencies", + "title": "Functionality", + "section": "dependencies", + "text": "dependencies\nType: List of Dependency\nDefault: Empty\nAllows listing Viash components required by this Viash component\nExamples:\nFull specification of a repository\ndependencies:\n - name: qc/multiqc\n repository: \n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0\nFull specification of a repository using sugar syntax\ndependencies:\n - name: qc/multiqc\n repository: \"github://openpipelines-bio/modules:0.3.0\"\nReference to a repository fully specified under ‘repositories’\ndependencies:\n - name: qc/multiqc\n repository: \"openpipelines-bio\"", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#description", + "href": "reference/config/functionality/index.html#description", + "title": "Functionality", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the component. This will be displayed with --help.\nExample:\ndescription: |\n This component performs function Y and Z.\n It is possible to make this a multiline string.", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#info", + "href": "reference/config/functionality/index.html#info", + "title": "Functionality", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n twitter: wizzkid\n classes: [ one, two, three ]", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#name", + "href": "reference/config/functionality/index.html#name", + "title": "Functionality", + "section": "name", + "text": "name\nType: String\nName of the component and the filename of the executable when built with viash build.\nExample:\nname: this_is_my_component", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#namespace", + "href": "reference/config/functionality/index.html#namespace", + "title": "Functionality", + "section": "namespace", + "text": "namespace\nType: String\nDefault: Empty\nNamespace this component is a part of. See the Namespaces guide for more information on namespaces.\nExample:\nnamespace: fancy_components", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#repositories", + "href": "reference/config/functionality/index.html#repositories", + "title": "Functionality", + "section": "repositories", + "text": "repositories\nType: List of RepositoryWithName\nDefault: Empty\n(Pre-)defines repositories that can be used as repository in dependencies. Allows reusing repository definitions in case it is used in multiple dependencies.\nExample:\nrepositories:\n - name: openpipelines-bio\n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#requirements", + "href": "reference/config/functionality/index.html#requirements", + "title": "Functionality", + "section": "requirements", + "text": "requirements\nType: ComputationalRequirements\nDefault: Empty\nComputational requirements related to running the component. cpus specifies the maximum number of (logical) cpus a component is allowed to use., whereas memory specifies the maximum amount of memory a component is allowed to allicate. Memory units must be in B, KB, MB, GB, TB or PB.\nExample:\nrequirements:\n cpus: 5\n memory: 10GB", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#resources", + "href": "reference/config/functionality/index.html#resources", + "title": "Functionality", + "section": "resources", + "text": "resources\nType: List of Resource\nDefault: Empty\nResources are files that support the component. The first resource should be a script that will be executed when the functionality is run. Additional resources will be copied to the same directory.\nCommon properties:\n\ntype: file / r_script / python_script / bash_script / javascript_script / scala_script / csharp_script, specifies the type of the resource. The first resource cannot be of type file. When the type is not specified, the default type is simply file.\ndest: filename, the resulting name of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.\npath: path/to/file, the path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.\ntext: …multiline text…, the content of the resulting file specified as a string. Mutually exclusive with path.\nis_executable: true / false, whether the resulting resource file should be made executable.\n\nExample:\nresources:\n - type: r_script\n path: script.R\n - type: file\n path: resource1.txt", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#status", + "href": "reference/config/functionality/index.html#status", + "title": "Functionality", + "section": "status", + "text": "status\nType: Status\nDefault: Enabled\nAllows setting a component to active, deprecated or disabled.", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#test_resources", + "href": "reference/config/functionality/index.html#test_resources", + "title": "Functionality", + "section": "test_resources", + "text": "test_resources\nType: List of Resource\nDefault: Empty\nOne or more scripts to be used to test the component behaviour when viash test is invoked. Additional files of type file will be made available only during testing. Each test script should expect no command-line inputs, be platform-independent, and return an exit code >0 when unexpected behaviour occurs during testing. See Unit Testing for more info.\nExample:\ntest_resources:\n - type: bash_script\n path: tests/test1.sh\n - type: r_script\n path: tests/test2.R\n - path: resource1.txt", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#usage", + "href": "reference/config/functionality/index.html#usage", + "title": "Functionality", + "section": "usage", + "text": "usage\nType: String\nDefault: Empty\nA description on how to use the component. This will be displayed with --help under the ‘Usage:’ section.\nExample:\nusage: Place the executable in a directory containing TSV files and run it", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#version", + "href": "reference/config/functionality/index.html#version", + "title": "Functionality", + "section": "version", + "text": "version\nType: String\nDefault: Empty\nVersion of the component. This field will be used to version the executable and the Docker container.\nExample:\nversion: 0.8", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/resources/executable.html", + "href": "reference/config/functionality/resources/executable.html", + "title": "Executable", + "section": "", + "text": "An executable file.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/functionality/resources/executable.html#dest", + "href": "reference/config/functionality/resources/executable.html#dest", + "title": "Executable", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/functionality/resources/executable.html#is_executable", + "href": "reference/config/functionality/resources/executable.html#is_executable", + "title": "Executable", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/functionality/resources/executable.html#path", + "href": "reference/config/functionality/resources/executable.html#path", + "title": "Executable", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/functionality/resources/executable.html#text", + "href": "reference/config/functionality/resources/executable.html#text", + "title": "Executable", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/functionality/resources/executable.html#type", + "href": "reference/config/functionality/resources/executable.html#type", + "title": "Executable", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as an executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/functionality/resources/scalaScript.html", + "href": "reference/config/functionality/resources/scalaScript.html", + "title": "Scala Script", + "section": "", + "text": "An executable Scala script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/scalaScript.html#dest", + "href": "reference/config/functionality/resources/scalaScript.html#dest", + "title": "Scala Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/scalaScript.html#is_executable", + "href": "reference/config/functionality/resources/scalaScript.html#is_executable", + "title": "Scala Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/scalaScript.html#path", + "href": "reference/config/functionality/resources/scalaScript.html#path", + "title": "Scala Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/scalaScript.html#text", + "href": "reference/config/functionality/resources/scalaScript.html#text", + "title": "Scala Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/scalaScript.html#type", + "href": "reference/config/functionality/resources/scalaScript.html#type", + "title": "Scala Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a Scala script.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/javaScriptScript.html", + "href": "reference/config/functionality/resources/javaScriptScript.html", + "title": "JavaScript Script", + "section": "", + "text": "An executable JavaScript script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/javaScriptScript.html#dest", + "href": "reference/config/functionality/resources/javaScriptScript.html#dest", + "title": "JavaScript Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/javaScriptScript.html#is_executable", + "href": "reference/config/functionality/resources/javaScriptScript.html#is_executable", + "title": "JavaScript Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/javaScriptScript.html#path", + "href": "reference/config/functionality/resources/javaScriptScript.html#path", + "title": "JavaScript Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/javaScriptScript.html#text", + "href": "reference/config/functionality/resources/javaScriptScript.html#text", + "title": "JavaScript Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/javaScriptScript.html#type", + "href": "reference/config/functionality/resources/javaScriptScript.html#type", + "title": "JavaScript Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a JavaScript script.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/nextflowScript.html", + "href": "reference/config/functionality/resources/nextflowScript.html", + "title": "Nextflow Script", + "section": "", + "text": "A Nextflow script. Work in progress; added mainly for annotation at the moment.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/nextflowScript.html#dest", + "href": "reference/config/functionality/resources/nextflowScript.html#dest", + "title": "Nextflow Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/nextflowScript.html#entrypoint", + "href": "reference/config/functionality/resources/nextflowScript.html#entrypoint", + "title": "Nextflow Script", + "section": "entrypoint", + "text": "entrypoint\nType: String\nThe name of the workflow to be wrapped.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/nextflowScript.html#is_executable", + "href": "reference/config/functionality/resources/nextflowScript.html#is_executable", + "title": "Nextflow Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/nextflowScript.html#path", + "href": "reference/config/functionality/resources/nextflowScript.html#path", + "title": "Nextflow Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/nextflowScript.html#text", + "href": "reference/config/functionality/resources/nextflowScript.html#text", + "title": "Nextflow Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/nextflowScript.html#type", + "href": "reference/config/functionality/resources/nextflowScript.html#type", + "title": "Nextflow Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a Nextflow script.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/rScript.html", + "href": "reference/config/functionality/resources/rScript.html", + "title": "R Script", + "section": "", + "text": "An executable R script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/rScript.html#dest", + "href": "reference/config/functionality/resources/rScript.html#dest", + "title": "R Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/rScript.html#is_executable", + "href": "reference/config/functionality/resources/rScript.html#is_executable", + "title": "R Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/rScript.html#path", + "href": "reference/config/functionality/resources/rScript.html#path", + "title": "R Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/rScript.html#text", + "href": "reference/config/functionality/resources/rScript.html#text", + "title": "R Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/rScript.html#type", + "href": "reference/config/functionality/resources/rScript.html#type", + "title": "R Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a R script.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/localRepositoryWithName.html", + "href": "reference/config/functionality/dependencies/localRepositoryWithName.html", + "title": "Local Repository With Name", + "section": "", + "text": "Defines a locally present and available repository. This can be used to define components from the same code base as the current component. Alternatively, this can be used to refer to a code repository present on the local hard-drive instead of fetchable remotely, for example during development.\nExample:\nRefer to a local code repository under additional_code/src referenced to the Viash Project Config file." + }, + { + "objectID": "reference/config/functionality/dependencies/localRepositoryWithName.html#name", + "href": "reference/config/functionality/dependencies/localRepositoryWithName.html#name", + "title": "Local Repository With Name", + "section": "name", + "text": "name\nType: String\nThe identifier used to refer to this repository from dependencies." + }, + { + "objectID": "reference/config/functionality/dependencies/localRepositoryWithName.html#path", + "href": "reference/config/functionality/dependencies/localRepositoryWithName.html#path", + "title": "Local Repository With Name", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components." + }, + { + "objectID": "reference/config/functionality/dependencies/localRepositoryWithName.html#tag", + "href": "reference/config/functionality/dependencies/localRepositoryWithName.html#tag", + "title": "Local Repository With Name", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash." + }, + { + "objectID": "reference/config/functionality/dependencies/localRepositoryWithName.html#type", + "href": "reference/config/functionality/dependencies/localRepositoryWithName.html#type", + "title": "Local Repository With Name", + "section": "type", + "text": "type\nType: String\nDefines the repository type. This determines how the repository will be fetched and handled." + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html", + "href": "reference/config/functionality/dependencies/githubRepository.html", + "title": "Github Repository", + "section": "", + "text": "A GitHub repository where remote dependency components can be found.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html#path", + "href": "reference/config/functionality/dependencies/githubRepository.html#path", + "title": "Github Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html#repo", + "href": "reference/config/functionality/dependencies/githubRepository.html#repo", + "title": "Github Repository", + "section": "repo", + "text": "repo\nType: String\nThe name of the GitHub repository.\nExample:\nrepo: viash-io/viash", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html#tag", + "href": "reference/config/functionality/dependencies/githubRepository.html#tag", + "title": "Github Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html#type", + "href": "reference/config/functionality/dependencies/githubRepository.html#type", + "title": "Github Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a GitHub repository.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepositoryWithName.html", + "href": "reference/config/functionality/dependencies/gitRepositoryWithName.html", + "title": "Git Repository With Name", + "section": "", + "text": "A Git repository where remote dependency components can be found.\nExamples:" + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepositoryWithName.html#name", + "href": "reference/config/functionality/dependencies/gitRepositoryWithName.html#name", + "title": "Git Repository With Name", + "section": "name", + "text": "name\nType: String\nThe identifier used to refer to this repository from dependencies." + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepositoryWithName.html#path", + "href": "reference/config/functionality/dependencies/gitRepositoryWithName.html#path", + "title": "Git Repository With Name", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components." + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepositoryWithName.html#tag", + "href": "reference/config/functionality/dependencies/gitRepositoryWithName.html#tag", + "title": "Git Repository With Name", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash." + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepositoryWithName.html#type", + "href": "reference/config/functionality/dependencies/gitRepositoryWithName.html#type", + "title": "Git Repository With Name", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Git repository." + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepositoryWithName.html#uri", + "href": "reference/config/functionality/dependencies/gitRepositoryWithName.html#uri", + "title": "Git Repository With Name", + "section": "uri", + "text": "uri\nType: String\nThe URI of the Git repository.\nExample:\nuri: \"git+https://github.com/openpipelines-bio/openpipeline.git\"" + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepositoryWithName.html", + "href": "reference/config/functionality/dependencies/githubRepositoryWithName.html", + "title": "Github Repository With Name", + "section": "", + "text": "A GitHub repository where remote dependency components can be found.\nExamples:" + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepositoryWithName.html#name", + "href": "reference/config/functionality/dependencies/githubRepositoryWithName.html#name", + "title": "Github Repository With Name", + "section": "name", + "text": "name\nType: String\nThe identifier used to refer to this repository from dependencies." + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepositoryWithName.html#path", + "href": "reference/config/functionality/dependencies/githubRepositoryWithName.html#path", + "title": "Github Repository With Name", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components." + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepositoryWithName.html#repo", + "href": "reference/config/functionality/dependencies/githubRepositoryWithName.html#repo", + "title": "Github Repository With Name", + "section": "repo", + "text": "repo\nType: String\nThe name of the GitHub repository.\nExample:\nrepo: viash-io/viash" + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepositoryWithName.html#tag", + "href": "reference/config/functionality/dependencies/githubRepositoryWithName.html#tag", + "title": "Github Repository With Name", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash." + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepositoryWithName.html#type", + "href": "reference/config/functionality/dependencies/githubRepositoryWithName.html#type", + "title": "Github Repository With Name", + "section": "type", + "text": "type\nType: String\nDefines the repository as a GitHub repository." + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html", + "href": "reference/config/functionality/dependencies/viashhubRepository.html", + "title": "Viashhub Repository", + "section": "", + "text": "A Viash-Hub repository where remote dependency components can be found.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html#path", + "href": "reference/config/functionality/dependencies/viashhubRepository.html#path", + "title": "Viashhub Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html#repo", + "href": "reference/config/functionality/dependencies/viashhubRepository.html#repo", + "title": "Viashhub Repository", + "section": "repo", + "text": "repo\nType: String\nThe name of the Viash-Hub repository.\nExample:\nrepo: openpipelines-bio/openpipeline", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html#tag", + "href": "reference/config/functionality/dependencies/viashhubRepository.html#tag", + "title": "Viashhub Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html#type", + "href": "reference/config/functionality/dependencies/viashhubRepository.html#type", + "title": "Viashhub Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Viash-Hub repository.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/arguments/index.html", + "href": "reference/config/functionality/arguments/index.html", + "title": "Argument", + "section": "", + "text": "For each argument, a type and a name must be specified. Depending on the type of argument, different properties can be set. See these reference pages per type for more information:\n\nstring\nfile\ninteger\ndouble\nboolean\nboolean_true\nboolean_false\n\nExample:\narguments:\n - name: --foo\n type: file\n alternatives: [-f]\n description: Description of foo\n default: \"/foo/bar\"\n must_exist: true\n direction: output\n required: false\n multiple: true\n multiple_sep: \",\"\n - name: --bar\n type: string", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html", + "href": "reference/config/functionality/arguments/boolean.html", + "title": "Boolean", + "section": "", + "text": "A boolean type argument has two possible values: true or false.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#alternatives", + "href": "reference/config/functionality/arguments/boolean.html#alternatives", + "title": "Boolean", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#default", + "href": "reference/config/functionality/arguments/boolean.html#default", + "title": "Boolean", + "section": "default", + "text": "default\nType: Boolean / List of Boolean\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_boolean\n type: boolean\n default: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#description", + "href": "reference/config/functionality/arguments/boolean.html#description", + "title": "Boolean", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#example", + "href": "reference/config/functionality/arguments/boolean.html#example", + "title": "Boolean", + "section": "example", + "text": "example\nType: Boolean / List of Boolean\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_boolean\n type: boolean\n example: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#info", + "href": "reference/config/functionality/arguments/boolean.html#info", + "title": "Boolean", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#multiple", + "href": "reference/config/functionality/arguments/boolean.html#multiple", + "title": "Boolean", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_boolean\n type: boolean\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_boolean=true:true:false", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#multiple_sep", + "href": "reference/config/functionality/arguments/boolean.html#multiple_sep", + "title": "Boolean", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: :\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_boolean\n type: boolean\n multiple: true\n multiple_sep: \",\"\nHere’s an example of how to use this:\nmy_component --my_boolean=true,true,false", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#name", + "href": "reference/config/functionality/arguments/boolean.html#name", + "title": "Boolean", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --trim, -t or trim. The number of dashes determines how values can be passed:\n\n--trim is a long option, which can be passed with executable_name --trim\n-t is a short option, which can be passed with executable_name -t\ntrim is an argument, which can be passed with executable_name trim", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#required", + "href": "reference/config/functionality/arguments/boolean.html#required", + "title": "Boolean", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_boolean\n type: boolean\n required: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean.html#type", + "href": "reference/config/functionality/arguments/boolean.html#type", + "title": "Boolean", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html", + "href": "reference/config/functionality/arguments/string.html", + "title": "String", + "section": "", + "text": "A string type argument has a value made up of an ordered sequences of characters, like “Hello” or “I’m a string”.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#alternatives", + "href": "reference/config/functionality/arguments/string.html#alternatives", + "title": "String", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#choices", + "href": "reference/config/functionality/arguments/string.html#choices", + "title": "String", + "section": "choices", + "text": "choices\nType: List of String\nDefault: Empty\nLimit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.\nExample:\n- name: --language\n type: string\n choices: [\"python\", \"r\", \"javascript\"]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#default", + "href": "reference/config/functionality/arguments/string.html#default", + "title": "String", + "section": "default", + "text": "default\nType: String / List of String\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_string\n type: string\n default: \"The answer is 42\"", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#description", + "href": "reference/config/functionality/arguments/string.html#description", + "title": "String", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#example", + "href": "reference/config/functionality/arguments/string.html#example", + "title": "String", + "section": "example", + "text": "example\nType: String / List of String\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_string\n type: string\n example: \"Hello World\"", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#info", + "href": "reference/config/functionality/arguments/string.html#info", + "title": "String", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#multiple", + "href": "reference/config/functionality/arguments/string.html#multiple", + "title": "String", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_string\n type: string\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_string=Marc:Susan:Paul", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#multiple_sep", + "href": "reference/config/functionality/arguments/string.html#multiple_sep", + "title": "String", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: :\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_string\n type: string\n multiple: true\n multiple_sep: \",\"\nHere’s an example of how to use this:\nmy_component --my_string=Marc,Susan,Paul", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#name", + "href": "reference/config/functionality/arguments/string.html#name", + "title": "String", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#required", + "href": "reference/config/functionality/arguments/string.html#required", + "title": "String", + "section": "required", + "text": "required\nType: Boolean\nDefault: Empty\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_string\n type: string\n required: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/string.html#type", + "href": "reference/config/functionality/arguments/string.html#type", + "title": "String", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_true.html", + "href": "reference/config/functionality/arguments/boolean_true.html", + "title": "Boolean True", + "section": "", + "text": "An argument of the boolean_true type acts like a boolean flag with a default value of false. When called as an argument it sets the boolean to true.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_true.html#alternatives", + "href": "reference/config/functionality/arguments/boolean_true.html#alternatives", + "title": "Boolean True", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_true.html#description", + "href": "reference/config/functionality/arguments/boolean_true.html#description", + "title": "Boolean True", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_true.html#info", + "href": "reference/config/functionality/arguments/boolean_true.html#info", + "title": "Boolean True", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_true.html#name", + "href": "reference/config/functionality/arguments/boolean_true.html#name", + "title": "Boolean True", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --silent, -s or silent. The number of dashes determines how values can be passed:\n\n--silent is a long option, which can be passed with executable_name --silent\n-s is a short option, which can be passed with executable_name -s\nsilent is an argument, which can be passed with executable_name silent", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_true.html#type", + "href": "reference/config/functionality/arguments/boolean_true.html#type", + "title": "Boolean True", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_false.html", + "href": "reference/config/functionality/arguments/boolean_false.html", + "title": "Boolean False", + "section": "", + "text": "An argument of the boolean_false type acts like an inverted boolean flag with a default value of true. When called as an argument it sets the boolean to false.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_false.html#alternatives", + "href": "reference/config/functionality/arguments/boolean_false.html#alternatives", + "title": "Boolean False", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_false.html#description", + "href": "reference/config/functionality/arguments/boolean_false.html#description", + "title": "Boolean False", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_false.html#info", + "href": "reference/config/functionality/arguments/boolean_false.html#info", + "title": "Boolean False", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_false.html#name", + "href": "reference/config/functionality/arguments/boolean_false.html#name", + "title": "Boolean False", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --no-log, -n or no-log. The number of dashes determines how values can be passed:\n\n--no-log is a long option, which can be passed with executable_name --no-log\n-n is a short option, which can be passed with executable_name -n\nno-log is an argument, which can be passed with executable_name no-log", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/functionality/arguments/boolean_false.html#type", + "href": "reference/config/functionality/arguments/boolean_false.html#type", + "title": "Boolean False", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/functionality/argumentGroup.html", + "href": "reference/config/functionality/argumentGroup.html", + "title": "Argument Group", + "section": "", + "text": "A grouping of the arguments, used to display the help message.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument Group" + ] + }, + { + "objectID": "reference/config/functionality/argumentGroup.html#arguments", + "href": "reference/config/functionality/argumentGroup.html#arguments", + "title": "Argument Group", + "section": "arguments", + "text": "arguments\nType: List of Argument\nList of arguments.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument Group" + ] + }, + { + "objectID": "reference/config/functionality/argumentGroup.html#description", + "href": "reference/config/functionality/argumentGroup.html#description", + "title": "Argument Group", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nDescription of foo`, a description of the argument group. Multiline descriptions are supported.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument Group" + ] + }, + { + "objectID": "reference/config/functionality/argumentGroup.html#name", + "href": "reference/config/functionality/argumentGroup.html#name", + "title": "Argument Group", + "section": "name", + "text": "name\nType: String\nThe name of the argument group.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument Group" + ] + }, + { + "objectID": "reference/config/info.html", + "href": "reference/config/info.html", + "title": "Info", + "section": "", + "text": "Meta information fields filled in by Viash during build.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/info.html#config", + "href": "reference/config/info.html#config", + "title": "Info", + "section": "config", + "text": "config\nType: String\nPath to the config used during build.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/info.html#executable", + "href": "reference/config/info.html#executable", + "title": "Info", + "section": "executable", + "text": "executable\nType: String\nDefault: Empty\nOutput folder with main executable path.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/info.html#git_commit", + "href": "reference/config/info.html#git_commit", + "title": "Info", + "section": "git_commit", + "text": "git_commit\nType: String\nDefault: Empty\nGit commit hash.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/info.html#git_remote", + "href": "reference/config/info.html#git_remote", + "title": "Info", + "section": "git_remote", + "text": "git_remote\nType: String\nDefault: Empty\nGit remote name.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/info.html#git_tag", + "href": "reference/config/info.html#git_tag", + "title": "Info", + "section": "git_tag", + "text": "git_tag\nType: String\nDefault: Empty\nGit tag.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/info.html#output", + "href": "reference/config/info.html#output", + "title": "Info", + "section": "output", + "text": "output\nType: String\nDefault: Empty\nFolder path to the build artifacts.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/info.html#platform", + "href": "reference/config/info.html#platform", + "title": "Info", + "section": "platform", + "text": "platform\nType: String\nDefault: Empty\nThe platform id used during build.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/info.html#viash_version", + "href": "reference/config/info.html#viash_version", + "title": "Info", + "section": "viash_version", + "text": "viash_version\nType: String\nDefault: Empty\nThe Viash version that was used to build the component.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/index.html", + "href": "reference/config/platforms/nextflow/index.html", + "title": "Nextflow Platform", + "section": "", + "text": "Platform for generating Nextflow VDSL3 modules.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/index.html#auto", + "href": "reference/config/platforms/nextflow/index.html#auto", + "title": "Nextflow Platform", + "section": "auto", + "text": "auto\nType: NextflowAuto\nDefault: simplifyInput: true simplifyOutput: false transcript: false publish: false\nAutomated processing flags which can be toggled on or off:\n\n\n\n\n\n\n\n\nFlag\nDescription\nDefault\n\n\n\n\nsimplifyInput\nIf true, an input tuple only containing only a single File (e.g. [\"foo\", file(\"in.h5ad\")]) is automatically transformed to a map (i.e. [\"foo\", [ input: file(\"in.h5ad\") ] ]).\ntrue\n\n\nsimplifyOutput\nIf true, an output tuple containing a map with a File (e.g. [\"foo\", [ output: file(\"out.h5ad\") ] ]) is automatically transformed to a map (i.e. [\"foo\", file(\"out.h5ad\")]).\nfalse\n\n\ntranscript\nIf true, the module’s transcripts from work/ are automatically published to params.transcriptDir. If not defined, params.publishDir + \"/_transcripts\" will be used. Will throw an error if neither are defined.\nfalse\n\n\npublish\nIf true, the module’s outputs are automatically published to params.publishDir. If equal to \"state\", also a .state.yaml file will be published in the publish dir. Will throw an error if params.publishDir is not defined.\nfalse\n\n\n\nExample:\nauto:\n publish: true", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/index.html#config", + "href": "reference/config/platforms/nextflow/index.html#config", + "title": "Nextflow Platform", + "section": "config", + "text": "config\nType: NextflowConfig\nDefault: A series of default labels to specify memory and cpu constraints\nAllows tweaking how the Nextflow Config file is generated.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/index.html#container", + "href": "reference/config/platforms/nextflow/index.html#container", + "title": "Nextflow Platform", + "section": "container", + "text": "container\nType: String\nDefault: docker\nSpecifies the Docker platform id to be used to run Nextflow.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/index.html#debug", + "href": "reference/config/platforms/nextflow/index.html#debug", + "title": "Nextflow Platform", + "section": "debug", + "text": "debug\nType: Boolean\nDefault: False\nWhether or not to print debug messages.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/index.html#directives", + "href": "reference/config/platforms/nextflow/index.html#directives", + "title": "Nextflow Platform", + "section": "directives", + "text": "directives\nType: NextflowDirectives\nDefault: Empty\nDirectives are optional settings that affect the execution of the process. These mostly match up with the Nextflow counterparts.\nExample:\ndirectives:\n container: rocker/r-ver:4.1\n label: highcpu\n cpus: 4\n memory: 16 GB", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/index.html#id", + "href": "reference/config/platforms/nextflow/index.html#id", + "title": "Nextflow Platform", + "section": "id", + "text": "id\nType: String\nDefault: nextflow\nEvery platform can be given a specific id that can later be referred to explicitly when running or building the Viash component.\nExample:\nid: foo", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/index.html#type", + "href": "reference/config/platforms/nextflow/index.html#type", + "title": "Nextflow Platform", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the platform.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/config.html", + "href": "reference/config/platforms/nextflow/config.html", + "title": "Nextflow Config", + "section": "", + "text": "Allows tweaking how the Nextflow Config file is generated.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Config" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/config.html#labels", + "href": "reference/config/platforms/nextflow/config.html#labels", + "title": "Nextflow Config", + "section": "labels", + "text": "labels\nType: Map of String to String\nDefault: A series of default labels to specify memory and cpu constraints\nA series of default labels to specify memory and cpu constraints.\nThe default memory labels are defined as “mem1gb”, “mem2gb”, “mem4gb”, … upto “mem512tb” and follows powers of 2. The default cpu labels are defined as “cpu1”, “cpu2”, “cpu5”, “cpu10”, … upto “cpu1000” and follows a semi logarithmic scale (1, 2, 5 per decade).\nConceptually it is possible for a Viash Config to overwrite the full labels parameter, however likely it is more efficient to add additional labels in the Viash Project with a config mod.\nExamples:\nReplace the default labels with a different set of labels\nlabels:\n lowmem: \"memory = 4.GB\"\n lowcpu: \"cpus = 4\"\n midmem: \"memory = 25.GB\"\n midcpu: \"cpus = 10\"\n highmem: \"memory = 50.GB\"\n highcpu: \"cpus = 20\"\n vhighmem: \"memory = 100.GB\"\n vhighcpu: \"cpus = 40\"\nAdd ‘lowmem’ and ‘lowcpu’ to the default labels by using a config mod\n-c '.platforms[.type == \"nextflow\"].config.labels.lowmem := \"memory = 4.GB\";.platforms[.type == \"nextflow\"].config.labels.lowcpu := \"cpus = 4\"'\nAdd ‘lowmem’ and ‘lowcpu’ to the default labels by using the Viash Project file\nconfig_mods: |\n .platforms[.type == \"nextflow\"].config.labels.lowmem := \"memory = 4.GB\"\n .platforms[.type == \"nextflow\"].config.labels.lowcpu := \"cpus = 4\"\n\nReplace the default labels with a different set of labels by using the Viash Project file\nconfig_mods: |\n .platforms[.type == \"nextflow\"].config.labels := { lowmem: \"memory = 4.GB\", lowcpu: \"cpus = 4\", midmem: \"memory = 25.GB\", midcpu: \"cpus = 10\", highmem: \"memory = 50.GB\", highcpu: \"cpus = 20\", vhighmem: \"memory = 100.GB\", vhighcpu: \"cpus = 40\" }", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Config" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/config.html#script", + "href": "reference/config/platforms/nextflow/config.html#script", + "title": "Nextflow Config", + "section": "script", + "text": "script\nType: String / List of String\nDefault: Empty\nIncludes a single string or list of strings into the nextflow.config file. This can be used to add custom profiles or include an additional config file.\nExamples:\nscript:\n - |\n profiles {\n ...\n }\nscript: includeConfig(\"config.config\")", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Config" + ] + }, + { + "objectID": "reference/config/platforms/native/index.html", + "href": "reference/config/platforms/native/index.html", + "title": "Native Platform", + "section": "", + "text": "Running a Viash component on a native platform means that the script will be executed in your current environment. Any dependencies are assumed to have been installed by the user, so the native platform is meant for developers (who know what they’re doing) or for simple bash scripts (which have no extra dependencies).\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Native Platform" + ] + }, + { + "objectID": "reference/config/platforms/native/index.html#id", + "href": "reference/config/platforms/native/index.html#id", + "title": "Native Platform", + "section": "id", + "text": "id\nType: String\nDefault: native\nAs with all platforms, you can give a platform a different name. By specifying id: foo, you can target this platform (only) by specifying -p foo in any of the Viash commands.\nExample:\nid: foo", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Native Platform" + ] + }, + { + "objectID": "reference/config/platforms/native/index.html#type", + "href": "reference/config/platforms/native/index.html#type", + "title": "Native Platform", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the platform.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Native Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/index.html", + "href": "reference/config/platforms/docker/setup/index.html", + "title": "Requirements", + "section": "", + "text": "Requirements for installing the following types of packages:\n\napt\napk\nDocker setup instructions\nJavaScript\nPython\nR\nRuby\nyum", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/javascriptRequirements.html", + "href": "reference/config/platforms/docker/setup/javascriptRequirements.html", + "title": "JavaScript Requirements", + "section": "", + "text": "Specify which JavaScript packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/javascriptRequirements.html#git", + "href": "reference/config/platforms/docker/setup/javascriptRequirements.html#git", + "title": "JavaScript Requirements", + "section": "git", + "text": "git\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Git URI.\nExample:\ngit: [ https://some.git.repository/org/repo ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/javascriptRequirements.html#github", + "href": "reference/config/platforms/docker/setup/javascriptRequirements.html#github", + "title": "JavaScript Requirements", + "section": "github", + "text": "github\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitHub.\nExample:\ngithub: [ owner/repository ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/javascriptRequirements.html#npm", + "href": "reference/config/platforms/docker/setup/javascriptRequirements.html#npm", + "title": "JavaScript Requirements", + "section": "npm", + "text": "npm\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from npm.\nExample:\nnpm: [ packagename ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/javascriptRequirements.html#packages", + "href": "reference/config/platforms/docker/setup/javascriptRequirements.html#packages", + "title": "JavaScript Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from npm.\nExample:\npackages: [ packagename ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/javascriptRequirements.html#type", + "href": "reference/config/platforms/docker/setup/javascriptRequirements.html#type", + "title": "JavaScript Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/javascriptRequirements.html#url", + "href": "reference/config/platforms/docker/setup/javascriptRequirements.html#url", + "title": "JavaScript Requirements", + "section": "url", + "text": "url\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a generic URI.\nExample:\nurl: [ https://github.com/org/repo/archive/HEAD.zip ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/aptRequirements.html", + "href": "reference/config/platforms/docker/setup/aptRequirements.html", + "title": "Apt Requirements", + "section": "", + "text": "Specify which apt packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Apt Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/aptRequirements.html#interactive", + "href": "reference/config/platforms/docker/setup/aptRequirements.html#interactive", + "title": "Apt Requirements", + "section": "interactive", + "text": "interactive\nType: Boolean\nDefault: False\nIf false, the Debian frontend is set to non-interactive (recommended). Default: false.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Apt Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/aptRequirements.html#packages", + "href": "reference/config/platforms/docker/setup/aptRequirements.html#packages", + "title": "Apt Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install.\nExample:\npackages: [ sl ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Apt Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/aptRequirements.html#type", + "href": "reference/config/platforms/docker/setup/aptRequirements.html#type", + "title": "Apt Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Apt Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/apkRequirements.html", + "href": "reference/config/platforms/docker/setup/apkRequirements.html", + "title": "Apk Requirements", + "section": "", + "text": "Specify which apk packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Apk Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/apkRequirements.html#packages", + "href": "reference/config/platforms/docker/setup/apkRequirements.html#packages", + "title": "Apk Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install.\nExample:\npackages: [ sl ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Apk Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/apkRequirements.html#type", + "href": "reference/config/platforms/docker/setup/apkRequirements.html#type", + "title": "Apk Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Apk Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/dockerRequirements.html", + "href": "reference/config/platforms/docker/setup/dockerRequirements.html", + "title": "Docker Requirements", + "section": "", + "text": "Specify which Docker commands should be run during setup.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/dockerRequirements.html#add", + "href": "reference/config/platforms/docker/setup/dockerRequirements.html#add", + "title": "Docker Requirements", + "section": "add", + "text": "add\nType: String / List of String\nDefault: Empty\nSpecifies which ADD entries to add to the Dockerfile while building it.\nExample:\nadd: [ \"http://foo/bar .\" ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/dockerRequirements.html#build_args", + "href": "reference/config/platforms/docker/setup/dockerRequirements.html#build_args", + "title": "Docker Requirements", + "section": "build_args", + "text": "build_args\nType: String / List of String\nDefault: Empty\nSpecifies which ARG entries to add to the Dockerfile while building it.\nExample:\nbuild_args: [ \"R_VERSION=4.2\" ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/dockerRequirements.html#copy", + "href": "reference/config/platforms/docker/setup/dockerRequirements.html#copy", + "title": "Docker Requirements", + "section": "copy", + "text": "copy\nType: String / List of String\nDefault: Empty\nSpecifies which COPY entries to add to the Dockerfile while building it.\nExample:\ncopy: [ \"resource.txt /path/to/resource.txt\" ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/dockerRequirements.html#env", + "href": "reference/config/platforms/docker/setup/dockerRequirements.html#env", + "title": "Docker Requirements", + "section": "env", + "text": "env\nType: String / List of String\nDefault: Empty\nSpecifies which ENV entries to add to the Dockerfile while building it. Unlike ARG, ENV entries are also accessible from inside the container.\nExample:\nenv: [ \"R_VERSION=4.2\" ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/dockerRequirements.html#label", + "href": "reference/config/platforms/docker/setup/dockerRequirements.html#label", + "title": "Docker Requirements", + "section": "label", + "text": "label\nType: String / List of String\nDefault: Empty\nSpecifies which LABEL entries to add to the Dockerfile while building it.\nExample:\nlabel: [ component=\"foo\" ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/dockerRequirements.html#run", + "href": "reference/config/platforms/docker/setup/dockerRequirements.html#run", + "title": "Docker Requirements", + "section": "run", + "text": "run\nType: String / List of String\nDefault: Empty\nSpecifies which RUN entries to add to the Dockerfile while building it.\nExample:\nrun: |\n echo 'Run a custom command'\n echo 'Foo' > /path/to/file.txt", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/dockerRequirements.html#type", + "href": "reference/config/platforms/docker/setup/dockerRequirements.html#type", + "title": "Docker Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/nextflow_vdsl3/run_module.html", + "href": "reference/nextflow_vdsl3/run_module.html", + "title": "Run a VDSL3 module", + "section": "", + "text": "Unlike typical Nextflow modules, VDSL3 modules can actually be used as a standalone pipeline.\nTo run a VDSL3 module as a standalone pipeline, you need to specify the input parameters and a --publish_dir parameter, as Nextflow will automatically choose the parameter names of the output files.", + "crumbs": [ + "Reference", + "Nextflow VDSL3", + "Run a VDSL3 module" + ] + }, + { + "objectID": "reference/nextflow_vdsl3/run_module.html#viewing-the-help-message", + "href": "reference/nextflow_vdsl3/run_module.html#viewing-the-help-message", + "title": "Run a VDSL3 module", + "section": "Viewing the help message", + "text": "Viewing the help message\nMore information regarding a modules arguments can be shown by passing the --help parameter.\nExample:\nnextflow run target/nextflow/mycomponent/main.nf --help", + "crumbs": [ + "Reference", + "Nextflow VDSL3", + "Run a VDSL3 module" + ] + }, + { + "objectID": "reference/nextflow_vdsl3/run_module.html#running-a-module-as-a-standalone-pipeline", + "href": "reference/nextflow_vdsl3/run_module.html#running-a-module-as-a-standalone-pipeline", + "title": "Run a VDSL3 module", + "section": "Running a module as a standalone pipeline", + "text": "Running a module as a standalone pipeline\nYou can run the executable by providing a value for each of the required arguments and --publish_dir (where output files are published).\nExample:\nnextflow run target/nextflow/mycomponent/main.nf \\\n --input config.vsh.yaml \\\n --publish_dir output/", + "crumbs": [ + "Reference", + "Nextflow VDSL3", + "Run a VDSL3 module" + ] + }, + { + "objectID": "reference/nextflow_vdsl3/run_module.html#passing-a-parameter-list", + "href": "reference/nextflow_vdsl3/run_module.html#passing-a-parameter-list", + "title": "Run a VDSL3 module", + "section": "Passing a parameter list", + "text": "Passing a parameter list\nEvery VDSL3 can accept a list of parameters to populate a Nextflow channel with. Assuming we want to process a set of input files in parallel, we can create a yaml file params.yaml containing the following information.\nparam_list:\n - id: sample1\n input: data/sample1.txt\n - id: sample2\n input: data/sample2.txt\n - id: sample3\n input: data/sample3.txt\n - id: sample4\n input: data/sample4.txt\narg1: 10\narg2: 5\nYou can run the pipeline on the list of parameters using the -params-file parameter.\nnextflow run target/main.nf -params-file params.yaml --publish_dir output2\n\n\n\n\n\n\nTip\n\n\n\nYou can also pass a YAML, CSV or JSON file to the param_list parameter.", + "crumbs": [ + "Reference", + "Nextflow VDSL3", + "Run a VDSL3 module" + ] + }, + { + "objectID": "reference/viash_code_block/index.html", + "href": "reference/viash_code_block/index.html", + "title": "Viash Code Block", + "section": "", + "text": "Example:\nWhen running a Viash component with viash run, Viash will wrap your script into a Bash executable. In doing so, it strips away the “Viash placeholder” code block and replaces it by a bit of code to your script for reading any parameter values at runtime.", + "crumbs": [ + "Reference", + "Viash Code Block" + ] + }, + { + "objectID": "reference/viash_code_block/index.html#recognizing-the-viash-placeholder-code-block", + "href": "reference/viash_code_block/index.html#recognizing-the-viash-placeholder-code-block", + "title": "Viash Code Block", + "section": "Recognizing the Viash placeholder code block", + "text": "Recognizing the Viash placeholder code block\n\nBashC#JavaScriptPythonRScala\n\n\n#!/bin/bash\n\n## VIASH START\npar_input=path/to/file.txt\npar_output=output.txt\n## VIASH END\n\n# copy file\necho \"Copying '$par_input' to '$par_output'.\"\ncp -r \"$par_input\" \"$par_output\"\n\n\nusing System.IO;\n\n// VIASH START\nvar par = new {\n input = \"path/to/file.txt\",\n output = \"output.txt\"\n};\n// VIASH END\n\n// copy file\nConsole.WriteLine($\"Copying '{par.input}' to '{par.output}'.\");\nFile.Copy(par.input, par.output, true);\n\n\nconst fs = require('fs');\n\n// VIASH START\nlet par = {\n 'input': 'path/to/file.txt',\n 'output': 'output.txt'\n};\n// VIASH END\n\n// copy file\nconsole.log(`Copying '${par['input']}' to '${par['output']}'`)\nfs.copyFile(par['input'], par['output'], (err) => {\n if (err) throw err;\n});\n\n\nimport shutil\n\n## VIASH START\npar = {\n 'input': 'file.txt',\n 'output': 'output.txt'\n}\n## VIASH END\n\n# copy file\nprint(f\"Copying '{par['input']}' to '{par['output']}'.\")\nshutil.copyfile(par['input'], par['output'])\n\n\n## VIASH START\npar <- list(\n \"input\" = 'file.txt',\n \"output\" = 'output.txt'\n)\n## VIASH END\n\n# copy file\ncat(\"Copying '\", par$input, \"' to '\", par$output, \"'.\\n\", sep = \"\")\nfile.copy(par$input, par$output)\n\n\nimport java.nio.file.StandardCopyOption.REPLACE_EXISTING\nimport java.nio.file.Files\nimport java.nio.file.Paths\n\n// VIASH START\ncase class ViashPar(input: String, output: String)\nval par = ViashPar(\n \"path/to/file.txt\",\n \"output.txt\"\n)\n// VIASH END\n\n// copy file\nprintln(s\"Copying '${par.input}' to '${par.output}'.\")\nval fileIn = Paths.get(par.input)\nval fileOut = Paths.get(par.output)\nFiles.copy(fileIn, fileOut, REPLACE_EXISTING)\n\n\n\nA “Viash placeholder” code block is the section between the VIASH START and VIASH END comments.", + "crumbs": [ + "Reference", + "Viash Code Block" + ] + }, + { + "objectID": "reference/viash_code_block/index.html#what-happens-at-runtime", + "href": "reference/viash_code_block/index.html#what-happens-at-runtime", + "title": "Viash Code Block", + "section": "What happens at runtime", + "text": "What happens at runtime\nBy passing arguments to the component, Viash will add your parameter values to your script by replacing the Viash placeholder code block. If no such code block exists yet, the parameters are inserted at the top of the file.\nThe resulting code block will contain two maps (or dictionaries): par and meta. The par map contains the parameter values specified by the user, and meta contains additional information on the current runtime environment. Note that for Bash scripts, the par and meta maps are flattened into separate environment variables.", + "crumbs": [ + "Reference", + "Viash Code Block" + ] + }, + { + "objectID": "reference/viash_code_block/index.html#previewing-the-par-and-meta-objects", + "href": "reference/viash_code_block/index.html#previewing-the-par-and-meta-objects", + "title": "Viash Code Block", + "section": "Previewing the par and meta objects", + "text": "Previewing the par and meta objects\nTo get insight into how par and meta are defined, you can run viash config inject to replace the current parameter placeholder with an auto-generated parameter placeholder.\n\n\n\n\n\n\nWarning\n\n\n\nThis will change the contents of your script!\n\n\n\nBashC#JavaScriptPythonRScala\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\n\n\nThe updated script.sh now contains the following code:\n#!/bin/bash\n\n## VIASH START\n# The following code has been auto-generated by Viash.\npar_input='file.txt'\npar_output='output.txt'\nmeta_name='example_bash'\nmeta_functionality_name='example_bash'\nmeta_resources_dir='/tmp/viash_inject_example_bash2630269524526700811'\nmeta_executable='/tmp/viash_inject_example_bash2630269524526700811/example_bash'\nmeta_config='/tmp/viash_inject_example_bash2630269524526700811/.config.vsh.yaml'\nmeta_temp_dir='/tmp'\nmeta_cpus='123'\nmeta_memory_b='123'\nmeta_memory_kb='123'\nmeta_memory_mb='123'\nmeta_memory_gb='123'\nmeta_memory_tb='123'\nmeta_memory_pb='123'\n\n## VIASH END\n\n# copy file\necho \"Copying '$par_input' to '$par_output'.\"\ncp -r \"$par_input\" \"$par_output\"\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\n\n\nThe updated script.csx now contains the following code:\nusing System.IO;\n\n// VIASH START\n// The following code has been auto-generated by Viash.\nvar par = new {\n input = @\"file.txt\",\n output = @\"output.txt\"\n};\nvar meta = new {\n name = @\"example_csharp\",\n functionality_name = @\"example_csharp\",\n resources_dir = @\"/tmp/viash_inject_example_csharp16671861002550552554\",\n executable = @\"/tmp/viash_inject_example_csharp16671861002550552554/example_csharp\",\n config = @\"/tmp/viash_inject_example_csharp16671861002550552554/.config.vsh.yaml\",\n temp_dir = @\"/tmp\",\n cpus = Convert.ToInt32(@\"123\"),\n memory_b = Convert.ToInt64(@\"123\"),\n memory_kb = Convert.ToInt64(@\"123\"),\n memory_mb = Convert.ToInt64(@\"123\"),\n memory_gb = Convert.ToInt64(@\"123\"),\n memory_tb = Convert.ToInt64(@\"123\"),\n memory_pb = Convert.ToInt64(@\"123\")\n};\nvar dep = new {\n \n};\n\n// VIASH END\n\n// copy file\nConsole.WriteLine($\"Copying '{par.input}' to '{par.output}'.\");\nFile.Copy(par.input, par.output, true);\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\n\n\nThe updated script.js now contains the following code:\nconst fs = require('fs');\n\n// VIASH START\n// The following code has been auto-generated by Viash.\nlet par = {\n 'input': String.raw`file.txt`,\n 'output': String.raw`output.txt`\n};\nlet meta = {\n 'name': String.raw`example_js`,\n 'functionality_name': String.raw`example_js`,\n 'resources_dir': String.raw`/tmp/viash_inject_example_js7178219499071681491`,\n 'executable': String.raw`/tmp/viash_inject_example_js7178219499071681491/example_js`,\n 'config': String.raw`/tmp/viash_inject_example_js7178219499071681491/.config.vsh.yaml`,\n 'temp_dir': String.raw`/tmp`,\n 'cpus': parseInt(String.raw`123`),\n 'memory_b': parseInt(String.raw`123`),\n 'memory_kb': parseInt(String.raw`123`),\n 'memory_mb': parseInt(String.raw`123`),\n 'memory_gb': parseInt(String.raw`123`),\n 'memory_tb': parseInt(String.raw`123`),\n 'memory_pb': parseInt(String.raw`123`)\n};\nlet dep = {\n \n};\n\n// VIASH END\n\n// copy file\nconsole.log(`Copying '${par['input']}' to '${par['output']}'`)\nfs.copyFile(par['input'], par['output'], (err) => {\n if (err) throw err;\n});\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\n\n\nThe updated script.py now contains the following code:\nimport shutil\n\n## VIASH START\n# The following code has been auto-generated by Viash.\npar = {\n 'input': r'file.txt',\n 'output': r'output.txt'\n}\nmeta = {\n 'name': r'example_python',\n 'functionality_name': r'example_python',\n 'resources_dir': r'/tmp/viash_inject_example_python9842362190271714649',\n 'executable': r'/tmp/viash_inject_example_python9842362190271714649/example_python',\n 'config': r'/tmp/viash_inject_example_python9842362190271714649/.config.vsh.yaml',\n 'temp_dir': r'/tmp',\n 'cpus': int(r'123'),\n 'memory_b': int(r'123'),\n 'memory_kb': int(r'123'),\n 'memory_mb': int(r'123'),\n 'memory_gb': int(r'123'),\n 'memory_tb': int(r'123'),\n 'memory_pb': int(r'123')\n}\ndep = {\n \n}\n\n## VIASH END\n\n# copy file\nprint(f\"Copying '{par['input']}' to '{par['output']}'.\")\nshutil.copyfile(par['input'], par['output'])\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\n\n\nThe updated script.R now contains the following code:\n## VIASH START\n# The following code has been auto-generated by Viash.\n# treat warnings as errors\n.viash_orig_warn <- options(warn = 2)\n\npar <- list(\n \"input\" = 'file.txt',\n \"output\" = 'output.txt'\n)\nmeta <- list(\n \"name\" = 'example_r',\n \"functionality_name\" = 'example_r',\n \"resources_dir\" = '/tmp/viash_inject_example_r13007686674904618048',\n \"executable\" = '/tmp/viash_inject_example_r13007686674904618048/example_r',\n \"config\" = '/tmp/viash_inject_example_r13007686674904618048/.config.vsh.yaml',\n \"temp_dir\" = '/tmp',\n \"cpus\" = as.integer('123'),\n \"memory_b\" = bit64::as.integer64('123'),\n \"memory_kb\" = bit64::as.integer64('123'),\n \"memory_mb\" = bit64::as.integer64('123'),\n \"memory_gb\" = bit64::as.integer64('123'),\n \"memory_tb\" = bit64::as.integer64('123'),\n \"memory_pb\" = bit64::as.integer64('123')\n)\ndep <- list(\n \n)\n\n\n# restore original warn setting\noptions(.viash_orig_warn)\nrm(.viash_orig_warn)\n\n## VIASH END\n\n# copy file\ncat(\"Copying '\", par$input, \"' to '\", par$output, \"'.\\n\", sep = \"\")\nfile.copy(par$input, par$output)\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nWarning: DockerPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NativePlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: NextflowPlatform is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: Functionality is deprecated: Functionality level is deprecated, all functionality fields are now located on the top level of the config file. Deprecated since 0.9.0, planned removal 0.10.0.\nWarning: ..platforms is deprecated: Use 'engines' and 'runners' instead. Deprecated since 0.9.0, planned removal 0.10.0.\n\n\nThe updated script.scala now contains the following code:\nimport java.nio.file.StandardCopyOption.REPLACE_EXISTING\nimport java.nio.file.Files\nimport java.nio.file.Paths\n\n// VIASH START\n// The following code has been auto-generated by Viash.\ncase class ViashPar(\n input: Option[String],\n output: Option[String]\n)\nval par = ViashPar(\n Some(\"\"\"file.txt\"\"\"),\n Some(\"\"\"output.txt\"\"\")\n)\ncase class ViashMeta(\n name: Option[String],\n functionality_name: Option[String],\n resources_dir: Option[String],\n executable: Option[String],\n config: Option[String],\n temp_dir: Option[String],\n cpus: Option[Int],\n memory_b: Option[Long],\n memory_kb: Option[Long],\n memory_mb: Option[Long],\n memory_gb: Option[Long],\n memory_tb: Option[Long],\n memory_pb: Option[Long]\n)\nval meta = ViashMeta(\n Some(\"\"\"example_scala\"\"\"),\n Some(\"\"\"example_scala\"\"\"),\n Some(\"\"\"/tmp/viash_inject_example_scala5030083911834201836\"\"\"),\n Some(\"\"\"/tmp/viash_inject_example_scala5030083911834201836/example_scala\"\"\"),\n Some(\"\"\"/tmp/viash_inject_example_scala5030083911834201836/.config.vsh.yaml\"\"\"),\n Some(\"\"\"/tmp\"\"\"),\n Some(\"\"\"123\"\"\".toInt),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong)\n)\ncase class ViashDep(\n \n)\nval dep = ViashDep(\n \n)\n\n// VIASH END\n\n// copy file\nprintln(s\"Copying '${par.input}' to '${par.output}'.\")\nval fileIn = Paths.get(par.input)\nval fileOut = Paths.get(par.output)\nFiles.copy(fileIn, fileOut, REPLACE_EXISTING)", + "crumbs": [ + "Reference", + "Viash Code Block" + ] + }, + { + "objectID": "reference/viash_code_block/index.html#runtime-parameters-in-par", + "href": "reference/viash_code_block/index.html#runtime-parameters-in-par", + "title": "Viash Code Block", + "section": "Runtime parameters in par", + "text": "Runtime parameters in par\nThe par object (or par_ environment variables in Bash) will contain argument values passed at runtime. For example, passing --input foo.txt will result in a par[\"input\"] being equal to \"foo.txt\".\n\n\n\n\n\n\nTip\n\n\n\nTry adding more arguments with different file types to see what effect this has on the resulting placeholder.", + "crumbs": [ + "Reference", + "Viash Code Block" + ] + }, + { + "objectID": "reference/viash_code_block/index.html#meta-variables-in-meta", + "href": "reference/viash_code_block/index.html#meta-variables-in-meta", + "title": "Viash Code Block", + "section": "Meta variables in meta", + "text": "Meta variables in meta\nMeta-variables offer information on the runtime environment which you can use from within your script.\n\ncpus (integer): The maximum number of (logical) cpus a component is allowed to use. By default, this value will be undefined.\nconfig (string): Path to the processed Viash config YAML. This file is usually called .config.vsh.yaml and resides next to the wrapped executable (see below). This YAML file is useful for doing some runtime introspection of the component for writing generic unit tests.\nexecutable (string): The executable being used at runtime; that is, the wrapped script. This variable is used in unit tests.\nfunctionality_name (string): The name of the component, useful for logging.\nmemory_* (long): The maximum amount of memory a component is allowed to allocate. The following denominations are provided: memory_b, memory_kb, memory_mb, memory_gb, memory_tb, memory_pb. By default, this value will be undefined.\nresources_dir (string): Path to where the resources are stored.\ntemp_dir (string): A temporary directory in which your script is allowed to create new temporary files / directories. By default, this will be set to the VIASH_TEMP environment variable. When the VIASH_TEMP variable is undefined, POSIX TMPDIR or /tmp is used instead.\n\n\ncpus (integer)\nThis field specifies the maximum number of (logical) cpus a component is allowed to use. This is useful when parallellizing your component in such a way that integrates very nicely with pipeline frameworks such as Nextflow. Below is an example usage of the cpus meta-variable.\n\nBashC#JavaScriptPythonRScala\n\n\n#!/bin/bash\n\n## VIASH START\npar_input=\"path/to/file.txt\"\npar_output=\"output.txt\"\nmeta_cpus=10\n## VIASH END\n\n# Pass number of cores to the popular_software_tool. Set the default to 1.\n./popular_software_tool --ncores ${meta_cpus:-1}\n\n\nNo example available yet.\n\n\nNo example available yet.\n\n\nfrom multiprocessing import Pool\n\n## VIASH START\npar = {}\nmeta = {\"cpus\": 1}\n## VIASH END\n\ndef my_fun(x):\n return x + \"!\"\nmy_data = [\"hello\", \"world\"]\n\nwith Pool(processes=meta.get(\"cpus\", 1)) as pool:\n out = pool.map(my_fun, my_data)\n\n\nlibrary(furrr)\n\n## VIASH START\npar <- list()\nmeta <- list(\n cpus = 1L\n)\n## VIASH END\n\nif (is.null(meta$cpus)) meta$cpus <- 1\nplan(multisession, workers = meta$cpus)\n\nmy_data <- c(\"hello\", \"world\")\nout = future_map(\n my_data, \n function(x) {\n paste0(x, \"!\")\n }\n)\n\n\nimport scala.collection.parallel._\nimport java.util.concurrent.ForkJoinPool\n\n// VIASH START\n// ...\n// VIASH END\n\nval pc = mutable.ParArray(1, 2, 3)\nval numCores = meta.cores.getOrElse(1)\npc.tasksupport = new ForkJoinTaskSupport(new ForkJoinPool(numCores))\npc map { _ + 1 }\n\n\n\nYou can set the number of cores in your component using any of the following approaches:\n# as a parameter of viash run\nviash run config.vsh.yaml --cpus 10 -- <my component arguments>\n\n# as a parameter of viash test\nviash test config.vsh.yaml --cpus 10\n\n# or as a parameter of the executable\nviash build config.vsh.yaml -o output\noutput/my_executable ---cpus 10\n# ↑ notice the triple dash\n\n\nconfig (string)\nPath to the processed Viash config YAML. This file is usually called .config.vsh.yaml and resides next to the wrapped executable (see below). This YAML file is useful for doing some runtime introspection of the component for writing generic unit tests.\n\n\nexecutable (string)\nThe executable being used at runtime; that is, the wrapped script. This variable is used in unit tests.\n#!/usr/bin/env bash\nset -x\n\n\"$meta_executable\" --input input.txt > output.txt\n\n[[ ! -f output.txt ]] && echo \"Output file could not be found!\" && exit 1\ncat output.txt\ngrep -q 'expected output' output.txt\n\necho Done\n\n\nfunctionality_name (string)\nThe name of the component, useful for logging.\n\n\nmemory_* (long)\nThe maximum amount of memory a component is allowed to allocate. The following denominations are provided: memory_b, memory_kb, memory_mb, memory_gb, memory_tb, memory_pb. By default, this value will be undefined.\nYou can set the amount of memory in your component using any of the following approaches:\n# as a parameter of viash run\nviash run config.vsh.yaml --memory 2GB -- <my component arguments>\n\n# as a parameter of viash test\nviash test config.vsh.yaml --memory 2GB\n\n# or as a parameter of the executable\nviash build config.vsh.yaml -o output\noutput/my_executable ---memory 2GB\n# ↑ notice the triple dash\n\n\nresources_dir (string)\nThis field specifies the absolute path to where the resources are stored. During the build phase resources are copied or fetched into this directory so they are ready to be read during execution of the script or test scripts.\n\n\ntemp_dir (string)\nA temporary directory in which your script is allowed to create new temporary files / directories. By default, this will be set to the VIASH_TEMP environment variable. When the VIASH_TEMP variable is undefined, the POSIX TMPDIR and other common misspellings will be checked and ultimately /tmp is used as fallback.", + "crumbs": [ + "Reference", + "Viash Code Block" + ] + }, + { + "objectID": "quickstart/index.html", + "href": "quickstart/index.html", + "title": "Welcome to Viash!", + "section": "", + "text": "Viash is your go-to script wrapper for building data pipelines from modular software components. All you need is your trusty script and a metadata file to embark on this journey.\nCheck out some of Viash’s key features:" + }, + { + "objectID": "quickstart/index.html#requirements", + "href": "quickstart/index.html#requirements", + "title": "Welcome to Viash!", + "section": "Requirements", + "text": "Requirements\nThis guide assumes you’ve already installed Viash, Docker and Nextflow." + }, + { + "objectID": "quickstart/index.html#quickstart-example-project", + "href": "quickstart/index.html#quickstart-example-project", + "title": "Welcome to Viash!", + "section": "Quickstart example project", + "text": "Quickstart example project\nTo get up and running fast, we provide a template project for you to use. It contains three components from the same package as well as 2 custom operators from vsh-pipeline-operators, which are combined into a Nextflow pipeline as follows:\n\n\n\n\n\ngraph TD\n A(file?.tsv) --> X[vsh_flatten] \n X --file1.tsv--> B1[/remove_comments/] --> C1[/take_column/] --> Y\n X --file2.tsv--> B2[/remove_comments/] --> C2[/take_column/] --> Y\n Y[vsh_toList] --> D[/combine_columns/]\n D --> E(output)\n\n\n\n\n\n\nThis pipeline takes one or more TSV files as input and stores its output in an output folder." + }, + { + "objectID": "quickstart/index.html#step-1-get-the-template", + "href": "quickstart/index.html#step-1-get-the-template", + "title": "Welcome to Viash!", + "section": "Step 1: Get the template", + "text": "Step 1: Get the template\nFirst create a new repository by clicking the “Use this template” button. If you can’t see the “Use this template” button, log into GitHub first.\nNext, clone the repository using the following command.\ngit clone https://github.com/youruser/my_first_pipeline.git && cd my_first_pipeline\n\n\n\n\n\n\nNote\n\n\n\nAt the moment of writing, the branch to use should be 0_8_2.\n\n\nYour new repository should contain the following files:\ntree my_first_pipeline\n.\n├── CHANGELOG.md\n├── LICENSE.md\n├── README.md\n├── README.qmd\n├── _viash.yaml\n├── main.nf\n├── resources_test\n│   ├── file1.tsv\n│   └── file2.tsv\n└── src\n └── template\n ├── combine_columns\n │   ├── config.vsh.yaml\n │   └── script.R\n ├── remove_comments\n │   ├── config.vsh.yaml\n │   ├── script.sh\n │   └── test.sh\n ├── take_column\n │   ├── config.vsh.yaml\n │   └── script.py\n └── workflow\n ├── config.vsh.yaml\n ├── main.nf\n └── nextflow.config" + }, + { + "objectID": "quickstart/index.html#step-2-build-the-viash-components", + "href": "quickstart/index.html#step-2-build-the-viash-components", + "title": "Welcome to Viash!", + "section": "Step 2: Build the Viash components", + "text": "Step 2: Build the Viash components\nWith Viash you can turn the components in src/ into Dockerized Nextflow modules by running:\nviash ns build --setup cachedbuild --parallel\n\n\nOutput\n\n\n\ntemporaryFolder: /tmp/viash_hub_repo13699287300312027561 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \nExporting remove_comments (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/remove_comments\nExporting combine_columns (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/combine_columns\nExporting workflow (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/workflow\nExporting take_column (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/take_column\nExporting remove_comments (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/remove_comments\nExporting take_column (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/take_column\nExporting combine_columns (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/combine_columns\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/take_column:0.2.3' with Dockerfile\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/combine_columns:0.2.3' with Dockerfile\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/remove_comments:0.2.3' with Dockerfile\nAll 7 configs built successfully\n\n\n\nThis command not only transforms the Viash components in src/ to Nextflow modules but it also builds the containers when appropriate (starting from the Docker cache when available using the cachedbuild argument). Once everything is built, a new target directory has been created containing the executables and modules grouped per platform:\nls -l\n\n\nOutput\n\n\n\ntotal 68\n-rw-r--r-- 1 hendrik hendrik 1020 Feb 29 11:40 CHANGELOG.md\n-rw-r--r-- 1 hendrik hendrik 32219 Feb 29 11:40 LICENSE.md\n-rw-r--r-- 1 hendrik hendrik 245 Feb 29 11:40 main.nf\n-rw-r--r-- 1 hendrik hendrik 222 Feb 29 11:40 nextflow.config\n-rw-r--r-- 1 hendrik hendrik 1094 Feb 29 11:40 README.md\n-rw-r--r-- 1 hendrik hendrik 1125 Feb 29 11:40 README.qmd\ndrwxr-xr-x 2 hendrik hendrik 4096 Feb 29 11:40 resources_test\ndrwxr-xr-x 3 hendrik hendrik 4096 Feb 29 11:40 src\ndrwxr-xr-x 5 hendrik hendrik 4096 Feb 29 11:40 target\n-rw-r--r-- 1 hendrik hendrik 417 Feb 29 11:40 _viash.yaml" + }, + { + "objectID": "quickstart/index.html#step-3-run-the-pipeline", + "href": "quickstart/index.html#step-3-run-the-pipeline", + "title": "Welcome to Viash!", + "section": "Step 3: Run the pipeline", + "text": "Step 3: Run the pipeline\nNow run the pipeline with Nextflow:\nnextflow run . \\\n -main-script template/workflow/main.nf \\\n -with-docker \\\n --input resources_test/file*.tsv \\\n --publish_dir output\n\n\nOutput\n\n\n\nN E X T F L O W ~ version 23.04.1\nLaunching `target/nextflow/template/workflow/main.nf` [fabulous_pare] DSL2 - revision: 6121522925\n[dd/089f9a] Submitted process > workflow:run_wf:remove_comments:processWf:remove_comments_process (run)\n[a0/d05ff7] Submitted process > workflow:run_wf:take_column:processWf:take_column_process (run)\n[eb/100864] Submitted process > workflow:run_wf:combine_columns:processWf:combine_columns_process (run)\n[57/ef0e3b] Submitted process > workflow:publishStatesSimpleWf:publishStatesProc (run)\n\n\n\nThis will run the different stages of the workflow , with the final result result being stored in a file named run.combine_columns.output in the output directory output:\ncat output/run.combine_columns.output\n\n\nOutput\n\n\n\n\"1\" 0.11\n\"2\" 0.23\n\"3\" 0.35\n\"4\" 0.47" + }, + { + "objectID": "quickstart/index.html#whats-next", + "href": "quickstart/index.html#whats-next", + "title": "Welcome to Viash!", + "section": "What’s next?", + "text": "What’s next?\nCongratulations, you’ve reached the end of this quickstart tutorial, and we’re excited for you to delve deeper into the world of Viash! Our comprehensive guide and reference documentation is here to help you explore various topics, such as:\n\nCreating a Viash component and converting it into a standalone executable\nEnsuring reproducibility and designing customised Docker images\nEnsuring code reliability with unit testing for Viash\nStreamlining your workflow by performing batch operations on Viash projects\nBuilding Nextflow pipelines using Viash components\n\nSo, get ready to enhance your skills and create outstanding solutions with Viash!" + }, + { + "objectID": "reference/nextflow_vdsl3/import_module.html", + "href": "reference/nextflow_vdsl3/import_module.html", + "title": "Import a VDSL3 module", + "section": "", + "text": "A VDSL3 module is a Nextflow module generated by Viash. See the guide for a more in-depth explanation on how to create Nextflow workflows with VDSL3 modules.", + "crumbs": [ + "Reference", + "Nextflow VDSL3", + "Import a VDSL3 module" + ] + }, + { + "objectID": "reference/nextflow_vdsl3/import_module.html#importing-a-vdsl3-module", + "href": "reference/nextflow_vdsl3/import_module.html#importing-a-vdsl3-module", + "title": "Import a VDSL3 module", + "section": "Importing a VDSL3 module", + "text": "Importing a VDSL3 module\nAfter building a VDSL3 module from a component, the VDSL3 module can be imported just like any other Nextflow module.\nExample:\ninclude { mymodule } from 'target/nextflow/mymodule/main.nf'", + "crumbs": [ + "Reference", + "Nextflow VDSL3", + "Import a VDSL3 module" + ] + }, + { + "objectID": "reference/nextflow_vdsl3/import_module.html#vdsl3-module-interface", + "href": "reference/nextflow_vdsl3/import_module.html#vdsl3-module-interface", + "title": "Import a VDSL3 module", + "section": "VDSL3 module interface", + "text": "VDSL3 module interface\nVDSL3 modules are actually workflows which take one channel and emit one channel. It expects the channel events to be tuples containing an ‘id’ and a ‘state’: [id, state], where id is a unique String and state is a Map[String, Object]. The resulting channel then consists of tuples [id, new_state].\nExample:\nworkflow {\n Channel.fromList([\n [\"myid\", [input: file(\"in.txt\")]]\n ])\n | mymodule\n}\n\n\n\n\n\n\nNote\n\n\n\nIf the input tuple has more than two elements, the elements after the second element are passed through to the output tuple. That is, an input tuple [id, input, ...] will result in a tuple [id, output, ...] after running the module. For example, an input tuple [\"foo\", [input: file(\"in.txt\")], \"bar\"] will result in an output tuple [\"foo\", [output: file(\"out.txt\")], \"bar\"].", + "crumbs": [ + "Reference", + "Nextflow VDSL3", + "Import a VDSL3 module" + ] + }, + { + "objectID": "reference/nextflow_vdsl3/import_module.html#customizing-vdsl3-modules-on-the-fly", + "href": "reference/nextflow_vdsl3/import_module.html#customizing-vdsl3-modules-on-the-fly", + "title": "Import a VDSL3 module", + "section": "Customizing VDSL3 modules on the fly", + "text": "Customizing VDSL3 modules on the fly\nUsually, Nextflow processes are quite static objects. For example, changing its directives can be quite tricky.\nThe .run() function is a unique feature for every VDSL3 module which allows dynamically altering the behaviour of a module from within the pipeline. For example, we use it to set the publishDir directive to \"output/\" so the output of that step in the pipeline will be stored as output.\nExample:\nworkflow {\n Channel.fromList([\n [\"myid\", [input: file(\"in.txt\")]]\n ])\n | mymodule.run(\n args: [k: 10],\n directives: [cpus: 4, memory: \"16 GB\"]\n )\n}\n\nArguments of .run()\n\nkey (String): A unique key used to trace the process and help make names of output files unique. Default: the name of the Viash component.\nargs (Map[String, Object]): Argument overrides to be passed to the module.\ndirectives (Map[String, Object]): Custom directives overrides. See the Nextflow documentation for a list of available directives.\nauto (Map[String, Boolean]): Whether to apply certain automated processing steps. Default values are inherited from the Viash config.\nauto.simplifyInput: If true, if the input tuple is a single file and if the module only has a single input file, the input file will be passed the module accordingly. Default: true (inherited from Viash config).\nauto.simplifyOutput: If true, if the output tuple is a single file and if the module only has a single output file, the output map will be transformed into a single file. Default: true (inherited from Viash config).\nauto.publish: If true, the output files will be published to the params.publishDir folder. Default: false (inherited from Viash config).\nauto.transcript: If true, the module’s transcript will be published to the params.transcriptDir folder. Default: false (inherited from Viash config).\nmap (Function): Apply a map over the incoming tuple. Example: { tup -> [ tup[0], [input: tup[1].output] ] + tup.drop(2) }. Default: null.\nmapId (Function): Apply a map over the ID element of a tuple (i.e. the first element). Example: { id -> id + \"_foo\" }. Default: null.\nmapData (Function): Apply a map over the data element of a tuple (i.e. the second element). Example: { data -> [ input: data.output ] }. Default: null.\nmapPassthrough (Function): Apply a map over the passthrough elements of a tuple (i.e. the tuple excl. the first two elements). Example: { pt -> pt.drop(1) }. Default: null.\nfilter (Function): Filter the channel. Example: { tup -> tup[0] == \"foo\" }. Default: null.\nfromState: Fetch data from the state and pass it to the module without altering the current state. fromState should be null, List[String], Map[String, String] or a function.\n\nIf it is null, the state will be passed to the module as is.\nIf it is a List[String], the data will be the values of the state at the given keys.\nIf it is a Map[String, String], the data will be the values of the state at the given keys, with the keys renamed according to the map.\nIf it is a function, the tuple ([id, state]) in the channel will be passed to the function, and the result will be used as the data.\n\nExample: { id, state -> [input: state.fastq_file] } Default: null\ntoState: Determine how the state should be updated after the module has been run. toState should be null, List[String], Map[String, String] or a function.\n\nIf it is null, the state will be replaced with the output of the module.\nIf it is a List[String], the state will be updated with the values of the data at the given keys.\nIf it is a Map[String, String], the state will be updated with the values of the data at the given keys, with the keys renamed according to the map.\nIf it is a function, a tuple ([id, output, state]) will be passed to the function, and the result will be used as the new state.\n\nExample: { id, output, state -> state + [counts: state.output] } Default: { id, output, state -> output }\ndebug: Whether or not to print debug messages. Default: false.", + "crumbs": [ + "Reference", + "Nextflow VDSL3", + "Import a VDSL3 module" + ] + }, + { + "objectID": "reference/nextflow_vdsl3/index.html", + "href": "reference/nextflow_vdsl3/index.html", + "title": "Nextflow VDSL3", + "section": "", + "text": "Viash supports creating Nextflow workflows in multiple ways.\n\nRun a module as a standalone pipeline\nImport a VDSL3 module\nCreate a Nextflow workflow with dependencies", + "crumbs": [ + "Reference", + "Nextflow VDSL3" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/yumRequirements.html", + "href": "reference/config/platforms/docker/setup/yumRequirements.html", + "title": "Yum Requirements", + "section": "", + "text": "Specify which yum packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Yum Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/yumRequirements.html#packages", + "href": "reference/config/platforms/docker/setup/yumRequirements.html#packages", + "title": "Yum Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install.\nExample:\npackages: [ sl ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Yum Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/yumRequirements.html#type", + "href": "reference/config/platforms/docker/setup/yumRequirements.html#type", + "title": "Yum Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Yum Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rubyRequirements.html", + "href": "reference/config/platforms/docker/setup/rubyRequirements.html", + "title": "Ruby Requirements", + "section": "", + "text": "Specify which Ruby packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Ruby Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rubyRequirements.html#packages", + "href": "reference/config/platforms/docker/setup/rubyRequirements.html#packages", + "title": "Ruby Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install.\nExample:\npackages: [ rspec ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Ruby Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rubyRequirements.html#type", + "href": "reference/config/platforms/docker/setup/rubyRequirements.html#type", + "title": "Ruby Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Ruby Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html", + "title": "Python Requirements", + "section": "", + "text": "Specify which Python packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#bazaar", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#bazaar", + "title": "Python Requirements", + "section": "bazaar", + "text": "bazaar\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Bazaar URI.\nExample:\nbazaar: [ http://bazaar.launchpad.net/some_pkg/some_pkg/release-0.1 ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#git", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#git", + "title": "Python Requirements", + "section": "git", + "text": "git\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Git URI.\nExample:\ngit: [ https://some.git.repository/org/repo ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#github", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#github", + "title": "Python Requirements", + "section": "github", + "text": "github\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitHub.\nExample:\ngithub: [ jkbr/httpie ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#gitlab", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#gitlab", + "title": "Python Requirements", + "section": "gitlab", + "text": "gitlab\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitLab.\nExample:\ngitlab: [ foo/bar ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#mercurial", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#mercurial", + "title": "Python Requirements", + "section": "mercurial", + "text": "mercurial\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Mercurial URI.\nExample:\nmercurial: [ https://hg.myproject.org/MyProject/#egg=MyProject ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#packages", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#packages", + "title": "Python Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from pip.\nExample:\npackages: [ numpy ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#pip", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#pip", + "title": "Python Requirements", + "section": "pip", + "text": "pip\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from pip.\nExample:\npip: [ numpy ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#pypi", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#pypi", + "title": "Python Requirements", + "section": "pypi", + "text": "pypi\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from PyPI using pip.\nExample:\npypi: [ numpy ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#script", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#script", + "title": "Python Requirements", + "section": "script", + "text": "script\nType: String / List of String\nDefault: Empty\nSpecifies a code block to run as part of the build.\nExample:\nscript: |\n print(\"Running custom code\")\n x = 1 + 1 == 2", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#svn", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#svn", + "title": "Python Requirements", + "section": "svn", + "text": "svn\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using an SVN URI.\nExample:\nsvn: [ http://svn.repo/some_pkg/trunk/#egg=SomePackage ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#type", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#type", + "title": "Python Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#upgrade", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#upgrade", + "title": "Python Requirements", + "section": "upgrade", + "text": "upgrade\nType: Boolean\nDefault: True\nSets the --upgrade flag when set to true. Default: true.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#url", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#url", + "title": "Python Requirements", + "section": "url", + "text": "url\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a generic URI.\nExample:\nurl: [ https://github.com/some_org/some_pkg/zipball/master ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/pythonRequirements.html#user", + "href": "reference/config/platforms/docker/setup/pythonRequirements.html#user", + "title": "Python Requirements", + "section": "user", + "text": "user\nType: Boolean\nDefault: False\nSets the --user flag when set to true. Default: false.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html", + "href": "reference/config/platforms/docker/setup/rRequirements.html", + "title": "R Requirements", + "section": "", + "text": "Specify which R packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#bioc", + "href": "reference/config/platforms/docker/setup/rRequirements.html#bioc", + "title": "R Requirements", + "section": "bioc", + "text": "bioc\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from BioConductor.\nExample:\nbioc: [ AnnotationDbi ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#bioc_force_install", + "href": "reference/config/platforms/docker/setup/rRequirements.html#bioc_force_install", + "title": "R Requirements", + "section": "bioc_force_install", + "text": "bioc_force_install\nType: Boolean\nDefault: False\nForces packages specified in bioc to be reinstalled, even if they are already present in the container. Default: false.\nExample:\nbioc_force_install: false", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#bitbucket", + "href": "reference/config/platforms/docker/setup/rRequirements.html#bitbucket", + "title": "R Requirements", + "section": "bitbucket", + "text": "bitbucket\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from Bitbucket.\nExample:\nbitbucket: [ org/package ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#cran", + "href": "reference/config/platforms/docker/setup/rRequirements.html#cran", + "title": "R Requirements", + "section": "cran", + "text": "cran\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from CRAN.\nExample:\ncran: [ anndata, ggplot2 ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#git", + "href": "reference/config/platforms/docker/setup/rRequirements.html#git", + "title": "R Requirements", + "section": "git", + "text": "git\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Git URI.\nExample:\ngit: [ https://some.git.repository/org/repo ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#github", + "href": "reference/config/platforms/docker/setup/rRequirements.html#github", + "title": "R Requirements", + "section": "github", + "text": "github\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitHub.\nExample:\ngithub: [ rcannood/SCORPIUS ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#gitlab", + "href": "reference/config/platforms/docker/setup/rRequirements.html#gitlab", + "title": "R Requirements", + "section": "gitlab", + "text": "gitlab\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitLab.\nExample:\ngitlab: [ org/package ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#packages", + "href": "reference/config/platforms/docker/setup/rRequirements.html#packages", + "title": "R Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from CRAN.\nExample:\npackages: [ anndata, ggplot2 ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#script", + "href": "reference/config/platforms/docker/setup/rRequirements.html#script", + "title": "R Requirements", + "section": "script", + "text": "script\nType: String / List of String\nDefault: Empty\nSpecifies a code block to run as part of the build.\nExample:\nscript: |\n cat(\"Running custom code\n\")\n install.packages(\"anndata\")", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#svn", + "href": "reference/config/platforms/docker/setup/rRequirements.html#svn", + "title": "R Requirements", + "section": "svn", + "text": "svn\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using an SVN URI.\nExample:\nsvn: [ https://path.to.svn/group/repo ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#type", + "href": "reference/config/platforms/docker/setup/rRequirements.html#type", + "title": "R Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/setup/rRequirements.html#url", + "href": "reference/config/platforms/docker/setup/rRequirements.html#url", + "title": "R Requirements", + "section": "url", + "text": "url\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a generic URI.\nExample:\nurl: [ https://github.com/hadley/stringr/archive/HEAD.zip ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html", + "href": "reference/config/platforms/docker/index.html", + "title": "Docker Platform", + "section": "", + "text": "Run a Viash component on a Docker backend platform. By specifying which dependencies your component needs, users will be able to build a docker container from scratch using the setup flag, or pull it from a docker repository.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#chown", + "href": "reference/config/platforms/docker/index.html#chown", + "title": "Docker Platform", + "section": "chown", + "text": "chown\nType: Boolean\nDefault: True\nIn Linux, files created by a Docker container will be owned by root. With chown: true, Viash will automatically change the ownership of output files (arguments with type: file and direction: output) to the user running the Viash command after execution of the component. Default value: true.\nExample:\nchown: false", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#cmd", + "href": "reference/config/platforms/docker/index.html#cmd", + "title": "Docker Platform", + "section": "cmd", + "text": "cmd\nType: Either - String - List of String\nDefault: Empty\nSet the default command being executed when running the Docker container.\nExamples:\nSet CMD using the exec format, which is the prefered form.\ncmd: [\"echo\", \"$HOME\"]\nSet CMD using the shell format.\ncmd: \"echo $HOME\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#entrypoint", + "href": "reference/config/platforms/docker/index.html#entrypoint", + "title": "Docker Platform", + "section": "entrypoint", + "text": "entrypoint\nType: Either - String - List of String\nDefault: []\nOverride the entrypoint of the base container. Default set ENTRYPOINT [].\nExamples:\nDisable the default override.\nentrypoint: \nEntrypoint of the container in the exec format, which is the prefered form.\nentrypoint: [\"top\", \"-b\"]\nEntrypoint of the container in the shell format.\nentrypoint: \"top -b\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#id", + "href": "reference/config/platforms/docker/index.html#id", + "title": "Docker Platform", + "section": "id", + "text": "id\nType: String\nDefault: docker\nAs with all platforms, you can give a platform a different name. By specifying id: foo, you can target this platform (only) by specifying -p foo in any of the Viash commands.\nExample:\nid: foo", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#image", + "href": "reference/config/platforms/docker/index.html#image", + "title": "Docker Platform", + "section": "image", + "text": "image\nType: String\nThe base container to start from. You can also add the tag here if you wish.\nExample:\nimage: \"bash:4.0\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#namespace_separator", + "href": "reference/config/platforms/docker/index.html#namespace_separator", + "title": "Docker Platform", + "section": "namespace_separator", + "text": "namespace_separator\nType: String\nDefault: /\nThe separator between the namespace and the name of the component, used for determining the image name. Default: \"/\".\nExample:\nnamespace_separator: \"_\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#organization", + "href": "reference/config/platforms/docker/index.html#organization", + "title": "Docker Platform", + "section": "organization", + "text": "organization\nType: String\nDefault: Empty\nName of a container’s organization.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#port", + "href": "reference/config/platforms/docker/index.html#port", + "title": "Docker Platform", + "section": "port", + "text": "port\nType: String / List of String\nDefault: Empty\nA list of enabled ports. This doesn’t change the Dockerfile but gets added as a command-line argument at runtime.\nExample:\nport:\n - 80\n - 8080", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#registry", + "href": "reference/config/platforms/docker/index.html#registry", + "title": "Docker Platform", + "section": "registry", + "text": "registry\nType: String\nDefault: Empty\nThe URL to the a custom Docker registry\nExample:\nregistry: https://my-docker-registry.org", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#resolve_volume", + "href": "reference/config/platforms/docker/index.html#resolve_volume", + "title": "Docker Platform", + "section": "resolve_volume", + "text": "resolve_volume\nType: DockerResolveVolume\nDefault: Automatic\nEnables or disables automatic volume mapping. Enabled when set to Automatic or disabled when set to Manual. Default: Automatic.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#run_args", + "href": "reference/config/platforms/docker/index.html#run_args", + "title": "Docker Platform", + "section": "run_args", + "text": "run_args\nType: String / List of String\nDefault: Empty\nAdd docker run arguments.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#setup", + "href": "reference/config/platforms/docker/index.html#setup", + "title": "Docker Platform", + "section": "setup", + "text": "setup\nType: List of Requirements\nDefault: Empty\nA list of requirements for installing the following types of packages:\n\napt\napk\nDocker setup instructions\nJavaScript\nPython\nR\nRuby\nyum\n\nThe order in which these dependencies are specified determines the order in which they will be installed.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#setup_strategy", + "href": "reference/config/platforms/docker/index.html#setup_strategy", + "title": "Docker Platform", + "section": "setup_strategy", + "text": "setup_strategy\nType: DockerSetupStrategy\nDefault: ifneedbepullelsecachedbuild\nThe Docker setup strategy to use when building a container.\n\n\n\nStrategy\nDescription\n\n\n\n\nalwaysbuild / build / b\nAlways build the image from the dockerfile. This is the default setup strategy.\n\n\nalwayscachedbuild / cachedbuild / cb\nAlways build the image from the dockerfile, with caching enabled.\n\n\nifneedbebuild\nBuild the image if it does not exist locally.\n\n\nifneedbecachedbuild\nBuild the image with caching enabled if it does not exist locally, with caching enabled.\n\n\nalwayspull / pull / p\nTry to pull the container from Docker Hub or the specified docker registry.\n\n\nalwayspullelsebuild / pullelsebuild\nTry to pull the image from a registry and build it if it doesn’t exist.\n\n\nalwayspullelsecachedbuild / pullelsecachedbuild\nTry to pull the image from a registry and build it with caching if it doesn’t exist.\n\n\nifneedbepull\nIf the image does not exist locally, pull the image.\n\n\nifneedbepullelsebuild\nIf the image does not exist locally, pull the image. If the image does exist, build it.\n\n\nifneedbepullelsecachedbuild\nIf the image does not exist locally, pull the image. If the image does exist, build it with caching enabled.\n\n\npush\nPush the container to Docker Hub or the specified docker registry.\n\n\npushifnotpresent\nPush the container to Docker Hub or the specified docker registry if the tag does not exist yet.\n\n\ndonothing / meh\nDo not build or pull anything.\n\n\n\nExample:\nsetup_strategy: alwaysbuild", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#tag", + "href": "reference/config/platforms/docker/index.html#tag", + "title": "Docker Platform", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nSpecify a Docker image based on its tag.\nExample:\ntag: 4.0", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#target_image", + "href": "reference/config/platforms/docker/index.html#target_image", + "title": "Docker Platform", + "section": "target_image", + "text": "target_image\nType: String\nDefault: Empty\nIf anything is specified in the setup section, running the ---setup will result in an image with the name of <target_image>:<version>. If nothing is specified in the setup section, simply image will be used. Advanced usage only.\nExample:\ntarget_image: myfoo", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#target_image_source", + "href": "reference/config/platforms/docker/index.html#target_image_source", + "title": "Docker Platform", + "section": "target_image_source", + "text": "target_image_source\nType: String\nDefault: Empty\nThe source of the target image. This is used for defining labels in the dockerfile.\nExample:\ntarget_image_source: https://github.com/foo/bar", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#target_organization", + "href": "reference/config/platforms/docker/index.html#target_organization", + "title": "Docker Platform", + "section": "target_organization", + "text": "target_organization\nType: String\nDefault: Empty\nThe organization set in the resulting image. Advanced usage only.\nExample:\ntarget_organization: viash-io", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#target_registry", + "href": "reference/config/platforms/docker/index.html#target_registry", + "title": "Docker Platform", + "section": "target_registry", + "text": "target_registry\nType: String\nDefault: Empty\nThe URL where the resulting image will be pushed to. Advanced usage only.\nExample:\ntarget_registry: https://my-docker-registry.org", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#target_tag", + "href": "reference/config/platforms/docker/index.html#target_tag", + "title": "Docker Platform", + "section": "target_tag", + "text": "target_tag\nType: String\nDefault: Empty\nThe tag the resulting image gets. Advanced usage only.\nExample:\ntarget_tag: 0.5.0", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#test_setup", + "href": "reference/config/platforms/docker/index.html#test_setup", + "title": "Docker Platform", + "section": "test_setup", + "text": "test_setup\nType: List of Requirements\nDefault: Empty\nAdditional requirements specific for running unit tests.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#type", + "href": "reference/config/platforms/docker/index.html#type", + "title": "Docker Platform", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the platform.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/docker/index.html#workdir", + "href": "reference/config/platforms/docker/index.html#workdir", + "title": "Docker Platform", + "section": "workdir", + "text": "workdir\nType: String\nDefault: Empty\nThe working directory when starting the container. This doesn’t change the Dockerfile but gets added as a command-line argument at runtime.\nExample:\nworkdir: /home/user", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Docker Platform" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html", + "href": "reference/config/platforms/nextflow/directives.html", + "title": "Nextflow Directives", + "section": "", + "text": "Directives are optional settings that affect the execution of the process.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#accelerator", + "href": "reference/config/platforms/nextflow/directives.html#accelerator", + "title": "Nextflow Directives", + "section": "accelerator", + "text": "accelerator\nType: Map of String to String\nDefault: Empty\nThe accelerator directive allows you to specify the hardware accelerator requirement for the task execution e.g. GPU processor.\nViash implements this directive as a map with accepted keywords: type, limit, request, and runtime.\nSee accelerator.\nExample:\n[ limit: 4, type: \"nvidia-tesla-k80\" ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#afterscript", + "href": "reference/config/platforms/nextflow/directives.html#afterscript", + "title": "Nextflow Directives", + "section": "afterScript", + "text": "afterScript\nType: String\nDefault: Empty\nThe afterScript directive allows you to execute a custom (Bash) snippet immediately after the main process has run. This may be useful to clean up your staging area.\nSee afterScript.\nExample:\nsource /cluster/bin/cleanup", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#beforescript", + "href": "reference/config/platforms/nextflow/directives.html#beforescript", + "title": "Nextflow Directives", + "section": "beforeScript", + "text": "beforeScript\nType: String\nDefault: Empty\nThe beforeScript directive allows you to execute a custom (Bash) snippet before the main process script is run. This may be useful to initialise the underlying cluster environment or for other custom initialisation.\nSee beforeScript.\nExample:\nsource /cluster/bin/setup", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#cache", + "href": "reference/config/platforms/nextflow/directives.html#cache", + "title": "Nextflow Directives", + "section": "cache", + "text": "cache\nType: Either - Boolean - String\nDefault: Empty\nThe cache directive allows you to store the process results to a local cache. When the cache is enabled and the pipeline is launched with the resume option, any following attempt to execute the process, along with the same inputs, will cause the process execution to be skipped, producing the stored data as the actual results.\nThe caching feature generates a unique key by indexing the process script and inputs. This key is used to identify univocally the outputs produced by the process execution.\nThe cache is enabled by default, you can disable it for a specific process by setting the cache directive to false.\nAccepted values are: true, false, \"deep\", and \"lenient\".\nSee cache.\nExamples:\ntrue\nfalse\n\"deep\"\n\"lenient\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#conda", + "href": "reference/config/platforms/nextflow/directives.html#conda", + "title": "Nextflow Directives", + "section": "conda", + "text": "conda\nType: String / List of String\nDefault: Empty\nThe conda directive allows for the definition of the process dependencies using the Conda package manager.\nNextflow automatically sets up an environment for the given package names listed by in the conda directive.\nSee conda.\nExamples:\n\"bwa=0.7.15\"\n\"bwa=0.7.15 fastqc=0.11.5\"\n[\"bwa=0.7.15\", \"fastqc=0.11.5\"]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#container", + "href": "reference/config/platforms/nextflow/directives.html#container", + "title": "Nextflow Directives", + "section": "container", + "text": "container\nType: Either - Map of String to String - String\nDefault: Empty\nThe container directive allows you to execute the process script in a Docker container.\nIt requires the Docker daemon to be running in machine where the pipeline is executed, i.e. the local machine when using the local executor or the cluster nodes when the pipeline is deployed through a grid executor.\nViash implements allows either a string value or a map. In case a map is used, the allowed keys are: registry, image, and tag. The image value must be specified.\nSee container.\nExamples:\n\"foo/bar:tag\"\nThis is transformed to \"reg/im:ta\":\n[ registry: \"reg\", image: \"im\", tag: \"ta\" ]\nThis is transformed to \"im:latest\":\n[ image: \"im\" ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#containeroptions", + "href": "reference/config/platforms/nextflow/directives.html#containeroptions", + "title": "Nextflow Directives", + "section": "containerOptions", + "text": "containerOptions\nType: String / List of String\nDefault: Empty\nThe containerOptions directive allows you to specify any container execution option supported by the underlying container engine (ie. Docker, Singularity, etc). This can be useful to provide container settings only for a specific process e.g. mount a custom path.\nSee containerOptions.\nExamples:\n\"--foo bar\"\n[\"--foo bar\", \"-f b\"]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#cpus", + "href": "reference/config/platforms/nextflow/directives.html#cpus", + "title": "Nextflow Directives", + "section": "cpus", + "text": "cpus\nType: Either - Int - String\nDefault: Empty\nThe cpus directive allows you to define the number of (logical) CPU required by the process’ task.\nSee cpus.\nExamples:\n1\n10", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#disk", + "href": "reference/config/platforms/nextflow/directives.html#disk", + "title": "Nextflow Directives", + "section": "disk", + "text": "disk\nType: String\nDefault: Empty\nThe disk directive allows you to define how much local disk storage the process is allowed to use.\nSee disk.\nExamples:\n\"1 GB\"\n\"2TB\"\n\"3.2KB\"\n\"10.B\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#echo", + "href": "reference/config/platforms/nextflow/directives.html#echo", + "title": "Nextflow Directives", + "section": "echo", + "text": "echo\nType: Either - Boolean - String\nDefault: Empty\nBy default the stdout produced by the commands executed in all processes is ignored. By setting the echo directive to true, you can forward the process stdout to the current top running process stdout file, showing it in the shell terminal.\nSee echo.\nExamples:\ntrue\nfalse", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#errorstrategy", + "href": "reference/config/platforms/nextflow/directives.html#errorstrategy", + "title": "Nextflow Directives", + "section": "errorStrategy", + "text": "errorStrategy\nType: String\nDefault: Empty\nThe errorStrategy directive allows you to define how an error condition is managed by the process. By default when an error status is returned by the executed script, the process stops immediately. This in turn forces the entire pipeline to terminate.\nTable of available error strategies: | Name | Executor | |——|———-| | terminate | Terminates the execution as soon as an error condition is reported. Pending jobs are killed (default) | | finish | Initiates an orderly pipeline shutdown when an error condition is raised, waiting the completion of any submitted job. | | ignore | Ignores processes execution errors. | | retry | Re-submit for execution a process returning an error condition. |\nSee errorStrategy.\nExamples:\n\"terminate\"\n\"finish\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#executor", + "href": "reference/config/platforms/nextflow/directives.html#executor", + "title": "Nextflow Directives", + "section": "executor", + "text": "executor\nType: String\nDefault: Empty\nThe executor defines the underlying system where processes are executed. By default a process uses the executor defined globally in the nextflow.config file.\nThe executor directive allows you to configure what executor has to be used by the process, overriding the default configuration. The following values can be used:\n\n\n\n\n\n\n\nName\nExecutor\n\n\n\n\nawsbatch\nThe process is executed using the AWS Batch service.\n\n\nazurebatch\nThe process is executed using the Azure Batch service.\n\n\ncondor\nThe process is executed using the HTCondor job scheduler.\n\n\ngoogle-lifesciences\nThe process is executed using the Google Genomics Pipelines service.\n\n\nignite\nThe process is executed using the Apache Ignite cluster.\n\n\nk8s\nThe process is executed using the Kubernetes cluster.\n\n\nlocal\nThe process is executed in the computer where Nextflow is launched.\n\n\nlsf\nThe process is executed using the Platform LSF job scheduler.\n\n\nmoab\nThe process is executed using the Moab job scheduler.\n\n\nnqsii\nThe process is executed using the NQSII job scheduler.\n\n\noge\nAlias for the sge executor.\n\n\npbs\nThe process is executed using the PBS/Torque job scheduler.\n\n\npbspro\nThe process is executed using the PBS Pro job scheduler.\n\n\nsge\nThe process is executed using the Sun Grid Engine / Open Grid Engine.\n\n\nslurm\nThe process is executed using the SLURM job scheduler.\n\n\ntes\nThe process is executed using the GA4GH TES service.\n\n\nuge\nAlias for the sge executor.\n\n\n\nSee executor.\nExamples:\n\"local\"\n\"sge\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#label", + "href": "reference/config/platforms/nextflow/directives.html#label", + "title": "Nextflow Directives", + "section": "label", + "text": "label\nType: String / List of String\nDefault: Empty\nThe label directive allows the annotation of processes with mnemonic identifier of your choice.\nSee label.\nExamples:\n\"big_mem\"\n\"big_cpu\"\n[\"big_mem\", \"big_cpu\"]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#machinetype", + "href": "reference/config/platforms/nextflow/directives.html#machinetype", + "title": "Nextflow Directives", + "section": "machineType", + "text": "machineType\nType: String\nDefault: Empty\nThe machineType can be used to specify a predefined Google Compute Platform machine type when running using the Google Life Sciences executor.\nSee machineType.\nExample:\n\"n1-highmem-8\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#maxerrors", + "href": "reference/config/platforms/nextflow/directives.html#maxerrors", + "title": "Nextflow Directives", + "section": "maxErrors", + "text": "maxErrors\nType: Either - String - Int\nDefault: Empty\nThe maxErrors directive allows you to specify the maximum number of times a process can fail when using the retry error strategy. By default this directive is disabled.\nSee maxErrors.\nExamples:\n1\n3", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#maxforks", + "href": "reference/config/platforms/nextflow/directives.html#maxforks", + "title": "Nextflow Directives", + "section": "maxForks", + "text": "maxForks\nType: Either - String - Int\nDefault: Empty\nThe maxForks directive allows you to define the maximum number of process instances that can be executed in parallel. By default this value is equals to the number of CPU cores available minus 1.\nIf you want to execute a process in a sequential manner, set this directive to one.\nSee maxForks.\nExamples:\n1\n3", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#maxretries", + "href": "reference/config/platforms/nextflow/directives.html#maxretries", + "title": "Nextflow Directives", + "section": "maxRetries", + "text": "maxRetries\nType: Either - String - Int\nDefault: Empty\nThe maxRetries directive allows you to define the maximum number of times a process instance can be re-submitted in case of failure. This value is applied only when using the retry error strategy. By default only one retry is allowed.\nSee maxRetries.\nExamples:\n1\n3", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#memory", + "href": "reference/config/platforms/nextflow/directives.html#memory", + "title": "Nextflow Directives", + "section": "memory", + "text": "memory\nType: String\nDefault: Empty\nThe memory directive allows you to define how much memory the process is allowed to use.\nSee memory.\nExamples:\n\"1 GB\"\n\"2TB\"\n\"3.2KB\"\n\"10.B\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#module", + "href": "reference/config/platforms/nextflow/directives.html#module", + "title": "Nextflow Directives", + "section": "module", + "text": "module\nType: String / List of String\nDefault: Empty\nEnvironment Modules is a package manager that allows you to dynamically configure your execution environment and easily switch between multiple versions of the same software tool.\nIf it is available in your system you can use it with Nextflow in order to configure the processes execution environment in your pipeline.\nIn a process definition you can use the module directive to load a specific module version to be used in the process execution environment.\nSee module.\nExamples:\n\"ncbi-blast/2.2.27\"\n\"ncbi-blast/2.2.27:t_coffee/10.0\"\n[\"ncbi-blast/2.2.27\", \"t_coffee/10.0\"]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#penv", + "href": "reference/config/platforms/nextflow/directives.html#penv", + "title": "Nextflow Directives", + "section": "penv", + "text": "penv\nType: String\nDefault: Empty\nThe penv directive allows you to define the parallel environment to be used when submitting a parallel task to the SGE resource manager.\nSee penv.\nExample:\n\"smp\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#pod", + "href": "reference/config/platforms/nextflow/directives.html#pod", + "title": "Nextflow Directives", + "section": "pod", + "text": "pod\nType: Map of String to String / List of Map of String to String\nDefault: Empty\nThe pod directive allows the definition of pods specific settings, such as environment variables, secrets and config maps when using the Kubernetes executor.\nSee pod.\nExamples:\n[ label: \"key\", value: \"val\" ]\n[ annotation: \"key\", value: \"val\" ]\n[ env: \"key\", value: \"val\" ]\n[ [label: \"l\", value: \"v\"], [env: \"e\", value: \"v\"]]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#publishdir", + "href": "reference/config/platforms/nextflow/directives.html#publishdir", + "title": "Nextflow Directives", + "section": "publishDir", + "text": "publishDir\nType: Either - String - Map of String to String / List of Either - String - Map of String to String\nDefault: Empty\nThe publishDir directive allows you to publish the process output files to a specified folder.\nViash implements this directive as a plain string or a map. The allowed keywords for the map are: path, mode, overwrite, pattern, saveAs, enabled. The path key and value are required. The allowed values for mode are: symlink, rellink, link, copy, copyNoFollow, move.\nSee publishDir.\nExamples:\n[]\n[ [ path: \"foo\", enabled: true ], [ path: \"bar\", enabled: false ] ]\nThis is transformed to [[ path: \"/path/to/dir\" ]]:\n\"/path/to/dir\"\nThis is transformed to [[ path: \"/path/to/dir\", mode: \"cache\" ]]:\n[ path: \"/path/to/dir\", mode: \"cache\" ]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#queue", + "href": "reference/config/platforms/nextflow/directives.html#queue", + "title": "Nextflow Directives", + "section": "queue", + "text": "queue\nType: String / List of String\nDefault: Empty\nThe queue directory allows you to set the queue where jobs are scheduled when using a grid based executor in your pipeline.\nSee queue.\nExamples:\n\"long\"\n\"short,long\"\n[\"short\", \"long\"]", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#scratch", + "href": "reference/config/platforms/nextflow/directives.html#scratch", + "title": "Nextflow Directives", + "section": "scratch", + "text": "scratch\nType: Either - Boolean - String\nDefault: Empty\nThe scratch directive allows you to execute the process in a temporary folder that is local to the execution node.\nSee scratch.\nExamples:\ntrue\n\"/path/to/scratch\"\n'$MY_PATH_TO_SCRATCH'\n\"ram-disk\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#stageinmode", + "href": "reference/config/platforms/nextflow/directives.html#stageinmode", + "title": "Nextflow Directives", + "section": "stageInMode", + "text": "stageInMode\nType: String\nDefault: Empty\nThe stageInMode directive defines how input files are staged-in to the process work directory. The following values are allowed:\n\n\n\n\n\n\n\nValue\nDescription\n\n\n\n\ncopy\nInput files are staged in the process work directory by creating a copy.\n\n\nlink\nInput files are staged in the process work directory by creating an (hard) link for each of them.\n\n\nsymlink\nInput files are staged in the process work directory by creating a symbolic link with an absolute path for each of them (default).\n\n\nrellink\nInput files are staged in the process work directory by creating a symbolic link with a relative path for each of them.\n\n\n\nSee stageInMode.\nExamples:\n\"copy\"\n\"link\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#stageoutmode", + "href": "reference/config/platforms/nextflow/directives.html#stageoutmode", + "title": "Nextflow Directives", + "section": "stageOutMode", + "text": "stageOutMode\nType: String\nDefault: Empty\nThe stageOutMode directive defines how output files are staged-out from the scratch directory to the process work directory. The following values are allowed:\n\n\n\n\n\n\n\nValue\nDescription\n\n\n\n\ncopy\nOutput files are copied from the scratch directory to the work directory.\n\n\nmove\nOutput files are moved from the scratch directory to the work directory.\n\n\nrsync\nOutput files are copied from the scratch directory to the work directory by using the rsync utility.\n\n\n\nSee stageOutMode.\nExamples:\n\"copy\"\n\"link\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#storedir", + "href": "reference/config/platforms/nextflow/directives.html#storedir", + "title": "Nextflow Directives", + "section": "storeDir", + "text": "storeDir\nType: String\nDefault: Empty\nThe storeDir directive allows you to define a directory that is used as a permanent cache for your process results.\nSee storeDir.\nExample:\n\"/path/to/storeDir\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#tag", + "href": "reference/config/platforms/nextflow/directives.html#tag", + "title": "Nextflow Directives", + "section": "tag", + "text": "tag\nType: String\nDefault: '$id'\nThe tag directive allows you to associate each process execution with a custom label, so that it will be easier to identify them in the log file or in the trace execution report.\nFor ease of use, the default tag is set to \"$id\", which allows tracking the progression of the channel events through the workflow more easily.\nSee tag.\nExample:\n\"foo\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/directives.html#time", + "href": "reference/config/platforms/nextflow/directives.html#time", + "title": "Nextflow Directives", + "section": "time", + "text": "time\nType: String\nDefault: Empty\nThe time directive allows you to define how long a process is allowed to run.\nSee time.\nExamples:\n\"1h\"\n\"2days\"\n\"1day 6hours 3minutes 30seconds\"", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/auto.html", + "href": "reference/config/platforms/nextflow/auto.html", + "title": "Nextflow Auto", + "section": "", + "text": "Automated processing flags which can be toggled on or off.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/auto.html#publish", + "href": "reference/config/platforms/nextflow/auto.html#publish", + "title": "Nextflow Auto", + "section": "publish", + "text": "publish\nType: Either - Boolean - String\nDefault: False\nIf true, the module’s outputs are automatically published to params.publishDir. If equal to \"state\", also a .state.yaml file will be published in the publish dir. Will throw an error if params.publishDir is not defined.\nDefault: false.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/auto.html#simplifyinput", + "href": "reference/config/platforms/nextflow/auto.html#simplifyinput", + "title": "Nextflow Auto", + "section": "simplifyInput", + "text": "simplifyInput\nType: Boolean\nDefault: True\nIf true, an input tuple only containing only a single File (e.g. [\"foo\", file(\"in.h5ad\")]) is automatically transformed to a map (i.e. [\"foo\", [ input: file(\"in.h5ad\") ] ]).\nDefault: true.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/auto.html#simplifyoutput", + "href": "reference/config/platforms/nextflow/auto.html#simplifyoutput", + "title": "Nextflow Auto", + "section": "simplifyOutput", + "text": "simplifyOutput\nType: Boolean\nDefault: False\nIf true, an output tuple containing a map with a File (e.g. [\"foo\", [ output: file(\"out.h5ad\") ] ]) is automatically transformed to a map (i.e. [\"foo\", file(\"out.h5ad\")]).\nDefault: false.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/platforms/nextflow/auto.html#transcript", + "href": "reference/config/platforms/nextflow/auto.html#transcript", + "title": "Nextflow Auto", + "section": "transcript", + "text": "transcript\nType: Boolean\nDefault: False\nIf true, the module’s transcripts from work/ are automatically published to params.transcriptDir. If not defined, params.publishDir + \"/_transcripts\" will be used. Will throw an error if neither are defined.\nDefault: false.", + "crumbs": [ + "Reference", + "Config", + "Platform", + "Nextflow Platform", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/platforms/index.html", + "href": "reference/config/platforms/index.html", + "title": "Platform", + "section": "", + "text": "A list of platforms to generate target artifacts for.\n\nNative\nDocker\nNextflow\n\nExample:\nplatforms:\n - type: docker\n image: \"bash:4.0\"\n - type: native\n - type: nextflow\n directives:\n label: [lowcpu, midmem]", + "crumbs": [ + "Reference", + "Config", + "Platform" + ] + }, + { + "objectID": "reference/config/functionality/computationalRequirements.html", + "href": "reference/config/functionality/computationalRequirements.html", + "title": "Computational Requirements", + "section": "", + "text": "Computational requirements related to running the component.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Computational Requirements" + ] + }, + { + "objectID": "reference/config/functionality/computationalRequirements.html#commands", + "href": "reference/config/functionality/computationalRequirements.html#commands", + "title": "Computational Requirements", + "section": "commands", + "text": "commands\nType: List of String\nDefault: Empty\nA list of commands which should be present on the system for the script to function.\nExample:\ncommands: [ which, bash, awk, date, grep, egrep, ps, sed, tail, tee ]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Computational Requirements" + ] + }, + { + "objectID": "reference/config/functionality/computationalRequirements.html#cpus", + "href": "reference/config/functionality/computationalRequirements.html#cpus", + "title": "Computational Requirements", + "section": "cpus", + "text": "cpus\nType: Int\nDefault: Empty\nThe maximum number of (logical) cpus a component is allowed to use.\nExample:\ncpus: 10", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Computational Requirements" + ] + }, + { + "objectID": "reference/config/functionality/computationalRequirements.html#memory", + "href": "reference/config/functionality/computationalRequirements.html#memory", + "title": "Computational Requirements", + "section": "memory", + "text": "memory\nType: String\nDefault: Empty\nThe maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.\nExample:\nmemory: 10GB", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Computational Requirements" + ] + }, + { + "objectID": "reference/config/functionality/author.html", + "href": "reference/config/functionality/author.html", + "title": "Author", + "section": "", + "text": "Author metadata.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Author" + ] + }, + { + "objectID": "reference/config/functionality/author.html#email", + "href": "reference/config/functionality/author.html#email", + "title": "Author", + "section": "email", + "text": "email\nType: String\nDefault: Empty\nE-mail of the author.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Author" + ] + }, + { + "objectID": "reference/config/functionality/author.html#info", + "href": "reference/config/functionality/author.html#info", + "title": "Author", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Author" + ] + }, + { + "objectID": "reference/config/functionality/author.html#name", + "href": "reference/config/functionality/author.html#name", + "title": "Author", + "section": "name", + "text": "name\nType: String\nFull name of the author, usually in the name of FirstName MiddleName LastName.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Author" + ] + }, + { + "objectID": "reference/config/functionality/author.html#props", + "href": "reference/config/functionality/author.html#props", + "title": "Author", + "section": "props", + "text": "props\nType: Map of String to String\nDefault: Empty\n\n\n\n\n\n\nWarning\n\n\n\nDeprecated since 0.7.4. Removed since 0.8.0. Use info instead.\n\n\nAuthor properties. Must be a map of strings.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Author" + ] + }, + { + "objectID": "reference/config/functionality/author.html#roles", + "href": "reference/config/functionality/author.html#roles", + "title": "Author", + "section": "roles", + "text": "roles\nType: String / List of String\nDefault: Empty\nRole of the author. Suggested items:\n\n\"author\": Authors who have made substantial contributions to the component.\n\"maintainer\": The maintainer of the component.\n\"contributor\": Authors who have made smaller contributions (such as code patches etc.).", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Author" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html", + "href": "reference/config/functionality/arguments/file.html", + "title": "File", + "section": "", + "text": "A file type argument has a string value that points to a file or folder path.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#alternatives", + "href": "reference/config/functionality/arguments/file.html#alternatives", + "title": "File", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#create_parent", + "href": "reference/config/functionality/arguments/file.html#create_parent", + "title": "File", + "section": "create_parent", + "text": "create_parent\nType: Boolean\nDefault: True\nIf the output filename is a path and it does not exist, create it before executing the script (only for direction: output).\nExample:\n- name: --my_file\n type: file\n direction: output\n create_parent: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#default", + "href": "reference/config/functionality/arguments/file.html#default", + "title": "File", + "section": "default", + "text": "default\nType: Path / List of Path\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_file\n type: file\n default: data.csv", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#description", + "href": "reference/config/functionality/arguments/file.html#description", + "title": "File", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#direction", + "href": "reference/config/functionality/arguments/file.html#direction", + "title": "File", + "section": "direction", + "text": "direction\nType: Direction\nDefault: Input\nMakes this argument an input or an output, as in does the file/folder needs to be read or written. input by default.\nExample:\n- name: --my_output_file\n type: file\n direction: output", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#example", + "href": "reference/config/functionality/arguments/file.html#example", + "title": "File", + "section": "example", + "text": "example\nType: Path / List of Path\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_file\n type: file\n example: data.csv", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#info", + "href": "reference/config/functionality/arguments/file.html#info", + "title": "File", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#multiple", + "href": "reference/config/functionality/arguments/file.html#multiple", + "title": "File", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_files\n type: file\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_files=firstFile.csv:anotherFile.csv:yetAnother.csv", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#multiple_sep", + "href": "reference/config/functionality/arguments/file.html#multiple_sep", + "title": "File", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: :\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_files\n type: file\n multiple: true\n multiple_sep: \",\"\nHere’s an example of how to use this:\nmy_component --my_files=firstFile.csv,anotherFile.csv,yetAnother.csv", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#must_exist", + "href": "reference/config/functionality/arguments/file.html#must_exist", + "title": "File", + "section": "must_exist", + "text": "must_exist\nType: Boolean\nDefault: True\nChecks whether the file or folder exists. For input files, this check will happen before the execution of the script, while for output files the check will happen afterwards.\nExample:\n- name: --my_file\n type: file\n must_exist: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#name", + "href": "reference/config/functionality/arguments/file.html#name", + "title": "File", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#required", + "href": "reference/config/functionality/arguments/file.html#required", + "title": "File", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_file\n type: file\n required: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/file.html#type", + "href": "reference/config/functionality/arguments/file.html#type", + "title": "File", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html", + "href": "reference/config/functionality/arguments/integer.html", + "title": "Integer", + "section": "", + "text": "An integer type argument has a numeric value without decimal points.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#alternatives", + "href": "reference/config/functionality/arguments/integer.html#alternatives", + "title": "Integer", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#choices", + "href": "reference/config/functionality/arguments/integer.html#choices", + "title": "Integer", + "section": "choices", + "text": "choices\nType: List of Int\nDefault: Empty\nLimit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.\nExample:\n- name: --values\n type: integer\n choices: [1024, 2048, 4096]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#default", + "href": "reference/config/functionality/arguments/integer.html#default", + "title": "Integer", + "section": "default", + "text": "default\nType: Int / List of Int\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_integer\n type: integer\n default: 100", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#description", + "href": "reference/config/functionality/arguments/integer.html#description", + "title": "Integer", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#example", + "href": "reference/config/functionality/arguments/integer.html#example", + "title": "Integer", + "section": "example", + "text": "example\nType: Int / List of Int\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_integer\n type: integer\n example: 100", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#info", + "href": "reference/config/functionality/arguments/integer.html#info", + "title": "Integer", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#max", + "href": "reference/config/functionality/arguments/integer.html#max", + "title": "Integer", + "section": "max", + "text": "max\nType: Int\nDefault: Empty\nMaximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.\nExample:\n- name: --my_integer\n type: integer\n max: 150", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#min", + "href": "reference/config/functionality/arguments/integer.html#min", + "title": "Integer", + "section": "min", + "text": "min\nType: Int\nDefault: Empty\nMinimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.\nExample:\n- name: --my_integer\n type: integer\n min: 50", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#multiple", + "href": "reference/config/functionality/arguments/integer.html#multiple", + "title": "Integer", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_integer\n type: integer\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_integer=10:80:152", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#multiple_sep", + "href": "reference/config/functionality/arguments/integer.html#multiple_sep", + "title": "Integer", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: :\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_integer\n type: integer\n multiple: true\n multiple_sep: \",\"\nHere’s an example of how to use this:\nmy_component --my_integer=10:80:152", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#name", + "href": "reference/config/functionality/arguments/integer.html#name", + "title": "Integer", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#required", + "href": "reference/config/functionality/arguments/integer.html#required", + "title": "Integer", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_integer\n type: integer\n required: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/integer.html#type", + "href": "reference/config/functionality/arguments/integer.html#type", + "title": "Integer", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html", + "href": "reference/config/functionality/arguments/double.html", + "title": "Double", + "section": "", + "text": "A double type argument has a numeric value with decimal points\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#alternatives", + "href": "reference/config/functionality/arguments/double.html#alternatives", + "title": "Double", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#default", + "href": "reference/config/functionality/arguments/double.html#default", + "title": "Double", + "section": "default", + "text": "default\nType: Double / List of Double\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_double\n type: double\n default: 5.8", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#description", + "href": "reference/config/functionality/arguments/double.html#description", + "title": "Double", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#example", + "href": "reference/config/functionality/arguments/double.html#example", + "title": "Double", + "section": "example", + "text": "example\nType: Double / List of Double\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_double\n type: double\n example: 5.8", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#info", + "href": "reference/config/functionality/arguments/double.html#info", + "title": "Double", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#max", + "href": "reference/config/functionality/arguments/double.html#max", + "title": "Double", + "section": "max", + "text": "max\nType: Double\nDefault: Empty\nMaximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.\nExample:\n- name: --my_double\n type: double\n max: 80.4", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#min", + "href": "reference/config/functionality/arguments/double.html#min", + "title": "Double", + "section": "min", + "text": "min\nType: Double\nDefault: Empty\nMinimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.\nExample:\n- name: --my_double\n type: double\n min: 25.5", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#multiple", + "href": "reference/config/functionality/arguments/double.html#multiple", + "title": "Double", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_double\n type: double\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_double=5.8:22.6:200.4", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#multiple_sep", + "href": "reference/config/functionality/arguments/double.html#multiple_sep", + "title": "Double", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: :\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_double\n type: double\n multiple: true\n multiple_sep: \",\"\nHere’s an example of how to use this:\nmy_component --my_double=5.8,22.6,200.4", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#name", + "href": "reference/config/functionality/arguments/double.html#name", + "title": "Double", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#required", + "href": "reference/config/functionality/arguments/double.html#required", + "title": "Double", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_double\n type: double\n required: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/double.html#type", + "href": "reference/config/functionality/arguments/double.html#type", + "title": "Double", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html", + "href": "reference/config/functionality/arguments/long.html", + "title": "Long", + "section": "", + "text": "An long type argument has a numeric value without decimal points.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#alternatives", + "href": "reference/config/functionality/arguments/long.html#alternatives", + "title": "Long", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#choices", + "href": "reference/config/functionality/arguments/long.html#choices", + "title": "Long", + "section": "choices", + "text": "choices\nType: List of Long\nDefault: Empty\nLimit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.\nExample:\n- name: --values\n type: long\n choices: [1024, 2048, 4096]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#default", + "href": "reference/config/functionality/arguments/long.html#default", + "title": "Long", + "section": "default", + "text": "default\nType: Long / List of Long\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_long\n type: long\n default: 100", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#description", + "href": "reference/config/functionality/arguments/long.html#description", + "title": "Long", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#example", + "href": "reference/config/functionality/arguments/long.html#example", + "title": "Long", + "section": "example", + "text": "example\nType: Long / List of Long\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_long\n type: long\n example: 100", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#info", + "href": "reference/config/functionality/arguments/long.html#info", + "title": "Long", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#max", + "href": "reference/config/functionality/arguments/long.html#max", + "title": "Long", + "section": "max", + "text": "max\nType: Long\nDefault: Empty\nMaximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.\nExample:\n- name: --my_long\n type: long\n max: 150", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#min", + "href": "reference/config/functionality/arguments/long.html#min", + "title": "Long", + "section": "min", + "text": "min\nType: Long\nDefault: Empty\nMinimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.\nExample:\n- name: --my_long\n type: long\n min: 50", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#multiple", + "href": "reference/config/functionality/arguments/long.html#multiple", + "title": "Long", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_long\n type: long\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_long=10:80:152", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#multiple_sep", + "href": "reference/config/functionality/arguments/long.html#multiple_sep", + "title": "Long", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: :\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_long\n type: long\n multiple: true\n multiple_sep: \",\"\nHere’s an example of how to use this:\nmy_component --my_long=10:80:152", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#name", + "href": "reference/config/functionality/arguments/long.html#name", + "title": "Long", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#required", + "href": "reference/config/functionality/arguments/long.html#required", + "title": "Long", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_long\n type: long\n required: true", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/arguments/long.html#type", + "href": "reference/config/functionality/arguments/long.html#type", + "title": "Long", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/repository.html", + "href": "reference/config/functionality/dependencies/repository.html", + "title": "Repository", + "section": "", + "text": "Specifies a repository where dependency components can be found." + }, + { + "objectID": "reference/config/functionality/dependencies/repositoryWithName.html", + "href": "reference/config/functionality/dependencies/repositoryWithName.html", + "title": "Repository With Name", + "section": "", + "text": "Specifies a repository where dependency components can be found." + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html", + "href": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html", + "title": "Viashhub Repository With Name", + "section": "", + "text": "A Viash-Hub repository where remote dependency components can be found.\nExamples:" + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#name", + "href": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#name", + "title": "Viashhub Repository With Name", + "section": "name", + "text": "name\nType: String\nThe identifier used to refer to this repository from dependencies." + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#path", + "href": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#path", + "title": "Viashhub Repository With Name", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components." + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#repo", + "href": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#repo", + "title": "Viashhub Repository With Name", + "section": "repo", + "text": "repo\nType: String\nThe name of the Viash-Hub repository.\nExample:\nrepo: openpipelines-bio/openpipeline" + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#tag", + "href": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#tag", + "title": "Viashhub Repository With Name", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash." + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#type", + "href": "reference/config/functionality/dependencies/viashhubRepositoryWithName.html#type", + "title": "Viashhub Repository With Name", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Viash-Hub repository." + }, + { + "objectID": "reference/config/functionality/dependencies/localRepository.html", + "href": "reference/config/functionality/dependencies/localRepository.html", + "title": "Local Repository", + "section": "", + "text": "Defines a locally present and available repository. This can be used to define components from the same code base as the current component. Alternatively, this can be used to refer to a code repository present on the local hard-drive instead of fetchable remotely, for example during development.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/localRepository.html#path", + "href": "reference/config/functionality/dependencies/localRepository.html#path", + "title": "Local Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/localRepository.html#tag", + "href": "reference/config/functionality/dependencies/localRepository.html#tag", + "title": "Local Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/localRepository.html#type", + "href": "reference/config/functionality/dependencies/localRepository.html#type", + "title": "Local Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a locally present and available repository.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html", + "href": "reference/config/functionality/dependencies/gitRepository.html", + "title": "Git Repository", + "section": "", + "text": "A Git repository where remote dependency components can be found.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html#path", + "href": "reference/config/functionality/dependencies/gitRepository.html#path", + "title": "Git Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html#tag", + "href": "reference/config/functionality/dependencies/gitRepository.html#tag", + "title": "Git Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html#type", + "href": "reference/config/functionality/dependencies/gitRepository.html#type", + "title": "Git Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Git repository.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html#uri", + "href": "reference/config/functionality/dependencies/gitRepository.html#uri", + "title": "Git Repository", + "section": "uri", + "text": "uri\nType: String\nThe URI of the Git repository.\nExample:\nuri: \"git+https://github.com/openpipelines-bio/openpipeline.git\"", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/index.html", + "href": "reference/config/functionality/dependencies/index.html", + "title": "Dependency", + "section": "", + "text": "Specifies a Viash component (script or executable) that should be made available for the code defined in the functionality. The dependency components are collected and copied to the output folder during the Viash build step.\nExamples:\nDefinition of dependency with a fully defined repository\nDefinition of a dependency with a repository using sugar syntax.\nDefinition of a dependency with a repository defined as ‘openpipelines-bio’ under .functionality.repositories.\nDefinition of a local dependency. This dependency is present in the current code base and will be built when viash ns build is run.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/index.html#alias", + "href": "reference/config/functionality/dependencies/index.html#alias", + "title": "Dependency", + "section": "alias", + "text": "alias\nType: String\nDefault: Empty\nAn alternative name for the dependency component. This can include a namespace if so needed.\nExample:\nalias: my_alias", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/index.html#name", + "href": "reference/config/functionality/dependencies/index.html#name", + "title": "Dependency", + "section": "name", + "text": "name\nType: String\nThe full name of the dependency component. This should include the namespace.\nExample:\nname: \"my_namespace\"component", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/index.html#repository", + "href": "reference/config/functionality/dependencies/index.html#repository", + "title": "Dependency", + "section": "repository", + "text": "repository\nType: Either - String - Repository\nDefault: Empty\nSpecifies the repository location where the dependency component can be found. This must either be a full definition of the repository or the name of a repository referenced as it is defined under functionality.repositories. Additionally, the full definition can be specified as a single string where all parameters such as repository type, url, branch or tag are specified. Omitting the value sets the dependency as a local dependency, ie. the dependency is available in the same namespace as the component.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency" + ] + }, + { + "objectID": "reference/config/functionality/resources/plainFile.html", + "href": "reference/config/functionality/resources/plainFile.html", + "title": "Plain File", + "section": "", + "text": "A plain file. This can only be used as a supporting resource for the main script or unit tests.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/functionality/resources/plainFile.html#dest", + "href": "reference/config/functionality/resources/plainFile.html#dest", + "title": "Plain File", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/functionality/resources/plainFile.html#is_executable", + "href": "reference/config/functionality/resources/plainFile.html#is_executable", + "title": "Plain File", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/functionality/resources/plainFile.html#path", + "href": "reference/config/functionality/resources/plainFile.html#path", + "title": "Plain File", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/functionality/resources/plainFile.html#text", + "href": "reference/config/functionality/resources/plainFile.html#text", + "title": "Plain File", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/functionality/resources/plainFile.html#type", + "href": "reference/config/functionality/resources/plainFile.html#type", + "title": "Plain File", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a plain file.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/functionality/resources/bashScript.html", + "href": "reference/config/functionality/resources/bashScript.html", + "title": "Bash Script", + "section": "", + "text": "An executable Bash script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/bashScript.html#dest", + "href": "reference/config/functionality/resources/bashScript.html#dest", + "title": "Bash Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/bashScript.html#is_executable", + "href": "reference/config/functionality/resources/bashScript.html#is_executable", + "title": "Bash Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/bashScript.html#path", + "href": "reference/config/functionality/resources/bashScript.html#path", + "title": "Bash Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/bashScript.html#text", + "href": "reference/config/functionality/resources/bashScript.html#text", + "title": "Bash Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/bashScript.html#type", + "href": "reference/config/functionality/resources/bashScript.html#type", + "title": "Bash Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a Bash script.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/pythonScript.html", + "href": "reference/config/functionality/resources/pythonScript.html", + "title": "Python Script", + "section": "", + "text": "An executable Python script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/pythonScript.html#dest", + "href": "reference/config/functionality/resources/pythonScript.html#dest", + "title": "Python Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/pythonScript.html#is_executable", + "href": "reference/config/functionality/resources/pythonScript.html#is_executable", + "title": "Python Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/pythonScript.html#path", + "href": "reference/config/functionality/resources/pythonScript.html#path", + "title": "Python Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/pythonScript.html#text", + "href": "reference/config/functionality/resources/pythonScript.html#text", + "title": "Python Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/pythonScript.html#type", + "href": "reference/config/functionality/resources/pythonScript.html#type", + "title": "Python Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a Python script.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/cSharpScript.html", + "href": "reference/config/functionality/resources/cSharpScript.html", + "title": "C# Script", + "section": "", + "text": "An executable C# script. When defined in functionality.resources, only the first entry will be executed when running the built component or when running viash run. When defined in functionality.test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/cSharpScript.html#dest", + "href": "reference/config/functionality/resources/cSharpScript.html#dest", + "title": "C# Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/cSharpScript.html#is_executable", + "href": "reference/config/functionality/resources/cSharpScript.html#is_executable", + "title": "C# Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/cSharpScript.html#path", + "href": "reference/config/functionality/resources/cSharpScript.html#path", + "title": "C# Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/cSharpScript.html#text", + "href": "reference/config/functionality/resources/cSharpScript.html#text", + "title": "C# Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/cSharpScript.html#type", + "href": "reference/config/functionality/resources/cSharpScript.html#type", + "title": "C# Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a C# script.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/functionality/resources/index.html", + "href": "reference/config/functionality/resources/index.html", + "title": "Resource", + "section": "", + "text": "Resources are files that support the component. The first resource should be a script that will be executed when the functionality is run. Additional resources will be copied to the same directory.\nCommon properties:\n\ntype: file / r_script / python_script / bash_script / javascript_script / scala_script / csharp_script, specifies the type of the resource. The first resource cannot be of type file. When the type is not specified, the default type is simply file.\ndest: filename, the resulting name of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.\npath: path/to/file, the path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.\ntext: …multiline text…, the content of the resulting file specified as a string. Mutually exclusive with path.\nis_executable: true / false, whether the resulting resource file should be made executable.\n\nExample:\nresources:\n - type: r_script\n path: script.R\n - type: file\n path: resource1.txt", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Resource" + ] + }, + { + "objectID": "reference/config/environmentVariables.html", + "href": "reference/config/environmentVariables.html", + "title": "Environment Variables", + "section": "", + "text": "Viash checks several environment variables during operation.", + "crumbs": [ + "Reference", + "Config", + "Environment Variables" + ] + }, + { + "objectID": "reference/config/environmentVariables.html#viash_home", + "href": "reference/config/environmentVariables.html#viash_home", + "title": "Environment Variables", + "section": "VIASH_HOME", + "text": "VIASH_HOME\nType: String\nIf VIASH_HOME is not defined, the fallback HOME/.viash is used.\nLocation where specific downloaded versions of Viash will be cached and run from.", + "crumbs": [ + "Reference", + "Config", + "Environment Variables" + ] + }, + { + "objectID": "reference/config/environmentVariables.html#viash_version", + "href": "reference/config/environmentVariables.html#viash_version", + "title": "Environment Variables", + "section": "VIASH_VERSION", + "text": "VIASH_VERSION\nType: String\nDefault: Empty\nA specific Viash version can be set to run the commands with. If so required, the specific Viash version will be downloaded. This is useful when replicating older results or building Viash components that use outdated code.\nExample:\nVIASH_VERSION=0.7.0 viash ns build", + "crumbs": [ + "Reference", + "Config", + "Environment Variables" + ] + }, + { + "objectID": "reference/project/index.html", + "href": "reference/project/index.html", + "title": "Project", + "section": "", + "text": "A Viash project configuration file. It’s name should be _viash.yaml.\nExample:", + "crumbs": [ + "Reference", + "Project" + ] + }, + { + "objectID": "reference/project/index.html#config_mods", + "href": "reference/project/index.html#config_mods", + "title": "Project", + "section": "config_mods", + "text": "config_mods\nType: String / List of String\nDefault: Empty\nWhich config mods to apply.\nExample:\nconfig_mods: \".functionality.name := 'foo'\"", + "crumbs": [ + "Reference", + "Project" + ] + }, + { + "objectID": "reference/project/index.html#source", + "href": "reference/project/index.html#source", + "title": "Project", + "section": "source", + "text": "source\nType: String\nDefault: Empty\nWhich source directory to use for the viash ns commands.\nExample:\nsource: src", + "crumbs": [ + "Reference", + "Project" + ] + }, + { + "objectID": "reference/project/index.html#target", + "href": "reference/project/index.html#target", + "title": "Project", + "section": "target", + "text": "target\nType: String\nDefault: Empty\nWhich target directory to use for viash ns build.\nExample:\ntarget: target", + "crumbs": [ + "Reference", + "Project" + ] + }, + { + "objectID": "reference/project/index.html#viash_version", + "href": "reference/project/index.html#viash_version", + "title": "Project", + "section": "viash_version", + "text": "viash_version\nType: String\nDefault: Empty\nWhich version of Viash to use.\nExample:\nviash_versions: 0.6.4", + "crumbs": [ + "Reference", + "Project" + ] + }, + { + "objectID": "reference/cli/ns_list.html", + "href": "reference/cli/ns_list.html", + "title": "Viash Ns List", + "section": "", + "text": "List a namespace containing many viash config files.\nUsage:\nviash ns list [-n nmspc] [-s src] [-p docker]\n\n\n\nArgument\nDescription\nType\n\n\n\n\n--config_mod, -c\nModify a viash config at runtime using dynamic config modding.\nList[String]\n\n\n--format, -f\nWhich output format to use.\nString\n\n\n--parallel, -l\nWhether or not to run the process in parallel.\nBoolean\n\n\n--parse_argument_groups\nWhether or not to postprocess each component’s argument groups.\nBoolean\n\n\n--platform, -p\nActs as a regular expression to filter the platform ids specified in the found config files. If this is not provided, all platforms will be used. If no platforms are defined in a config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.\nString\n\n\n--query, -q\nFilter which components get selected by component and namespace name. Can be a regex. Example: “^mynamespace/component1$”.\nString\n\n\n--query_name\nFilter which components get selected by component name. Can be a regex. Example: “^component1”.\nString\n\n\n--query_namespace, -n\nFilter which namespaces get selected by namespace name. Can be a regex. Example: “^mynamespace$”.\nString\n\n\n--src, -s\nA source directory containing viash config files, possibly structured in a hierarchical folder structure. Default: src/.\nString\n\n\n--help, -h\nShow help message", + "crumbs": [ + "Reference", + "CLI", + "Viash Ns List" + ] + }, + { + "objectID": "reference/cli/config_inject.html", + "href": "reference/cli/config_inject.html", + "title": "Viash Config Inject", + "section": "", + "text": "Inject a Viash header into the main script of a Viash component.\nUsage:\nviash config inject config.vsh.yaml\n\n\n\nArgument\nDescription\nType\n\n\n\n\nconfig\nA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.\nString\n\n\n--config_mod, -c\nModify a viash config at runtime using dynamic config modding.\nList[String]\n\n\n--platform, -p\nSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.\nString\n\n\n--help, -h\nShow help message", + "crumbs": [ + "Reference", + "CLI", + "Viash Config Inject" + ] + }, + { + "objectID": "reference/cli/build.html", + "href": "reference/cli/build.html", + "title": "Viash Build", + "section": "", + "text": "Build an executable from the provided viash config file.\nUsage:\nviash build config.vsh.yaml -o output [-p docker] [-m] [-s]\n\n\n\nArgument\nDescription\nType\n\n\n\n\nconfig\nA viash config file (example: config.vsh.yaml). This argument can also be a script with the config as a header. This is a required argument.\nString\n\n\n--config_mod, -c\nModify a viash config at runtime using dynamic config modding.\nList[String]\n\n\n--output, -o\nPath to directory in which the executable and any resources is built to. Default: “output/”. This is a required argument.\nString\n\n\n--platform, -p\nSpecifies which platform amongst those specified in the config to use. If this is not provided, the first platform will be used. If no platforms are defined in the config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.\nString\n\n\n--push\nWhether or not to push the container to a Docker registry [Docker Platform only].\nBoolean\n\n\n--setup, -s\nWhich setup strategy for creating the container to use [Docker Platform only].\nString\n\n\n--help, -h\nShow help message", + "crumbs": [ + "Reference", + "CLI", + "Viash Build" + ] + }, + { + "objectID": "reference/cli/ns_test.html", + "href": "reference/cli/ns_test.html", + "title": "Viash Ns Test", + "section": "", + "text": "Test a namespace containing many viash config files.\nUsage:\nviash ns test [-n nmspc] [-s src] [-p docker] [--parallel] [--tsv file.tsv] [--setup cachedbuild] [--append]\n\n\n\nArgument\nDescription\nType\n\n\n\n\n--append, -a\nAppend to tsv instead of overwrite\nBoolean\n\n\n--config_mod, -c\nModify a viash config at runtime using dynamic config modding.\nList[String]\n\n\n--cpus\nThe maximum number of (logical) cpus a component is allowed to use.\nInt\n\n\n--keep, -k\nWhether or not to keep temporary files. By default, files will be deleted if all goes well but remain when an error occurs. By specifying –keep true, the temporary files will always be retained, whereas –keep false will always delete them. The temporary directory can be overwritten by setting defining a VIASH_TEMP directory.\nString\n\n\n--memory\nThe maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.\nString\n\n\n--parallel, -l\nWhether or not to run the process in parallel.\nBoolean\n\n\n--platform, -p\nActs as a regular expression to filter the platform ids specified in the found config files. If this is not provided, all platforms will be used. If no platforms are defined in a config, the native platform will be used. In addition, the path to a platform yaml file can also be specified.\nString\n\n\n--query, -q\nFilter which components get selected by component and namespace name. Can be a regex. Example: “^mynamespace/component1$”.\nString\n\n\n--query_name\nFilter which components get selected by component name. Can be a regex. Example: “^component1”.\nString\n\n\n--query_namespace, -n\nFilter which namespaces get selected by namespace name. Can be a regex. Example: “^mynamespace$”.\nString\n\n\n--setup\nWhich setup strategy for creating the container to use [Docker Platform only].\nString\n\n\n--src, -s\nA source directory containing viash config files, possibly structured in a hierarchical folder structure. Default: src/.\nString\n\n\n--tsv, -t\nPath to write a summary of the test results to.\nString\n\n\n--help, -h\nShow help message", + "crumbs": [ + "Reference", + "CLI", + "Viash Ns Test" + ] + }, + { + "objectID": "reference/cli/index.html", + "href": "reference/cli/index.html", + "title": "CLI", + "section": "", + "text": "These are the available commands available on the Command Line Interface:\n\n\n\n \n Viash Build: \n \n\n \n Viash Config Inject: \n \n\n \n Viash Config View: \n \n\n \n Viash Ns Build: \n \n\n \n Viash Ns Exec: \n \n\n \n Viash Ns List: \n \n\n \n Viash Ns Test: \n \n\n \n Viash Run: \n \n\n \n Viash Test: \n \n\n\n\nNo matching items", + "crumbs": [ + "Reference", + "CLI" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-and-use-a-module.html", + "href": "guide/nextflow_vdsl3/create-and-use-a-module.html", + "title": "Create and use a module", + "section": "", + "text": "Creating a VDSL3 module is as simple as adding { type: nextflow } to the platforms section in the Viash config. Luckily, our previous example already contained such an entry:", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create and use a module" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-and-use-a-module.html#generate-module", + "href": "guide/nextflow_vdsl3/create-and-use-a-module.html#generate-module", + "title": "Create and use a module", + "section": "Generating a VDSL3 module", + "text": "Generating a VDSL3 module\nWe will now turn the Viash component into a VDSL3 module. By default, the viash build command will select the first platform in the list of platforms. To select the nextflow platform, use the --platform nextflow argument, or -p nextflow for short.\n\nviash build config.vsh.yaml -o target -p nextflow\n\nThis will generate a Nextflow module in the target/ directory:\n\ntree target\n\ntarget\n├── main.nf\n└── nextflow.config\n\n1 directory, 2 files\n\n\nThis main.nf file is both a standalone Nextflow pipeline and a module which can be imported as part of another pipeline.\n\n\n\n\n\n\nTip\n\n\n\nIn larger projects it’s recommended to use the viash ns build command to build all of the components in one go. Give it a try!", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create and use a module" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-and-use-a-module.html#run-module", + "href": "guide/nextflow_vdsl3/create-and-use-a-module.html#run-module", + "title": "Create and use a module", + "section": "Running a module as a standalone pipeline", + "text": "Running a module as a standalone pipeline\nUnlike typical Nextflow modules, VDSL3 modules can actually be used as a standalone pipeline.\nTo run a VDSL3 module as a standalone pipeline, you need to specify the input parameters and a --publish_dir parameter, as Nextflow will automatically choose the parameter names of the output files.\nYou can run the executable by providing a value for --input and --publish_dir:\n\nnextflow run target/main.nf --input config.vsh.yaml --publish_dir output/\n\nN E X T F L O W ~ version 23.04.1\nLaunching `target/main.nf` [elegant_pesquet] DSL2 - revision: af32cbce19\nexecutor > local (1)\n[f9/015717] process > example_bash:processWf:exam... [ 0%] 0 of 1\n[- ] process > example_bash:publishStatesS... -\n\nexecutor > local (2)\n[f9/015717] process > example_bash:processWf:exam... [100%] 1 of 1 ✔\n[cc/55d9c1] process > example_bash:publishStatesS... [100%] 1 of 1 ✔\n\n\nThis results in the following output:\n\ntree output\n\noutput\n├── run.example_bash.output.txt\n└── run.example_bash.state.yaml\n\n1 directory, 2 files\n\n\nThe pipeline help can be shown by passing the --help parameter (Output not shown).\nnextflow run target/main.nf --help", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create and use a module" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-and-use-a-module.html#param-list", + "href": "guide/nextflow_vdsl3/create-and-use-a-module.html#param-list", + "title": "Create and use a module", + "section": "Passing a parameter list", + "text": "Passing a parameter list\nEvery VDSL3 can accept a list of parameters to populate a Nextflow channel with.\nFor example, we create a set of input files which we want to process in parallel.\n\ntouch sample1.txt sample2.txt sample3.txt sample4.txt\n\nNext, we create a YAML file param_list.yaml containing an id and an input value for each parameter entry.\n- id: sample1\n input: /tmp/RtmpdVNoe5/create-a-module59444c772986/bash/sample1.txt\n- id: sample2\n input: /tmp/RtmpdVNoe5/create-a-module59444c772986/bash/sample2.txt\n- id: sample3\n input: /tmp/RtmpdVNoe5/create-a-module59444c772986/bash/sample3.txt\n- id: sample4\n input: /tmp/RtmpdVNoe5/create-a-module59444c772986/bash/sample4.txt\nYou can run the pipeline on the list of parameters using the --param_list parameter.\n\nnextflow run target/main.nf --param_list param_list.yaml --publish_dir output2\n\nN E X T F L O W ~ version 23.04.1\nLaunching `target/main.nf` [reverent_gilbert] DSL2 - revision: af32cbce19\n[- ] process > example_bash:processWf:exam... -\n[- ] process > example_bash:publishStatesS... -\n\nexecutor > local (8)\n[2e/baa859] process > example_bash:processWf:exam... [100%] 4 of 4 ✔\n[ba/85f3e7] process > example_bash:publishStatesS... [100%] 4 of 4 ✔\n\n\nThis results in the following outputs:\n\ntree output2\n\noutput2\n├── sample1.example_bash.output.txt\n├── sample1.example_bash.state.yaml\n├── sample2.example_bash.output.txt\n├── sample2.example_bash.state.yaml\n├── sample3.example_bash.output.txt\n├── sample3.example_bash.state.yaml\n├── sample4.example_bash.output.txt\n└── sample4.example_bash.state.yaml\n\n1 directory, 8 files\n\n\n\n\n\n\n\n\nTip\n\n\n\nInstead of a YAML, you can also pass a JSON or a CSV to the --param_list parameter.", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create and use a module" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-and-use-a-module.html#include-module", + "href": "guide/nextflow_vdsl3/create-and-use-a-module.html#include-module", + "title": "Create and use a module", + "section": "Module as part of a pipeline", + "text": "Module as part of a pipeline\nThis module can also be used as part of a Nextflow pipeline. Below is a short preview of what this looks like.\ninclude { mymodule1 } from 'target/nextflow/mymodule1/main.nf'\ninclude { mymodule2 } from 'target/nextflow/mymodule2/main.nf'\n\nworkflow {\n Channel.fromList([\n [\n // a unique identifier for this tuple\n \"myid\", \n // the state for this tuple\n [\n input: file(\"in.txt\"),\n module1_k: 10,\n module2_k: 4\n ]\n ]\n ])\n | mymodule1.run(\n // use a hashmap to define which part of the state is used to run mymodule1\n fromState: [\n input: \"input\",\n k: \"module1_k\"\n ],\n // use a hashmap to define how the output of mymodule1 is stored back into the state\n toState: [\n module1_output: \"output\"\n ]\n )\n | mymodule2.run(\n // use a closure to define which data is used to run mymodule2\n fromState: { id, state -> \n [\n input: state.module1_output,\n k: state.module2_k\n ]\n },\n // use a closure to return only the output of module2 as a new state\n toState: { id, output, state ->\n output\n },\n auto: [\n publish: true\n ]\n )\n}\nWe will discuss building pipelines with VDSL3 modules in more detail in Create a pipeline.", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create and use a module" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html", + "title": "Create a pipeline", + "section": "", + "text": "This guide explains how to create an example pipeline that’s closer to a typical use-case of a Nextflow bioinformatics pipeline.\nPlease review the VDSL3 principles section for the necessary background.", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#get-the-template-project", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#get-the-template-project", + "title": "Create a pipeline", + "section": "Get the template project", + "text": "Get the template project\nTo get started with building a pipeline, we provide a template project which already contains a few components. First create a new repository by clicking the “Use this template” button in the viash_project_template repository or clicking the button below.\nUse project template\nThen clone the repository using the following command.\ngit clone https://github.com/youruser/my_first_pipeline.git\nThe pipeline contains three components and uses two utility components from vsh_utils with which we will build the following pipeline:\n\n\n\n\n\ngraph TD\n A(file?.tsv) --> X[vsh_flatten] \n X --file1.tsv--> B1[/remove_comments/] --> C1[/take_column/] --> Y\n X --file2.tsv--> B2[/remove_comments/] --> C2[/take_column/] --> Y\n Y[vsh_toList] --> D[/combine_columns/]\n D --> E(output)\n\n\n\n\n\n\n\nvsh_flatten is a component to transform a Channel event containing multiple files (in this case using a glob ?) into multiple Channel events each containing one file to operate on. It is a Viash-compatible version of the Nextflow flatten operator.\nremove_comments is a Bash script which removes all lines starting with a # from a file.\ntake_column is a Python script which extracts one of the columns in a TSV file.\nvsh_toList is a component/module that does the oposite as vsh_flatten: turn multiple Channel items into one Channel item containing a list.\ncombine_columns is an R script which combines multiple files into a TSV.", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#build-the-vdsl3-modules-and-workflow", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#build-the-vdsl3-modules-and-workflow", + "title": "Create a pipeline", + "section": "Build the VDSL3 modules and workflow", + "text": "Build the VDSL3 modules and workflow\nFirst, we need to build the components into VDSL3 modules. Since Viash version 0.8.x this includes the workflows and subworkflows themselves as well since they are (or better /can/ be) stored under src and built to target/.\n\nviash ns build --setup cachedbuild --parallel\n\ntemporaryFolder: /tmp/viash_hub_repo9316888928173929954 uri: https://viash-hub.com/data-intuitive/vsh-pipeline-operators.git\nCloning into '.'...\ncheckout out: List(git, checkout, tags/v0.2.0, --, .) 0 \nExporting combine_columns (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/combine_columns\nExporting workflow (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/workflow\nExporting remove_comments (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/remove_comments\nExporting take_column (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/take_column\nExporting combine_columns (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/combine_columns\nExporting remove_comments (template) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/template/remove_comments\nExporting take_column (template) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/template/take_column\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/take_column:0.2.3' with Dockerfile\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/remove_comments:0.2.3' with Dockerfile\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/template/combine_columns:0.2.3' with Dockerfile\nAll 7 configs built successfully\n\n\nFor more information about the --setup and --parallel arguments, please refer to the reference section.\nThe output of viash ns build tells us that\n\ntwo dependencies are fetched (from Viash Hub)\nthe locally defined components are built into Nextflow modules\nthe locally defined worfklow template/workflow is built (see later)\ncontainers are built for the local modules\n\nOnce viash ns build is finished, a new target directory has been created containing the executables and modules grouped per platform:\n\ntree target\n\ntarget\n├── dependencies\n│   └── vsh\n│   └── data-intuitive\n│   └── vsh-pipeline-operators\n│   └── v0.2.0\n│   └── nextflow\n│   └── join\n│   └── vsh_toList\n│   ├── main.nf\n│   └── nextflow.config\n├── docker\n│   └── template\n│   ├── combine_columns\n│   │   └── combine_columns\n│   ├── remove_comments\n│   │   └── remove_comments\n│   └── take_column\n│   └── take_column\n└── nextflow\n └── template\n ├── combine_columns\n │   ├── main.nf\n │   └── nextflow.config\n ├── remove_comments\n │   ├── main.nf\n │   └── nextflow.config\n ├── take_column\n │   ├── main.nf\n │   └── nextflow.config\n └── workflow\n ├── main.nf\n └── nextflow.config\n\n20 directories, 13 files", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#import-a-vdsl3-module", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#import-a-vdsl3-module", + "title": "Create a pipeline", + "section": "Import a VDSL3 module", + "text": "Import a VDSL3 module\n\nViash version 0.8 and beyond\n\n\n\n\n\n\nNote\n\n\n\nThis functionality is available since Viash version 0.8.x and assumes the workflow code is encoded as a Viash component with a corresponding config.vsh.yaml config file.\n\n\nIn order to use a module or subworkflow one simply has to add the module (either local or remote) to the dependencies slot in the Viash config file, for example:\nfunctionality:\n dependencies: \n - name: template/combine_columns\n repository: local\n\n repositories:\n - name: local\n type: local\nAfter that, the module will be included automatically during the Viash build stage. For more information, please refer to the reference.\n\n\nAll Viash versions\nAs illustrated by the tree output above, a module can be included by pointing to its location. This approach can be used for any Nextflow module (that exposes a compatible API):\ninclude { remove_comments } from \"./target/nextflow/template/remove_comments/main.nf\"", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#create-a-pipeline", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#create-a-pipeline", + "title": "Create a pipeline", + "section": "Create a pipeline", + "text": "Create a pipeline\n\nAll Viash versions\nWe can use a module in a conventional Nextflow pipeline which takes two input files (file1 and file2) and removes the lines that contain comments (lines starting with #) from those files:\ninclude { remove_comments } from \"./target/nextflow/template/remove_comments/main.nf\"\n\nworkflow {\n\n // Create a channel with two events\n // Each event contains a string (an identifier) and a file (input)\n Channel.fromList([\n [\"file1\", [ input: file(\"resources_test/file1.tsv\") ] ],\n [\"file2\", [ input: file(\"resources_test/file2.tsv\") ] ]\n ])\n\n // View channel contents\n | view { tup -> \"Input: $tup\" }\n \n // Process the input file using the 'remove_comments' module.\n // This removes comment lines from the input TSV.\n | remove_comments.run(\n directives: [\n publishDir: \"output/\"\n ]\n )\n\n // View channel contents\n | view { tup -> \"Output: $tup\" }\n}\nIn plain English, the workflow works as follows:\n\nCreate a Channel with 2 items, corresponding to 2 input files.\nSpecify the respective input files as corresponding to the --input argument: [ input: ... ].\nAdd a view operation for introspection of the Channel\nRun the remove_comments step and publish the results to output/. No additional fromState and toState arguments are specified because the defaults suffice.\nOne more view to show the resulting processed Channel items.\n\nWe point the reader to the VDSL3 principles section for more information about how data flow (aka state) is management in a VDSL3 workflow.\n\n\nPipeline as a component\nThe run() function is a unique feature for every VDSL3 module which allows dynamically altering the behaviour of a module from within the pipeline. For example, we use it to set the publishDir directive to \"output/\" so the output of that step in the pipeline will be stored as output.\n\n\n\n\n\n\nNote\n\n\n\nThis functionality is available since Viash version 0.8.x.\n\n\nWe can do the same but this time encoding the pipeline as a Viash compoment itself:\nworkflow run_wf {\n take:\n input_ch\n\n main:\n\n output_ch = \n\n // Create a channel with two events\n // Each event contains a string (an identifier) and a file (input)\n Channel.fromList([\n [\"file1\", [ input: file(\"resources_test/file1.tsv\") ] ],\n [\"file2\", [ input: file(\"resources_test/file2.tsv\") ] ]\n ])\n\n // View channel contents\n | view { tup -> \"Input: $tup\" }\n \n // Process the input file using the 'remove_comments' module.\n // This removes comment lines from the input TSV.\n | remove_comments\n\n // View channel contents\n | view { tup -> \"Output: $tup\" }\n\n emit:\n output_ch\n | map{ id, state -> [ \"run\", state ] }\n}\nTogether with a config file like this one:\nfunctionality:\n name: test\n namespace: template\n description: |\n An example pipeline and project template.\n\n arguments:\n - name: \"--output\"\n alternatives: [ \"-o\" ]\n type: file\n direction: output\n required: true\n description: Output TSV file\n example: output.tsv\n\n resources:\n - type: nextflow_script\n path: main.nf\n entrypoint: run_wf\n\n dependencies: \n - name: template/remove_comments\n repository: local\n\n repositories:\n - name: local\n type: local\n\nplatforms:\n - type: nextflow", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#run-the-pipeline", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#run-the-pipeline", + "title": "Create a pipeline", + "section": "Run the pipeline", + "text": "Run the pipeline\nNow run the pipeline with Nextflow:\n\nnextflow run . \\\n -main-script main.nf\n\nN E X T F L O W ~ version 23.04.1\nLaunching `main.nf` [tiny_lamarck] DSL2 - revision: dc137fbfcf\n[- ] process > remove_comments:processWf:remove_comments_process -\nInput: [file1, [input:/home/hendrik/DI/viash_website/guide/_viash_project_template/resources_test/file1.tsv]]\nInput: [file2, [input:/home/hendrik/DI/viash_website/guide/_viash_project_template/resources_test/file2.tsv]]\n\nexecutor > local (2)\n[67/6ae865] process > remove_comments:processWf:remove_comments_process (file1) [100%] 2 of 2 ✔\nInput: [file1, [input:/home/hendrik/DI/viash_website/guide/_viash_project_template/resources_test/file1.tsv]]\nInput: [file2, [input:/home/hendrik/DI/viash_website/guide/_viash_project_template/resources_test/file2.tsv]]\nOutput: [file2, [output:/home/hendrik/DI/viash_website/guide/_viash_project_template/work/db/b25365216c63755f29c329549dc621/file2.remove_comments.output.tsv]]\nOutput: [file1, [output:/home/hendrik/DI/viash_website/guide/_viash_project_template/work/67/6ae86546ce49a51b6b9a07064adc9e/file1.remove_comments.output.tsv]]\n\n\n\n\nOn the example data:\n\n\ncat resources_test/file?.tsv\n\n# this is a header \n# this is also a header \none 0.11 123\ntwo 0.23 456\nthree 0.35 789\nfour 0.47 123\n# this is not a header\n# just kidding yes it is\neins 0.111 234\nzwei 0.222 234\ndrei 0.333 123\nvier 0.444 123\n\n\n\nThis results in the following output:\n\ntree output\n\noutput\n├── file1.remove_comments.output.tsv -> /home/hendrik/DI/viash_website/guide/_viash_project_template/work/67/6ae86546ce49a51b6b9a07064adc9e/file1.remove_comments.output.tsv\n├── file2.remove_comments.output.tsv -> /home/hendrik/DI/viash_website/guide/_viash_project_template/work/db/b25365216c63755f29c329549dc621/file2.remove_comments.output.tsv\n├── run.combine_columns.output\n├── run.workflow.output.tsv\n└── run.workflow.state.yaml\n\n1 directory, 5 files\n\n\n\ncat output/*\n\none 0.11 123\ntwo 0.23 456\nthree 0.35 789\nfour 0.47 123\neins 0.111 234\nzwei 0.222 234\ndrei 0.333 123\nvier 0.444 123\n\"1\" 0.11\n\"2\" 0.23\n\"3\" 0.35\n\"4\" 0.47\n\"1\" 0.11\n\"2\" 0.23\n\"3\" 0.35\n\"4\" 0.47\nid: run\noutput: !file run.workflow.output.tsv", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#discussion", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#discussion", + "title": "Create a pipeline", + "section": "Discussion", + "text": "Discussion\nThe above example pipeline serves as the backbone for creating real-life pipelines. However, for the sake of simplicity it contained several hardcoded elements that should be avoided:\n\nInput parameters should be provided as an argument to the pipeline or as part of the pipeline configuration\nThe output directory should be specified as an argument to the pipeline\n\nAs illustrated earlier these come for free when encoding the workflow as a Viash component. One even gets parameter checks with it!", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/component/use-helper-functions.html", + "href": "guide/component/use-helper-functions.html", + "title": "Use helper functions", + "section": "", + "text": "This documentation will walk you through the process of importing and using functions defined in an external file in your Viash component.\nThis can be useful for organizing and reusing code across multiple components or even within a single component.\nWe’ll cover the steps to set up the external file, import the functions, and use them within your Viash component. By the end of this guide, you’ll have a better understanding of how to leverage external files to improve your Viash development workflow.", + "crumbs": [ + "Guide", + "Component", + "Use helper functions" + ] + }, + { + "objectID": "guide/component/use-helper-functions.html#create-helper-script", + "href": "guide/component/use-helper-functions.html#create-helper-script", + "title": "Use helper functions", + "section": "Create helper script", + "text": "Create helper script\nWhen you want to reuse a function multiple times, it might make sense to store them in a separate file. For example, your helper file could contain the following helper function:\n\nBashC#JavaScriptPythonRScala\n\n\nfunction copy_file {\n echo \"Copying '$1' to '$2'.\"\n cp -r \"$1\" \"$2\"\n}\n\n\n// No example available yet.\n\n\nconst fs = require('fs');\n\nfunction copy_file(source, dest) {\n console.log(`Copying '${source}' to '${dest}'`)\n fs.copyFile(source, dest, (err) => {\n if (err) throw err;\n });\n}\n\nmodule.exports = {\n copy_file\n}\n\n\nimport shutil\n\ndef copy_file(source, dest):\n print(f\"Copying '{source}' to '{dest}'.\")\n shutil.copyfile(source, dest)\n\n\ncopy_file <- function(source, dest) {\n cat(\"Copying '\", source, \"' to '\", dest, \"'.\\n\", sep = \"\")\n file.copy(source, dest)\n}\n\n\n// No example available yet.", + "crumbs": [ + "Guide", + "Component", + "Use helper functions" + ] + }, + { + "objectID": "guide/component/use-helper-functions.html#add-resource-to-component", + "href": "guide/component/use-helper-functions.html#add-resource-to-component", + "title": "Use helper functions", + "section": "Add resource to component", + "text": "Add resource to component\nTo add a helper script as an external resource in a Viash component, you can use the resources section of the component’s config file. Not only does your resources section contain the main script, but it’s also used to specify external resources such as helper scripts and other files that the component needs to function.\nHere is an example of what the config file might look after adding the helper script:\n\nBashC#JavaScriptPythonRScala\n\n\nfunctionality:\n name: example_bash\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: bash_script\n path: script.sh\n - path: helper.sh\nplatforms:\n - type: docker\n image: bash:4.0\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_csharp\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: csharp_script\n path: script.csx\n - path: helper.csx\nplatforms:\n - type: docker\n image: ghcr.io/data-intuitive/dotnet-script:1.3.1\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_js\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: javascript_script\n path: script.js\n - path: helper.js\nplatforms:\n - type: docker\n image: node:19-bullseye-slim\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_python\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: python_script\n path: script.py\n - path: helper.py\nplatforms:\n - type: docker\n image: python:3.10-slim\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_r\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: r_script\n path: script.R\n - path: helper.R\nplatforms:\n - type: docker\n image: eddelbuettel/r2u:22.04\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_scala\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: scala_script\n path: script.scala\n - path: helper.scala\nplatforms:\n - type: docker\n image: sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10\n - type: native\n - type: nextflow", + "crumbs": [ + "Guide", + "Component", + "Use helper functions" + ] + }, + { + "objectID": "guide/component/use-helper-functions.html#import-helper-functions", + "href": "guide/component/use-helper-functions.html#import-helper-functions", + "title": "Use helper functions", + "section": "Import helper functions", + "text": "Import helper functions\nFinally, you need to import the helper functions in your script. The procedure will differ depending on the scripting language used. Below is an example of what the main script might look like after importing the helper file.\n\nBashC#JavaScriptPythonRScala\n\n\n#!/bin/bash\n\n## VIASH START\npar_input=path/to/file.txt\npar_output=output.txt\n## VIASH END\n\n# view resource file\nsource \"$meta_resources_dir/helper.sh\"\n\n# copy file\ncopy_file \"$par_input\" \"$par_output\"\n\n\n// No example available yet.\n\n\n// VIASH START\nlet par = {\n 'input': 'path/to/file.txt',\n 'output': 'output.txt'\n};\n// VIASH END\n\n// import helper function\nconst helper = require(`${meta['resources_dir']}/helper.js`);\n\n// copy file\nhelper.copy_file(par['input'], par['output'])\n\n\nimport sys\n\n## VIASH START\npar = {\n 'input': 'file.txt',\n 'output': 'output.txt'\n}\n## VIASH END\n\n# import helper function\nsys.path.append(meta['resources_dir'])\nfrom helper import copy_file\n\n# copy file\ncopy_file(par['input'], par['output'])\n\n\n## VIASH START\npar <- list(\n \"input\" = \"file.txt\",\n \"output\" = \"output.txt\"\n)\n## VIASH END\n\n# import helper function\nsource(paste0(meta$resources_dir, \"/helper.R\"))\n\n# copy file\ncopy_file(par$input, par$output)\n\n\n// No example available yet.", + "crumbs": [ + "Guide", + "Component", + "Use helper functions" + ] + }, + { + "objectID": "guide/component/unit-testing.html", + "href": "guide/component/unit-testing.html", + "title": "Unit testing", + "section": "", + "text": "We recommend adding unit tests to all of your components in a project as soon as possible. Implementing unit tests not only ensures that your component works, but it also makes the project more maintainable in the long run as you will be notified when a component breaks.\nThis page describes how to add a unit test to your component.", + "crumbs": [ + "Guide", + "Component", + "Unit testing" + ] + }, + { + "objectID": "guide/component/unit-testing.html#create-unit-test", + "href": "guide/component/unit-testing.html#create-unit-test", + "title": "Unit testing", + "section": "Create unit test", + "text": "Create unit test\nBelow is an example of how to add a unit test to a Viash component.\n\nBashC#JavaScriptPythonRScala\n\n\n#!/bin/bash\n\n## VIASH START\nmeta_executable=\"target/example_bash\"\n## VIASH END\n\necho \">>> Create input test file\"\necho \"foo\" > foo.txt\n\necho \">>> Run executable\"\n$meta_executable --input foo.txt --output bar.txt\n\necho \">>> Check whether output file exists\"\n[[ -f bar.txt ]] (echo \"Output file could not be found!\" && exit 1)\n\necho \">>> Check whether input and output file are the same\"\ncmp foo.txt bar.tx (echo \"Input and output files are different!\" && exit 1)\n\necho \">>> Test finished successfully\"\n\n\nusing System;\nusing System.IO;\nusing System.Diagnostics;\n\n// VIASH START\nvar meta = new {\n executable = \"target/example_csharp\"\n};\n// VIASH END\n\nstring inputPath = \"foo.txt\";\nstring outputPath = \"bar.txt\";\nstring content = \"hello\\nthere\\n\";\n\nConsole.WriteLine(\">>> Create input test file\");\nFile.WriteAllText(inputPath, content);\n\nConsole.WriteLine(\">>> Run executable\");\n\nvar startInfo = new ProcessStartInfo(meta.executable)\n{\n Arguments = $\"--input {inputPath} --output {outputPath}\",\n UseShellExecute = false,\n RedirectStandardOutput = true,\n CreateNoWindow = true\n};\nusing(var cmd = Process.Start(startInfo))\n{\n cmd.WaitForExit();\n}\n\n\nConsole.WriteLine(\">>> Check whether output file exists\");\nif (!File.Exists(outputPath)) {\n Console.WriteLine(\"Output file was not found\");\n Environment.Exit(1);\n}\n\nConsole.WriteLine(\">>> Check whether input and output file are the same\");\nvar outputLines = File.ReadAllText(outputPath);\nif (content != outputLines) {\n Console.WriteLine(\n \"Input and output should be the same\\n\" +\n $\"expected content: {content}\\n\" +\n $\"found: {outputLines}\\n\"\n );\n Environment.Exit(1);\n}\n\nConsole.WriteLine(\">>> Test finished successfully\");\n\n\nconst fs = require('fs');\nconst child_process = require('child_process');\n\n// VIASH START\nlet meta = {\n 'executable': 'target/example_js'\n};\n// VIASH END\n\nconst inputPath = 'foo.txt';\nconst outputPath = 'bar.txt';\nconst content = 'hello\\nthere\\n';\n\nconsole.log('>>> Create input test file');\nfs.writeFileSync(inputPath, content, 'utf8');\n\nconsole.log('>>> Run executable');\nconst cmdArgs = [\n '--input', inputPath,\n '--output', outputPath\n];\nconst child = child_process.spawnSync(meta[\"executable\"], cmdArgs);\nif (child.error) {\n console.error(`Error: ${child.error}`);\n process.exit(1);\n}\n\nconsole.log('>>> Check whether output file exists');\nif (!fs.existsSync(outputPath)) {\n console.error('Output file was not found');\n process.exit(1);\n}\n\nconsole.log('>>> Check whether input and output file are the same');\nconst outputLines = fs.readFileSync(outputPath, 'utf8');\nif (content !== outputLines) {\n console.error(\n `Input and output should be the same\\n` +\n `expected content: ${content}\\n` +\n `found: ${outputLines}\\n`\n );\n process.exit(1);\n}\n\nconsole.log('>>> Test finished successfully');\n\n\nimport subprocess\nimport os\n\ninput_path = \"foo.txt\"\noutput_path = \"bar.txt\"\ncontent = \"hello\\nthere\\n\"\n\n## VIASH START\nmeta = {\n \"executable\": \"target/example_python\"\n}\n## VIASH END\n\nprint(\">>> Create input test file\")\nwith open(input_path, \"w\") as file:\n file.write(content)\n\nprint(\">>> Run executable\")\ncmd_args = [\n meta[\"executable\"],\n \"--input\", input_path,\n \"--output\", output_path\n]\nsubprocess.run(cmd_args, check=True)\n\nprint(\">>> Check whether output file exists\")\nassert os.path.exists(output_path), \"Output file was not found\"\n\nprint(\">>> Check whether input and output file are the same\")\nwith open(output_path, \"r\", encoding=\"utf8\") as file:\n output_lines = file.read()\n\nassert content == output_lines, \\\n \"Input and output should be the same\" \\\n f\"expected content: {content}\" \\\n f\"found: {output_lines}\"\n\nprint(\">>> Test finished successfully\")\n\n\n## VIASH START\nmeta <- list(\n \"target/example_r\"\n)\n## VIASH END\n\ninput_path <- \"foo.txt\"\noutput_path <- \"bar.txt\"\ncontent <- c(\"hello\", \"there\")\n\ncat(\">>> Create input test file\\n\")\nwriteLines(content, input_path)\n\ncat(\">>> Run executable\\n\")\nsystem2(\n meta$executable,\n c(\n \"--input\", input_path,\n \"--output\", output_path\n )\n)\n\ncat(\">>> Check whether output file exists\\n\")\nif (!file.exists(output_path)) {\n stop(\"Output file was not found\")\n}\n\ncat(\">>> Check whether input and output file are the same\\n\")\noutput_lines <- readLines(output_path)\n\nif (!identical(content, output_lines)) {\n stop(paste0(\n \"Input and output should be the same\\n\",\n \"expected content: \", content, \"\\n\",\n \"found: \", output_lines, \"\\n\"\n ))\n}\n\ncat(\">>> Test finished successfully\\n\")\n\n\nimport scala.sys.process._\nimport java.nio.file.{Files, Paths}\nimport scala.io.Source\n\n// VIASH START\ncase class ViashMeta(executable: String)\nval meta = ViashMeta(\n \"target/example_scala\"\n)\n// VIASH END\nval inputPath = Paths.get(\"foo.txt\")\nval outputPath = Paths.get(\"bar.txt\")\nval content = \"hello\\nthere\"\n\nprintln(\">>> Create input test file\")\nFiles.write(inputPath, content.getBytes(\"UTF-8\"))\n\nprintln(\">>> Run executable\")\ns\"${meta.executable} --input $inputPath --output $outputPath\".!\n\nprintln(\">>> Check whether output file exists\")\nassert(Files.exists(outputPath), \"Output file not found\")\n\nprintln(\">>> Check whether input and output file are the same\")\nval outputLines = Source.fromFile(outputPath.toFile()).getLines.mkString(\"\\n\")\nassert(\n content == outputLines, \n s\"\"\"Output not the same\nexpected: '$content'\nfound: '$outputLines'\n\"\"\".stripMargin\n)\n\nprintln(\">>> Test finished successfully\")\n\n\n\n\nCreate an input file “foo.txt” with some sample content.\nRun an executable file specified in the “meta” dictionary with the arguments “–input foo.txt” and “–output bar.txt”.\nCheck whether the output file “bar.txt” exists.\nCheck whether the content of the output file is the same as the content of the input file.\nIf both checks pass, the script prints “Test finished successfully”.\n\n\n\n\n\n\n\nImportant\n\n\n\nA test script doesn’t need to be written in the same scripting language as the main script, as long as all of the required dependencies are available. This means the main script could be written in R, but the unit test could be written in Bash.", + "crumbs": [ + "Guide", + "Component", + "Unit testing" + ] + }, + { + "objectID": "guide/component/unit-testing.html#add-test-to-config", + "href": "guide/component/unit-testing.html#add-test-to-config", + "title": "Unit testing", + "section": "Add test to config", + "text": "Add test to config\nNext, we need to add the unit test to the test_resources section in the Viash config.\n\nBashC#JavaScriptPythonRScala\n\n\nfunctionality:\n name: example_bash\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: bash_script\n path: script.sh\n test_resources:\n - type: bash_script\n path: test.sh\nplatforms:\n - type: docker\n image: bash:4.0\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_csharp\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: csharp_script\n path: script.csx\n test_resources:\n - type: csharp_script\n path: test.csx\nplatforms:\n - type: docker\n image: ghcr.io/data-intuitive/dotnet-script:1.3.1\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_js\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: javascript_script\n path: script.js\n test_resources:\n - type: javascript_script\n path: test.js\nplatforms:\n - type: docker\n image: node:19-bullseye-slim\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_python\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: python_script\n path: script.py\n test_resources:\n - type: python_script\n path: test.py\nplatforms:\n - type: docker\n image: python:3.10-slim\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_r\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: r_script\n path: script.R\n test_resources:\n - type: r_script\n path: test.R\nplatforms:\n - type: docker\n image: eddelbuettel/r2u:22.04\n - type: native\n - type: nextflow\n\n\nfunctionality:\n name: example_scala\n description: A minimal example component.\n arguments:\n - type: file\n name: --input\n example: file.txt\n required: true\n - type: file\n name: --output\n direction: output\n example: output.txt\n required: true\n resources:\n - type: scala_script\n path: script.scala\n test_resources:\n - type: scala_script\n path: test.scala\nplatforms:\n - type: docker\n image: sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10\n - type: native\n - type: nextflow\n\n\n\nNote that if you can add multiple unit tests to the test_resources section, they will all be evaluated. You can also add other resources, similar to what is described in the page on adding resources.", + "crumbs": [ + "Guide", + "Component", + "Unit testing" + ] + }, + { + "objectID": "guide/component/unit-testing.html#run-the-unit-test", + "href": "guide/component/unit-testing.html#run-the-unit-test", + "title": "Unit testing", + "section": "Run the unit test", + "text": "Run the unit test\nYou can run the unit test as follows:\n\nBashC#JavaScriptPythonRScala\n\n\n\nviash test config.vsh.yaml\n\nRunning tests in temporary directory: '/tmp/viash_test_example_bash18292550620849723514'\n====================================================================\n+/tmp/viash_test_example_bash18292550620849723514/build_executable/example_bash ---verbosity 6 ---setup cachedbuild\n[notice] Building container 'example_bash:test' with Dockerfile\n[info] Running 'docker build -t example_bash:test /tmp/viash_test_example_bash18292550620849723514/build_executable -f /tmp/viash_test_example_bash18292550620849723514/build_executable/tmp/dockerbuild-example_bash-R8Dghd/Dockerfile'\n#0 building with \"default\" instance using docker driver\n\n#1 [internal] load .dockerignore\n#1 transferring context: 2B done\n#1 DONE 0.0s\n\n#2 [internal] load build definition from Dockerfile\n#2 transferring dockerfile: 291B done\n#2 DONE 0.0s\n\n#3 [internal] load metadata for docker.io/library/bash:4.0\n#3 DONE 0.0s\n\n#4 [1/2] FROM docker.io/library/bash:4.0\n#4 DONE 0.0s\n\n#5 [2/2] RUN :\n#5 CACHED\n\n#6 exporting to image\n#6 exporting layers done\n#6 writing image sha256:448683cc1642a674c384ef251923d377c9cceccdaf046d0dd3e388210e02b485 done\n#6 naming to docker.io/library/example_bash:test 0.0s done\n#6 DONE 0.0s\n====================================================================\n+/tmp/viash_test_example_bash18292550620849723514/test_test/test_executable\n>>> Create input test file\n>>> Run executable\nCopying 'foo.txt' to 'bar.txt'.\n>>> Check whether output file exists\n>>> Check whether input and output file are the same\n>>> Test finished successfully\n====================================================================\nSUCCESS! All 1 out of 1 test scripts succeeded!\nCleaning up temporary directory\n\n\n\n\n\nviash test config.vsh.yaml\n\nRunning tests in temporary directory: '/tmp/viash_test_example_csharp7780981861313166489'\n====================================================================\n+/tmp/viash_test_example_csharp7780981861313166489/build_executable/example_csharp ---verbosity 6 ---setup cachedbuild\n[notice] Building container 'example_csharp:test' with Dockerfile\n[info] Running 'docker build -t example_csharp:test /tmp/viash_test_example_csharp7780981861313166489/build_executable -f /tmp/viash_test_example_csharp7780981861313166489/build_executable/tmp/dockerbuild-example_csharp-lUAKJp/Dockerfile'\n#0 building with \"default\" instance using docker driver\n\n#1 [internal] load build definition from Dockerfile\n#1 transferring dockerfile: 327B done\n#1 DONE 0.0s\n\n#2 [internal] load .dockerignore\n#2 transferring context: 2B done\n#2 DONE 0.0s\n\n#3 [internal] load metadata for ghcr.io/data-intuitive/dotnet-script:1.3.1\n#3 DONE 0.0s\n\n#4 [1/2] FROM ghcr.io/data-intuitive/dotnet-script:1.3.1\n#4 DONE 0.0s\n\n#5 [2/2] RUN :\n#5 CACHED\n\n#6 exporting to image\n#6 exporting layers done\n#6 writing image sha256:7784f281ba2845fc802ecb0d975a3c33fc15ee741e41be3824160e073adef6ed done\n#6 naming to docker.io/library/example_csharp:test 0.0s done\n#6 DONE 0.0s\n====================================================================\n+/tmp/viash_test_example_csharp7780981861313166489/test_test/test_executable\n>>> Create input test file\n>>> Run executable\n>>> Check whether output file exists\n>>> Check whether input and output file are the same\n>>> Test finished successfully\n====================================================================\nSUCCESS! All 1 out of 1 test scripts succeeded!\nCleaning up temporary directory\n\n\n\n\n\nviash test config.vsh.yaml\n\nRunning tests in temporary directory: '/tmp/viash_test_example_js10119711192418158286'\n====================================================================\n+/tmp/viash_test_example_js10119711192418158286/build_executable/example_js ---verbosity 6 ---setup cachedbuild\n[notice] Building container 'example_js:test' with Dockerfile\n[info] Running 'docker build -t example_js:test /tmp/viash_test_example_js10119711192418158286/build_executable -f /tmp/viash_test_example_js10119711192418158286/build_executable/tmp/dockerbuild-example_js-ZzCu2l/Dockerfile'\n#0 building with \"default\" instance using docker driver\n\n#1 [internal] load build definition from Dockerfile\n#1 transferring dockerfile: 302B done\n#1 DONE 0.0s\n\n#2 [internal] load .dockerignore\n#2 transferring context: 2B done\n#2 DONE 0.0s\n\n#3 [internal] load metadata for docker.io/library/node:19-bullseye-slim\n#3 DONE 0.5s\n\n#4 [1/2] FROM docker.io/library/node:19-bullseye-slim@sha256:f58f1fcf5c9ff9e3752993edb4ed6dbd35697124c85a43f3b97aa054500b0534\n#4 DONE 0.0s\n\n#5 [2/2] RUN :\n#5 CACHED\n\n#6 exporting to image\n#6 exporting layers done\n#6 writing image sha256:1689d64c5586a234446c7990d6e57fab5756b25e46a28d83473a7aa09a1c2d18 done\n#6 naming to docker.io/library/example_js:test 0.0s done\n#6 DONE 0.0s\n====================================================================\n+/tmp/viash_test_example_js10119711192418158286/test_test/test_executable\n>>> Create input test file\n>>> Run executable\n>>> Check whether output file exists\n>>> Check whether input and output file are the same\n>>> Test finished successfully\n====================================================================\nSUCCESS! All 1 out of 1 test scripts succeeded!\nCleaning up temporary directory\n\n\n\n\n\nviash test config.vsh.yaml\n\nRunning tests in temporary directory: '/tmp/viash_test_example_python5862734617689695437'\n====================================================================\n+/tmp/viash_test_example_python5862734617689695437/build_executable/example_python ---verbosity 6 ---setup cachedbuild\n[notice] Building container 'example_python:test' with Dockerfile\n[info] Running 'docker build -t example_python:test /tmp/viash_test_example_python5862734617689695437/build_executable -f /tmp/viash_test_example_python5862734617689695437/build_executable/tmp/dockerbuild-example_python-N3nE7L/Dockerfile'\n#0 building with \"default\" instance using docker driver\n\n#1 [internal] load .dockerignore\n#1 transferring context: 2B done\n#1 DONE 0.0s\n\n#2 [internal] load build definition from Dockerfile\n#2 transferring dockerfile: 301B done\n#2 DONE 0.0s\n\n#3 [internal] load metadata for docker.io/library/python:3.10-slim\n#3 DONE 0.4s\n\n#4 [1/2] FROM docker.io/library/python:3.10-slim@sha256:669b88d5947f8bc66039e97949099baa52fe6b02b9d6846836667d2c8d9859fe\n#4 DONE 0.0s\n\n#5 [2/2] RUN :\n#5 CACHED\n\n#6 exporting to image\n#6 exporting layers done\n#6 writing image sha256:f070e931a7ad3c6a5be9647968475ae9d71725fc532242357191d473afe6ba99 done\n#6 naming to docker.io/library/example_python:test 0.0s done\n#6 DONE 0.0s\n====================================================================\n+/tmp/viash_test_example_python5862734617689695437/test_test/test_executable\nCopying 'foo.txt' to 'bar.txt'.\n>>> Create input test file\n>>> Run executable\n>>> Check whether output file exists\n>>> Check whether input and output file are the same\n>>> Test finished successfully\n====================================================================\nSUCCESS! All 1 out of 1 test scripts succeeded!\nCleaning up temporary directory\n\n\n\n\n\nviash test config.vsh.yaml\n\nRunning tests in temporary directory: '/tmp/viash_test_example_r16409329976605925025'\n====================================================================\n+/tmp/viash_test_example_r16409329976605925025/build_executable/example_r ---verbosity 6 ---setup cachedbuild\n[notice] Building container 'example_r:test' with Dockerfile\n[info] Running 'docker build -t example_r:test /tmp/viash_test_example_r16409329976605925025/build_executable -f /tmp/viash_test_example_r16409329976605925025/build_executable/tmp/dockerbuild-example_r-eDqLR9/Dockerfile'\n#0 building with \"default\" instance using docker driver\n\n#1 [internal] load .dockerignore\n#1 transferring context: 2B done\n#1 DONE 0.0s\n\n#2 [internal] load build definition from Dockerfile\n#2 transferring dockerfile: 302B done\n#2 DONE 0.0s\n\n#3 [internal] load metadata for docker.io/eddelbuettel/r2u:22.04\n#3 DONE 0.4s\n\n#4 [1/2] FROM docker.io/eddelbuettel/r2u:22.04@sha256:ad84e9056a4b097c162124a62f5d3d15c86a8297d1e632810e2d591cd57ce05b\n#4 DONE 0.0s\n\n#5 [2/2] RUN :\n#5 CACHED\n\n#6 exporting to image\n#6 exporting layers done\n#6 writing image sha256:84aad914eb34b259133456e7bc66467dbb7beb3d065302c2936db2f41908ba89 done\n#6 naming to docker.io/library/example_r:test 0.0s done\n#6 DONE 0.0s\n====================================================================\n+/tmp/viash_test_example_r16409329976605925025/test_test/test_executable\n>>> Create input test file\n>>> Run executable\nCopying 'foo.txt' to 'bar.txt'.\n[1] TRUE\n>>> Check whether output file exists\n>>> Check whether input and output file are the same\n>>> Test finished successfully\n====================================================================\nSUCCESS! All 1 out of 1 test scripts succeeded!\nCleaning up temporary directory\n\n\n\n\n\nviash test config.vsh.yaml\n\nRunning tests in temporary directory: '/tmp/viash_test_example_scala1481537244751024579'\n====================================================================\n+/tmp/viash_test_example_scala1481537244751024579/build_executable/example_scala ---verbosity 6 ---setup cachedbuild\n[notice] Building container 'example_scala:test' with Dockerfile\n[info] Running 'docker build -t example_scala:test /tmp/viash_test_example_scala1481537244751024579/build_executable -f /tmp/viash_test_example_scala1481537244751024579/build_executable/tmp/dockerbuild-example_scala-0yibuB/Dockerfile'\n#0 building with \"default\" instance using docker driver\n\n#1 [internal] load build definition from Dockerfile\n#1 transferring dockerfile: 338B done\n#1 DONE 0.0s\n\n#2 [internal] load .dockerignore\n#2 transferring context: 2B done\n#2 DONE 0.0s\n\n#3 [internal] load metadata for docker.io/sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10\n#3 DONE 0.5s\n\n#4 [1/2] FROM docker.io/sbtscala/scala-sbt:eclipse-temurin-19_36_1.7.2_2.13.10@sha256:440234e283754375d5ab6bcb35e2d470f9dabeaaeb639d8c0708fac2d3707e0c\n#4 DONE 0.0s\n\n#5 [2/2] RUN :\n#5 CACHED\n\n#6 exporting to image\n#6 exporting layers done\n#6 writing image sha256:ee98221e3c6b53c09b1e87395de0a1ee4bc9dfc8f303fdc23d5c50a515fa0c8e done\n#6 naming to docker.io/library/example_scala:test 0.0s done\n#6 DONE 0.0s\n====================================================================\n+/tmp/viash_test_example_scala1481537244751024579/test_test/test_executable\nwarning: 1 deprecation\nwarning: 1 deprecation (since 2.13.3)\nwarning: 2 deprecations in total; re-run with -deprecation for details\n>>> Create input test file\n>>> Run executable\nwarning: 1 deprecation; re-run with -deprecation for details\nCopying 'foo.txt' to 'bar.txt'.\n>>> Check whether output file exists\n>>> Check whether input and output file are the same\n>>> Test finished successfully\n====================================================================\nSUCCESS! All 1 out of 1 test scripts succeeded!\nCleaning up temporary directory\n\n\n\n\n\nWhen running viash test, Viash will follow the following steps:\n\nCreate a temporary directory\nBuild the component into the main executable\n(Re-)build the Docker image for the component\nIterate over all unit test scripts:\n\n\nBuild the unit test into an executable\nRun the unit test, passing the main executable as an argument\n\n\nReturn exit code 0 if all of the above steps succeed, otherwise 0", + "crumbs": [ + "Guide", + "Component", + "Unit testing" + ] + }, + { + "objectID": "guide/component/unit-testing.html#bonus-unit-testing-all-of-the-components", + "href": "guide/component/unit-testing.html#bonus-unit-testing-all-of-the-components", + "title": "Unit testing", + "section": "Bonus: unit testing all of the components", + "text": "Bonus: unit testing all of the components\nIf you have multiple Viash components located in a directory called src/, what happens when you run the following?\nviash ns test --parallel --src src/", + "crumbs": [ + "Guide", + "Component", + "Unit testing" + ] + }, + { + "objectID": "guide/component/variables.html", + "href": "guide/component/variables.html", + "title": "Par and meta variables", + "section": "", + "text": "When running a Viash component with viash run, Viash will wrap your script into a Bash executable. In doing so, it strips away the “Viash placeholder” code block and replaces it by a bit of code to your script for reading any parameter values at runtime.", + "crumbs": [ + "Guide", + "Component", + "Par and meta variables" + ] + }, + { + "objectID": "guide/component/variables.html#recognizing-the-viash-placeholder-code-block", + "href": "guide/component/variables.html#recognizing-the-viash-placeholder-code-block", + "title": "Par and meta variables", + "section": "Recognizing the Viash placeholder code block", + "text": "Recognizing the Viash placeholder code block\nRecall what the script of the previous example looks like:\n\nBashC#JavaScriptPythonRScala\n\n\n#!/bin/bash\n\n## VIASH START\npar_input=path/to/file.txt\npar_output=output.txt\n## VIASH END\n\n# copy file\necho \"Copying '$par_input' to '$par_output'.\"\ncp -r \"$par_input\" \"$par_output\"\n\n\nusing System.IO;\n\n// VIASH START\nvar par = new {\n input = \"path/to/file.txt\",\n output = \"output.txt\"\n};\n// VIASH END\n\n// copy file\nConsole.WriteLine($\"Copying '{par.input}' to '{par.output}'.\");\nFile.Copy(par.input, par.output, true);\n\n\nconst fs = require('fs');\n\n// VIASH START\nlet par = {\n 'input': 'path/to/file.txt',\n 'output': 'output.txt'\n};\n// VIASH END\n\n// copy file\nconsole.log(`Copying '${par['input']}' to '${par['output']}'`)\nfs.copyFile(par['input'], par['output'], (err) => {\n if (err) throw err;\n});\n\n\nimport shutil\n\n## VIASH START\npar = {\n 'input': 'file.txt',\n 'output': 'output.txt'\n}\n## VIASH END\n\n# copy file\nprint(f\"Copying '{par['input']}' to '{par['output']}'.\")\nshutil.copyfile(par['input'], par['output'])\n\n\n## VIASH START\npar <- list(\n \"input\" = 'file.txt',\n \"output\" = 'output.txt'\n)\n## VIASH END\n\n# copy file\ncat(\"Copying '\", par$input, \"' to '\", par$output, \"'.\\n\", sep = \"\")\nfile.copy(par$input, par$output)\n\n\nimport java.nio.file.StandardCopyOption.REPLACE_EXISTING\nimport java.nio.file.Files\nimport java.nio.file.Paths\n\n// VIASH START\ncase class ViashPar(input: String, output: String)\nval par = ViashPar(\n \"path/to/file.txt\",\n \"output.txt\"\n)\n// VIASH END\n\n// copy file\nprintln(s\"Copying '${par.input}' to '${par.output}'.\")\nval fileIn = Paths.get(par.input)\nval fileOut = Paths.get(par.output)\nFiles.copy(fileIn, fileOut, REPLACE_EXISTING)\n\n\n\nA “Viash placeholder” code block is the section between the VIASH START and VIASH END comments.", + "crumbs": [ + "Guide", + "Component", + "Par and meta variables" + ] + }, + { + "objectID": "guide/component/variables.html#what-happens-at-runtime", + "href": "guide/component/variables.html#what-happens-at-runtime", + "title": "Par and meta variables", + "section": "What happens at runtime", + "text": "What happens at runtime\nBy passing arguments to the component, Viash will add your parameter values to your script by replacing the Viash placeholder code block. If no such code block exists yet, the parameters are inserted at the top of the file.\nThe resulting code block will contain two maps (or dictionaries): par and meta. The par map contains the parameter values specified by the user, and meta contains additional information on the current runtime environment. Note that for Bash scripts, the par and meta maps are flattened into separate environment variables.", + "crumbs": [ + "Guide", + "Component", + "Par and meta variables" + ] + }, + { + "objectID": "guide/component/variables.html#previewing-the-par-and-meta-objects", + "href": "guide/component/variables.html#previewing-the-par-and-meta-objects", + "title": "Par and meta variables", + "section": "Previewing the par and meta objects", + "text": "Previewing the par and meta objects\nTo get insight into how par and meta are defined, you can run viash config inject to replace the current parameter placeholder with an auto-generated parameter placeholder.\n\n\n\n\n\n\nWarning\n\n\n\nThis will change the contents of your script!\n\n\n\nBashC#JavaScriptPythonRScala\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nThe updated script.sh now contains the following code:\n#!/bin/bash\n\n## VIASH START\n# The following code has been auto-generated by Viash.\npar_input='file.txt'\npar_output='output.txt'\nmeta_functionality_name='example_bash'\nmeta_resources_dir='/tmp/viash_inject_example_bash14502262743267273460'\nmeta_executable='/tmp/viash_inject_example_bash14502262743267273460/example_bash'\nmeta_config='/tmp/viash_inject_example_bash14502262743267273460/.config.vsh.yaml'\nmeta_temp_dir='/tmp'\nmeta_cpus='123'\nmeta_memory_b='123'\nmeta_memory_kb='123'\nmeta_memory_mb='123'\nmeta_memory_gb='123'\nmeta_memory_tb='123'\nmeta_memory_pb='123'\n\n## VIASH END\n\n# copy file\necho \"Copying '$par_input' to '$par_output'.\"\ncp -r \"$par_input\" \"$par_output\"\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nThe updated script.csx now contains the following code:\nusing System.IO;\n\n// VIASH START\n// The following code has been auto-generated by Viash.\nvar par = new {\n input = @\"file.txt\",\n output = @\"output.txt\"\n};\nvar meta = new {\n functionality_name = @\"example_csharp\",\n resources_dir = @\"/tmp/viash_inject_example_csharp6429441101072582423\",\n executable = @\"/tmp/viash_inject_example_csharp6429441101072582423/example_csharp\",\n config = @\"/tmp/viash_inject_example_csharp6429441101072582423/.config.vsh.yaml\",\n temp_dir = @\"/tmp\",\n cpus = Convert.ToInt32(@\"123\"),\n memory_b = Convert.ToInt64(@\"123\"),\n memory_kb = Convert.ToInt64(@\"123\"),\n memory_mb = Convert.ToInt64(@\"123\"),\n memory_gb = Convert.ToInt64(@\"123\"),\n memory_tb = Convert.ToInt64(@\"123\"),\n memory_pb = Convert.ToInt64(@\"123\")\n};\nvar dep = new {\n \n};\n\n// VIASH END\n\n// copy file\nConsole.WriteLine($\"Copying '{par.input}' to '{par.output}'.\");\nFile.Copy(par.input, par.output, true);\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nThe updated script.js now contains the following code:\nconst fs = require('fs');\n\n// VIASH START\n// The following code has been auto-generated by Viash.\nlet par = {\n 'input': String.raw`file.txt`,\n 'output': String.raw`output.txt`\n};\nlet meta = {\n 'functionality_name': String.raw`example_js`,\n 'resources_dir': String.raw`/tmp/viash_inject_example_js7815933713774517654`,\n 'executable': String.raw`/tmp/viash_inject_example_js7815933713774517654/example_js`,\n 'config': String.raw`/tmp/viash_inject_example_js7815933713774517654/.config.vsh.yaml`,\n 'temp_dir': String.raw`/tmp`,\n 'cpus': parseInt(String.raw`123`),\n 'memory_b': parseInt(String.raw`123`),\n 'memory_kb': parseInt(String.raw`123`),\n 'memory_mb': parseInt(String.raw`123`),\n 'memory_gb': parseInt(String.raw`123`),\n 'memory_tb': parseInt(String.raw`123`),\n 'memory_pb': parseInt(String.raw`123`)\n};\nlet dep = {\n \n};\n\n// VIASH END\n\n// copy file\nconsole.log(`Copying '${par['input']}' to '${par['output']}'`)\nfs.copyFile(par['input'], par['output'], (err) => {\n if (err) throw err;\n});\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nThe updated script.py now contains the following code:\nimport shutil\n\n## VIASH START\n# The following code has been auto-generated by Viash.\npar = {\n 'input': r'file.txt',\n 'output': r'output.txt'\n}\nmeta = {\n 'functionality_name': r'example_python',\n 'resources_dir': r'/tmp/viash_inject_example_python10583001356132851438',\n 'executable': r'/tmp/viash_inject_example_python10583001356132851438/example_python',\n 'config': r'/tmp/viash_inject_example_python10583001356132851438/.config.vsh.yaml',\n 'temp_dir': r'/tmp',\n 'cpus': int(r'123'),\n 'memory_b': int(r'123'),\n 'memory_kb': int(r'123'),\n 'memory_mb': int(r'123'),\n 'memory_gb': int(r'123'),\n 'memory_tb': int(r'123'),\n 'memory_pb': int(r'123')\n}\ndep = {\n \n}\n\n## VIASH END\n\n# copy file\nprint(f\"Copying '{par['input']}' to '{par['output']}'.\")\nshutil.copyfile(par['input'], par['output'])\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nThe updated script.R now contains the following code:\n## VIASH START\n# The following code has been auto-generated by Viash.\n# treat warnings as errors\n.viash_orig_warn <- options(warn = 2)\n\npar <- list(\n \"input\" = 'file.txt',\n \"output\" = 'output.txt'\n)\nmeta <- list(\n \"functionality_name\" = 'example_r',\n \"resources_dir\" = '/tmp/viash_inject_example_r14100536581041087495',\n \"executable\" = '/tmp/viash_inject_example_r14100536581041087495/example_r',\n \"config\" = '/tmp/viash_inject_example_r14100536581041087495/.config.vsh.yaml',\n \"temp_dir\" = '/tmp',\n \"cpus\" = as.integer('123'),\n \"memory_b\" = bit64::as.integer64('123'),\n \"memory_kb\" = bit64::as.integer64('123'),\n \"memory_mb\" = bit64::as.integer64('123'),\n \"memory_gb\" = bit64::as.integer64('123'),\n \"memory_tb\" = bit64::as.integer64('123'),\n \"memory_pb\" = bit64::as.integer64('123')\n)\ndep <- list(\n \n)\n\n\n# restore original warn setting\noptions(.viash_orig_warn)\nrm(.viash_orig_warn)\n\n## VIASH END\n\n# copy file\ncat(\"Copying '\", par$input, \"' to '\", par$output, \"'.\\n\", sep = \"\")\nfile.copy(par$input, par$output)\n\n\nRunning viash config inject effectively changes the contents of the script.\n\nviash config inject config.vsh.yaml\n\nThe updated script.scala now contains the following code:\nimport java.nio.file.StandardCopyOption.REPLACE_EXISTING\nimport java.nio.file.Files\nimport java.nio.file.Paths\n\n// VIASH START\n// The following code has been auto-generated by Viash.\ncase class ViashPar(\n input: Option[String],\n output: Option[String]\n)\nval par = ViashPar(\n Some(\"\"\"file.txt\"\"\"),\n Some(\"\"\"output.txt\"\"\")\n)\ncase class ViashMeta(\n functionality_name: Option[String],\n resources_dir: Option[String],\n executable: Option[String],\n config: Option[String],\n temp_dir: Option[String],\n cpus: Option[Int],\n memory_b: Option[Long],\n memory_kb: Option[Long],\n memory_mb: Option[Long],\n memory_gb: Option[Long],\n memory_tb: Option[Long],\n memory_pb: Option[Long]\n)\nval meta = ViashMeta(\n Some(\"\"\"example_scala\"\"\"),\n Some(\"\"\"/tmp/viash_inject_example_scala2108950522793770218\"\"\"),\n Some(\"\"\"/tmp/viash_inject_example_scala2108950522793770218/example_scala\"\"\"),\n Some(\"\"\"/tmp/viash_inject_example_scala2108950522793770218/.config.vsh.yaml\"\"\"),\n Some(\"\"\"/tmp\"\"\"),\n Some(\"\"\"123\"\"\".toInt),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong),\n Some(\"\"\"123\"\"\".toLong)\n)\ncase class ViashDep(\n \n)\nval dep = ViashDep(\n \n)\n\n// VIASH END\n\n// copy file\nprintln(s\"Copying '${par.input}' to '${par.output}'.\")\nval fileIn = Paths.get(par.input)\nval fileOut = Paths.get(par.output)\nFiles.copy(fileIn, fileOut, REPLACE_EXISTING)", + "crumbs": [ + "Guide", + "Component", + "Par and meta variables" + ] + }, + { + "objectID": "guide/component/variables.html#runtime-parameters-in-par", + "href": "guide/component/variables.html#runtime-parameters-in-par", + "title": "Par and meta variables", + "section": "Runtime parameters in par", + "text": "Runtime parameters in par\nThe par object (or par_ environment variables in Bash) will contain argument values passed at runtime. For example, passing --input foo.txt will result in a par[\"input\"] being equal to \"foo.txt\".\n\n\n\n\n\n\nTip\n\n\n\nTry adding more arguments with different file types to see what effect this has on the resulting placeholder.", + "crumbs": [ + "Guide", + "Component", + "Par and meta variables" + ] + }, + { + "objectID": "guide/component/variables.html#meta-variables-in-meta", + "href": "guide/component/variables.html#meta-variables-in-meta", + "title": "Par and meta variables", + "section": "Meta variables in meta", + "text": "Meta variables in meta\nMeta-variables offer information on the runtime environment which you can use from within your script.\n\ncpus (integer): The maximum number of (logical) cpus a component is allowed to use. By default, this value will be undefined.\nconfig (string): Path to the processed Viash config YAML. This file is usually called .config.vsh.yaml and resides next to the wrapped executable (see below). This YAML file is useful for doing some runtime introspection of the component for writing generic unit tests.\nexecutable (string): The executable being used at runtime; that is, the wrapped script. This variable is used in unit tests.\nfunctionality_name (string): The name of the component, useful for logging.\nmemory_* (long): The maximum amount of memory a component is allowed to allocate. The following denominations are provided: memory_b, memory_kb, memory_mb, memory_gb, memory_tb, memory_pb. By default, this value will be undefined.\nresources_dir (string): Path to where the resources are stored. See the previous section on how to define resources.\ntemp_dir (string): A temporary directory in which your script is allowed to create new temporary files / directories. By default, this will be set to the VIASH_TEMP environment variable. When the VIASH_TEMP variable is undefined, /tmp is used instead.\n\n\n\ncpus (integer)\nThis field specifies the maximum number of (logical) cpus a component is allowed to use. This is useful when parallellizing your component in such a way that integrates very nicely with pipeline frameworks such as Nextflow. Below is an example usage of the cpus meta-variable.\n\nBashC#JavaScriptPythonRScala\n\n\n#!/bin/bash\n\n## VIASH START\npar_input=\"path/to/file.txt\"\npar_output=\"output.txt\"\nmeta_cpus=10\n## VIASH END\n\n# Pass number of cores to the popular_software_tool. Set the default to 1.\n./popular_software_tool --ncores ${meta_cpus:-1}\n\n\nNo example available yet.\n\n\nNo example available yet.\n\n\nfrom multiprocessing import Pool\n\n## VIASH START\npar = {}\nmeta = {\"cpus\": 1}\n## VIASH END\n\ndef my_fun(x):\n return x + \"!\"\nmy_data = [\"hello\", \"world\"]\n\nwith Pool(processes=meta.get(\"cpus\", 1)) as pool:\n out = pool.map(my_fun, my_data)\n\n\nlibrary(furrr)\n\n## VIASH START\npar <- list()\nmeta <- list(\n cpus = 1L\n)\n## VIASH END\n\nif (is.null(meta$cpus)) meta$cpus <- 1\nplan(multisession, workers = meta$cpus)\n\nmy_data <- c(\"hello\", \"world\")\nout = future_map(\n my_data, \n function(x) {\n paste0(x, \"!\")\n }\n)\n\n\nimport scala.collection.parallel._\nimport java.util.concurrent.ForkJoinPool\n\n// VIASH START\n// ...\n// VIASH END\n\nval pc = mutable.ParArray(1, 2, 3)\nval numCores = meta.cores.getOrElse(1)\npc.tasksupport = new ForkJoinTaskSupport(new ForkJoinPool(numCores))\npc map { _ + 1 }\n\n\n\nYou can set the number of cores in your component using any of the following approaches:\n# as a parameter of viash run\nviash run config.vsh.yaml --cpus 10 -- <my component arguments>\n\n# as a parameter of viash test\nviash test config.vsh.yaml --cpus 10\n\n# or as a parameter of the executable\nviash build config.vsh.yaml -o output\noutput/my_executable ---cpus 10\n# ↑ notice the triple dash", + "crumbs": [ + "Guide", + "Component", + "Par and meta variables" + ] + }, + { + "objectID": "guide/project/structure.html", + "href": "guide/project/structure.html", + "title": "Structure", + "section": "", + "text": "The project already contains three components which are used to create a Nextflow pipeline with the following topology:\n\n\n\n\n\ngraph LR\n A(file?.tsv) --> B[/remove_comments/]\n B --> C[/take_column/]\n C --> D[/combine_columns/]\n D --> E(output)\n\n\n Diagram of the pipeline topology \n\n\n\n\nremove_comments is a Bash script which removes all lines starting with a # from a file.\ntake_column is a Python script which extracts one of the columns in a TSV file.\ncombine_columns is an R script which combines multiple files into a TSV.", + "crumbs": [ + "Guide", + "Project", + "Structure" + ] + }, + { + "objectID": "guide/project/structure.html#demo-pipeline", + "href": "guide/project/structure.html#demo-pipeline", + "title": "Structure", + "section": "", + "text": "The project already contains three components which are used to create a Nextflow pipeline with the following topology:\n\n\n\n\n\ngraph LR\n A(file?.tsv) --> B[/remove_comments/]\n B --> C[/take_column/]\n C --> D[/combine_columns/]\n D --> E(output)\n\n\n Diagram of the pipeline topology \n\n\n\n\nremove_comments is a Bash script which removes all lines starting with a # from a file.\ntake_column is a Python script which extracts one of the columns in a TSV file.\ncombine_columns is an R script which combines multiple files into a TSV.", + "crumbs": [ + "Guide", + "Project", + "Structure" + ] + }, + { + "objectID": "guide/project/structure.html#grouping-components-in-namespaces", + "href": "guide/project/structure.html#grouping-components-in-namespaces", + "title": "Structure", + "section": "Grouping components in namespaces", + "text": "Grouping components in namespaces\nA namespace is effectively a hierarchical grouping of the components in the src/ directory. Here are some benefits of grouping your components:\n\nGrouping components in namespaces allows for categorizing components.\nEach teams of developers can work on a different set of components in parallel, which improves the separation of concerns.\nGenerating build targets and unit testing can be done in bulk, with optional filtering by namespace using the viash ns commands.\n\nThis guide will cover how to define a namespace and use it with Viash.", + "crumbs": [ + "Guide", + "Project", + "Structure" + ] + }, + { + "objectID": "guide/project/structure.html#namespace-property", + "href": "guide/project/structure.html#namespace-property", + "title": "Structure", + "section": "Namespace property", + "text": "Namespace property\nYou can assign a component to a namespace by defining its namespace attribute in the Viash config file:\nfunctionality:\n name: some_component\n namespace: some_namespace/subnamespace\n...\nTypically, the Viash config for this component will be located at src/some_namespace/subnamespace/some_component/config.vsh.yaml.", + "crumbs": [ + "Guide", + "Project", + "Structure" + ] + }, + { + "objectID": "guide/project/project-config.html", + "href": "guide/project/project-config.html", + "title": "Project config", + "section": "", + "text": "A _viash.yaml file in the root of the project repository is called a Viash project config. It allows defining project-wide settings such as the location of the Viash components and which Viash version to use.", + "crumbs": [ + "Guide", + "Project", + "Project config" + ] + }, + { + "objectID": "guide/project/project-config.html#example-project-config", + "href": "guide/project/project-config.html#example-project-config", + "title": "Project config", + "section": "Example project config", + "text": "Example project config\nviash_version: 0.8.3\n\nsource: src\ntarget: target\n\nconfig_mods: |\n .functionality.version := 'dev'\n .platforms[.type == 'docker'].target_registry := 'ghcr.io'\n .platforms[.type == 'docker'].target_organization := 'viash-io/viash_project_template'\n .platforms[.type == 'docker'].target_image_source := 'https://github.com/viash-io/viash_project_template'\n .platforms[.type == 'nextflow'].directives.tag := '$id'", + "crumbs": [ + "Guide", + "Project", + "Project config" + ] + }, + { + "objectID": "guide/project/project-config.html#viash-version", + "href": "guide/project/project-config.html#viash-version", + "title": "Project config", + "section": "Viash version", + "text": "Viash version\nPinning the version of Viash used in your project is essential to ensure reproducibility thereof across multiple systems. In doing so, all Viash commands will be run using that version of Viash.\nExample:\n\necho 'viash_version: \"0.6.0\"' > _viash.yaml\n\nviash --version\n\nviash 0.6.0 (c) 2020 Data Intuitive", + "crumbs": [ + "Guide", + "Project", + "Project config" + ] + }, + { + "objectID": "guide/project/project-config.html#source-directory", + "href": "guide/project/project-config.html#source-directory", + "title": "Project config", + "section": "Source directory", + "text": "Source directory\nOverrides the --src parameter of any viash ns command. This is useful in case the directory containing the Viash component source code is in a directory different from src/.", + "crumbs": [ + "Guide", + "Project", + "Project config" + ] + }, + { + "objectID": "guide/project/project-config.html#destination-directory", + "href": "guide/project/project-config.html#destination-directory", + "title": "Project config", + "section": "Destination directory", + "text": "Destination directory\nOverrides the --target parameter of any viash ns command. This is useful in case the artifacts generated by Viash should be stored in a directory different from target/.", + "crumbs": [ + "Guide", + "Project", + "Project config" + ] + }, + { + "objectID": "guide/project/project-config.html#advanced-configuration", + "href": "guide/project/project-config.html#advanced-configuration", + "title": "Project config", + "section": "Advanced configuration", + "text": "Advanced configuration\nViash allows for rewriting component configuration files using config mods. Config mods allow making changes to the config mods on the fly.\nThe template project contains these default config mods:\nconfig_mods: |\n .functionality.version := 'dev'\n .platforms[.type == 'docker'].target_registry := 'ghcr.io'\n .platforms[.type == 'docker'].target_organization := 'viash-io/viash_project_template'\n .platforms[.type == 'docker'].target_image_source := 'https://github.com/viash-io/viash_project_template'\n .platforms[.type == 'nextflow'].directives.tag := '$id'\nThis has the following effects:\n\nSet the version of any components to 'dev'.\nFills the registry, organisation and image sources fields of the Docker platform.\nAdds a default directive to the Nextflow platform.", + "crumbs": [ + "Guide", + "Project", + "Project config" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html#name", + "href": "reference/config/functionality/dependencies/githubRepository.html#name", + "title": "Github Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html#path-1", + "href": "reference/config/functionality/dependencies/githubRepository.html#path-1", + "title": "Github Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components." + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html#repo-1", + "href": "reference/config/functionality/dependencies/githubRepository.html#repo-1", + "title": "Github Repository", + "section": "repo", + "text": "repo\nType: String\nThe name of the GitHub repository.\nExample:\nrepo: viash-io/viash" + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html#tag-1", + "href": "reference/config/functionality/dependencies/githubRepository.html#tag-1", + "title": "Github Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash." + }, + { + "objectID": "reference/config/functionality/dependencies/githubRepository.html#type-1", + "href": "reference/config/functionality/dependencies/githubRepository.html#type-1", + "title": "Github Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a GitHub repository." + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html#name", + "href": "reference/config/functionality/dependencies/gitRepository.html#name", + "title": "Git Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html#path-1", + "href": "reference/config/functionality/dependencies/gitRepository.html#path-1", + "title": "Git Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components." + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html#tag-1", + "href": "reference/config/functionality/dependencies/gitRepository.html#tag-1", + "title": "Git Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash." + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html#type-1", + "href": "reference/config/functionality/dependencies/gitRepository.html#type-1", + "title": "Git Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Git repository." + }, + { + "objectID": "reference/config/functionality/dependencies/gitRepository.html#uri-1", + "href": "reference/config/functionality/dependencies/gitRepository.html#uri-1", + "title": "Git Repository", + "section": "uri", + "text": "uri\nType: String\nThe URI of the Git repository.\nExample:\nuri: \"git+https://github.com/openpipelines-bio/openpipeline.git\"" + }, + { + "objectID": "reference/config/functionality/dependencies/localRepository.html#name", + "href": "reference/config/functionality/dependencies/localRepository.html#name", + "title": "Local Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/localRepository.html#path-1", + "href": "reference/config/functionality/dependencies/localRepository.html#path-1", + "title": "Local Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components." + }, + { + "objectID": "reference/config/functionality/dependencies/localRepository.html#tag-1", + "href": "reference/config/functionality/dependencies/localRepository.html#tag-1", + "title": "Local Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash." + }, + { + "objectID": "reference/config/functionality/dependencies/localRepository.html#type-1", + "href": "reference/config/functionality/dependencies/localRepository.html#type-1", + "title": "Local Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository type. This determines how the repository will be fetched and handled." + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html#name", + "href": "reference/config/functionality/dependencies/viashhubRepository.html#name", + "title": "Viashhub Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Dependency", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html#path-1", + "href": "reference/config/functionality/dependencies/viashhubRepository.html#path-1", + "title": "Viashhub Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components." + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html#repo-1", + "href": "reference/config/functionality/dependencies/viashhubRepository.html#repo-1", + "title": "Viashhub Repository", + "section": "repo", + "text": "repo\nType: String\nThe name of the Viash-Hub repository.\nExample:\nrepo: openpipelines-bio/openpipeline" + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html#tag-1", + "href": "reference/config/functionality/dependencies/viashhubRepository.html#tag-1", + "title": "Viashhub Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash." + }, + { + "objectID": "reference/config/functionality/dependencies/viashhubRepository.html#type-1", + "href": "reference/config/functionality/dependencies/viashhubRepository.html#type-1", + "title": "Viashhub Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Viash-Hub repository." + }, + { + "objectID": "githubRepository.html", + "href": "githubRepository.html", + "title": "Github Repository", + "section": "", + "text": "A GitHub repository where remote dependency components can be found.\nExamples without name field in case used in .functionality.dependencies:\nExamples with name field in case used in .functionality.repositories:" + }, + { + "objectID": "githubRepository.html#name", + "href": "githubRepository.html#name", + "title": "Github Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies." + }, + { + "objectID": "githubRepository.html#path", + "href": "githubRepository.html#path", + "title": "Github Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components." + }, + { + "objectID": "githubRepository.html#repo", + "href": "githubRepository.html#repo", + "title": "Github Repository", + "section": "repo", + "text": "repo\nType: String\nThe name of the GitHub repository.\nExample:\nrepo: viash-io/viash" + }, + { + "objectID": "githubRepository.html#tag", + "href": "githubRepository.html#tag", + "title": "Github Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash." + }, + { + "objectID": "githubRepository.html#type", + "href": "githubRepository.html#type", + "title": "Github Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a GitHub repository." + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#build-the-vdsl3-modules", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#build-the-vdsl3-modules", + "title": "Create a pipeline", + "section": "Build the VDSL3 modules", + "text": "Build the VDSL3 modules\nFirst, we need to build the components into VDSL3 modules.\n\nviash ns build --setup cachedbuild --parallel\n\nExporting combine_columns (demo) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/demo/combine_columns\nExporting combine_columns (demo) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/demo/combine_columns\nExporting remove_comments (demo) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/demo/remove_comments\nExporting remove_comments (demo) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/demo/remove_comments\nExporting take_column (demo) =nextflow=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/nextflow/demo/take_column\nExporting take_column (demo) =docker=> /home/hendrik/DI/viash_website/guide/_viash_project_template/target/docker/demo/take_column\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/demo/combine_columns:dev' with Dockerfile\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/demo/remove_comments:dev' with Dockerfile\n[notice] Building container 'ghcr.io/viash-io/viash_project_template/demo/take_column:dev' with Dockerfile\n\u001b[32mAll 6 configs built successfully\u001b[0m\n\n\nOnce everything is built, a new target directory has been created containing the executables and modules grouped per platform:\n\ntree target\n\ntarget\n├── docker\n│   └── demo\n│   ├── combine_columns\n│   │   └── combine_columns\n│   ├── remove_comments\n│   │   └── remove_comments\n│   └── take_column\n│   └── take_column\n└── nextflow\n └── demo\n ├── combine_columns\n │   ├── main.nf\n │   └── nextflow.config\n ├── remove_comments\n │   ├── main.nf\n │   └── nextflow.config\n └── take_column\n ├── main.nf\n └── nextflow.config\n\n11 directories, 9 files", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#importing-a-vdsl3-module", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#importing-a-vdsl3-module", + "title": "Create a pipeline", + "section": "Importing a VDSL3 module", + "text": "Importing a VDSL3 module\nAfter building a VDSL3 module from A VDSL3 module can be imported just like any other Nextflow module.\nExample:\ninclude { mymodule } from 'target/nextflow/mymodule/main.nf'", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#vdsl3-module-interface", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#vdsl3-module-interface", + "title": "Create a pipeline", + "section": "VDSL3 module interface", + "text": "VDSL3 module interface\nVDSL3 modules are actually workflows which take one channel and emit one channel. It expects the channel events to be tuples containing an ‘id’ and a ‘state’: [id, state], where id is a unique String and state is a Map[String, Object]. The resulting channel then consists of tuples [id, new_state].\nExample:\nworkflow {\n Channel.fromList([\n [\"myid\", [input: file(\"in.txt\")]]\n ])\n | mymodule\n}\n\n\n\n\n\n\nNote\n\n\n\nIf the input tuple has more than two elements, the elements after the second element are passed through to the output tuple. That is, an input tuple [id, input, ...] will result in a tuple [id, output, ...] after running the module. For example, an input tuple [\"foo\", [input: file(\"in.txt\")], \"bar\"] will result in an output tuple [\"foo\", [output: file(\"out.txt\")], \"bar\"].", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "guide/nextflow_vdsl3/create-a-pipeline.html#customizing-vdsl3-modules-on-the-fly", + "href": "guide/nextflow_vdsl3/create-a-pipeline.html#customizing-vdsl3-modules-on-the-fly", + "title": "Create a pipeline", + "section": "Customizing VDSL3 modules on the fly", + "text": "Customizing VDSL3 modules on the fly\nUsually, Nextflow processes are quite static objects. For example, changing its directives can be quite tricky.\nThe run() function is a unique feature for every VDSL3 module which allows dynamically altering the behaviour of a module from within the pipeline. For example, we use it to set the publishDir directive to \"output/\" so the output of that step in the pipeline will be stored as output.\nSee the reference documentation for a complete list of arguments of .run().", + "crumbs": [ + "Guide", + "Nextflow VDSL3", + "Create a pipeline" + ] + }, + { + "objectID": "reference/project/index.html#authors", + "href": "reference/project/index.html#authors", + "title": "Project Config", + "section": "authors", + "text": "authors\nType: List of Author\nDefault: Empty\nThe authors of the project.\nExample:\nauthors:\n - name: Jane Doe\n role: [author, maintainer]\n email: jane@doe.com\n info:\n github: janedoe\n twitter: janedoe\n orcid: XXAABBCCXX\n groups: [ one, two, three ]\n - name: Tim Farbe\n roles: [author]\n email: tim@far.be", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#description", + "href": "reference/project/index.html#description", + "title": "Project Config", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the project.\nExample:\ndescription: My project", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#info", + "href": "reference/project/index.html#info", + "title": "Project Config", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n twitter: wizzkid\n classes: [ one, two, three ]", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#keywords", + "href": "reference/project/index.html#keywords", + "title": "Project Config", + "section": "keywords", + "text": "keywords\nType: List of String\nDefault: Empty\nThe keywords of the project.\nExample:\nkeywords: [ bioinformatics, genomics ]", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#license", + "href": "reference/project/index.html#license", + "title": "Project Config", + "section": "license", + "text": "license\nType: String\nDefault: Empty\nThe license of the project.\nExample:\nlicense: MIT", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#links", + "href": "reference/project/index.html#links", + "title": "Project Config", + "section": "links", + "text": "links\nType: Links\nDefault: Empty\nExternal links of the project.\nExample:\nlinks:\n repository: \"https://github.com/viash-io/viash\"\n docker_registry: \"https://ghcr.io\"\n homepage: \"https://viash.io\"\n documentation: \"https://viash.io/reference/\"\n issue_tracker: \"https://github.com/viash-io/viash/issues\"", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#name", + "href": "reference/project/index.html#name", + "title": "Project Config", + "section": "name", + "text": "name\nType: String\nDefault: Empty\nThe name of the project.\nExample:\nname: my_project", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#organization", + "href": "reference/project/index.html#organization", + "title": "Project Config", + "section": "organization", + "text": "organization\nType: String\nDefault: Empty\nThe organization of the project.\nExample:\norganization: viash-io", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#reference", + "href": "reference/project/index.html#reference", + "title": "Project Config", + "section": "reference", + "text": "reference\nType: References\nDefault: Empty\nReferences to external resources related to the project.\nExample:\nreference:\n doi: 10.1000/xx.123456.789\n bibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#repositories", + "href": "reference/project/index.html#repositories", + "title": "Project Config", + "section": "repositories", + "text": "repositories\nType: List of RepositoryWithName\nDefault: Empty\nCommon repository definitions for component dependencies.\nExample:\nrepositories:\n - name: openpipelines-bio\n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/index.html#version", + "href": "reference/project/index.html#version", + "title": "Project Config", + "section": "version", + "text": "version\nType: String\nDefault: Empty\nThe version of the project.\nExample:\nversion: 0.1.0", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/project/configLinks.html", + "href": "reference/project/configLinks.html", + "title": "Project Config Links", + "section": "", + "text": "Links to external resources related to the project.\nExample:" + }, + { + "objectID": "reference/project/configLinks.html#docker_registry", + "href": "reference/project/configLinks.html#docker_registry", + "title": "Project Config Links", + "section": "docker_registry", + "text": "docker_registry\nType: String\nDefault: Empty\nDocker registry url.\nExample:\ndocker_registry: \"https://ghcr.io\"" + }, + { + "objectID": "reference/project/configLinks.html#documentation", + "href": "reference/project/configLinks.html#documentation", + "title": "Project Config Links", + "section": "documentation", + "text": "documentation\nType: String\nDefault: Empty\nDocumentation website url.\nExample:\ndocumentation: \"https://viash.io/reference/\"" + }, + { + "objectID": "reference/project/configLinks.html#homepage", + "href": "reference/project/configLinks.html#homepage", + "title": "Project Config Links", + "section": "homepage", + "text": "homepage\nType: String\nDefault: Empty\nHomepage website url.\nExample:\nhomepage: \"https://viash.io\"" + }, + { + "objectID": "reference/project/configLinks.html#issue_tracker", + "href": "reference/project/configLinks.html#issue_tracker", + "title": "Project Config Links", + "section": "issue_tracker", + "text": "issue_tracker\nType: String\nDefault: Empty\nIssue tracker url.\nExample:\nissue_tracker: \"https://github.com/viash-io/viash/issues\"" + }, + { + "objectID": "reference/project/configLinks.html#repository", + "href": "reference/project/configLinks.html#repository", + "title": "Project Config Links", + "section": "repository", + "text": "repository\nType: String\nDefault: Empty\nSource repository url.\nExample:\nrepository: \"https://github.com/viash-io/viash\"" + }, + { + "objectID": "reference/config/engines/index.html", + "href": "reference/config/engines/index.html", + "title": "Engine", + "section": "", + "text": "A list of engines to generate target artifacts for.\n\nDocker\nNative\n\nExample:\nengines:\n - type: docker\n image: \"bash:4.0\"\n - type: native", + "crumbs": [ + "Reference", + "Config", + "Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html", + "href": "reference/config/engines/docker/index.html", + "title": "Docker Engine", + "section": "", + "text": "Run a Viash component on a Docker backend engine. By specifying which dependencies your component needs, users will be able to build a docker container from scratch using the setup flag, or pull it from a docker repository.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#cmd", + "href": "reference/config/engines/docker/index.html#cmd", + "title": "Docker Engine", + "section": "cmd", + "text": "cmd\nType: Either - String - List of String\nDefault: Empty\nSet the default command being executed when running the Docker container.\nExamples:\nSet CMD using the exec format, which is the prefered form.\ncmd: [\"echo\", \"$HOME\"]\nSet CMD using the shell format.\ncmd: \"echo $HOME\"", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#entrypoint", + "href": "reference/config/engines/docker/index.html#entrypoint", + "title": "Docker Engine", + "section": "entrypoint", + "text": "entrypoint\nType: Either - String - List of String\nDefault: []\nOverride the entrypoint of the base container. Default set ENTRYPOINT [].\nExamples:\nDisable the default override.\nentrypoint: \nEntrypoint of the container in the exec format, which is the prefered form.\nentrypoint: [\"top\", \"-b\"]\nEntrypoint of the container in the shell format.\nentrypoint: \"top -b\"", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#id", + "href": "reference/config/engines/docker/index.html#id", + "title": "Docker Engine", + "section": "id", + "text": "id\nType: String\nDefault: docker\nName of the engine. As with all engines, you can give a engine a different name. By specifying id: foo, you can target this engine (only) by specifying ... in any of the Viash commands.\nExamples:\nid: foo\nid: foo", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#image", + "href": "reference/config/engines/docker/index.html#image", + "title": "Docker Engine", + "section": "image", + "text": "image\nType: String\nThe base container to start from. You can also add the tag here if you wish.\nExample:\nimage: \"bash:4.0\"", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#namespace_separator", + "href": "reference/config/engines/docker/index.html#namespace_separator", + "title": "Docker Engine", + "section": "namespace_separator", + "text": "namespace_separator\nType: String\nDefault: /\nThe separator between the namespace and the name of the component, used for determining the image name. Default: \"/\".\nExample:\nnamespace_separator: \"_\"", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#organization", + "href": "reference/config/engines/docker/index.html#organization", + "title": "Docker Engine", + "section": "organization", + "text": "organization\nType: String\nDefault: Empty\nName of a container’s organization.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#registry", + "href": "reference/config/engines/docker/index.html#registry", + "title": "Docker Engine", + "section": "registry", + "text": "registry\nType: String\nDefault: Empty\nThe URL to the a custom Docker registry\nExample:\nregistry: https://my-docker-registry.org", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#setup", + "href": "reference/config/engines/docker/index.html#setup", + "title": "Docker Engine", + "section": "setup", + "text": "setup\nType: List of Requirements\nDefault: Empty\nA list of requirements for installing the following types of packages:\n\napt\napk\nDocker setup instructions\nJavaScript\nPython\nR\nRuby\nyum\n\nThe order in which these dependencies are specified determines the order in which they will be installed.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#tag", + "href": "reference/config/engines/docker/index.html#tag", + "title": "Docker Engine", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nSpecify a Docker image based on its tag.\nExample:\ntag: 4.0", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#target_image", + "href": "reference/config/engines/docker/index.html#target_image", + "title": "Docker Engine", + "section": "target_image", + "text": "target_image\nType: String\nDefault: Empty\nIf anything is specified in the setup section, running the ---setup will result in an image with the name of <target_image>:<version>. If nothing is specified in the setup section, simply image will be used. Advanced usage only.\nExample:\ntarget_image: myfoo", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#target_image_source", + "href": "reference/config/engines/docker/index.html#target_image_source", + "title": "Docker Engine", + "section": "target_image_source", + "text": "target_image_source\nType: String\nDefault: Empty\nThe source of the target image. This is used for defining labels in the dockerfile.\nExample:\ntarget_image_source: https://github.com/foo/bar", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#target_organization", + "href": "reference/config/engines/docker/index.html#target_organization", + "title": "Docker Engine", + "section": "target_organization", + "text": "target_organization\nType: String\nDefault: Empty\nThe organization set in the resulting image. Advanced usage only.\nExample:\ntarget_organization: viash-io", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#target_registry", + "href": "reference/config/engines/docker/index.html#target_registry", + "title": "Docker Engine", + "section": "target_registry", + "text": "target_registry\nType: String\nDefault: Empty\nThe URL where the resulting image will be pushed to. Advanced usage only.\nExample:\ntarget_registry: https://my-docker-registry.org", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#target_tag", + "href": "reference/config/engines/docker/index.html#target_tag", + "title": "Docker Engine", + "section": "target_tag", + "text": "target_tag\nType: String\nDefault: Empty\nThe tag the resulting image gets. Advanced usage only.\nExample:\ntarget_tag: 0.5.0", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#test_setup", + "href": "reference/config/engines/docker/index.html#test_setup", + "title": "Docker Engine", + "section": "test_setup", + "text": "test_setup\nType: List of Requirements\nDefault: Empty\nAdditional requirements specific for running unit tests.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/engines/docker/index.html#type", + "href": "reference/config/engines/docker/index.html#type", + "title": "Docker Engine", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the engine.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine" + ] + }, + { + "objectID": "reference/config/runners/nextflow/index.html", + "href": "reference/config/runners/nextflow/index.html", + "title": "Nextflow Runner", + "section": "", + "text": "Run a Viash component on a Nextflow backend engine.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner" + ] + }, + { + "objectID": "reference/config/runners/nextflow/index.html#auto", + "href": "reference/config/runners/nextflow/index.html#auto", + "title": "Nextflow Runner", + "section": "auto", + "text": "auto\nType: NextflowAuto\nDefault: simplifyInput: true simplifyOutput: false transcript: false publish: false\nAutomated processing flags which can be toggled on or off:\n\n\n\n\n\n\n\n\nFlag\nDescription\nDefault\n\n\n\n\nsimplifyInput\nIf true, an input tuple only containing only a single File (e.g. [\"foo\", file(\"in.h5ad\")]) is automatically transformed to a map (i.e. [\"foo\", [ input: file(\"in.h5ad\") ] ]).\ntrue\n\n\nsimplifyOutput\nIf true, an output tuple containing a map with a File (e.g. [\"foo\", [ output: file(\"out.h5ad\") ] ]) is automatically transformed to a map (i.e. [\"foo\", file(\"out.h5ad\")]).\nfalse\n\n\ntranscript\nIf true, the module’s transcripts from work/ are automatically published to params.transcriptDir. If not defined, params.publishDir + \"/_transcripts\" will be used. Will throw an error if neither are defined.\nfalse\n\n\npublish\nIf true, the module’s outputs are automatically published to params.publishDir. If equal to \"state\", also a .state.yaml file will be published in the publish dir. Will throw an error if params.publishDir is not defined.\nfalse\n\n\n\nExample:\nauto:\n publish: true", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner" + ] + }, + { + "objectID": "reference/config/runners/nextflow/index.html#config", + "href": "reference/config/runners/nextflow/index.html#config", + "title": "Nextflow Runner", + "section": "config", + "text": "config\nType: NextflowConfig\nDefault: A series of default labels to specify memory and cpu constraints\nAllows tweaking how the Nextflow Config file is generated.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner" + ] + }, + { + "objectID": "reference/config/runners/nextflow/index.html#container", + "href": "reference/config/runners/nextflow/index.html#container", + "title": "Nextflow Runner", + "section": "container", + "text": "container\nType: String\nDefault: docker\nSpecifies the Docker engine id to be used to run Nextflow.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner" + ] + }, + { + "objectID": "reference/config/runners/nextflow/index.html#debug", + "href": "reference/config/runners/nextflow/index.html#debug", + "title": "Nextflow Runner", + "section": "debug", + "text": "debug\nType: Boolean\nDefault: False\nWhether or not to print debug messages.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner" + ] + }, + { + "objectID": "reference/config/runners/nextflow/index.html#directives", + "href": "reference/config/runners/nextflow/index.html#directives", + "title": "Nextflow Runner", + "section": "directives", + "text": "directives\nType: NextflowDirectives\nDefault: Empty\nDirectives are optional settings that affect the execution of the process. These mostly match up with the Nextflow counterparts.\nExample:\ndirectives:\n container: rocker/r-ver:4.1\n label: highcpu\n cpus: 4\n memory: 16 GB", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner" + ] + }, + { + "objectID": "reference/config/runners/nextflow/index.html#id", + "href": "reference/config/runners/nextflow/index.html#id", + "title": "Nextflow Runner", + "section": "id", + "text": "id\nType: String\nDefault: nextflow\nName of the runner. As with all runners, you can give an runner a different name. By specifying id: foo, you can target this runner (only) by specifying ... in any of the Viash commands.\nExamples:\nid: foo\nid: foo", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner" + ] + }, + { + "objectID": "reference/config/runners/nextflow/index.html#type", + "href": "reference/config/runners/nextflow/index.html#type", + "title": "Nextflow Runner", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the runner.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner" + ] + }, + { + "objectID": "reference/config/info.html#engine", + "href": "reference/config/info.html#engine", + "title": "Info", + "section": "engine", + "text": "engine\nType: String\nDefault: Empty\nThe engine id used during build.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/info.html#runner", + "href": "reference/config/info.html#runner", + "title": "Info", + "section": "runner", + "text": "runner\nType: String\nDefault: Empty\nThe runner id used during build.", + "crumbs": [ + "Reference", + "Config", + "Info" + ] + }, + { + "objectID": "reference/config/functionality/index.html#keywords", + "href": "reference/config/functionality/index.html#keywords", + "title": "Functionality", + "section": "keywords", + "text": "keywords\nType: List of String\nDefault: Empty\nThe keywords of the components.\nExample:\nkeywords: [ bioinformatics, genomics ]", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#license", + "href": "reference/config/functionality/index.html#license", + "title": "Functionality", + "section": "license", + "text": "license\nType: String\nDefault: Empty\nThe license of the package.\n\n\n\n\n\n\nNote\n\n\n\nWhen the license field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.\n\n\nExample:\nlicense: MIT", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#organization", + "href": "reference/config/functionality/index.html#organization", + "title": "Functionality", + "section": "organization", + "text": "organization\nType: String\nDefault: Empty\nThe organization of the package.\n\n\n\n\n\n\nNote\n\n\n\nWhen the organization field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.\n\n\nExample:\norganization: viash-io", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/runners/executable/index.html", + "href": "reference/config/runners/executable/index.html", + "title": "Executable Runner", + "section": "", + "text": "Run code as an executable.\nThis runner is the default runner. It will generate a bash script that can be run directly.\nThis runner is also used for the native engine.\nThis runner is also used for the docker engine.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Executable Runner" + ] + }, + { + "objectID": "reference/config/runners/executable/index.html#docker_run_args", + "href": "reference/config/runners/executable/index.html#docker_run_args", + "title": "Executable Runner", + "section": "docker_run_args", + "text": "docker_run_args\nType: String / List of String\nDefault: Empty\nProvide runtime arguments to Docker. See the documentation on docker run for more information.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Executable Runner" + ] + }, + { + "objectID": "reference/config/runners/executable/index.html#docker_setup_strategy", + "href": "reference/config/runners/executable/index.html#docker_setup_strategy", + "title": "Executable Runner", + "section": "docker_setup_strategy", + "text": "docker_setup_strategy\nType: DockerSetupStrategy\nDefault: ifneedbepullelsecachedbuild\nThe Docker setup strategy to use when building a docker engine enrivonment.\n\n\n\nStrategy\nDescription\n\n\n\n\nalwaysbuild / build / b\nAlways build the image from the dockerfile. This is the default setup strategy.\n\n\nalwayscachedbuild / cachedbuild / cb\nAlways build the image from the dockerfile, with caching enabled.\n\n\nifneedbebuild\nBuild the image if it does not exist locally.\n\n\nifneedbecachedbuild\nBuild the image with caching enabled if it does not exist locally, with caching enabled.\n\n\nalwayspull / pull / p\nTry to pull the container from Docker Hub or the specified docker registry.\n\n\nalwayspullelsebuild / pullelsebuild\nTry to pull the image from a registry and build it if it doesn’t exist.\n\n\nalwayspullelsecachedbuild / pullelsecachedbuild\nTry to pull the image from a registry and build it with caching if it doesn’t exist.\n\n\nifneedbepull\nIf the image does not exist locally, pull the image.\n\n\nifneedbepullelsebuild\nIf the image does not exist locally, pull the image. If the image does exist, build it.\n\n\nifneedbepullelsecachedbuild\nIf the image does not exist locally, pull the image. If the image does exist, build it with caching enabled.\n\n\npush\nPush the container to Docker Hub or the specified docker registry.\n\n\npushifnotpresent\nPush the container to Docker Hub or the specified docker registry if the tag does not exist yet.\n\n\ndonothing / meh\nDo not build or pull anything.\n\n\n\nExample:\nsetup_strategy: alwaysbuild", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Executable Runner" + ] + }, + { + "objectID": "reference/config/runners/executable/index.html#id", + "href": "reference/config/runners/executable/index.html#id", + "title": "Executable Runner", + "section": "id", + "text": "id\nType: String\nDefault: executable\nName of the runner. As with all runners, you can give an runner a different name. By specifying id: foo, you can target this executor (only) by specifying ... in any of the Viash commands.\nExamples:\nid: foo\nid: foo", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Executable Runner" + ] + }, + { + "objectID": "reference/config/runners/executable/index.html#port", + "href": "reference/config/runners/executable/index.html#port", + "title": "Executable Runner", + "section": "port", + "text": "port\nType: String / List of String\nDefault: Empty\nA list of enabled ports. This doesn’t change the Dockerfile but gets added as a command-line argument at runtime.\nExample:\nport:\n - 80\n - 8080", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Executable Runner" + ] + }, + { + "objectID": "reference/config/runners/executable/index.html#type", + "href": "reference/config/runners/executable/index.html#type", + "title": "Executable Runner", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the runner.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Executable Runner" + ] + }, + { + "objectID": "reference/config/runners/executable/index.html#workdir", + "href": "reference/config/runners/executable/index.html#workdir", + "title": "Executable Runner", + "section": "workdir", + "text": "workdir\nType: String\nDefault: Empty\nThe working directory when starting the engine. This doesn’t change the Dockerfile but gets added as a command-line argument at runtime.\nExample:\nworkdir: /home/user", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Executable Runner" + ] + }, + { + "objectID": "reference/config/runners/index.html", + "href": "reference/config/runners/index.html", + "title": "Runner", + "section": "", + "text": "A list of runners to generate target artifacts for.\n\nExecutable\nNextflow\n\nExample:\nrunners:\n - type: executable\n - type: nextflow", + "crumbs": [ + "Reference", + "Config", + "Runner" + ] + }, + { + "objectID": "reference/config/engines/native/index.html", + "href": "reference/config/engines/native/index.html", + "title": "Native Engine", + "section": "", + "text": "Running a Viash component on a native engine means that the script will be executed in your current environment. Any dependencies are assumed to have been installed by the user, so the native engine is meant for developers (who know what they’re doing) or for simple bash scripts (which have no extra dependencies).\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Native Engine" + ] + }, + { + "objectID": "reference/config/engines/native/index.html#id", + "href": "reference/config/engines/native/index.html#id", + "title": "Native Engine", + "section": "id", + "text": "id\nType: String\nDefault: native\nName of the engine. As with all engines, you can give an engine a different name. By specifying id: foo, you can target this engine (only) by specifying ... in any of the Viash commands.\nExamples:\nid: foo\nid: foo", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Native Engine" + ] + }, + { + "objectID": "reference/config/engines/native/index.html#type", + "href": "reference/config/engines/native/index.html#type", + "title": "Native Engine", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the engine.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Native Engine" + ] + }, + { + "objectID": "reference/config/index.html#engines", + "href": "reference/config/index.html#engines", + "title": "Config", + "section": "engines", + "text": "engines\nType: List of Engine\nDefault: Empty\nA list of engine environments to execute target artifacts in.\n\nNativeEngine\nDockerEngine", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#runners", + "href": "reference/config/index.html#runners", + "title": "Config", + "section": "runners", + "text": "runners\nType: List of Runner\nDefault: Empty\nA list of runners to execute target artifacts.\n\nExecutableRunner\nNextflowRunner", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/project/configReferences.html", + "href": "reference/project/configReferences.html", + "title": "Project Config References", + "section": "", + "text": "References to external resources related to the project.\nExample:" + }, + { + "objectID": "reference/project/configReferences.html#bibtex", + "href": "reference/project/configReferences.html#bibtex", + "title": "Project Config References", + "section": "bibtex", + "text": "bibtex\nType: String / List of String\nOne or multiple BibTeX reference(s) of the project.\nExample:\nbibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }" + }, + { + "objectID": "reference/project/configReferences.html#doi", + "href": "reference/project/configReferences.html#doi", + "title": "Project Config References", + "section": "doi", + "text": "doi\nType: String / List of String\nOne or multiple DOI reference(s) of the project.\nExample:\ndoi: 10.1000/xx.123456.789" + }, + { + "objectID": "reference/config/functionality/index.html#links", + "href": "reference/config/functionality/index.html#links", + "title": "Functionality", + "section": "links", + "text": "links\nType: Links\nDefault: Empty\nExternal links of the component.\nExample:\nlinks:\n repository: \"https://github.com/viash-io/viash\"\n docker_registry: \"https://ghcr.io\"\n homepage: \"https://viash.io\"\n documentation: \"https://viash.io/reference/\"\n issue_tracker: \"https://github.com/viash-io/viash/issues\"", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality/index.html#reference", + "href": "reference/config/functionality/index.html#reference", + "title": "Functionality", + "section": "reference", + "text": "reference\nType: References\nDefault: Empty\nReferences to external resources related to the component.\nExample:\nreference:\n doi: 10.1000/xx.123456.789\n bibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/project/references.html", + "href": "reference/config/project/references.html", + "title": "References", + "section": "", + "text": "References to external resources related to the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Project", + "References" + ] + }, + { + "objectID": "reference/config/project/references.html#bibtex", + "href": "reference/config/project/references.html#bibtex", + "title": "References", + "section": "bibtex", + "text": "bibtex\nType: String / List of String\nOne or multiple BibTeX reference(s) of the component.\nExample:\nbibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }", + "crumbs": [ + "Reference", + "Config", + "Project", + "References" + ] + }, + { + "objectID": "reference/config/project/references.html#doi", + "href": "reference/config/project/references.html#doi", + "title": "References", + "section": "doi", + "text": "doi\nType: String / List of String\nOne or multiple DOI reference(s) of the component.\nExample:\ndoi: 10.1000/xx.123456.789", + "crumbs": [ + "Reference", + "Config", + "Project", + "References" + ] + }, + { + "objectID": "reference/config/functionality/links.html", + "href": "reference/config/functionality/links.html", + "title": "Links", + "section": "", + "text": "Links to external resources related to the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Links" + ] + }, + { + "objectID": "reference/config/functionality/links.html#docker_registry", + "href": "reference/config/functionality/links.html#docker_registry", + "title": "Links", + "section": "docker_registry", + "text": "docker_registry\nType: String\nDefault: Empty\nDocker registry url.\n\n\n\n\n\n\nNote\n\n\n\nWhen the docker_registry field is left empty in a component’s .functionality.links configuration, the value of .links.repository in the project config will be copied during build.\n\n\nExample:\ndocker_registry: \"https://ghcr.io\"", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Links" + ] + }, + { + "objectID": "reference/config/functionality/links.html#documentation", + "href": "reference/config/functionality/links.html#documentation", + "title": "Links", + "section": "documentation", + "text": "documentation\nType: String\nDefault: Empty\nDocumentation website url.\nExample:\ndocumentation: \"https://viash.io/reference/\"", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Links" + ] + }, + { + "objectID": "reference/config/functionality/links.html#homepage", + "href": "reference/config/functionality/links.html#homepage", + "title": "Links", + "section": "homepage", + "text": "homepage\nType: String\nDefault: Empty\nHomepage website url.\nExample:\nhomepage: \"https://viash.io\"", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Links" + ] + }, + { + "objectID": "reference/config/functionality/links.html#issue_tracker", + "href": "reference/config/functionality/links.html#issue_tracker", + "title": "Links", + "section": "issue_tracker", + "text": "issue_tracker\nType: String\nDefault: Empty\nIssue tracker url.\nExample:\nissue_tracker: \"https://github.com/viash-io/viash/issues\"", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Links" + ] + }, + { + "objectID": "reference/config/functionality/links.html#repository", + "href": "reference/config/functionality/links.html#repository", + "title": "Links", + "section": "repository", + "text": "repository\nType: String\nDefault: Empty\nSource repository url.\n\n\n\n\n\n\nNote\n\n\n\nWhen the repository field is left empty in a component’s .functionality.links configuration, the value of .links.repository in the project config will be copied during build.\n\n\nExample:\nrepository: \"https://github.com/viash-io/viash\"", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Links" + ] + }, + { + "objectID": "reference/projectConfig/index.html", + "href": "reference/projectConfig/index.html", + "title": "Project Config", + "section": "", + "text": "A Viash project configuration file. It’s name should be _viash.yaml.\nExample:", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#authors", + "href": "reference/projectConfig/index.html#authors", + "title": "Project Config", + "section": "authors", + "text": "authors\nType: List of Author\nDefault: Empty\nThe authors of the project.\nExample:\nauthors:\n - name: Jane Doe\n role: [author, maintainer]\n email: jane@doe.com\n info:\n github: janedoe\n twitter: janedoe\n orcid: XXAABBCCXX\n groups: [ one, two, three ]\n - name: Tim Farbe\n roles: [author]\n email: tim@far.be", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#config_mods", + "href": "reference/projectConfig/index.html#config_mods", + "title": "Project Config", + "section": "config_mods", + "text": "config_mods\nType: String / List of String\nDefault: Empty\nWhich config mods to apply.\nExample:\nconfig_mods: \".functionality.name := 'foo'\"", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#description", + "href": "reference/projectConfig/index.html#description", + "title": "Project Config", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the project.\nExample:\ndescription: My project", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#info", + "href": "reference/projectConfig/index.html#info", + "title": "Project Config", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n twitter: wizzkid\n classes: [ one, two, three ]", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#keywords", + "href": "reference/projectConfig/index.html#keywords", + "title": "Project Config", + "section": "keywords", + "text": "keywords\nType: List of String\nDefault: Empty\nThe keywords of the project.\nExample:\nkeywords: [ bioinformatics, genomics ]", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#license", + "href": "reference/projectConfig/index.html#license", + "title": "Project Config", + "section": "license", + "text": "license\nType: String\nDefault: Empty\nThe license of the project.\n\n\n\n\n\n\nNote\n\n\n\nWhen the license field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.\n\n\nExample:\nlicense: MIT", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#links", + "href": "reference/projectConfig/index.html#links", + "title": "Project Config", + "section": "links", + "text": "links\nType: Links\nDefault: Empty\nExternal links of the project.\nExample:\nlinks:\n repository: \"https://github.com/viash-io/viash\"\n docker_registry: \"https://ghcr.io\"\n homepage: \"https://viash.io\"\n documentation: \"https://viash.io/reference/\"\n issue_tracker: \"https://github.com/viash-io/viash/issues\"", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#name", + "href": "reference/projectConfig/index.html#name", + "title": "Project Config", + "section": "name", + "text": "name\nType: String\nDefault: Empty\nThe name of the project.\nExample:\nname: my_project", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#organization", + "href": "reference/projectConfig/index.html#organization", + "title": "Project Config", + "section": "organization", + "text": "organization\nType: String\nDefault: Empty\nThe organization of the project.\n\n\n\n\n\n\nNote\n\n\n\nWhen the organization field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.\n\n\nExample:\norganization: viash-io", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#reference", + "href": "reference/projectConfig/index.html#reference", + "title": "Project Config", + "section": "reference", + "text": "reference\nType: References\nDefault: Empty\nReferences to external resources related to the project.\nExample:\nreference:\n doi: 10.1000/xx.123456.789\n bibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#repositories", + "href": "reference/projectConfig/index.html#repositories", + "title": "Project Config", + "section": "repositories", + "text": "repositories\nType: List of RepositoryWithName\nDefault: Empty\nCommon repository definitions for component dependencies.\n\n\n\n\n\n\nNote\n\n\n\nAny repositories defined under .repositories in the project config will be prepended to the repositories defined to a component’s .functionality.repositories field.\n\n\nExample:\nrepositories:\n - name: openpipelines-bio\n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#source", + "href": "reference/projectConfig/index.html#source", + "title": "Project Config", + "section": "source", + "text": "source\nType: String\nDefault: Empty\nWhich source directory to use for the viash ns commands.\nExample:\nsource: src", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#target", + "href": "reference/projectConfig/index.html#target", + "title": "Project Config", + "section": "target", + "text": "target\nType: String\nDefault: Empty\nWhich target directory to use for viash ns build.\nExample:\ntarget: target", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#version", + "href": "reference/projectConfig/index.html#version", + "title": "Project Config", + "section": "version", + "text": "version\nType: String\nDefault: Empty\nThe version of the project.\n\n\n\n\n\n\nNote\n\n\n\nWhen the version field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.\n\n\nExample:\nversion: 0.1.0", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/projectConfig/index.html#viash_version", + "href": "reference/projectConfig/index.html#viash_version", + "title": "Project Config", + "section": "viash_version", + "text": "viash_version\nType: String\nDefault: Empty\nWhich version of Viash to use.\nExample:\nviash_versions: 0.6.4", + "crumbs": [ + "Reference", + "Project Config" + ] + }, + { + "objectID": "reference/config/functionality/repositories/index.html", + "href": "reference/config/functionality/repositories/index.html", + "title": "Repository", + "section": "", + "text": "Specifies a repository where dependency components can be found.\n\nlocal\ngit\ngithub\nvsh\n\nExample:\nrepositories:\n - name: openpipelines-bio\n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/githubRepository.html", + "href": "reference/config/functionality/repositories/githubRepository.html", + "title": "Github Repository", + "section": "", + "text": "A GitHub repository where remote dependency components can be found.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/githubRepository.html#name", + "href": "reference/config/functionality/repositories/githubRepository.html#name", + "title": "Github Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/githubRepository.html#path", + "href": "reference/config/functionality/repositories/githubRepository.html#path", + "title": "Github Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/githubRepository.html#repo", + "href": "reference/config/functionality/repositories/githubRepository.html#repo", + "title": "Github Repository", + "section": "repo", + "text": "repo\nType: String\nThe name of the GitHub repository.\nExample:\nrepo: viash-io/viash", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/githubRepository.html#tag", + "href": "reference/config/functionality/repositories/githubRepository.html#tag", + "title": "Github Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/githubRepository.html#type", + "href": "reference/config/functionality/repositories/githubRepository.html#type", + "title": "Github Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a GitHub repository.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/viashhubRepository.html", + "href": "reference/config/functionality/repositories/viashhubRepository.html", + "title": "Viashhub Repository", + "section": "", + "text": "A Viash-Hub repository where remote dependency components can be found.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/viashhubRepository.html#name", + "href": "reference/config/functionality/repositories/viashhubRepository.html#name", + "title": "Viashhub Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/viashhubRepository.html#path", + "href": "reference/config/functionality/repositories/viashhubRepository.html#path", + "title": "Viashhub Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/viashhubRepository.html#repo", + "href": "reference/config/functionality/repositories/viashhubRepository.html#repo", + "title": "Viashhub Repository", + "section": "repo", + "text": "repo\nType: String\nThe name of the Viash-Hub repository.\nExample:\nrepo: openpipelines-bio/openpipeline", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/viashhubRepository.html#tag", + "href": "reference/config/functionality/repositories/viashhubRepository.html#tag", + "title": "Viashhub Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/viashhubRepository.html#type", + "href": "reference/config/functionality/repositories/viashhubRepository.html#type", + "title": "Viashhub Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Viash-Hub repository.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/localRepository.html", + "href": "reference/config/functionality/repositories/localRepository.html", + "title": "Local Repository", + "section": "", + "text": "Defines a locally present and available repository. This can be used to define components from the same code base as the current component. Alternatively, this can be used to refer to a code repository present on the local hard-drive instead of fetchable remotely, for example during development.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/localRepository.html#name", + "href": "reference/config/functionality/repositories/localRepository.html#name", + "title": "Local Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/localRepository.html#path", + "href": "reference/config/functionality/repositories/localRepository.html#path", + "title": "Local Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/localRepository.html#tag", + "href": "reference/config/functionality/repositories/localRepository.html#tag", + "title": "Local Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/localRepository.html#type", + "href": "reference/config/functionality/repositories/localRepository.html#type", + "title": "Local Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a locally present and available repository.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/gitRepository.html", + "href": "reference/config/functionality/repositories/gitRepository.html", + "title": "Git Repository", + "section": "", + "text": "A Git repository where remote dependency components can be found.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/gitRepository.html#name", + "href": "reference/config/functionality/repositories/gitRepository.html#name", + "title": "Git Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/gitRepository.html#path", + "href": "reference/config/functionality/repositories/gitRepository.html#path", + "title": "Git Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/gitRepository.html#tag", + "href": "reference/config/functionality/repositories/gitRepository.html#tag", + "title": "Git Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/gitRepository.html#type", + "href": "reference/config/functionality/repositories/gitRepository.html#type", + "title": "Git Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Git repository.", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/functionality/repositories/gitRepository.html#uri", + "href": "reference/config/functionality/repositories/gitRepository.html#uri", + "title": "Git Repository", + "section": "uri", + "text": "uri\nType: String\nThe URI of the Git repository.\nExample:\nuri: \"git+https://github.com/openpipelines-bio/openpipeline.git\"", + "crumbs": [ + "Reference", + "Config", + "Functionality", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/packageConfig/index.html", + "href": "reference/packageConfig/index.html", + "title": "Package Config", + "section": "", + "text": "A Viash package configuration file. It’s name should be _viash.yaml.\nExample:", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#authors", + "href": "reference/packageConfig/index.html#authors", + "title": "Package Config", + "section": "authors", + "text": "authors\nType: List of Author\nDefault: Empty\nThe authors of the package.\nExample:\nauthors:\n - name: Jane Doe\n role: [author, maintainer]\n email: jane@doe.com\n info:\n github: janedoe\n twitter: janedoe\n orcid: XXAABBCCXX\n groups: [ one, two, three ]\n - name: Tim Farbe\n roles: [author]\n email: tim@far.be", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#config_mods", + "href": "reference/packageConfig/index.html#config_mods", + "title": "Package Config", + "section": "config_mods", + "text": "config_mods\nType: String / List of String\nDefault: Empty\nWhich config mods to apply.\nExample:\nconfig_mods: \".name := 'foo'\"", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#description", + "href": "reference/packageConfig/index.html#description", + "title": "Package Config", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the package.\nExample:\ndescription: My package", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#info", + "href": "reference/packageConfig/index.html#info", + "title": "Package Config", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n twitter: wizzkid\n classes: [ one, two, three ]", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#keywords", + "href": "reference/packageConfig/index.html#keywords", + "title": "Package Config", + "section": "keywords", + "text": "keywords\nType: List of String\nDefault: Empty\nThe keywords of the package.\nExample:\nkeywords: [ bioinformatics, genomics ]", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#license", + "href": "reference/packageConfig/index.html#license", + "title": "Package Config", + "section": "license", + "text": "license\nType: String\nDefault: Empty\nThe license of the package.\nExample:\nlicense: MIT", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#links", + "href": "reference/packageConfig/index.html#links", + "title": "Package Config", + "section": "links", + "text": "links\nType: Links\nDefault: Empty\nExternal links of the package.\nExample:\nlinks:\n repository: \"https://github.com/viash-io/viash\"\n docker_registry: \"https://ghcr.io\"\n homepage: \"https://viash.io\"\n documentation: \"https://viash.io/reference/\"\n issue_tracker: \"https://github.com/viash-io/viash/issues\"", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#name", + "href": "reference/packageConfig/index.html#name", + "title": "Package Config", + "section": "name", + "text": "name\nType: String\nDefault: Empty\nThe name of the package.\nExample:\nname: my_package", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#organization", + "href": "reference/packageConfig/index.html#organization", + "title": "Package Config", + "section": "organization", + "text": "organization\nType: String\nDefault: Empty\nThe organization of the package.\nExample:\norganization: viash-io", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#references", + "href": "reference/packageConfig/index.html#references", + "title": "Package Config", + "section": "references", + "text": "references\nType: References\nDefault: Empty\nReferences to external resources related to the package.\nExample:\nreferences:\n doi: 10.1000/xx.123456.789\n bibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#repositories", + "href": "reference/packageConfig/index.html#repositories", + "title": "Package Config", + "section": "repositories", + "text": "repositories\nType: List of RepositoryWithName\nDefault: Empty\nCommon repository definitions for component dependencies.\nExample:\nrepositories:\n - name: openpipelines-bio\n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#source", + "href": "reference/packageConfig/index.html#source", + "title": "Package Config", + "section": "source", + "text": "source\nType: String\nDefault: Empty\nWhich source directory to use for the viash ns commands.\nExample:\nsource: src", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#target", + "href": "reference/packageConfig/index.html#target", + "title": "Package Config", + "section": "target", + "text": "target\nType: String\nDefault: Empty\nWhich target directory to use for viash ns build.\nExample:\ntarget: target", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#version", + "href": "reference/packageConfig/index.html#version", + "title": "Package Config", + "section": "version", + "text": "version\nType: String\nDefault: Empty\nThe version of the package.\nExample:\nversion: 0.1.0", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/packageConfig/index.html#viash_version", + "href": "reference/packageConfig/index.html#viash_version", + "title": "Package Config", + "section": "viash_version", + "text": "viash_version\nType: String\nDefault: Empty\nWhich version of Viash to use.\nExample:\nviash_versions: 0.6.4", + "crumbs": [ + "Reference", + "Package Config" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html", + "href": "reference/config/engines/docker/setup/rRequirements.html", + "title": "R Requirements", + "section": "", + "text": "Specify which R packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#bioc", + "href": "reference/config/engines/docker/setup/rRequirements.html#bioc", + "title": "R Requirements", + "section": "bioc", + "text": "bioc\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from BioConductor.\nExample:\nbioc: [ AnnotationDbi ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#bioc_force_install", + "href": "reference/config/engines/docker/setup/rRequirements.html#bioc_force_install", + "title": "R Requirements", + "section": "bioc_force_install", + "text": "bioc_force_install\nType: Boolean\nDefault: False\nForces packages specified in bioc to be reinstalled, even if they are already present in the container. Default: false.\nExample:\nbioc_force_install: false", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#bitbucket", + "href": "reference/config/engines/docker/setup/rRequirements.html#bitbucket", + "title": "R Requirements", + "section": "bitbucket", + "text": "bitbucket\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from Bitbucket.\nExample:\nbitbucket: [ org/package ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#cran", + "href": "reference/config/engines/docker/setup/rRequirements.html#cran", + "title": "R Requirements", + "section": "cran", + "text": "cran\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from CRAN.\nExample:\ncran: [ anndata, ggplot2 ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#git", + "href": "reference/config/engines/docker/setup/rRequirements.html#git", + "title": "R Requirements", + "section": "git", + "text": "git\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Git URI.\nExample:\ngit: [ https://some.git.repository/org/repo ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#github", + "href": "reference/config/engines/docker/setup/rRequirements.html#github", + "title": "R Requirements", + "section": "github", + "text": "github\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitHub.\nExample:\ngithub: [ rcannood/SCORPIUS ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#gitlab", + "href": "reference/config/engines/docker/setup/rRequirements.html#gitlab", + "title": "R Requirements", + "section": "gitlab", + "text": "gitlab\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitLab.\nExample:\ngitlab: [ org/package ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#packages", + "href": "reference/config/engines/docker/setup/rRequirements.html#packages", + "title": "R Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from CRAN.\nExample:\npackages: [ anndata, ggplot2 ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#script", + "href": "reference/config/engines/docker/setup/rRequirements.html#script", + "title": "R Requirements", + "section": "script", + "text": "script\nType: String / List of String\nDefault: Empty\nSpecifies a code block to run as part of the build.\nExample:\nscript: |\n cat(\"Running custom code\n\")\n install.packages(\"anndata\")", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#svn", + "href": "reference/config/engines/docker/setup/rRequirements.html#svn", + "title": "R Requirements", + "section": "svn", + "text": "svn\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using an SVN URI.\nExample:\nsvn: [ https://path.to.svn/group/repo ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#type", + "href": "reference/config/engines/docker/setup/rRequirements.html#type", + "title": "R Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rRequirements.html#url", + "href": "reference/config/engines/docker/setup/rRequirements.html#url", + "title": "R Requirements", + "section": "url", + "text": "url\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a generic URI.\nExample:\nurl: [ https://github.com/hadley/stringr/archive/HEAD.zip ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "R Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html", + "href": "reference/config/engines/docker/setup/pythonRequirements.html", + "title": "Python Requirements", + "section": "", + "text": "Specify which Python packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#bazaar", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#bazaar", + "title": "Python Requirements", + "section": "bazaar", + "text": "bazaar\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Bazaar URI.\nExample:\nbazaar: [ http://bazaar.launchpad.net/some_pkg/some_pkg/release-0.1 ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#git", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#git", + "title": "Python Requirements", + "section": "git", + "text": "git\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Git URI.\nExample:\ngit: [ https://some.git.repository/org/repo ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#github", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#github", + "title": "Python Requirements", + "section": "github", + "text": "github\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitHub.\nExample:\ngithub: [ jkbr/httpie ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#gitlab", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#gitlab", + "title": "Python Requirements", + "section": "gitlab", + "text": "gitlab\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitLab.\nExample:\ngitlab: [ foo/bar ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#mercurial", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#mercurial", + "title": "Python Requirements", + "section": "mercurial", + "text": "mercurial\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Mercurial URI.\nExample:\nmercurial: [ https://hg.myproject.org/MyProject/#egg=MyProject ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#packages", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#packages", + "title": "Python Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from pip.\nExample:\npackages: [ numpy ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#pip", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#pip", + "title": "Python Requirements", + "section": "pip", + "text": "pip\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from pip.\nExample:\npip: [ numpy ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#pypi", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#pypi", + "title": "Python Requirements", + "section": "pypi", + "text": "pypi\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from PyPI using pip.\nExample:\npypi: [ numpy ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#script", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#script", + "title": "Python Requirements", + "section": "script", + "text": "script\nType: String / List of String\nDefault: Empty\nSpecifies a code block to run as part of the build.\nExample:\nscript: |\n print(\"Running custom code\")\n x = 1 + 1 == 2", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#svn", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#svn", + "title": "Python Requirements", + "section": "svn", + "text": "svn\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using an SVN URI.\nExample:\nsvn: [ http://svn.repo/some_pkg/trunk/#egg=SomePackage ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#type", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#type", + "title": "Python Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#upgrade", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#upgrade", + "title": "Python Requirements", + "section": "upgrade", + "text": "upgrade\nType: Boolean\nDefault: True\nSets the --upgrade flag when set to true. Default: true.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#url", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#url", + "title": "Python Requirements", + "section": "url", + "text": "url\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a generic URI.\nExample:\nurl: [ https://github.com/some_org/some_pkg/zipball/master ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/pythonRequirements.html#user", + "href": "reference/config/engines/docker/setup/pythonRequirements.html#user", + "title": "Python Requirements", + "section": "user", + "text": "user\nType: Boolean\nDefault: False\nSets the --user flag when set to true. Default: false.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Python Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rubyRequirements.html", + "href": "reference/config/engines/docker/setup/rubyRequirements.html", + "title": "Ruby Requirements", + "section": "", + "text": "Specify which Ruby packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Ruby Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rubyRequirements.html#packages", + "href": "reference/config/engines/docker/setup/rubyRequirements.html#packages", + "title": "Ruby Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install.\nExample:\npackages: [ rspec ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Ruby Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/rubyRequirements.html#type", + "href": "reference/config/engines/docker/setup/rubyRequirements.html#type", + "title": "Ruby Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Ruby Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/yumRequirements.html", + "href": "reference/config/engines/docker/setup/yumRequirements.html", + "title": "Yum Requirements", + "section": "", + "text": "Specify which yum packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Yum Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/yumRequirements.html#packages", + "href": "reference/config/engines/docker/setup/yumRequirements.html#packages", + "title": "Yum Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install.\nExample:\npackages: [ sl ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Yum Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/yumRequirements.html#type", + "href": "reference/config/engines/docker/setup/yumRequirements.html#type", + "title": "Yum Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Yum Requirements" + ] + }, + { + "objectID": "reference/config/runners/nextflow/auto.html", + "href": "reference/config/runners/nextflow/auto.html", + "title": "Nextflow Auto", + "section": "", + "text": "Automated processing flags which can be toggled on or off.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/runners/nextflow/auto.html#publish", + "href": "reference/config/runners/nextflow/auto.html#publish", + "title": "Nextflow Auto", + "section": "publish", + "text": "publish\nType: Either - Boolean - String\nDefault: False\nIf true, the module’s outputs are automatically published to params.publishDir. If equal to \"state\", also a .state.yaml file will be published in the publish dir. Will throw an error if params.publishDir is not defined.\nDefault: false.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/runners/nextflow/auto.html#simplifyinput", + "href": "reference/config/runners/nextflow/auto.html#simplifyinput", + "title": "Nextflow Auto", + "section": "simplifyInput", + "text": "simplifyInput\nType: Boolean\nDefault: True\nIf true, an input tuple only containing only a single File (e.g. [\"foo\", file(\"in.h5ad\")]) is automatically transformed to a map (i.e. [\"foo\", [ input: file(\"in.h5ad\") ] ]).\nDefault: true.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/runners/nextflow/auto.html#simplifyoutput", + "href": "reference/config/runners/nextflow/auto.html#simplifyoutput", + "title": "Nextflow Auto", + "section": "simplifyOutput", + "text": "simplifyOutput\nType: Boolean\nDefault: False\nIf true, an output tuple containing a map with a File (e.g. [\"foo\", [ output: file(\"out.h5ad\") ] ]) is automatically transformed to a map (i.e. [\"foo\", file(\"out.h5ad\")]).\nDefault: false.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/runners/nextflow/auto.html#transcript", + "href": "reference/config/runners/nextflow/auto.html#transcript", + "title": "Nextflow Auto", + "section": "transcript", + "text": "transcript\nType: Boolean\nDefault: False\nIf true, the module’s transcripts from work/ are automatically published to params.transcriptDir. If not defined, params.publishDir + \"/_transcripts\" will be used. Will throw an error if neither are defined.\nDefault: false.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Auto" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html", + "href": "reference/config/runners/nextflow/directives.html", + "title": "Nextflow Directives", + "section": "", + "text": "Directives are optional settings that affect the execution of the process.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#accelerator", + "href": "reference/config/runners/nextflow/directives.html#accelerator", + "title": "Nextflow Directives", + "section": "accelerator", + "text": "accelerator\nType: Map of String to String\nDefault: Empty\nThe accelerator directive allows you to specify the hardware accelerator requirement for the task execution e.g. GPU processor.\nViash implements this directive as a map with accepted keywords: type, limit, request, and runtime.\nSee accelerator.\nExample:\n[ limit: 4, type: \"nvidia-tesla-k80\" ]", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#afterscript", + "href": "reference/config/runners/nextflow/directives.html#afterscript", + "title": "Nextflow Directives", + "section": "afterScript", + "text": "afterScript\nType: String\nDefault: Empty\nThe afterScript directive allows you to execute a custom (Bash) snippet immediately after the main process has run. This may be useful to clean up your staging area.\nSee afterScript.\nExample:\nsource /cluster/bin/cleanup", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#beforescript", + "href": "reference/config/runners/nextflow/directives.html#beforescript", + "title": "Nextflow Directives", + "section": "beforeScript", + "text": "beforeScript\nType: String\nDefault: Empty\nThe beforeScript directive allows you to execute a custom (Bash) snippet before the main process script is run. This may be useful to initialise the underlying cluster environment or for other custom initialisation.\nSee beforeScript.\nExample:\nsource /cluster/bin/setup", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#cache", + "href": "reference/config/runners/nextflow/directives.html#cache", + "title": "Nextflow Directives", + "section": "cache", + "text": "cache\nType: Either - Boolean - String\nDefault: Empty\nThe cache directive allows you to store the process results to a local cache. When the cache is enabled and the pipeline is launched with the resume option, any following attempt to execute the process, along with the same inputs, will cause the process execution to be skipped, producing the stored data as the actual results.\nThe caching feature generates a unique key by indexing the process script and inputs. This key is used to identify univocally the outputs produced by the process execution.\nThe cache is enabled by default, you can disable it for a specific process by setting the cache directive to false.\nAccepted values are: true, false, \"deep\", and \"lenient\".\nSee cache.\nExamples:\ntrue\nfalse\n\"deep\"\n\"lenient\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#conda", + "href": "reference/config/runners/nextflow/directives.html#conda", + "title": "Nextflow Directives", + "section": "conda", + "text": "conda\nType: String / List of String\nDefault: Empty\nThe conda directive allows for the definition of the process dependencies using the Conda package manager.\nNextflow automatically sets up an environment for the given package names listed by in the conda directive.\nSee conda.\nExamples:\n\"bwa=0.7.15\"\n\"bwa=0.7.15 fastqc=0.11.5\"\n[\"bwa=0.7.15\", \"fastqc=0.11.5\"]", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#container", + "href": "reference/config/runners/nextflow/directives.html#container", + "title": "Nextflow Directives", + "section": "container", + "text": "container\nType: Either - Map of String to String - String\nDefault: Empty\nThe container directive allows you to execute the process script in a Docker container.\nIt requires the Docker daemon to be running in machine where the pipeline is executed, i.e. the local machine when using the local executor or the cluster nodes when the pipeline is deployed through a grid executor.\nViash implements allows either a string value or a map. In case a map is used, the allowed keys are: registry, image, and tag. The image value must be specified.\nSee container.\nExamples:\n\"foo/bar:tag\"\nThis is transformed to \"reg/im:ta\":\n[ registry: \"reg\", image: \"im\", tag: \"ta\" ]\nThis is transformed to \"im:latest\":\n[ image: \"im\" ]", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#containeroptions", + "href": "reference/config/runners/nextflow/directives.html#containeroptions", + "title": "Nextflow Directives", + "section": "containerOptions", + "text": "containerOptions\nType: String / List of String\nDefault: Empty\nThe containerOptions directive allows you to specify any container execution option supported by the underlying container engine (ie. Docker, Singularity, etc). This can be useful to provide container settings only for a specific process e.g. mount a custom path.\nSee containerOptions.\nExamples:\n\"--foo bar\"\n[\"--foo bar\", \"-f b\"]", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#cpus", + "href": "reference/config/runners/nextflow/directives.html#cpus", + "title": "Nextflow Directives", + "section": "cpus", + "text": "cpus\nType: Either - Int - String\nDefault: Empty\nThe cpus directive allows you to define the number of (logical) CPU required by the process’ task.\nSee cpus.\nExamples:\n1\n10", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#disk", + "href": "reference/config/runners/nextflow/directives.html#disk", + "title": "Nextflow Directives", + "section": "disk", + "text": "disk\nType: String\nDefault: Empty\nThe disk directive allows you to define how much local disk storage the process is allowed to use.\nSee disk.\nExamples:\n\"1 GB\"\n\"2TB\"\n\"3.2KB\"\n\"10.B\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#echo", + "href": "reference/config/runners/nextflow/directives.html#echo", + "title": "Nextflow Directives", + "section": "echo", + "text": "echo\nType: Either - Boolean - String\nDefault: Empty\nBy default the stdout produced by the commands executed in all processes is ignored. By setting the echo directive to true, you can forward the process stdout to the current top running process stdout file, showing it in the shell terminal.\nSee echo.\nExamples:\ntrue\nfalse", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#errorstrategy", + "href": "reference/config/runners/nextflow/directives.html#errorstrategy", + "title": "Nextflow Directives", + "section": "errorStrategy", + "text": "errorStrategy\nType: String\nDefault: Empty\nThe errorStrategy directive allows you to define how an error condition is managed by the process. By default when an error status is returned by the executed script, the process stops immediately. This in turn forces the entire pipeline to terminate.\nTable of available error strategies: | Name | Executor | |——|———-| | terminate | Terminates the execution as soon as an error condition is reported. Pending jobs are killed (default) | | finish | Initiates an orderly pipeline shutdown when an error condition is raised, waiting the completion of any submitted job. | | ignore | Ignores processes execution errors. | | retry | Re-submit for execution a process returning an error condition. |\nSee errorStrategy.\nExamples:\n\"terminate\"\n\"finish\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#executor", + "href": "reference/config/runners/nextflow/directives.html#executor", + "title": "Nextflow Directives", + "section": "executor", + "text": "executor\nType: String\nDefault: Empty\nThe executor defines the underlying system where processes are executed. By default a process uses the executor defined globally in the nextflow.config file.\nThe executor directive allows you to configure what executor has to be used by the process, overriding the default configuration. The following values can be used:\n\n\n\n\n\n\n\nName\nExecutor\n\n\n\n\nawsbatch\nThe process is executed using the AWS Batch service.\n\n\nazurebatch\nThe process is executed using the Azure Batch service.\n\n\ncondor\nThe process is executed using the HTCondor job scheduler.\n\n\ngoogle-lifesciences\nThe process is executed using the Google Genomics Pipelines service.\n\n\nignite\nThe process is executed using the Apache Ignite cluster.\n\n\nk8s\nThe process is executed using the Kubernetes cluster.\n\n\nlocal\nThe process is executed in the computer where Nextflow is launched.\n\n\nlsf\nThe process is executed using the Platform LSF job scheduler.\n\n\nmoab\nThe process is executed using the Moab job scheduler.\n\n\nnqsii\nThe process is executed using the NQSII job scheduler.\n\n\noge\nAlias for the sge executor.\n\n\npbs\nThe process is executed using the PBS/Torque job scheduler.\n\n\npbspro\nThe process is executed using the PBS Pro job scheduler.\n\n\nsge\nThe process is executed using the Sun Grid Engine / Open Grid Engine.\n\n\nslurm\nThe process is executed using the SLURM job scheduler.\n\n\ntes\nThe process is executed using the GA4GH TES service.\n\n\nuge\nAlias for the sge executor.\n\n\n\nSee executor.\nExamples:\n\"local\"\n\"sge\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#label", + "href": "reference/config/runners/nextflow/directives.html#label", + "title": "Nextflow Directives", + "section": "label", + "text": "label\nType: String / List of String\nDefault: Empty\nThe label directive allows the annotation of processes with mnemonic identifier of your choice.\nSee label.\nExamples:\n\"big_mem\"\n\"big_cpu\"\n[\"big_mem\", \"big_cpu\"]", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#machinetype", + "href": "reference/config/runners/nextflow/directives.html#machinetype", + "title": "Nextflow Directives", + "section": "machineType", + "text": "machineType\nType: String\nDefault: Empty\nThe machineType can be used to specify a predefined Google Compute Platform machine type when running using the Google Life Sciences executor.\nSee machineType.\nExample:\n\"n1-highmem-8\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#maxerrors", + "href": "reference/config/runners/nextflow/directives.html#maxerrors", + "title": "Nextflow Directives", + "section": "maxErrors", + "text": "maxErrors\nType: Either - String - Int\nDefault: Empty\nThe maxErrors directive allows you to specify the maximum number of times a process can fail when using the retry error strategy. By default this directive is disabled.\nSee maxErrors.\nExamples:\n1\n3", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#maxforks", + "href": "reference/config/runners/nextflow/directives.html#maxforks", + "title": "Nextflow Directives", + "section": "maxForks", + "text": "maxForks\nType: Either - String - Int\nDefault: Empty\nThe maxForks directive allows you to define the maximum number of process instances that can be executed in parallel. By default this value is equals to the number of CPU cores available minus 1.\nIf you want to execute a process in a sequential manner, set this directive to one.\nSee maxForks.\nExamples:\n1\n3", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#maxretries", + "href": "reference/config/runners/nextflow/directives.html#maxretries", + "title": "Nextflow Directives", + "section": "maxRetries", + "text": "maxRetries\nType: Either - String - Int\nDefault: Empty\nThe maxRetries directive allows you to define the maximum number of times a process instance can be re-submitted in case of failure. This value is applied only when using the retry error strategy. By default only one retry is allowed.\nSee maxRetries.\nExamples:\n1\n3", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#memory", + "href": "reference/config/runners/nextflow/directives.html#memory", + "title": "Nextflow Directives", + "section": "memory", + "text": "memory\nType: String\nDefault: Empty\nThe memory directive allows you to define how much memory the process is allowed to use.\nSee memory.\nExamples:\n\"1 GB\"\n\"2TB\"\n\"3.2KB\"\n\"10.B\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#module", + "href": "reference/config/runners/nextflow/directives.html#module", + "title": "Nextflow Directives", + "section": "module", + "text": "module\nType: String / List of String\nDefault: Empty\nEnvironment Modules is a package manager that allows you to dynamically configure your execution environment and easily switch between multiple versions of the same software tool.\nIf it is available in your system you can use it with Nextflow in order to configure the processes execution environment in your pipeline.\nIn a process definition you can use the module directive to load a specific module version to be used in the process execution environment.\nSee module.\nExamples:\n\"ncbi-blast/2.2.27\"\n\"ncbi-blast/2.2.27:t_coffee/10.0\"\n[\"ncbi-blast/2.2.27\", \"t_coffee/10.0\"]", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#penv", + "href": "reference/config/runners/nextflow/directives.html#penv", + "title": "Nextflow Directives", + "section": "penv", + "text": "penv\nType: String\nDefault: Empty\nThe penv directive allows you to define the parallel environment to be used when submitting a parallel task to the SGE resource manager.\nSee penv.\nExample:\n\"smp\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#pod", + "href": "reference/config/runners/nextflow/directives.html#pod", + "title": "Nextflow Directives", + "section": "pod", + "text": "pod\nType: Map of String to String / List of Map of String to String\nDefault: Empty\nThe pod directive allows the definition of pods specific settings, such as environment variables, secrets and config maps when using the Kubernetes executor.\nSee pod.\nExamples:\n[ label: \"key\", value: \"val\" ]\n[ annotation: \"key\", value: \"val\" ]\n[ env: \"key\", value: \"val\" ]\n[ [label: \"l\", value: \"v\"], [env: \"e\", value: \"v\"]]", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#publishdir", + "href": "reference/config/runners/nextflow/directives.html#publishdir", + "title": "Nextflow Directives", + "section": "publishDir", + "text": "publishDir\nType: Either - String - Map of String to String / List of Either - String - Map of String to String\nDefault: Empty\nThe publishDir directive allows you to publish the process output files to a specified folder.\nViash implements this directive as a plain string or a map. The allowed keywords for the map are: path, mode, overwrite, pattern, saveAs, enabled. The path key and value are required. The allowed values for mode are: symlink, rellink, link, copy, copyNoFollow, move.\nSee publishDir.\nExamples:\n[]\n[ [ path: \"foo\", enabled: true ], [ path: \"bar\", enabled: false ] ]\nThis is transformed to [[ path: \"/path/to/dir\" ]]:\n\"/path/to/dir\"\nThis is transformed to [[ path: \"/path/to/dir\", mode: \"cache\" ]]:\n[ path: \"/path/to/dir\", mode: \"cache\" ]", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#queue", + "href": "reference/config/runners/nextflow/directives.html#queue", + "title": "Nextflow Directives", + "section": "queue", + "text": "queue\nType: String / List of String\nDefault: Empty\nThe queue directory allows you to set the queue where jobs are scheduled when using a grid based executor in your pipeline.\nSee queue.\nExamples:\n\"long\"\n\"short,long\"\n[\"short\", \"long\"]", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#scratch", + "href": "reference/config/runners/nextflow/directives.html#scratch", + "title": "Nextflow Directives", + "section": "scratch", + "text": "scratch\nType: Either - Boolean - String\nDefault: Empty\nThe scratch directive allows you to execute the process in a temporary folder that is local to the execution node.\nSee scratch.\nExamples:\ntrue\n\"/path/to/scratch\"\n'$MY_PATH_TO_SCRATCH'\n\"ram-disk\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#stageinmode", + "href": "reference/config/runners/nextflow/directives.html#stageinmode", + "title": "Nextflow Directives", + "section": "stageInMode", + "text": "stageInMode\nType: String\nDefault: Empty\nThe stageInMode directive defines how input files are staged-in to the process work directory. The following values are allowed:\n\n\n\n\n\n\n\nValue\nDescription\n\n\n\n\ncopy\nInput files are staged in the process work directory by creating a copy.\n\n\nlink\nInput files are staged in the process work directory by creating an (hard) link for each of them.\n\n\nsymlink\nInput files are staged in the process work directory by creating a symbolic link with an absolute path for each of them (default).\n\n\nrellink\nInput files are staged in the process work directory by creating a symbolic link with a relative path for each of them.\n\n\n\nSee stageInMode.\nExamples:\n\"copy\"\n\"link\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#stageoutmode", + "href": "reference/config/runners/nextflow/directives.html#stageoutmode", + "title": "Nextflow Directives", + "section": "stageOutMode", + "text": "stageOutMode\nType: String\nDefault: Empty\nThe stageOutMode directive defines how output files are staged-out from the scratch directory to the process work directory. The following values are allowed:\n\n\n\n\n\n\n\nValue\nDescription\n\n\n\n\ncopy\nOutput files are copied from the scratch directory to the work directory.\n\n\nmove\nOutput files are moved from the scratch directory to the work directory.\n\n\nrsync\nOutput files are copied from the scratch directory to the work directory by using the rsync utility.\n\n\n\nSee stageOutMode.\nExamples:\n\"copy\"\n\"link\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#storedir", + "href": "reference/config/runners/nextflow/directives.html#storedir", + "title": "Nextflow Directives", + "section": "storeDir", + "text": "storeDir\nType: String\nDefault: Empty\nThe storeDir directive allows you to define a directory that is used as a permanent cache for your process results.\nSee storeDir.\nExample:\n\"/path/to/storeDir\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#tag", + "href": "reference/config/runners/nextflow/directives.html#tag", + "title": "Nextflow Directives", + "section": "tag", + "text": "tag\nType: String\nDefault: '$id'\nThe tag directive allows you to associate each process execution with a custom label, so that it will be easier to identify them in the log file or in the trace execution report.\nFor ease of use, the default tag is set to \"$id\", which allows tracking the progression of the channel events through the workflow more easily.\nSee tag.\nExample:\n\"foo\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/runners/nextflow/directives.html#time", + "href": "reference/config/runners/nextflow/directives.html#time", + "title": "Nextflow Directives", + "section": "time", + "text": "time\nType: String\nDefault: Empty\nThe time directive allows you to define how long a process is allowed to run.\nSee time.\nExamples:\n\"1h\"\n\"2days\"\n\"1day 6hours 3minutes 30seconds\"", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Directives" + ] + }, + { + "objectID": "reference/config/buildInfo.html", + "href": "reference/config/buildInfo.html", + "title": "Build Info", + "section": "", + "text": "Meta information fields filled in by Viash during build.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/buildInfo.html#config", + "href": "reference/config/buildInfo.html#config", + "title": "Build Info", + "section": "config", + "text": "config\nType: String\nPath to the config used during build.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/buildInfo.html#engine", + "href": "reference/config/buildInfo.html#engine", + "title": "Build Info", + "section": "engine", + "text": "engine\nType: String\nDefault: Empty\nThe engine id used during build.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/buildInfo.html#executable", + "href": "reference/config/buildInfo.html#executable", + "title": "Build Info", + "section": "executable", + "text": "executable\nType: String\nDefault: Empty\nOutput folder with main executable path.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/buildInfo.html#git_commit", + "href": "reference/config/buildInfo.html#git_commit", + "title": "Build Info", + "section": "git_commit", + "text": "git_commit\nType: String\nDefault: Empty\nGit commit hash.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/buildInfo.html#git_remote", + "href": "reference/config/buildInfo.html#git_remote", + "title": "Build Info", + "section": "git_remote", + "text": "git_remote\nType: String\nDefault: Empty\nGit remote name.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/buildInfo.html#git_tag", + "href": "reference/config/buildInfo.html#git_tag", + "title": "Build Info", + "section": "git_tag", + "text": "git_tag\nType: String\nDefault: Empty\nGit tag.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/buildInfo.html#output", + "href": "reference/config/buildInfo.html#output", + "title": "Build Info", + "section": "output", + "text": "output\nType: String\nDefault: Empty\nFolder path to the build artifacts.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/buildInfo.html#runner", + "href": "reference/config/buildInfo.html#runner", + "title": "Build Info", + "section": "runner", + "text": "runner\nType: String\nDefault: Empty\nThe runner id used during build.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/buildInfo.html#viash_version", + "href": "reference/config/buildInfo.html#viash_version", + "title": "Build Info", + "section": "viash_version", + "text": "viash_version\nType: String\nDefault: Empty\nThe Viash version that was used to build the component.", + "crumbs": [ + "Reference", + "Config", + "Build Info" + ] + }, + { + "objectID": "reference/config/functionality/index.html#references", + "href": "reference/config/functionality/index.html#references", + "title": "Functionality", + "section": "references", + "text": "references\nType: References\nDefault: Empty\nReferences to external resources related to the component.\nExample:\nreferences:\n doi: 10.1000/xx.123456.789\n bibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/runners/nextflow/config.html", + "href": "reference/config/runners/nextflow/config.html", + "title": "Nextflow Config", + "section": "", + "text": "Allows tweaking how the Nextflow Config file is generated.", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Config" + ] + }, + { + "objectID": "reference/config/runners/nextflow/config.html#labels", + "href": "reference/config/runners/nextflow/config.html#labels", + "title": "Nextflow Config", + "section": "labels", + "text": "labels\nType: Map of String to String\nDefault: A series of default labels to specify memory and cpu constraints\nA series of default labels to specify memory and cpu constraints.\nThe default memory labels are defined as “mem1gb”, “mem2gb”, “mem4gb”, … upto “mem512tb” and follows powers of 2. The default cpu labels are defined as “cpu1”, “cpu2”, “cpu5”, “cpu10”, … upto “cpu1000” and follows a semi logarithmic scale (1, 2, 5 per decade).\nConceptually it is possible for a Viash Config to overwrite the full labels parameter, however likely it is more efficient to add additional labels in the Viash Package with a config mod.\nExamples:\nReplace the default labels with a different set of labels\nlabels:\n lowmem: \"memory = 4.GB\"\n lowcpu: \"cpus = 4\"\n midmem: \"memory = 25.GB\"\n midcpu: \"cpus = 10\"\n highmem: \"memory = 50.GB\"\n highcpu: \"cpus = 20\"\n vhighmem: \"memory = 100.GB\"\n vhighcpu: \"cpus = 40\"\nAdd ‘lowmem’ and ‘lowcpu’ to the default labels by using a config mod\n-c '.runners[.type == \"nextflow\"].config.labels.lowmem := \"memory = 4.GB\";.runners[.type == \"nextflow\"].config.labels.lowcpu := \"cpus = 4\"'\nAdd ‘lowmem’ and ‘lowcpu’ to the default labels by using the Viash Package file\nconfig_mods: |\n .runners[.type == \"nextflow\"].config.labels.lowmem := \"memory = 4.GB\"\n .runners[.type == \"nextflow\"].config.labels.lowcpu := \"cpus = 4\"\n\nReplace the default labels with a different set of labels by using the Viash Package file\nconfig_mods: |\n .runners[.type == \"nextflow\"].config.labels := { lowmem: \"memory = 4.GB\", lowcpu: \"cpus = 4\", midmem: \"memory = 25.GB\", midcpu: \"cpus = 10\", highmem: \"memory = 50.GB\", highcpu: \"cpus = 20\", vhighmem: \"memory = 100.GB\", vhighcpu: \"cpus = 40\" }", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Config" + ] + }, + { + "objectID": "reference/config/runners/nextflow/config.html#script", + "href": "reference/config/runners/nextflow/config.html#script", + "title": "Nextflow Config", + "section": "script", + "text": "script\nType: String / List of String\nDefault: Empty\nIncludes a single string or list of strings into the nextflow.config file. This can be used to add custom profiles or include an additional config file.\nExamples:\nscript:\n - |\n profiles {\n ...\n }\nscript: includeConfig(\"config.config\")", + "crumbs": [ + "Reference", + "Config", + "Runner", + "Nextflow Runner", + "Nextflow Config" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/dockerRequirements.html", + "href": "reference/config/engines/docker/setup/dockerRequirements.html", + "title": "Docker Requirements", + "section": "", + "text": "Specify which Docker commands should be run during setup.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/dockerRequirements.html#add", + "href": "reference/config/engines/docker/setup/dockerRequirements.html#add", + "title": "Docker Requirements", + "section": "add", + "text": "add\nType: String / List of String\nDefault: Empty\nSpecifies which ADD entries to add to the Dockerfile while building it.\nExample:\nadd: [ \"http://foo/bar .\" ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/dockerRequirements.html#build_args", + "href": "reference/config/engines/docker/setup/dockerRequirements.html#build_args", + "title": "Docker Requirements", + "section": "build_args", + "text": "build_args\nType: String / List of String\nDefault: Empty\nSpecifies which ARG entries to add to the Dockerfile while building it.\nExample:\nbuild_args: [ \"R_VERSION=4.2\" ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/dockerRequirements.html#copy", + "href": "reference/config/engines/docker/setup/dockerRequirements.html#copy", + "title": "Docker Requirements", + "section": "copy", + "text": "copy\nType: String / List of String\nDefault: Empty\nSpecifies which COPY entries to add to the Dockerfile while building it.\nExample:\ncopy: [ \"resource.txt /path/to/resource.txt\" ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/dockerRequirements.html#env", + "href": "reference/config/engines/docker/setup/dockerRequirements.html#env", + "title": "Docker Requirements", + "section": "env", + "text": "env\nType: String / List of String\nDefault: Empty\nSpecifies which ENV entries to add to the Dockerfile while building it. Unlike ARG, ENV entries are also accessible from inside the container.\nExample:\nenv: [ \"R_VERSION=4.2\" ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/dockerRequirements.html#label", + "href": "reference/config/engines/docker/setup/dockerRequirements.html#label", + "title": "Docker Requirements", + "section": "label", + "text": "label\nType: String / List of String\nDefault: Empty\nSpecifies which LABEL entries to add to the Dockerfile while building it.\nExample:\nlabel: [ component=\"foo\" ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/dockerRequirements.html#run", + "href": "reference/config/engines/docker/setup/dockerRequirements.html#run", + "title": "Docker Requirements", + "section": "run", + "text": "run\nType: String / List of String\nDefault: Empty\nSpecifies which RUN entries to add to the Dockerfile while building it.\nExample:\nrun: |\n echo 'Run a custom command'\n echo 'Foo' > /path/to/file.txt", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/dockerRequirements.html#type", + "href": "reference/config/engines/docker/setup/dockerRequirements.html#type", + "title": "Docker Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Docker Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/apkRequirements.html", + "href": "reference/config/engines/docker/setup/apkRequirements.html", + "title": "Apk Requirements", + "section": "", + "text": "Specify which apk packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Apk Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/apkRequirements.html#packages", + "href": "reference/config/engines/docker/setup/apkRequirements.html#packages", + "title": "Apk Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install.\nExample:\npackages: [ sl ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Apk Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/apkRequirements.html#type", + "href": "reference/config/engines/docker/setup/apkRequirements.html#type", + "title": "Apk Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Apk Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/aptRequirements.html", + "href": "reference/config/engines/docker/setup/aptRequirements.html", + "title": "Apt Requirements", + "section": "", + "text": "Specify which apt packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Apt Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/aptRequirements.html#interactive", + "href": "reference/config/engines/docker/setup/aptRequirements.html#interactive", + "title": "Apt Requirements", + "section": "interactive", + "text": "interactive\nType: Boolean\nDefault: False\nIf false, the Debian frontend is set to non-interactive (recommended). Default: false.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Apt Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/aptRequirements.html#packages", + "href": "reference/config/engines/docker/setup/aptRequirements.html#packages", + "title": "Apt Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install.\nExample:\npackages: [ sl ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Apt Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/aptRequirements.html#type", + "href": "reference/config/engines/docker/setup/aptRequirements.html#type", + "title": "Apt Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "Apt Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/javascriptRequirements.html", + "href": "reference/config/engines/docker/setup/javascriptRequirements.html", + "title": "JavaScript Requirements", + "section": "", + "text": "Specify which JavaScript packages should be available in order to run the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/javascriptRequirements.html#git", + "href": "reference/config/engines/docker/setup/javascriptRequirements.html#git", + "title": "JavaScript Requirements", + "section": "git", + "text": "git\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a Git URI.\nExample:\ngit: [ https://some.git.repository/org/repo ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/javascriptRequirements.html#github", + "href": "reference/config/engines/docker/setup/javascriptRequirements.html#github", + "title": "JavaScript Requirements", + "section": "github", + "text": "github\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from GitHub.\nExample:\ngithub: [ owner/repository ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/javascriptRequirements.html#npm", + "href": "reference/config/engines/docker/setup/javascriptRequirements.html#npm", + "title": "JavaScript Requirements", + "section": "npm", + "text": "npm\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from npm.\nExample:\nnpm: [ packagename ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/javascriptRequirements.html#packages", + "href": "reference/config/engines/docker/setup/javascriptRequirements.html#packages", + "title": "JavaScript Requirements", + "section": "packages", + "text": "packages\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install from npm.\nExample:\npackages: [ packagename ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/javascriptRequirements.html#type", + "href": "reference/config/engines/docker/setup/javascriptRequirements.html#type", + "title": "JavaScript Requirements", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the requirement specification.", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/javascriptRequirements.html#url", + "href": "reference/config/engines/docker/setup/javascriptRequirements.html#url", + "title": "JavaScript Requirements", + "section": "url", + "text": "url\nType: String / List of String\nDefault: Empty\nSpecifies which packages to install using a generic URI.\nExample:\nurl: [ https://github.com/org/repo/archive/HEAD.zip ]", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements", + "JavaScript Requirements" + ] + }, + { + "objectID": "reference/config/engines/docker/setup/index.html", + "href": "reference/config/engines/docker/setup/index.html", + "title": "Requirements", + "section": "", + "text": "Requirements for installing the following types of packages:\n\napt\napk\nDocker setup instructions\nJavaScript\nPython\nR\nRuby\nyum", + "crumbs": [ + "Reference", + "Config", + "Engine", + "Docker Engine", + "Requirements" + ] + }, + { + "objectID": "reference/config/index.html#argument_groups", + "href": "reference/config/index.html#argument_groups", + "title": "Config", + "section": "argument_groups", + "text": "argument_groups\nType: List of ArgumentGroup\nDefault: Empty\nA grouping of the arguments, used to display the help message.\n\nname: foo, the name of the argument group.\ndescription: Description of foo, a description of the argument group. Multiline descriptions are supported.\narguments: [arg1, arg2, ...], list of the arguments.\n\nExamples:\nargument_groups:\n - name: \"Input\"\n arguments:\n - name: \"--id\"\n type: string\n required: true\n - name: \"--input\"\n type: file\n required: true\n - name: \"Output\"\n arguments:\n - name: \"--output\"\n type: file\n direction: output\n required: true\n - name: \"--output_optional\"\n type: file\n direction: output\nThis results in the following output when calling the component with the --help argument:\ncomponent_name\n\n Input:\n --id\n type: string\n\n --input\n type: file\n\n Output:\n --output\n type: file\n\n --optional_output\n type: file", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#authors", + "href": "reference/config/index.html#authors", + "title": "Config", + "section": "authors", + "text": "authors\nType: List of Author\nDefault: Empty\nA list of authors. An author must at least have a name, but can also have a list of roles, an e-mail address, and a map of custom properties.\nSuggested values for roles are:\n\n\n\n\n\n\n\n\nRole\nAbbrev.\nDescription\n\n\n\n\nmaintainer\nmnt\nfor the maintainer of the code. Ideally, exactly one maintainer is specified.\n\n\nauthor\naut\nfor persons who have made substantial contributions to the software.\n\n\ncontributor\nctb\nfor persons who have made smaller contributions (such as code patches).\n\n\ndatacontributor\ndtc\nfor persons or organisations that contributed data sets for the software\n\n\ncopyrightholder\ncph\nfor all copyright holders. This is a legal concept so should use the legal name of an institution or corporate body.\n\n\nfunder\nfnd\nfor persons or organizations that furnished financial support for the development of the software\n\n\n\nThe full list of roles is extremely comprehensive.\nExample:\nauthors:\n - name: Jane Doe\n role: [author, maintainer]\n email: jane@doe.com\n info:\n github: janedoe\n twitter: janedoe\n orcid: XXAABBCCXX\n groups: [ one, two, three ]\n - name: Tim Farbe\n roles: [author]\n email: tim@far.be", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#dependencies", + "href": "reference/config/index.html#dependencies", + "title": "Config", + "section": "dependencies", + "text": "dependencies\nType: List of Dependency\nDefault: Empty\nAllows listing Viash components required by this Viash component\nExamples:\nFull specification of a repository\ndependencies:\n - name: qc/multiqc\n repository: \n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0\nFull specification of a repository using sugar syntax\ndependencies:\n - name: qc/multiqc\n repository: \"github://openpipelines-bio/modules:0.3.0\"\nReference to a repository fully specified under ‘repositories’\ndependencies:\n - name: qc/multiqc\n repository: \"openpipelines-bio\"", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#description", + "href": "reference/config/index.html#description", + "title": "Config", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the component. This will be displayed with --help.\nExample:\ndescription: |\n This component performs function Y and Z.\n It is possible to make this a multiline string.", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#info", + "href": "reference/config/index.html#info", + "title": "Config", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n twitter: wizzkid\n classes: [ one, two, three ]", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#keywords", + "href": "reference/config/index.html#keywords", + "title": "Config", + "section": "keywords", + "text": "keywords\nType: List of String\nDefault: Empty\nThe keywords of the components.\nExample:\nkeywords: [ bioinformatics, genomics ]", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#license", + "href": "reference/config/index.html#license", + "title": "Config", + "section": "license", + "text": "license\nType: String\nDefault: Empty\nThe license of the package.\nExample:\nlicense: MIT", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#links", + "href": "reference/config/index.html#links", + "title": "Config", + "section": "links", + "text": "links\nType: Links\nDefault: Empty\nExternal links of the component.\nExample:\nlinks:\n repository: \"https://github.com/viash-io/viash\"\n docker_registry: \"https://ghcr.io\"\n homepage: \"https://viash.io\"\n documentation: \"https://viash.io/reference/\"\n issue_tracker: \"https://github.com/viash-io/viash/issues\"", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#name", + "href": "reference/config/index.html#name", + "title": "Config", + "section": "name", + "text": "name\nType: String\nName of the component and the filename of the executable when built with viash build.\nExample:\nname: this_is_my_component", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#namespace", + "href": "reference/config/index.html#namespace", + "title": "Config", + "section": "namespace", + "text": "namespace\nType: String\nDefault: Empty\nNamespace this component is a part of. See the Namespaces guide for more information on namespaces.\nExample:\nnamespace: fancy_components", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#organization", + "href": "reference/config/index.html#organization", + "title": "Config", + "section": "organization", + "text": "organization\nType: String\nDefault: Empty\nThe organization of the package.\nExample:\norganization: viash-io", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#references", + "href": "reference/config/index.html#references", + "title": "Config", + "section": "references", + "text": "references\nType: References\nDefault: Empty\nReferences to external resources related to the component.\nExample:\nreferences:\n doi: 10.1000/xx.123456.789\n bibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#repositories", + "href": "reference/config/index.html#repositories", + "title": "Config", + "section": "repositories", + "text": "repositories\nType: List of RepositoryWithName\nDefault: Empty\n(Pre-)defines repositories that can be used as repository in dependencies. Allows reusing repository definitions in case it is used in multiple dependencies.\nExample:\nrepositories:\n - name: openpipelines-bio\n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#requirements", + "href": "reference/config/index.html#requirements", + "title": "Config", + "section": "requirements", + "text": "requirements\nType: ComputationalRequirements\nDefault: Empty\nComputational requirements related to running the component. cpus specifies the maximum number of (logical) cpus a component is allowed to use., whereas memory specifies the maximum amount of memory a component is allowed to allicate. Memory units must be in B, KB, MB, GB, TB or PB.\nExample:\nrequirements:\n cpus: 5\n memory: 10GB", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#resources", + "href": "reference/config/index.html#resources", + "title": "Config", + "section": "resources", + "text": "resources\nType: List of Resource\nDefault: Empty\nResources are files that support the component. The first resource should be a script that will be executed when the component is run. Additional resources will be copied to the same directory.\nCommon properties:\n\ntype: file / r_script / python_script / bash_script / javascript_script / scala_script / csharp_script, specifies the type of the resource. The first resource cannot be of type file. When the type is not specified, the default type is simply file.\ndest: filename, the resulting name of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.\npath: path/to/file, the path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.\ntext: …multiline text…, the content of the resulting file specified as a string. Mutually exclusive with path.\nis_executable: true / false, whether the resulting resource file should be made executable.\n\nExample:\nresources:\n - type: r_script\n path: script.R\n - type: file\n path: resource1.txt", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#status", + "href": "reference/config/index.html#status", + "title": "Config", + "section": "status", + "text": "status\nType: Status\nDefault: Enabled\nAllows setting a component to active, deprecated or disabled.", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#test_resources", + "href": "reference/config/index.html#test_resources", + "title": "Config", + "section": "test_resources", + "text": "test_resources\nType: List of Resource\nDefault: Empty\nOne or more scripts to be used to test the component behaviour when viash test is invoked. Additional files of type file will be made available only during testing. Each test script should expect no command-line inputs, be platform-independent, and return an exit code >0 when unexpected behaviour occurs during testing. See Unit Testing for more info.\nExample:\ntest_resources:\n - type: bash_script\n path: tests/test1.sh\n - type: r_script\n path: tests/test2.R\n - path: resource1.txt", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#usage", + "href": "reference/config/index.html#usage", + "title": "Config", + "section": "usage", + "text": "usage\nType: String\nDefault: Empty\nA description on how to use the component. This will be displayed with --help under the ‘Usage:’ section.\nExample:\nusage: Place the executable in a directory containing TSV files and run it", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/index.html#version", + "href": "reference/config/index.html#version", + "title": "Config", + "section": "version", + "text": "version\nType: String\nDefault: Empty\nVersion of the component. This field will be used to version the executable and the Docker container.\nExample:\nversion: 0.8", + "crumbs": [ + "Reference", + "Config" + ] + }, + { + "objectID": "reference/config/resources/index.html", + "href": "reference/config/resources/index.html", + "title": "Resource", + "section": "", + "text": "Resources are files that support the component. The first resource should be a script that will be executed when the component is run. Additional resources will be copied to the same directory.\nCommon properties:\n\ntype: file / r_script / python_script / bash_script / javascript_script / scala_script / csharp_script, specifies the type of the resource. The first resource cannot be of type file. When the type is not specified, the default type is simply file.\ndest: filename, the resulting name of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.\npath: path/to/file, the path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.\ntext: …multiline text…, the content of the resulting file specified as a string. Mutually exclusive with path.\nis_executable: true / false, whether the resulting resource file should be made executable.\n\nExample:\nresources:\n - type: r_script\n path: script.R\n - type: file\n path: resource1.txt", + "crumbs": [ + "Reference", + "Config", + "Resource" + ] + }, + { + "objectID": "reference/config/resources/cSharpScript.html", + "href": "reference/config/resources/cSharpScript.html", + "title": "C# Script", + "section": "", + "text": "An executable C# script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/resources/cSharpScript.html#dest", + "href": "reference/config/resources/cSharpScript.html#dest", + "title": "C# Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/resources/cSharpScript.html#is_executable", + "href": "reference/config/resources/cSharpScript.html#is_executable", + "title": "C# Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/resources/cSharpScript.html#path", + "href": "reference/config/resources/cSharpScript.html#path", + "title": "C# Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/resources/cSharpScript.html#text", + "href": "reference/config/resources/cSharpScript.html#text", + "title": "C# Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/resources/cSharpScript.html#type", + "href": "reference/config/resources/cSharpScript.html#type", + "title": "C# Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a C# script.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "C# Script" + ] + }, + { + "objectID": "reference/config/resources/pythonScript.html", + "href": "reference/config/resources/pythonScript.html", + "title": "Python Script", + "section": "", + "text": "An executable Python script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/resources/pythonScript.html#dest", + "href": "reference/config/resources/pythonScript.html#dest", + "title": "Python Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/resources/pythonScript.html#is_executable", + "href": "reference/config/resources/pythonScript.html#is_executable", + "title": "Python Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/resources/pythonScript.html#path", + "href": "reference/config/resources/pythonScript.html#path", + "title": "Python Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/resources/pythonScript.html#text", + "href": "reference/config/resources/pythonScript.html#text", + "title": "Python Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/resources/pythonScript.html#type", + "href": "reference/config/resources/pythonScript.html#type", + "title": "Python Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a Python script.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Python Script" + ] + }, + { + "objectID": "reference/config/resources/bashScript.html", + "href": "reference/config/resources/bashScript.html", + "title": "Bash Script", + "section": "", + "text": "An executable Bash script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/resources/bashScript.html#dest", + "href": "reference/config/resources/bashScript.html#dest", + "title": "Bash Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/resources/bashScript.html#is_executable", + "href": "reference/config/resources/bashScript.html#is_executable", + "title": "Bash Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/resources/bashScript.html#path", + "href": "reference/config/resources/bashScript.html#path", + "title": "Bash Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/resources/bashScript.html#text", + "href": "reference/config/resources/bashScript.html#text", + "title": "Bash Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/resources/bashScript.html#type", + "href": "reference/config/resources/bashScript.html#type", + "title": "Bash Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a Bash script.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Bash Script" + ] + }, + { + "objectID": "reference/config/resources/plainFile.html", + "href": "reference/config/resources/plainFile.html", + "title": "Plain File", + "section": "", + "text": "A plain file. This can only be used as a supporting resource for the main script or unit tests.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/resources/plainFile.html#dest", + "href": "reference/config/resources/plainFile.html#dest", + "title": "Plain File", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/resources/plainFile.html#is_executable", + "href": "reference/config/resources/plainFile.html#is_executable", + "title": "Plain File", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/resources/plainFile.html#path", + "href": "reference/config/resources/plainFile.html#path", + "title": "Plain File", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/resources/plainFile.html#text", + "href": "reference/config/resources/plainFile.html#text", + "title": "Plain File", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/resources/plainFile.html#type", + "href": "reference/config/resources/plainFile.html#type", + "title": "Plain File", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a plain file.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Plain File" + ] + }, + { + "objectID": "reference/config/dependencies/index.html", + "href": "reference/config/dependencies/index.html", + "title": "Dependency", + "section": "", + "text": "Specifies a Viash component (script or executable) that should be made available for the code defined in the component. The dependency components are collected and copied to the output folder during the Viash build step.\nExamples:\nDefinition of dependency with a fully defined repository\nDefinition of a dependency with a repository using sugar syntax.\nDefinition of a dependency with a repository defined as ‘openpipelines-bio’ under .repositories.\nDefinition of a local dependency. This dependency is present in the current code base and will be built when viash ns build is run.", + "crumbs": [ + "Reference", + "Config", + "Dependency" + ] + }, + { + "objectID": "reference/config/dependencies/index.html#alias", + "href": "reference/config/dependencies/index.html#alias", + "title": "Dependency", + "section": "alias", + "text": "alias\nType: String\nDefault: Empty\nAn alternative name for the dependency component. This can include a namespace if so needed.\nExample:\nalias: my_alias", + "crumbs": [ + "Reference", + "Config", + "Dependency" + ] + }, + { + "objectID": "reference/config/dependencies/index.html#name", + "href": "reference/config/dependencies/index.html#name", + "title": "Dependency", + "section": "name", + "text": "name\nType: String\nThe full name of the dependency component. This should include the namespace.\nExample:\nname: \"my_namespace\"component", + "crumbs": [ + "Reference", + "Config", + "Dependency" + ] + }, + { + "objectID": "reference/config/dependencies/index.html#repository", + "href": "reference/config/dependencies/index.html#repository", + "title": "Dependency", + "section": "repository", + "text": "repository\nType: Either - String - Repository\nDefault: Empty\nSpecifies the repository location where the dependency component can be found. This must either be a full definition of the repository or the name of a repository referenced as it is defined under repositories. Additionally, the full definition can be specified as a single string where all parameters such as repository type, url, branch or tag are specified. Omitting the value sets the dependency as a local dependency, ie. the dependency is available in the same namespace as the component.", + "crumbs": [ + "Reference", + "Config", + "Dependency" + ] + }, + { + "objectID": "reference/config/arguments/long.html", + "href": "reference/config/arguments/long.html", + "title": "Long", + "section": "", + "text": "An long type argument has a numeric value without decimal points.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#alternatives", + "href": "reference/config/arguments/long.html#alternatives", + "title": "Long", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#choices", + "href": "reference/config/arguments/long.html#choices", + "title": "Long", + "section": "choices", + "text": "choices\nType: List of Long\nDefault: Empty\nLimit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.\nExample:\n- name: --values\n type: long\n choices: [1024, 2048, 4096]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#default", + "href": "reference/config/arguments/long.html#default", + "title": "Long", + "section": "default", + "text": "default\nType: Long / List of Long\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_long\n type: long\n default: 100", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#description", + "href": "reference/config/arguments/long.html#description", + "title": "Long", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#example", + "href": "reference/config/arguments/long.html#example", + "title": "Long", + "section": "example", + "text": "example\nType: Long / List of Long\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_long\n type: long\n example: 100", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#info", + "href": "reference/config/arguments/long.html#info", + "title": "Long", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#max", + "href": "reference/config/arguments/long.html#max", + "title": "Long", + "section": "max", + "text": "max\nType: Long\nDefault: Empty\nMaximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.\nExample:\n- name: --my_long\n type: long\n max: 150", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#min", + "href": "reference/config/arguments/long.html#min", + "title": "Long", + "section": "min", + "text": "min\nType: Long\nDefault: Empty\nMinimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.\nExample:\n- name: --my_long\n type: long\n min: 50", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#multiple", + "href": "reference/config/arguments/long.html#multiple", + "title": "Long", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_long\n type: long\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_long=10:80:152", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#multiple_sep", + "href": "reference/config/arguments/long.html#multiple_sep", + "title": "Long", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: ;\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_long\n type: long\n multiple: true\n multiple_sep: \";\"\nHere’s an example of how to use this:\nmy_component --my_long=10:80:152", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#name", + "href": "reference/config/arguments/long.html#name", + "title": "Long", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#required", + "href": "reference/config/arguments/long.html#required", + "title": "Long", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_long\n type: long\n required: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/long.html#type", + "href": "reference/config/arguments/long.html#type", + "title": "Long", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Long" + ] + }, + { + "objectID": "reference/config/arguments/double.html", + "href": "reference/config/arguments/double.html", + "title": "Double", + "section": "", + "text": "A double type argument has a numeric value with decimal points\nExample:", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#alternatives", + "href": "reference/config/arguments/double.html#alternatives", + "title": "Double", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#default", + "href": "reference/config/arguments/double.html#default", + "title": "Double", + "section": "default", + "text": "default\nType: Double / List of Double\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_double\n type: double\n default: 5.8", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#description", + "href": "reference/config/arguments/double.html#description", + "title": "Double", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#example", + "href": "reference/config/arguments/double.html#example", + "title": "Double", + "section": "example", + "text": "example\nType: Double / List of Double\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_double\n type: double\n example: 5.8", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#info", + "href": "reference/config/arguments/double.html#info", + "title": "Double", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#max", + "href": "reference/config/arguments/double.html#max", + "title": "Double", + "section": "max", + "text": "max\nType: Double\nDefault: Empty\nMaximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.\nExample:\n- name: --my_double\n type: double\n max: 80.4", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#min", + "href": "reference/config/arguments/double.html#min", + "title": "Double", + "section": "min", + "text": "min\nType: Double\nDefault: Empty\nMinimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.\nExample:\n- name: --my_double\n type: double\n min: 25.5", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#multiple", + "href": "reference/config/arguments/double.html#multiple", + "title": "Double", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_double\n type: double\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_double=5.8:22.6:200.4", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#multiple_sep", + "href": "reference/config/arguments/double.html#multiple_sep", + "title": "Double", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: ;\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_double\n type: double\n multiple: true\n multiple_sep: \";\"\nHere’s an example of how to use this:\nmy_component --my_double=5.8,22.6,200.4", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#name", + "href": "reference/config/arguments/double.html#name", + "title": "Double", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#required", + "href": "reference/config/arguments/double.html#required", + "title": "Double", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_double\n type: double\n required: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/double.html#type", + "href": "reference/config/arguments/double.html#type", + "title": "Double", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Double" + ] + }, + { + "objectID": "reference/config/arguments/integer.html", + "href": "reference/config/arguments/integer.html", + "title": "Integer", + "section": "", + "text": "An integer type argument has a numeric value without decimal points.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#alternatives", + "href": "reference/config/arguments/integer.html#alternatives", + "title": "Integer", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#choices", + "href": "reference/config/arguments/integer.html#choices", + "title": "Integer", + "section": "choices", + "text": "choices\nType: List of Int\nDefault: Empty\nLimit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.\nExample:\n- name: --values\n type: integer\n choices: [1024, 2048, 4096]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#default", + "href": "reference/config/arguments/integer.html#default", + "title": "Integer", + "section": "default", + "text": "default\nType: Int / List of Int\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_integer\n type: integer\n default: 100", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#description", + "href": "reference/config/arguments/integer.html#description", + "title": "Integer", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#example", + "href": "reference/config/arguments/integer.html#example", + "title": "Integer", + "section": "example", + "text": "example\nType: Int / List of Int\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_integer\n type: integer\n example: 100", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#info", + "href": "reference/config/arguments/integer.html#info", + "title": "Integer", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#max", + "href": "reference/config/arguments/integer.html#max", + "title": "Integer", + "section": "max", + "text": "max\nType: Int\nDefault: Empty\nMaximum allowed value for this argument. If set and the provided value is higher than the maximum, an error will be produced. Can be combined with min to clamp values.\nExample:\n- name: --my_integer\n type: integer\n max: 150", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#min", + "href": "reference/config/arguments/integer.html#min", + "title": "Integer", + "section": "min", + "text": "min\nType: Int\nDefault: Empty\nMinimum allowed value for this argument. If set and the provided value is lower than the minimum, an error will be produced. Can be combined with max to clamp values.\nExample:\n- name: --my_integer\n type: integer\n min: 50", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#multiple", + "href": "reference/config/arguments/integer.html#multiple", + "title": "Integer", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_integer\n type: integer\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_integer=10:80:152", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#multiple_sep", + "href": "reference/config/arguments/integer.html#multiple_sep", + "title": "Integer", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: ;\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_integer\n type: integer\n multiple: true\n multiple_sep: \";\"\nHere’s an example of how to use this:\nmy_component --my_integer=10:80:152", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#name", + "href": "reference/config/arguments/integer.html#name", + "title": "Integer", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#required", + "href": "reference/config/arguments/integer.html#required", + "title": "Integer", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_integer\n type: integer\n required: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/integer.html#type", + "href": "reference/config/arguments/integer.html#type", + "title": "Integer", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Integer" + ] + }, + { + "objectID": "reference/config/arguments/file.html", + "href": "reference/config/arguments/file.html", + "title": "File", + "section": "", + "text": "A file type argument has a string value that points to a file or folder path.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#alternatives", + "href": "reference/config/arguments/file.html#alternatives", + "title": "File", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#create_parent", + "href": "reference/config/arguments/file.html#create_parent", + "title": "File", + "section": "create_parent", + "text": "create_parent\nType: Boolean\nDefault: True\nIf the output filename is a path and it does not exist, create it before executing the script (only for direction: output).\nExample:\n- name: --my_file\n type: file\n direction: output\n create_parent: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#default", + "href": "reference/config/arguments/file.html#default", + "title": "File", + "section": "default", + "text": "default\nType: Path / List of Path\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_file\n type: file\n default: data.csv", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#description", + "href": "reference/config/arguments/file.html#description", + "title": "File", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#direction", + "href": "reference/config/arguments/file.html#direction", + "title": "File", + "section": "direction", + "text": "direction\nType: Direction\nDefault: Input\nMakes this argument an input or an output, as in does the file/folder needs to be read or written. input by default.\nExample:\n- name: --my_output_file\n type: file\n direction: output", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#example", + "href": "reference/config/arguments/file.html#example", + "title": "File", + "section": "example", + "text": "example\nType: Path / List of Path\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_file\n type: file\n example: data.csv", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#info", + "href": "reference/config/arguments/file.html#info", + "title": "File", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#multiple", + "href": "reference/config/arguments/file.html#multiple", + "title": "File", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_files\n type: file\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_files=firstFile.csv:anotherFile.csv:yetAnother.csv", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#multiple_sep", + "href": "reference/config/arguments/file.html#multiple_sep", + "title": "File", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: ;\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_files\n type: file\n multiple: true\n multiple_sep: \";\"\nHere’s an example of how to use this:\nmy_component --my_files=firstFile.csv,anotherFile.csv,yetAnother.csv", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#must_exist", + "href": "reference/config/arguments/file.html#must_exist", + "title": "File", + "section": "must_exist", + "text": "must_exist\nType: Boolean\nDefault: True\nChecks whether the file or folder exists. For input files, this check will happen before the execution of the script, while for output files the check will happen afterwards.\nExample:\n- name: --my_file\n type: file\n must_exist: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#name", + "href": "reference/config/arguments/file.html#name", + "title": "File", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#required", + "href": "reference/config/arguments/file.html#required", + "title": "File", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_file\n type: file\n required: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/arguments/file.html#type", + "href": "reference/config/arguments/file.html#type", + "title": "File", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "File" + ] + }, + { + "objectID": "reference/config/functionality.html", + "href": "reference/config/functionality.html", + "title": "Functionality", + "section": "", + "text": "Warning\n\n\n\nDeprecated since 0.9.0. Planned removal at 0.10.0. Functionality level is deprecated, all functionality fields are now located on the top level of the config file.\nThe functionality-part of the config file describes the behaviour of the script in terms of arguments and resources. By specifying a few restrictions (e.g. mandatory arguments) and adding some descriptions, Viash will automatically generate a stylish command-line interface for you.", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#argument_groups", + "href": "reference/config/functionality.html#argument_groups", + "title": "Functionality", + "section": "argument_groups", + "text": "argument_groups\nType: List of ArgumentGroup\nDefault: Empty\nA grouping of the arguments, used to display the help message.\n\nname: foo, the name of the argument group.\ndescription: Description of foo, a description of the argument group. Multiline descriptions are supported.\narguments: [arg1, arg2, ...], list of the arguments.\n\nExamples:\nargument_groups:\n - name: \"Input\"\n arguments:\n - name: \"--id\"\n type: string\n required: true\n - name: \"--input\"\n type: file\n required: true\n - name: \"Output\"\n arguments:\n - name: \"--output\"\n type: file\n direction: output\n required: true\n - name: \"--output_optional\"\n type: file\n direction: output\nThis results in the following output when calling the component with the --help argument:\ncomponent_name\n\n Input:\n --id\n type: string\n\n --input\n type: file\n\n Output:\n --output\n type: file\n\n --optional_output\n type: file", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#arguments", + "href": "reference/config/functionality.html#arguments", + "title": "Functionality", + "section": "arguments", + "text": "arguments\nType: List of Argument\nDefault: Empty\nA list of arguments for this component. For each argument, a type and a name must be specified. Depending on the type of argument, different properties can be set. See these reference pages per type for more information:\n\nstring\nfile\ninteger\ndouble\nboolean\nboolean_true\nboolean_false\n\nExample:\narguments:\n - name: --foo\n type: file\n alternatives: [-f]\n description: Description of foo\n default: \"/foo/bar\"\n must_exist: true\n direction: output\n required: false\n multiple: true\n multiple_sep: \";\"\n - name: --bar\n type: string", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#authors", + "href": "reference/config/functionality.html#authors", + "title": "Functionality", + "section": "authors", + "text": "authors\nType: List of Author\nDefault: Empty\nA list of authors. An author must at least have a name, but can also have a list of roles, an e-mail address, and a map of custom properties.\nSuggested values for roles are:\n\n\n\n\n\n\n\n\nRole\nAbbrev.\nDescription\n\n\n\n\nmaintainer\nmnt\nfor the maintainer of the code. Ideally, exactly one maintainer is specified.\n\n\nauthor\naut\nfor persons who have made substantial contributions to the software.\n\n\ncontributor\nctb\nfor persons who have made smaller contributions (such as code patches).\n\n\ndatacontributor\ndtc\nfor persons or organisations that contributed data sets for the software\n\n\ncopyrightholder\ncph\nfor all copyright holders. This is a legal concept so should use the legal name of an institution or corporate body.\n\n\nfunder\nfnd\nfor persons or organizations that furnished financial support for the development of the software\n\n\n\nThe full list of roles is extremely comprehensive.\nExample:\nauthors:\n - name: Jane Doe\n role: [author, maintainer]\n email: jane@doe.com\n info:\n github: janedoe\n twitter: janedoe\n orcid: XXAABBCCXX\n groups: [ one, two, three ]\n - name: Tim Farbe\n roles: [author]\n email: tim@far.be", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#dependencies", + "href": "reference/config/functionality.html#dependencies", + "title": "Functionality", + "section": "dependencies", + "text": "dependencies\nType: List of Dependency\nDefault: Empty\nAllows listing Viash components required by this Viash component\nExamples:\nFull specification of a repository\ndependencies:\n - name: qc/multiqc\n repository: \n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0\nFull specification of a repository using sugar syntax\ndependencies:\n - name: qc/multiqc\n repository: \"github://openpipelines-bio/modules:0.3.0\"\nReference to a repository fully specified under ‘repositories’\ndependencies:\n - name: qc/multiqc\n repository: \"openpipelines-bio\"", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#description", + "href": "reference/config/functionality.html#description", + "title": "Functionality", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the component. This will be displayed with --help.\nExample:\ndescription: |\n This component performs function Y and Z.\n It is possible to make this a multiline string.", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#info", + "href": "reference/config/functionality.html#info", + "title": "Functionality", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n twitter: wizzkid\n classes: [ one, two, three ]", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#keywords", + "href": "reference/config/functionality.html#keywords", + "title": "Functionality", + "section": "keywords", + "text": "keywords\nType: List of String\nDefault: Empty\nThe keywords of the components.\nExample:\nkeywords: [ bioinformatics, genomics ]", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#license", + "href": "reference/config/functionality.html#license", + "title": "Functionality", + "section": "license", + "text": "license\nType: String\nDefault: Empty\nThe license of the package.\n\n\n\n\n\n\nNote\n\n\n\nWhen the license field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.\n\n\nExample:\nlicense: MIT", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#links", + "href": "reference/config/functionality.html#links", + "title": "Functionality", + "section": "links", + "text": "links\nType: Links\nDefault: Empty\nExternal links of the component.\nExample:\nlinks:\n repository: \"https://github.com/viash-io/viash\"\n docker_registry: \"https://ghcr.io\"\n homepage: \"https://viash.io\"\n documentation: \"https://viash.io/reference/\"\n issue_tracker: \"https://github.com/viash-io/viash/issues\"", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#name", + "href": "reference/config/functionality.html#name", + "title": "Functionality", + "section": "name", + "text": "name\nType: String\nName of the component and the filename of the executable when built with viash build.\nExample:\nname: this_is_my_component", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#namespace", + "href": "reference/config/functionality.html#namespace", + "title": "Functionality", + "section": "namespace", + "text": "namespace\nType: String\nDefault: Empty\nNamespace this component is a part of. See the Namespaces guide for more information on namespaces.\nExample:\nnamespace: fancy_components", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#organization", + "href": "reference/config/functionality.html#organization", + "title": "Functionality", + "section": "organization", + "text": "organization\nType: String\nDefault: Empty\nThe organization of the package.\n\n\n\n\n\n\nNote\n\n\n\nWhen the organization field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.\n\n\nExample:\norganization: viash-io", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#references", + "href": "reference/config/functionality.html#references", + "title": "Functionality", + "section": "references", + "text": "references\nType: References\nDefault: Empty\nReferences to external resources related to the component.\nExample:\nreferences:\n doi: 10.1000/xx.123456.789\n bibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#repositories", + "href": "reference/config/functionality.html#repositories", + "title": "Functionality", + "section": "repositories", + "text": "repositories\nType: List of RepositoryWithName\nDefault: Empty\n(Pre-)defines repositories that can be used as repository in dependencies. Allows reusing repository definitions in case it is used in multiple dependencies.\n\n\n\n\n\n\nNote\n\n\n\nAny repositories defined under .repositories in the project config will be prepended to the repositories defined in a component’s configuration of the .functionality.repositories field.\n\n\nExample:\nrepositories:\n - name: openpipelines-bio\n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#requirements", + "href": "reference/config/functionality.html#requirements", + "title": "Functionality", + "section": "requirements", + "text": "requirements\nType: ComputationalRequirements\nDefault: Empty\nComputational requirements related to running the component. cpus specifies the maximum number of (logical) cpus a component is allowed to use., whereas memory specifies the maximum amount of memory a component is allowed to allicate. Memory units must be in B, KB, MB, GB, TB or PB.\nExample:\nrequirements:\n cpus: 5\n memory: 10GB", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#resources", + "href": "reference/config/functionality.html#resources", + "title": "Functionality", + "section": "resources", + "text": "resources\nType: List of Resource\nDefault: Empty\nResources are files that support the component. The first resource should be a script that will be executed when the functionality is run. Additional resources will be copied to the same directory.\nCommon properties:\n\ntype: file / r_script / python_script / bash_script / javascript_script / scala_script / csharp_script, specifies the type of the resource. The first resource cannot be of type file. When the type is not specified, the default type is simply file.\ndest: filename, the resulting name of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.\npath: path/to/file, the path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.\ntext: …multiline text…, the content of the resulting file specified as a string. Mutually exclusive with path.\nis_executable: true / false, whether the resulting resource file should be made executable.\n\nExample:\nresources:\n - type: r_script\n path: script.R\n - type: file\n path: resource1.txt", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#status", + "href": "reference/config/functionality.html#status", + "title": "Functionality", + "section": "status", + "text": "status\nType: Status\nDefault: Enabled\nAllows setting a component to active, deprecated or disabled.", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#test_resources", + "href": "reference/config/functionality.html#test_resources", + "title": "Functionality", + "section": "test_resources", + "text": "test_resources\nType: List of Resource\nDefault: Empty\nOne or more scripts to be used to test the component behaviour when viash test is invoked. Additional files of type file will be made available only during testing. Each test script should expect no command-line inputs, be platform-independent, and return an exit code >0 when unexpected behaviour occurs during testing. See Unit Testing for more info.\nExample:\ntest_resources:\n - type: bash_script\n path: tests/test1.sh\n - type: r_script\n path: tests/test2.R\n - path: resource1.txt", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#usage", + "href": "reference/config/functionality.html#usage", + "title": "Functionality", + "section": "usage", + "text": "usage\nType: String\nDefault: Empty\nA description on how to use the component. This will be displayed with --help under the ‘Usage:’ section.\nExample:\nusage: Place the executable in a directory containing TSV files and run it", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/functionality.html#version", + "href": "reference/config/functionality.html#version", + "title": "Functionality", + "section": "version", + "text": "version\nType: String\nDefault: Empty\nVersion of the component. This field will be used to version the executable and the Docker container.\n\n\n\n\n\n\nNote\n\n\n\nWhen the version field is left empty in a component’s .functionality configuration, the value of .version in the project config will be copied during build.\n\n\nExample:\nversion: 0.8", + "crumbs": [ + "Reference", + "Config", + "Functionality" + ] + }, + { + "objectID": "reference/config/argumentGroup.html", + "href": "reference/config/argumentGroup.html", + "title": "Argument Group", + "section": "", + "text": "A grouping of the arguments, used to display the help message.", + "crumbs": [ + "Reference", + "Config", + "Argument Group" + ] + }, + { + "objectID": "reference/config/argumentGroup.html#arguments", + "href": "reference/config/argumentGroup.html#arguments", + "title": "Argument Group", + "section": "arguments", + "text": "arguments\nType: List of Argument\nList of arguments.", + "crumbs": [ + "Reference", + "Config", + "Argument Group" + ] + }, + { + "objectID": "reference/config/argumentGroup.html#description", + "href": "reference/config/argumentGroup.html#description", + "title": "Argument Group", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nDescription of foo`, a description of the argument group. Multiline descriptions are supported.", + "crumbs": [ + "Reference", + "Config", + "Argument Group" + ] + }, + { + "objectID": "reference/config/argumentGroup.html#name", + "href": "reference/config/argumentGroup.html#name", + "title": "Argument Group", + "section": "name", + "text": "name\nType: String\nThe name of the argument group.", + "crumbs": [ + "Reference", + "Config", + "Argument Group" + ] + }, + { + "objectID": "reference/config/repositories/index.html", + "href": "reference/config/repositories/index.html", + "title": "Repository", + "section": "", + "text": "Specifies a repository where dependency components can be found.\n\nlocal\ngit\ngithub\nvsh\n\nExample:\nrepositories:\n - name: openpipelines-bio\n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0", + "crumbs": [ + "Reference", + "Config", + "Repository" + ] + }, + { + "objectID": "reference/config/repositories/githubRepository.html", + "href": "reference/config/repositories/githubRepository.html", + "title": "Github Repository", + "section": "", + "text": "A GitHub repository where remote dependency components can be found.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/repositories/githubRepository.html#name", + "href": "reference/config/repositories/githubRepository.html#name", + "title": "Github Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/repositories/githubRepository.html#path", + "href": "reference/config/repositories/githubRepository.html#path", + "title": "Github Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/repositories/githubRepository.html#repo", + "href": "reference/config/repositories/githubRepository.html#repo", + "title": "Github Repository", + "section": "repo", + "text": "repo\nType: String\nThe name of the GitHub repository.\nExample:\nrepo: viash-io/viash", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/repositories/githubRepository.html#tag", + "href": "reference/config/repositories/githubRepository.html#tag", + "title": "Github Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/repositories/githubRepository.html#type", + "href": "reference/config/repositories/githubRepository.html#type", + "title": "Github Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a GitHub repository.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Github Repository" + ] + }, + { + "objectID": "reference/config/repositories/viashhubRepository.html", + "href": "reference/config/repositories/viashhubRepository.html", + "title": "Viashhub Repository", + "section": "", + "text": "A Viash-Hub repository where remote dependency components can be found.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/repositories/viashhubRepository.html#name", + "href": "reference/config/repositories/viashhubRepository.html#name", + "title": "Viashhub Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/repositories/viashhubRepository.html#path", + "href": "reference/config/repositories/viashhubRepository.html#path", + "title": "Viashhub Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/repositories/viashhubRepository.html#repo", + "href": "reference/config/repositories/viashhubRepository.html#repo", + "title": "Viashhub Repository", + "section": "repo", + "text": "repo\nType: String\nThe name of the Viash-Hub repository.\nExample:\nrepo: openpipelines-bio/openpipeline", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/repositories/viashhubRepository.html#tag", + "href": "reference/config/repositories/viashhubRepository.html#tag", + "title": "Viashhub Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/repositories/viashhubRepository.html#type", + "href": "reference/config/repositories/viashhubRepository.html#type", + "title": "Viashhub Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Viash-Hub repository.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Viashhub Repository" + ] + }, + { + "objectID": "reference/config/computationalRequirements.html", + "href": "reference/config/computationalRequirements.html", + "title": "Computational Requirements", + "section": "", + "text": "Computational requirements related to running the component.", + "crumbs": [ + "Reference", + "Config", + "Computational Requirements" + ] + }, + { + "objectID": "reference/config/computationalRequirements.html#commands", + "href": "reference/config/computationalRequirements.html#commands", + "title": "Computational Requirements", + "section": "commands", + "text": "commands\nType: List of String\nDefault: Empty\nA list of commands which should be present on the system for the script to function.\nExample:\ncommands: [ which, bash, awk, date, grep, egrep, ps, sed, tail, tee ]", + "crumbs": [ + "Reference", + "Config", + "Computational Requirements" + ] + }, + { + "objectID": "reference/config/computationalRequirements.html#cpus", + "href": "reference/config/computationalRequirements.html#cpus", + "title": "Computational Requirements", + "section": "cpus", + "text": "cpus\nType: Int\nDefault: Empty\nThe maximum number of (logical) cpus a component is allowed to use.\nExample:\ncpus: 10", + "crumbs": [ + "Reference", + "Config", + "Computational Requirements" + ] + }, + { + "objectID": "reference/config/computationalRequirements.html#memory", + "href": "reference/config/computationalRequirements.html#memory", + "title": "Computational Requirements", + "section": "memory", + "text": "memory\nType: String\nDefault: Empty\nThe maximum amount of memory a component is allowed to allocate. Unit must be one of B, KB, MB, GB, TB or PB.\nExample:\nmemory: 10GB", + "crumbs": [ + "Reference", + "Config", + "Computational Requirements" + ] + }, + { + "objectID": "reference/config/links.html", + "href": "reference/config/links.html", + "title": "Links", + "section": "", + "text": "Links to external resources related to the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Links" + ] + }, + { + "objectID": "reference/config/links.html#docker_registry", + "href": "reference/config/links.html#docker_registry", + "title": "Links", + "section": "docker_registry", + "text": "docker_registry\nType: String\nDefault: Empty\nDocker registry url.\n\n\n\n\n\n\nNote\n\n\n\nWhen the docker_registry field is left empty in a component’s .functionality.links configuration, the value of .links.repository in the project config will be copied during build.\n\n\nExample:\ndocker_registry: \"https://ghcr.io\"", + "crumbs": [ + "Reference", + "Config", + "Links" + ] + }, + { + "objectID": "reference/config/links.html#documentation", + "href": "reference/config/links.html#documentation", + "title": "Links", + "section": "documentation", + "text": "documentation\nType: String\nDefault: Empty\nDocumentation website url.\nExample:\ndocumentation: \"https://viash.io/reference/\"", + "crumbs": [ + "Reference", + "Config", + "Links" + ] + }, + { + "objectID": "reference/config/links.html#homepage", + "href": "reference/config/links.html#homepage", + "title": "Links", + "section": "homepage", + "text": "homepage\nType: String\nDefault: Empty\nHomepage website url.\nExample:\nhomepage: \"https://viash.io\"", + "crumbs": [ + "Reference", + "Config", + "Links" + ] + }, + { + "objectID": "reference/config/links.html#issue_tracker", + "href": "reference/config/links.html#issue_tracker", + "title": "Links", + "section": "issue_tracker", + "text": "issue_tracker\nType: String\nDefault: Empty\nIssue tracker url.\nExample:\nissue_tracker: \"https://github.com/viash-io/viash/issues\"", + "crumbs": [ + "Reference", + "Config", + "Links" + ] + }, + { + "objectID": "reference/config/links.html#repository", + "href": "reference/config/links.html#repository", + "title": "Links", + "section": "repository", + "text": "repository\nType: String\nDefault: Empty\nSource repository url.\n\n\n\n\n\n\nNote\n\n\n\nWhen the repository field is left empty in a component’s .functionality.links configuration, the value of .links.repository in the project config will be copied during build.\n\n\nExample:\nrepository: \"https://github.com/viash-io/viash\"", + "crumbs": [ + "Reference", + "Config", + "Links" + ] + }, + { + "objectID": "reference/config/repositories/localRepository.html", + "href": "reference/config/repositories/localRepository.html", + "title": "Local Repository", + "section": "", + "text": "Defines a locally present and available repository. This can be used to define components from the same code base as the current component. Alternatively, this can be used to refer to a code repository present on the local hard-drive instead of fetchable remotely, for example during development.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/repositories/localRepository.html#name", + "href": "reference/config/repositories/localRepository.html#name", + "title": "Local Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/repositories/localRepository.html#path", + "href": "reference/config/repositories/localRepository.html#path", + "title": "Local Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/repositories/localRepository.html#tag", + "href": "reference/config/repositories/localRepository.html#tag", + "title": "Local Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/repositories/localRepository.html#type", + "href": "reference/config/repositories/localRepository.html#type", + "title": "Local Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a locally present and available repository.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Local Repository" + ] + }, + { + "objectID": "reference/config/repositories/gitRepository.html", + "href": "reference/config/repositories/gitRepository.html", + "title": "Git Repository", + "section": "", + "text": "A Git repository where remote dependency components can be found.\nExamples:\nExample without name field in case used in .functionality.dependencies\nExample without name field in case used in .functionality.dependencies\nExample with name field in case used in .functionality.repositories\nExample with name field in case used in .functionality.repositories", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/repositories/gitRepository.html#name", + "href": "reference/config/repositories/gitRepository.html#name", + "title": "Git Repository", + "section": "name", + "text": "name\nType: String\n\n\n\n\n\n\nWarning\n\n\n\nWhen defining repositories under .functionality.repositories, the repository definition needs a name field so it can be refered to from a dependency.\nWhen defining a repository directly in a dependency under .functionality.dependencies, the name field must be omitted.\n\n\nThe identifier used to refer to this repository from dependencies.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/repositories/gitRepository.html#path", + "href": "reference/config/repositories/gitRepository.html#path", + "title": "Git Repository", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nDefines a subfolder of the repository to use as base to look for the dependency components.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/repositories/gitRepository.html#tag", + "href": "reference/config/repositories/gitRepository.html#tag", + "title": "Git Repository", + "section": "tag", + "text": "tag\nType: String\nDefault: Empty\nDefines which version of the dependency component to use. Typically this can be a specific tag, branch or commit hash.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/repositories/gitRepository.html#type", + "href": "reference/config/repositories/gitRepository.html#type", + "title": "Git Repository", + "section": "type", + "text": "type\nType: String\nDefines the repository as a Git repository.", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/repositories/gitRepository.html#uri", + "href": "reference/config/repositories/gitRepository.html#uri", + "title": "Git Repository", + "section": "uri", + "text": "uri\nType: String\nThe URI of the Git repository.\nExample:\nuri: \"git+https://github.com/openpipelines-bio/openpipeline.git\"", + "crumbs": [ + "Reference", + "Config", + "Repository", + "Git Repository" + ] + }, + { + "objectID": "reference/config/author.html", + "href": "reference/config/author.html", + "title": "Author", + "section": "", + "text": "Author metadata.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Author" + ] + }, + { + "objectID": "reference/config/author.html#email", + "href": "reference/config/author.html#email", + "title": "Author", + "section": "email", + "text": "email\nType: String\nDefault: Empty\nE-mail of the author.", + "crumbs": [ + "Reference", + "Config", + "Author" + ] + }, + { + "objectID": "reference/config/author.html#info", + "href": "reference/config/author.html#info", + "title": "Author", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.", + "crumbs": [ + "Reference", + "Config", + "Author" + ] + }, + { + "objectID": "reference/config/author.html#name", + "href": "reference/config/author.html#name", + "title": "Author", + "section": "name", + "text": "name\nType: String\nFull name of the author, usually in the name of FirstName MiddleName LastName.", + "crumbs": [ + "Reference", + "Config", + "Author" + ] + }, + { + "objectID": "reference/config/author.html#props", + "href": "reference/config/author.html#props", + "title": "Author", + "section": "props", + "text": "props\nType: Map of String to String\nDefault: Empty\n\n\n\n\n\n\nWarning\n\n\n\nDeprecated since 0.7.4. Removed since 0.8.0. Use info instead.\n\n\nAuthor properties. Must be a map of strings.", + "crumbs": [ + "Reference", + "Config", + "Author" + ] + }, + { + "objectID": "reference/config/author.html#roles", + "href": "reference/config/author.html#roles", + "title": "Author", + "section": "roles", + "text": "roles\nType: String / List of String\nDefault: Empty\nRole of the author. Suggested items:\n\n\"author\": Authors who have made substantial contributions to the component.\n\"maintainer\": The maintainer of the component.\n\"contributor\": Authors who have made smaller contributions (such as code patches etc.).", + "crumbs": [ + "Reference", + "Config", + "Author" + ] + }, + { + "objectID": "reference/config/arguments/boolean_false.html", + "href": "reference/config/arguments/boolean_false.html", + "title": "Boolean False", + "section": "", + "text": "An argument of the boolean_false type acts like an inverted boolean flag with a default value of true. When called as an argument it sets the boolean to false.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/arguments/boolean_false.html#alternatives", + "href": "reference/config/arguments/boolean_false.html#alternatives", + "title": "Boolean False", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/arguments/boolean_false.html#description", + "href": "reference/config/arguments/boolean_false.html#description", + "title": "Boolean False", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/arguments/boolean_false.html#info", + "href": "reference/config/arguments/boolean_false.html#info", + "title": "Boolean False", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/arguments/boolean_false.html#name", + "href": "reference/config/arguments/boolean_false.html#name", + "title": "Boolean False", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --no-log, -n or no-log. The number of dashes determines how values can be passed:\n\n--no-log is a long option, which can be passed with executable_name --no-log\n-n is a short option, which can be passed with executable_name -n\nno-log is an argument, which can be passed with executable_name no-log", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/arguments/boolean_false.html#type", + "href": "reference/config/arguments/boolean_false.html#type", + "title": "Boolean False", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean False" + ] + }, + { + "objectID": "reference/config/arguments/boolean_true.html", + "href": "reference/config/arguments/boolean_true.html", + "title": "Boolean True", + "section": "", + "text": "An argument of the boolean_true type acts like a boolean flag with a default value of false. When called as an argument it sets the boolean to true.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/arguments/boolean_true.html#alternatives", + "href": "reference/config/arguments/boolean_true.html#alternatives", + "title": "Boolean True", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/arguments/boolean_true.html#description", + "href": "reference/config/arguments/boolean_true.html#description", + "title": "Boolean True", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/arguments/boolean_true.html#info", + "href": "reference/config/arguments/boolean_true.html#info", + "title": "Boolean True", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/arguments/boolean_true.html#name", + "href": "reference/config/arguments/boolean_true.html#name", + "title": "Boolean True", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --silent, -s or silent. The number of dashes determines how values can be passed:\n\n--silent is a long option, which can be passed with executable_name --silent\n-s is a short option, which can be passed with executable_name -s\nsilent is an argument, which can be passed with executable_name silent", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/arguments/boolean_true.html#type", + "href": "reference/config/arguments/boolean_true.html#type", + "title": "Boolean True", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean True" + ] + }, + { + "objectID": "reference/config/arguments/string.html", + "href": "reference/config/arguments/string.html", + "title": "String", + "section": "", + "text": "A string type argument has a value made up of an ordered sequences of characters, like “Hello” or “I’m a string”.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#alternatives", + "href": "reference/config/arguments/string.html#alternatives", + "title": "String", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#choices", + "href": "reference/config/arguments/string.html#choices", + "title": "String", + "section": "choices", + "text": "choices\nType: List of String\nDefault: Empty\nLimit the amount of valid values for this argument to those set in this list. When set and a value not present in the list is provided, an error will be produced.\nExample:\n- name: --language\n type: string\n choices: [\"python\", \"r\", \"javascript\"]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#default", + "href": "reference/config/arguments/string.html#default", + "title": "String", + "section": "default", + "text": "default\nType: String / List of String\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_string\n type: string\n default: \"The answer is 42\"", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#description", + "href": "reference/config/arguments/string.html#description", + "title": "String", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#example", + "href": "reference/config/arguments/string.html#example", + "title": "String", + "section": "example", + "text": "example\nType: String / List of String\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_string\n type: string\n example: \"Hello World\"", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#info", + "href": "reference/config/arguments/string.html#info", + "title": "String", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#multiple", + "href": "reference/config/arguments/string.html#multiple", + "title": "String", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_string\n type: string\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_string=Marc:Susan:Paul", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#multiple_sep", + "href": "reference/config/arguments/string.html#multiple_sep", + "title": "String", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: ;\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_string\n type: string\n multiple: true\n multiple_sep: \";\"\nHere’s an example of how to use this:\nmy_component --my_string=Marc,Susan,Paul", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#name", + "href": "reference/config/arguments/string.html#name", + "title": "String", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --foo, -f or foo. The number of dashes determines how values can be passed:\n\n--foo is a long option, which can be passed with executable_name --foo=value or executable_name --foo value\n-f is a short option, which can be passed with executable_name -f value\nfoo is an argument, which can be passed with executable_name value", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#required", + "href": "reference/config/arguments/string.html#required", + "title": "String", + "section": "required", + "text": "required\nType: Boolean\nDefault: Empty\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_string\n type: string\n required: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/string.html#type", + "href": "reference/config/arguments/string.html#type", + "title": "String", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "String" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html", + "href": "reference/config/arguments/boolean.html", + "title": "Boolean", + "section": "", + "text": "A boolean type argument has two possible values: true or false.\nExample:", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#alternatives", + "href": "reference/config/arguments/boolean.html#alternatives", + "title": "Boolean", + "section": "alternatives", + "text": "alternatives\nType: String / List of String\nDefault: Empty\nList of alternative format variations for this argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#default", + "href": "reference/config/arguments/boolean.html#default", + "title": "Boolean", + "section": "default", + "text": "default\nType: Boolean / List of Boolean\nDefault: Empty\nThe default value when no argument value is provided. This will not work if the required property is enabled.\nExample:\n- name: --my_boolean\n type: boolean\n default: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#description", + "href": "reference/config/arguments/boolean.html#description", + "title": "Boolean", + "section": "description", + "text": "description\nType: String\nDefault: Empty\nA description of the argument. This will be displayed with --help.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#example", + "href": "reference/config/arguments/boolean.html#example", + "title": "Boolean", + "section": "example", + "text": "example\nType: Boolean / List of Boolean\nDefault: Empty\nAn example value for this argument. If no default property was specified, this will be used for that purpose.\nExample:\n- name: --my_boolean\n type: boolean\n example: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#info", + "href": "reference/config/arguments/boolean.html#info", + "title": "Boolean", + "section": "info", + "text": "info\nType: Json\nDefault: Empty\nStructured information. Can be any shape: a string, vector, map or even nested map.\nExample:\ninfo:\n category: cat1\n labels: [one, two, three]", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#multiple", + "href": "reference/config/arguments/boolean.html#multiple", + "title": "Boolean", + "section": "multiple", + "text": "multiple\nType: Boolean\nDefault: False\nTreat the argument value as an array. Arrays can be passed using the delimiter --foo=1:2:3 or by providing the same argument multiple times --foo 1 --foo 2. You can use a custom delimiter by using the multiple_sep property. false by default.\nExamples:\n- name: --my_boolean\n type: boolean\n multiple: true\nHere’s an example of how to use this:\nmy_component --my_boolean=true:true:false", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#multiple_sep", + "href": "reference/config/arguments/boolean.html#multiple_sep", + "title": "Boolean", + "section": "multiple_sep", + "text": "multiple_sep\nType: String\nDefault: ;\nThe delimiter character for providing multiple values. : by default.\nExamples:\n- name: --my_boolean\n type: boolean\n multiple: true\n multiple_sep: \";\"\nHere’s an example of how to use this:\nmy_component --my_boolean=true,true,false", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#name", + "href": "reference/config/arguments/boolean.html#name", + "title": "Boolean", + "section": "name", + "text": "name\nType: String\nThe name of the argument. Can be in the formats --trim, -t or trim. The number of dashes determines how values can be passed:\n\n--trim is a long option, which can be passed with executable_name --trim\n-t is a short option, which can be passed with executable_name -t\ntrim is an argument, which can be passed with executable_name trim", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#required", + "href": "reference/config/arguments/boolean.html#required", + "title": "Boolean", + "section": "required", + "text": "required\nType: Boolean\nDefault: False\nMake the value for this argument required. If set to true, an error will be produced if no value was provided. false by default.\nExample:\n- name: --my_boolean\n type: boolean\n required: true", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/boolean.html#type", + "href": "reference/config/arguments/boolean.html#type", + "title": "Boolean", + "section": "type", + "text": "type\nType: String\nSpecifies the type of the argument.", + "crumbs": [ + "Reference", + "Config", + "Argument", + "Boolean" + ] + }, + { + "objectID": "reference/config/arguments/index.html", + "href": "reference/config/arguments/index.html", + "title": "Argument", + "section": "", + "text": "For each argument, a type and a name must be specified. Depending on the type of argument, different properties can be set. See these reference pages per type for more information:\n\nstring\nfile\ninteger\ndouble\nboolean\nboolean_true\nboolean_false\n\nExample:\narguments:\n - name: --foo\n type: file\n alternatives: [-f]\n description: Description of foo\n default: \"/foo/bar\"\n must_exist: true\n direction: output\n required: false\n multiple: true\n multiple_sep: \";\"\n - name: --bar\n type: string", + "crumbs": [ + "Reference", + "Config", + "Argument" + ] + }, + { + "objectID": "reference/config/resources/rScript.html", + "href": "reference/config/resources/rScript.html", + "title": "R Script", + "section": "", + "text": "An executable R script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/resources/rScript.html#dest", + "href": "reference/config/resources/rScript.html#dest", + "title": "R Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/resources/rScript.html#is_executable", + "href": "reference/config/resources/rScript.html#is_executable", + "title": "R Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/resources/rScript.html#path", + "href": "reference/config/resources/rScript.html#path", + "title": "R Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/resources/rScript.html#text", + "href": "reference/config/resources/rScript.html#text", + "title": "R Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/resources/rScript.html#type", + "href": "reference/config/resources/rScript.html#type", + "title": "R Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a R script.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "R Script" + ] + }, + { + "objectID": "reference/config/resources/nextflowScript.html", + "href": "reference/config/resources/nextflowScript.html", + "title": "Nextflow Script", + "section": "", + "text": "A Nextflow script. Work in progress; added mainly for annotation at the moment.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/resources/nextflowScript.html#dest", + "href": "reference/config/resources/nextflowScript.html#dest", + "title": "Nextflow Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/resources/nextflowScript.html#entrypoint", + "href": "reference/config/resources/nextflowScript.html#entrypoint", + "title": "Nextflow Script", + "section": "entrypoint", + "text": "entrypoint\nType: String\nThe name of the workflow to be wrapped.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/resources/nextflowScript.html#is_executable", + "href": "reference/config/resources/nextflowScript.html#is_executable", + "title": "Nextflow Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/resources/nextflowScript.html#path", + "href": "reference/config/resources/nextflowScript.html#path", + "title": "Nextflow Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/resources/nextflowScript.html#text", + "href": "reference/config/resources/nextflowScript.html#text", + "title": "Nextflow Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/resources/nextflowScript.html#type", + "href": "reference/config/resources/nextflowScript.html#type", + "title": "Nextflow Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a Nextflow script.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Nextflow Script" + ] + }, + { + "objectID": "reference/config/resources/javaScriptScript.html", + "href": "reference/config/resources/javaScriptScript.html", + "title": "JavaScript Script", + "section": "", + "text": "An executable JavaScript script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/resources/javaScriptScript.html#dest", + "href": "reference/config/resources/javaScriptScript.html#dest", + "title": "JavaScript Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/resources/javaScriptScript.html#is_executable", + "href": "reference/config/resources/javaScriptScript.html#is_executable", + "title": "JavaScript Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/resources/javaScriptScript.html#path", + "href": "reference/config/resources/javaScriptScript.html#path", + "title": "JavaScript Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/resources/javaScriptScript.html#text", + "href": "reference/config/resources/javaScriptScript.html#text", + "title": "JavaScript Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/resources/javaScriptScript.html#type", + "href": "reference/config/resources/javaScriptScript.html#type", + "title": "JavaScript Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a JavaScript script.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "JavaScript Script" + ] + }, + { + "objectID": "reference/config/resources/scalaScript.html", + "href": "reference/config/resources/scalaScript.html", + "title": "Scala Script", + "section": "", + "text": "An executable Scala script. When defined in resources, only the first entry will be executed when running the built component or when running viash run. When defined in test_resources, all entries will be executed during viash test.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/resources/scalaScript.html#dest", + "href": "reference/config/resources/scalaScript.html#dest", + "title": "Scala Script", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/resources/scalaScript.html#is_executable", + "href": "reference/config/resources/scalaScript.html#is_executable", + "title": "Scala Script", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/resources/scalaScript.html#path", + "href": "reference/config/resources/scalaScript.html#path", + "title": "Scala Script", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/resources/scalaScript.html#text", + "href": "reference/config/resources/scalaScript.html#text", + "title": "Scala Script", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/resources/scalaScript.html#type", + "href": "reference/config/resources/scalaScript.html#type", + "title": "Scala Script", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as a Scala script.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Scala Script" + ] + }, + { + "objectID": "reference/config/resources/executable.html", + "href": "reference/config/resources/executable.html", + "title": "Executable", + "section": "", + "text": "An executable file.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/resources/executable.html#dest", + "href": "reference/config/resources/executable.html#dest", + "title": "Executable", + "section": "dest", + "text": "dest\nType: String\nDefault: Empty\nResulting filename of the resource. From within a script, the file can be accessed at meta[\"resources_dir\"] + \"/\" + dest. If unspecified, dest will be set to the basename of the path parameter.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/resources/executable.html#is_executable", + "href": "reference/config/resources/executable.html#is_executable", + "title": "Executable", + "section": "is_executable", + "text": "is_executable\nType: Boolean\nDefault: Empty\nWhether the resulting resource file should be made executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/resources/executable.html#path", + "href": "reference/config/resources/executable.html#path", + "title": "Executable", + "section": "path", + "text": "path\nType: String\nDefault: Empty\nThe path of the input file. Can be a relative or an absolute path, or a URI. Mutually exclusive with text.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/resources/executable.html#text", + "href": "reference/config/resources/executable.html#text", + "title": "Executable", + "section": "text", + "text": "text\nType: String\nDefault: Empty\nThe content of the resulting file specified as a string. Mutually exclusive with path.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/resources/executable.html#type", + "href": "reference/config/resources/executable.html#type", + "title": "Executable", + "section": "type", + "text": "type\nType: String\nSpecifies the resource as an executable.", + "crumbs": [ + "Reference", + "Config", + "Resource", + "Executable" + ] + }, + { + "objectID": "reference/config/references.html", + "href": "reference/config/references.html", + "title": "References", + "section": "", + "text": "References to external resources related to the component.\nExample:", + "crumbs": [ + "Reference", + "Config", + "References" + ] + }, + { + "objectID": "reference/config/references.html#bibtex", + "href": "reference/config/references.html#bibtex", + "title": "References", + "section": "bibtex", + "text": "bibtex\nType: String / List of String\nOne or multiple BibTeX reference(s) of the component.\nExample:\nbibtex: |\n @article{foo,\n title={Foo},\n author={Bar},\n journal={Baz},\n year={2024}\n }", + "crumbs": [ + "Reference", + "Config", + "References" + ] + }, + { + "objectID": "reference/config/references.html#doi", + "href": "reference/config/references.html#doi", + "title": "References", + "section": "doi", + "text": "doi\nType: String / List of String\nOne or multiple DOI reference(s) of the component.\nExample:\ndoi: 10.1000/xx.123456.789", + "crumbs": [ + "Reference", + "Config", + "References" + ] + }, + { + "objectID": "reference/environmentVariables/index.html", + "href": "reference/environmentVariables/index.html", + "title": "Environment Variables", + "section": "", + "text": "Viash checks several environment variables during operation.", + "crumbs": [ + "Reference", + "Environment Variables" + ] + }, + { + "objectID": "reference/environmentVariables/index.html#viash_home", + "href": "reference/environmentVariables/index.html#viash_home", + "title": "Environment Variables", + "section": "VIASH_HOME", + "text": "VIASH_HOME\nType: String\nIf VIASH_HOME is not defined, the fallback HOME/.viash is used.\nLocation where specific downloaded versions of Viash will be cached and run from.", + "crumbs": [ + "Reference", + "Environment Variables" + ] + }, + { + "objectID": "reference/environmentVariables/index.html#viash_version", + "href": "reference/environmentVariables/index.html#viash_version", + "title": "Environment Variables", + "section": "VIASH_VERSION", + "text": "VIASH_VERSION\nType: String\nDefault: Empty\nA specific Viash version can be set to run the commands with. If so required, the specific Viash version will be downloaded. This is useful when replicating older results or building Viash components that use outdated code.\nExample:\nVIASH_VERSION=0.7.0 viash ns build", + "crumbs": [ + "Reference", + "Environment Variables" + ] + } +] \ No newline at end of file diff --git a/_versioned/0_8_5/site_libs/bootstrap/bootstrap-icons.css b/_versioned/0_8_5/site_libs/bootstrap/bootstrap-icons.css new file mode 100644 index 00000000..285e4448 --- /dev/null +++ b/_versioned/0_8_5/site_libs/bootstrap/bootstrap-icons.css @@ -0,0 +1,2078 @@ +/*! + * Bootstrap Icons v1.11.1 (https://icons.getbootstrap.com/) + * Copyright 2019-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ + +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: +url("./bootstrap-icons.woff?2820a3852bdb9a5832199cc61cec4e65") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } +.bi-alphabet-uppercase::before { content: "\f2a5"; } +.bi-alphabet::before { content: "\f68a"; } +.bi-amazon::before { content: "\f68d"; } +.bi-arrows-collapse-vertical::before { content: "\f690"; } +.bi-arrows-expand-vertical::before { content: "\f695"; } +.bi-arrows-vertical::before { content: "\f698"; } +.bi-arrows::before { content: "\f6a2"; } +.bi-ban-fill::before { content: "\f6a3"; } +.bi-ban::before { content: "\f6b6"; } +.bi-bing::before { content: "\f6c2"; } +.bi-cake::before { content: "\f6e0"; } +.bi-cake2::before { content: "\f6ed"; } +.bi-cookie::before { content: "\f6ee"; } +.bi-copy::before { content: "\f759"; } +.bi-crosshair::before { content: "\f769"; } +.bi-crosshair2::before { content: "\f794"; } +.bi-emoji-astonished-fill::before { content: "\f795"; } +.bi-emoji-astonished::before { content: "\f79a"; } +.bi-emoji-grimace-fill::before { content: "\f79b"; } +.bi-emoji-grimace::before { content: "\f7a0"; } +.bi-emoji-grin-fill::before { content: "\f7a1"; } +.bi-emoji-grin::before { content: "\f7a6"; } +.bi-emoji-surprise-fill::before { content: "\f7a7"; } +.bi-emoji-surprise::before { content: "\f7ac"; } +.bi-emoji-tear-fill::before { content: "\f7ad"; } +.bi-emoji-tear::before { content: "\f7b2"; } +.bi-envelope-arrow-down-fill::before { content: "\f7b3"; } +.bi-envelope-arrow-down::before { content: "\f7b8"; } +.bi-envelope-arrow-up-fill::before { content: "\f7b9"; } +.bi-envelope-arrow-up::before { content: "\f7be"; } +.bi-feather::before { content: "\f7bf"; } +.bi-feather2::before { content: "\f7c4"; } +.bi-floppy-fill::before { content: "\f7c5"; } +.bi-floppy::before { content: "\f7d8"; } +.bi-floppy2-fill::before { content: "\f7d9"; } +.bi-floppy2::before { content: "\f7e4"; } +.bi-gitlab::before { content: "\f7e5"; } +.bi-highlighter::before { content: "\f7f8"; } +.bi-marker-tip::before { content: "\f802"; } +.bi-nvme-fill::before { content: "\f803"; } +.bi-nvme::before { content: "\f80c"; } +.bi-opencollective::before { content: "\f80d"; } +.bi-pci-card-network::before { content: "\f8cd"; } +.bi-pci-card-sound::before { content: "\f8ce"; } +.bi-radar::before { content: "\f8cf"; } +.bi-send-arrow-down-fill::before { content: "\f8d0"; } +.bi-send-arrow-down::before { content: "\f8d1"; } +.bi-send-arrow-up-fill::before { content: "\f8d2"; } +.bi-send-arrow-up::before { content: "\f8d3"; } +.bi-sim-slash-fill::before { content: "\f8d4"; } +.bi-sim-slash::before { content: "\f8d5"; } +.bi-sourceforge::before { content: "\f8d6"; } +.bi-substack::before { content: "\f8d7"; } +.bi-threads-fill::before { content: "\f8d8"; } +.bi-threads::before { content: "\f8d9"; } +.bi-transparency::before { content: "\f8da"; } +.bi-twitter-x::before { content: "\f8db"; } +.bi-type-h4::before { content: "\f8dc"; } +.bi-type-h5::before { content: "\f8dd"; } +.bi-type-h6::before { content: "\f8de"; } +.bi-backpack-fill::before { content: "\f8df"; } +.bi-backpack::before { content: "\f8e0"; } +.bi-backpack2-fill::before { content: "\f8e1"; } +.bi-backpack2::before { content: "\f8e2"; } +.bi-backpack3-fill::before { content: "\f8e3"; } +.bi-backpack3::before { content: "\f8e4"; } +.bi-backpack4-fill::before { content: "\f8e5"; } +.bi-backpack4::before { content: "\f8e6"; } +.bi-brilliance::before { content: "\f8e7"; } +.bi-cake-fill::before { content: "\f8e8"; } +.bi-cake2-fill::before { content: "\f8e9"; } +.bi-duffle-fill::before { content: "\f8ea"; } +.bi-duffle::before { content: "\f8eb"; } +.bi-exposure::before { content: "\f8ec"; } +.bi-gender-neuter::before { content: "\f8ed"; } +.bi-highlights::before { content: "\f8ee"; } +.bi-luggage-fill::before { content: "\f8ef"; } +.bi-luggage::before { content: "\f8f0"; } +.bi-mailbox-flag::before { content: "\f8f1"; } +.bi-mailbox2-flag::before { content: "\f8f2"; } +.bi-noise-reduction::before { content: "\f8f3"; } +.bi-passport-fill::before { content: "\f8f4"; } +.bi-passport::before { content: "\f8f5"; } +.bi-person-arms-up::before { content: "\f8f6"; } +.bi-person-raised-hand::before { content: "\f8f7"; } +.bi-person-standing-dress::before { content: "\f8f8"; } +.bi-person-standing::before { content: "\f8f9"; } +.bi-person-walking::before { content: "\f8fa"; } +.bi-person-wheelchair::before { content: "\f8fb"; } +.bi-shadows::before { content: "\f8fc"; } +.bi-suitcase-fill::before { content: "\f8fd"; } +.bi-suitcase-lg-fill::before { content: "\f8fe"; } +.bi-suitcase-lg::before { content: "\f8ff"; } +.bi-suitcase::before { content: "\f900"; } +.bi-suitcase2-fill::before { content: "\f901"; } +.bi-suitcase2::before { content: "\f902"; } +.bi-vignette::before { content: "\f903"; } diff --git a/_versioned/0_8_5/site_libs/bootstrap/bootstrap-icons.woff b/_versioned/0_8_5/site_libs/bootstrap/bootstrap-icons.woff new file mode 100644 index 00000000..dbeeb055 Binary files /dev/null and b/_versioned/0_8_5/site_libs/bootstrap/bootstrap-icons.woff differ diff --git a/_versioned/0_8_5/site_libs/bootstrap/bootstrap.min.css b/_versioned/0_8_5/site_libs/bootstrap/bootstrap.min.css new file mode 100644 index 00000000..a771f10d --- /dev/null +++ b/_versioned/0_8_5/site_libs/bootstrap/bootstrap.min.css @@ -0,0 +1,12 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import"https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap";:root,[data-bs-theme=light]{--bs-blue: #2780e3;--bs-indigo: #6610f2;--bs-purple: #613d7c;--bs-pink: #e83e8c;--bs-red: #ff0039;--bs-orange: #f0ad4e;--bs-yellow: #ff7518;--bs-green: #3fb618;--bs-teal: #20c997;--bs-cyan: #9954bb;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #343a40;--bs-primary: #2780e3;--bs-secondary: #343a40;--bs-success: #3fb618;--bs-info: #9954bb;--bs-warning: #ff7518;--bs-danger: #ff0039;--bs-light: #f8f9fa;--bs-dark: #343a40;--bs-default-rgb: 52, 58, 64;--bs-primary-rgb: 39, 128, 227;--bs-secondary-rgb: 52, 58, 64;--bs-success-rgb: 63, 182, 24;--bs-info-rgb: 153, 84, 187;--bs-warning-rgb: 255, 117, 24;--bs-danger-rgb: 255, 0, 57;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 52, 58, 64;--bs-primary-text-emphasis: #10335b;--bs-secondary-text-emphasis: #15171a;--bs-success-text-emphasis: #19490a;--bs-info-text-emphasis: #3d224b;--bs-warning-text-emphasis: #662f0a;--bs-danger-text-emphasis: #660017;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #d4e6f9;--bs-secondary-bg-subtle: #d6d8d9;--bs-success-bg-subtle: #d9f0d1;--bs-info-bg-subtle: #ebddf1;--bs-warning-bg-subtle: #ffe3d1;--bs-danger-bg-subtle: #ffccd7;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #a9ccf4;--bs-secondary-border-subtle: #aeb0b3;--bs-success-border-subtle: #b2e2a3;--bs-info-border-subtle: #d6bbe4;--bs-warning-border-subtle: #ffc8a3;--bs-danger-border-subtle: #ff99b0;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #343a40;--bs-body-color-rgb: 52, 58, 64;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(52, 58, 64, 0.75);--bs-secondary-color-rgb: 52, 58, 64;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(52, 58, 64, 0.5);--bs-tertiary-color-rgb: 52, 58, 64;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #2761e3;--bs-link-color-rgb: 39, 97, 227;--bs-link-decoration: underline;--bs-link-hover-color: #1f4eb6;--bs-link-hover-color-rgb: 31, 78, 182;--bs-code-color: #7d12ba;--bs-highlight-bg: #ffe3d1;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(39, 128, 227, 0.25);--bs-form-valid-color: #3fb618;--bs-form-valid-border-color: #3fb618;--bs-form-invalid-color: #ff0039;--bs-form-invalid-border-color: #ff0039}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #7db3ee;--bs-secondary-text-emphasis: #85898c;--bs-success-text-emphasis: #8cd374;--bs-info-text-emphasis: #c298d6;--bs-warning-text-emphasis: #ffac74;--bs-danger-text-emphasis: #ff6688;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #081a2d;--bs-secondary-bg-subtle: #0a0c0d;--bs-success-bg-subtle: #0d2405;--bs-info-bg-subtle: #1f1125;--bs-warning-bg-subtle: #331705;--bs-danger-bg-subtle: #33000b;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #174d88;--bs-secondary-border-subtle: #1f2326;--bs-success-border-subtle: #266d0e;--bs-info-border-subtle: #5c3270;--bs-warning-border-subtle: #99460e;--bs-danger-border-subtle: #990022;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #7db3ee;--bs-link-hover-color: #97c2f1;--bs-link-color-rgb: 125, 179, 238;--bs-link-hover-color-rgb: 151, 194, 241;--bs-code-color: white;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: #8cd374;--bs-form-valid-border-color: #8cd374;--bs-form-invalid-color: #ff6688;--bs-form-invalid-border-color: #ff6688}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f8f9fa;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6)}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#343a40}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(52,58,64,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:rgba(52,58,64,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #343a40;--bs-table-bg: #fff;--bs-table-border-color: #dee2e6;--bs-table-accent-bg: transparent;--bs-table-striped-color: #343a40;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #343a40;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #343a40;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid #b2bac1}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #d4e6f9;--bs-table-border-color: #bfcfe0;--bs-table-striped-bg: #c9dbed;--bs-table-striped-color: #000;--bs-table-active-bg: #bfcfe0;--bs-table-active-color: #000;--bs-table-hover-bg: #c4d5e6;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #d6d8d9;--bs-table-border-color: #c1c2c3;--bs-table-striped-bg: #cbcdce;--bs-table-striped-color: #000;--bs-table-active-bg: #c1c2c3;--bs-table-active-color: #000;--bs-table-hover-bg: #c6c8c9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d9f0d1;--bs-table-border-color: #c3d8bc;--bs-table-striped-bg: #cee4c7;--bs-table-striped-color: #000;--bs-table-active-bg: #c3d8bc;--bs-table-active-color: #000;--bs-table-hover-bg: #c9dec1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #ebddf1;--bs-table-border-color: #d4c7d9;--bs-table-striped-bg: #dfd2e5;--bs-table-striped-color: #000;--bs-table-active-bg: #d4c7d9;--bs-table-active-color: #000;--bs-table-hover-bg: #d9ccdf;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #ffe3d1;--bs-table-border-color: #e6ccbc;--bs-table-striped-bg: #f2d8c7;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ccbc;--bs-table-active-color: #000;--bs-table-hover-bg: #ecd2c1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #ffccd7;--bs-table-border-color: #e6b8c2;--bs-table-striped-bg: #f2c2cc;--bs-table-striped-color: #000;--bs-table-active-bg: #e6b8c2;--bs-table-active-color: #000;--bs-table-hover-bg: #ecbdc7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #343a40;--bs-table-border-color: #484e53;--bs-table-striped-bg: #3e444a;--bs-table-striped-color: #fff;--bs-table-active-bg: #484e53;--bs-table-active-color: #fff;--bs-table-hover-bg: #43494e;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:rgba(52,58,64,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#343a40;background-color:#fff;border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:rgba(52,58,64,.75);opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#343a40;background-color:#f8f9fa;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e9ecef}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#343a40;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important}.form-control-color::-webkit-color-swatch{border:0 !important}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #343a40}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid #dee2e6;print-color-adjust:exact}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2780e3;border-color:#2780e3}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2780e3;border-color:#2780e3;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2393c0f1'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#bed9f7}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#bed9f7}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(52,58,64,.75)}.form-range:disabled::-moz-range-thumb{background-color:rgba(52,58,64,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#e9ecef}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;text-align:center;white-space:nowrap;background-color:#f8f9fa;border:1px solid #dee2e6}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1)}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#3fb618}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#3fb618}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#3fb618;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#3fb618}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#3fb618}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#3fb618}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#3fb618}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#ff0039}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#ff0039}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#ff0039;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#ff0039}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#ff0039}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#ff0039}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#ff0039}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #343a40;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #216dc1;--bs-btn-hover-border-color: #1f66b6;--bs-btn-focus-shadow-rgb: 71, 147, 231;--bs-btn-active-color: #fff;--bs-btn-active-bg: #1f66b6;--bs-btn-active-border-color: #1d60aa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #2780e3;--bs-btn-disabled-border-color: #2780e3}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #369b14;--bs-btn-hover-border-color: #329213;--bs-btn-focus-shadow-rgb: 92, 193, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #329213;--bs-btn-active-border-color: #2f8912;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3fb618;--bs-btn-disabled-border-color: #3fb618}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #82479f;--bs-btn-hover-border-color: #7a4396;--bs-btn-focus-shadow-rgb: 168, 110, 197;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7a4396;--bs-btn-active-border-color: #733f8c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #9954bb;--bs-btn-disabled-border-color: #9954bb}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d96314;--bs-btn-hover-border-color: #cc5e13;--bs-btn-focus-shadow-rgb: 255, 138, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc5e13;--bs-btn-active-border-color: #bf5812;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff7518;--bs-btn-disabled-border-color: #ff7518}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d90030;--bs-btn-hover-border-color: #cc002e;--bs-btn-focus-shadow-rgb: 255, 38, 87;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc002e;--bs-btn-active-border-color: #bf002b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff0039;--bs-btn-disabled-border-color: #ff0039}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #52585d;--bs-btn-hover-border-color: #484e53;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5d6166;--bs-btn-active-border-color: #484e53;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-outline-default{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2780e3;--bs-btn-hover-border-color: #2780e3;--bs-btn-focus-shadow-rgb: 39, 128, 227;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2780e3;--bs-btn-active-border-color: #2780e3;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #2780e3;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2780e3;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3fb618;--bs-btn-hover-border-color: #3fb618;--bs-btn-focus-shadow-rgb: 63, 182, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3fb618;--bs-btn-active-border-color: #3fb618;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3fb618;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3fb618;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #9954bb;--bs-btn-hover-border-color: #9954bb;--bs-btn-focus-shadow-rgb: 153, 84, 187;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9954bb;--bs-btn-active-border-color: #9954bb;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #9954bb;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #9954bb;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff7518;--bs-btn-hover-border-color: #ff7518;--bs-btn-focus-shadow-rgb: 255, 117, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff7518;--bs-btn-active-border-color: #ff7518;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff7518;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff7518;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff0039;--bs-btn-hover-border-color: #ff0039;--bs-btn-focus-shadow-rgb: 255, 0, 57;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff0039;--bs-btn-active-border-color: #ff0039;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff0039;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff0039;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #2761e3;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: #1f4eb6;--bs-btn-hover-border-color: transparent;--bs-btn-active-color: #1f4eb6;--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 71, 121, 231;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #343a40;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #343a40;--bs-dropdown-link-hover-color: #343a40;--bs-dropdown-link-hover-bg: #f8f9fa;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: rgba(52, 58, 64, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #2761e3;--bs-nav-link-hover-color: #1f4eb6;--bs-nav-link-disabled-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width))}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #2780e3}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0.5rem;--bs-navbar-color: #545555;--bs-navbar-hover-color: rgba(31, 78, 182, 0.8);--bs-navbar-disabled-color: rgba(84, 85, 85, 0.75);--bs-navbar-active-color: #1f4eb6;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #545555;--bs-navbar-brand-hover-color: #1f4eb6;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(84, 85, 85, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: #545555;--bs-navbar-hover-color: rgba(31, 78, 182, 0.8);--bs-navbar-disabled-color: rgba(84, 85, 85, 0.75);--bs-navbar-active-color: #1f4eb6;--bs-navbar-brand-color: #545555;--bs-navbar-brand-hover-color: #1f4eb6;--bs-navbar-toggler-border-color: rgba(84, 85, 85, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0}.card>.list-group:last-child{border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}}.accordion{--bs-accordion-color: #343a40;--bs-accordion-bg: #fff;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #343a40;--bs-accordion-btn-bg: #fff;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23343a40'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2310335b'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #93c0f1;--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #10335b;--bs-accordion-active-bg: #d4e6f9}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:not(:first-of-type){border-top:0}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: rgba(52, 58, 64, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #2761e3;--bs-pagination-bg: #fff;--bs-pagination-border-width: 1px;--bs-pagination-border-color: #dee2e6;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #1f4eb6;--bs-pagination-hover-bg: #f8f9fa;--bs-pagination-hover-border-color: #dee2e6;--bs-pagination-focus-color: #1f4eb6;--bs-pagination-focus-bg: #e9ecef;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #2780e3;--bs-pagination-active-border-color: #2780e3;--bs-pagination-disabled-color: rgba(52, 58, 64, 0.75);--bs-pagination-disabled-bg: #e9ecef;--bs-pagination-disabled-border-color: #dee2e6;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(1px*-1)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 0 solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress,.progress-stacked{--bs-progress-height: 0.5rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #2780e3;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #343a40;--bs-list-group-bg: #fff;--bs-list-group-border-color: #dee2e6;--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(52, 58, 64, 0.75);--bs-list-group-action-hover-color: #000;--bs-list-group-action-hover-bg: #f8f9fa;--bs-list-group-action-active-color: #343a40;--bs-list-group-action-active-bg: #e9ecef;--bs-list-group-disabled-color: rgba(52, 58, 64, 0.75);--bs-list-group-disabled-bg: #fff;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #2780e3;--bs-list-group-active-border-color: #2780e3;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255, 255, 255, 0.85);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(52, 58, 64, 0.75);--bs-toast-header-bg: rgba(255, 255, 255, 0.85);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color)}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: rgba(0, 0, 0, 0.175);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: #dee2e6;--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: #dee2e6;--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: #e9ecef;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #343a40;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #343a40;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgba(0, 0, 0, 0.175);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(31, 102, 182, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(31, 102, 182, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(50, 146, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(50, 146, 19, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(122, 67, 150, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(122, 67, 150, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(204, 94, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 94, 19, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(204, 0, 46, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 0, 46, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}:root{--bslib-page-sidebar-title-bg: #f8f9fa;--bslib-page-sidebar-title-color: #000}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #fff);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:" "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:" "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#545555}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#1f4eb6}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:#595959}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:#595959;padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(33,81,191,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:#8c8c8c}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:#595959}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(33,81,191,.8)}div.sidebar-item-container.disabled{color:rgba(89,89,89,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:#2151bf}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#fff}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#fff;border-bottom:1px solid #dee2e6}.quarto-banner nav.quarto-secondary-nav{background-color:#f8f9fa;color:#545555;border-top:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:rgba(102,102,102,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:#1f4eb6}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:64px}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:#757575}.nav-footer a{color:#757575}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}.nav-footer-left{flex:1 1 0px;text-align:left}.nav-footer-right{flex:1 1 0px;text-align:right}.nav-footer-center{flex:1 1 0px;min-height:3em;text-align:center}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#545555;border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:#595959;border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#545555;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#545555;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#343a40;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#343a40;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#343a40;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#343a40;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#343a40;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #dee2e6 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:#f2f2f2;padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:#4b95e8}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#343a40}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#e5effc}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#343a40}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#dee2e6;color:#343a40}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #dee2e6}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#545555}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#595959}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(255,255,255,.65);width:90%;bottom:0;box-shadow:rgba(222,226,230,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #dee2e6;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#343a40;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(52,58,64,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:#5397e9 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:#343a40 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:#3aa716 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:rgba(153,84,187,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:#fa6400 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:rgba(255,0,57,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:#f8f9fa !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:#343a40 !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px #dae0e5;border-bottom:solid 1px #dae0e5}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:#e0e5e9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:#545555}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#343a40}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#343a40}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px #bcbfc0;padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#fff;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#fff;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#343a40}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:#fff}.tableFloatingHeaderOriginal{background-color:#fff;position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#343a40;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#2761e3}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#2761e3}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#2761e3}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#2761e3}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#2761e3}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#343a40;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#343a40}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}div.ansi-escaped-output{font-family:monospace;display:block}/*! +* +* ansi colors from IPython notebook's +* +* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since +* that seems to be what ansi_up emits +* +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #343a40;--quarto-text-muted: #6c757d;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #343a40;--mermaid-node-fg-color: #343a40;--mermaid-fg-color: #343a40;--mermaid-fg-color--lighter: #4b545c;--mermaid-fg-color--lightest: #626d78;--mermaid-font-family: Source Sans Pro, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #2780e3;--mermaid-node-bg-color: rgba(39, 128, 227, 0.1);--mermaid-node-fg-color: #343a40}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 3em [body-end] 50px [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(50px, 100px) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1250px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#f8f9fa;z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>section:first-of-type>h2:first-child,main.content>section:first-of-type>.h2:first-child{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:#6d7a86}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:#6d7a86}.quarto-layout-cell[data-ref-parent] caption{color:#6d7a86}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#6d7a86;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#dee2e6 1px solid;border-right:#dee2e6 1px solid;border-bottom:#dee2e6 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(233,236,239,.65);border:1px solid rgba(233,236,239,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#6d7a86}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#f8f9fa;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#2761e3}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#2761e3}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #e9ecef;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #2761e3;color:#2761e3 !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#2761e3 !important}kbd,.kbd{color:#343a40;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#2780e3}div.callout-note.callout-style-default>.callout-header{background-color:#e9f2fc}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#3fb618}div.callout-tip.callout-style-default>.callout-header{background-color:#ecf8e8}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#ff7518}div.callout-warning.callout-style-default>.callout-header{background-color:#fff1e8}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#f0ad4e}div.callout-caution.callout-style-default>.callout-header{background-color:#fef7ed}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#ff0039}div.callout-important.callout-style-default>.callout-header{background-color:#ffe6eb}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#f8f9fa;color:#545555}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#fafafa}#quarto-content .quarto-sidebar-toggle-title{color:#343a40}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: #cacccd;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #cacccd;--bs-btn-hover-bg: #52585d;--bs-btn-hover-border-color: #484e53;--bs-btn-focus-shadow-rgb: 75, 80, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5d6166;--bs-btn-active-border-color: #484e53;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}nav.quarto-secondary-nav.color-navbar{background-color:#f8f9fa;color:#545555}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#545555}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:rgba(233,236,239,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:#4b545c;border:solid #4b545c 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#e9ecef;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#f8f9fa;z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid #ebedee;border-bottom:1px solid #ebedee}.table>thead{border-top-width:0;border-bottom:1px solid #b2bac1}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#545555;background:#f8f9fa}.quarto-title-banner a{color:#545555}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:#545555}.quarto-title-banner .code-tools-button{color:#878888}.quarto-title-banner .code-tools-button:hover{color:#545555}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}body{-webkit-font-smoothing:antialiased}.badge.bg-light{color:#343a40}.progress .progress-bar{font-size:8px;line-height:8px}.layout-example{background:#adb5bd;color:#fff;text-align:center;margin-bottom:1em;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.875em;font-weight:600;padding-top:1em;border-radius:3px}.left{text-align:left;padding-left:1em}.right{text-align:right;padding-right:1em}.hello-quarto-banner h1,.hello-quarto-banner .h1{margin-top:0;margin-bottom:.5rem}div .smallpill{height:24px;display:inline-flex;border-radius:20px;background-color:var(--bs-cyan);border:none;color:#fff;padding-inline:12px}.smallpill p{font-size:15px} diff --git a/_versioned/0_8_5/site_libs/bootstrap/bootstrap.min.js b/_versioned/0_8_5/site_libs/bootstrap/bootstrap.min.js new file mode 100644 index 00000000..e8f21f70 --- /dev/null +++ b/_versioned/0_8_5/site_libs/bootstrap/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Rs=`.nav-link${Bs}, .list-group-item${Bs}, [role="tab"]${Bs}, ${zs}`,qs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Vs extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return z.find(Rs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(Rs)?t:z.findOne(Rs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Vs.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(qs))Vs.getOrCreateInstance(t)})),m(Vs);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Ys=`focusin${Ks}`,Us=`focusout${Ks}`,Gs=`hide${Ks}`,Js=`hidden${Ks}`,Zs=`show${Ks}`,to=`shown${Ks}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){N.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),d(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),N.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),N.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Qs,(t=>this._onInteraction(t,!0))),N.on(this._element,Xs,(t=>this._onInteraction(t,!1))),N.on(this._element,Ys,(t=>this._onInteraction(t,!0))),N.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ro),m(ro),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Vs,Toast:ro,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/_versioned/0_8_5/site_libs/clipboard/clipboard.min.js b/_versioned/0_8_5/site_libs/clipboard/clipboard.min.js new file mode 100644 index 00000000..1103f811 --- /dev/null +++ b/_versioned/0_8_5/site_libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1 + +const defaultCSS = + '.label text {fill: var(--mermaid-fg-color);}.node circle, .node ellipse, .node path, .node polygon, .node rect {fill: var(--mermaid-node-bg-color);stroke: var(--mermaid-node-fg-color);}marker {fill: var(--mermaid-edge-color) !important;}.edgeLabel .label rect {fill: #0000;}.label {color: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.label foreignObject {line-height: normal;overflow: visible;}.label div .edgeLabel {color: var(--mermaid-label-fg-color);}.edgeLabel, .edgeLabel rect, .label div .edgeLabel {background-color: var(--mermaid-label-bg-color);}.edgeLabel, .edgeLabel rect {fill: var(--mermaid-label-bg-color);color: var(--mermaid-edge-color);}.edgePath .path, .flowchart-link {stroke: var(--mermaid-edge-color);}.edgePath .arrowheadPath {fill: var(--mermaid-edge-color);stroke: none;}.cluster rect {fill: var(--mermaid-fg-color--lightest);stroke: var(--mermaid-fg-color--lighter);}.cluster span {color: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}defs #flowchart-circleEnd, defs #flowchart-circleStart, defs #flowchart-crossEnd, defs #flowchart-crossStart, defs #flowchart-pointEnd, defs #flowchart-pointStart {stroke: none;}g.classGroup line, g.classGroup rect {fill: var(--mermaid-node-bg-color);stroke: var(--mermaid-node-fg-color);}g.classGroup text {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.classLabel .box {fill: var(--mermaid-label-bg-color);background-color: var(--mermaid-label-bg-color);opacity: 1;}.classLabel .label {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.node .divider {stroke: var(--mermaid-node-fg-color);}.relation {stroke: var(--mermaid-edge-color);}.cardinality {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.cardinality text {fill: inherit !important;}defs #classDiagram-compositionEnd, defs #classDiagram-compositionStart, defs #classDiagram-dependencyEnd, defs #classDiagram-dependencyStart, defs #classDiagram-extensionEnd, defs #classDiagram-extensionStart {fill: var(--mermaid-edge-color) !important;stroke: var(--mermaid-edge-color) !important;}defs #classDiagram-aggregationEnd, defs #classDiagram-aggregationStart {fill: var(--mermaid-label-bg-color) !important;stroke: var(--mermaid-edge-color) !important;}g.stateGroup rect {fill: var(--mermaid-node-bg-color);stroke: var(--mermaid-node-fg-color);}g.stateGroup .state-title {fill: var(--mermaid-label-fg-color) !important;font-family: var(--mermaid-font-family);}g.stateGroup .composit {fill: var(--mermaid-label-bg-color);}.nodeLabel {color: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.node circle.state-end, .node circle.state-start, .start-state {fill: var(--mermaid-edge-color);stroke: none;}.end-state-inner, .end-state-outer {fill: var(--mermaid-edge-color);}.end-state-inner, .node circle.state-end {stroke: var(--mermaid-label-bg-color);}.transition {stroke: var(--mermaid-edge-color);}[id^="state-fork"] rect, [id^="state-join"] rect {fill: var(--mermaid-edge-color) !important;stroke: none !important;}.statediagram-cluster.statediagram-cluster .inner {fill: var(--mermaid-bg-color);}.statediagram-cluster rect {fill: var(--mermaid-node-bg-color);stroke: var(--mermaid-node-fg-color);}.statediagram-state rect.divider {fill: var(--mermaid-fg-color--lightest);stroke: var(--mermaid-fg-color--lighter);}defs #statediagram-barbEnd {stroke: var(--mermaid-edge-color);}.entityBox {fill: var(--mermaid-label-bg-color);stroke: var(--mermaid-node-fg-color);}.entityLabel {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.relationshipLabelBox {fill: var(--mermaid-label-bg-color);fill-opacity: 1;background-color: var(--mermaid-label-bg-color);opacity: 1;}.relationshipLabel {fill: var(--mermaid-label-fg-color);}.relationshipLine {stroke: var(--mermaid-edge-color);}defs #ONE_OR_MORE_END *, defs #ONE_OR_MORE_START *, defs #ONLY_ONE_END *, defs #ONLY_ONE_START *, defs #ZERO_OR_MORE_END *, defs #ZERO_OR_MORE_START *, defs #ZERO_OR_ONE_END *, defs #ZERO_OR_ONE_START * {stroke: var(--mermaid-edge-color) !important;}.actor, defs #ZERO_OR_MORE_END circle, defs #ZERO_OR_MORE_START circle {fill: var(--mermaid-label-bg-color);}.actor {stroke: var(--mermaid-node-fg-color);}text.actor > tspan {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}line {stroke: var(--mermaid-fg-color--lighter);}.messageLine0, .messageLine1 {stroke: var(--mermaid-edge-color);}.loopText > tspan, .messageText, .noteText > tspan {fill: var(--mermaid-edge-color);stroke: none;font-family: var(--mermaid-font-family) !important;}.noteText > tspan {fill: #000;}#arrowhead path {fill: var(--mermaid-edge-color);stroke: none;}.loopLine {stroke: var(--mermaid-node-fg-color);}.labelBox, .loopLine {fill: var(--mermaid-node-bg-color);}.labelBox {stroke: none;}.labelText, .labelText > span {fill: var(--mermaid-node-fg-color);font-family: var(--mermaid-font-family);}'; + +const mermaidThemeEl = document.querySelector('meta[name="mermaid-theme"]'); +if (mermaidThemeEl) { + mermaidOpts.theme = mermaidThemeEl.content; +} else { + mermaidOpts.themeCSS = defaultCSS; +} + +mermaid.initialize(mermaidOpts); + +const _quartoMermaid = { + // NB: there's effectively a copy of this function + // in `core/svg.ts`. + // if you change something here, you must keep it consistent there as well. + setSvgSize(svg) { + const { widthInPoints, heightInPoints, explicitHeight, explicitWidth } = + this.resolveSize(svg); + + if (explicitWidth && explicitHeight) { + svg.setAttribute("width", widthInPoints); + svg.setAttribute("height", heightInPoints); + svg.style.maxWidth = null; // remove mermaid's default max-width + } else { + if (explicitWidth) { + svg.style.maxWidth = `${widthInPoints}px`; + } + if (explicitHeight) { + svg.style.maxHeight = `${heightInPoints}px`; + } + } + }, + + // NB: there's effectively a copy of this function + // in `core/svg.ts`. + // if you change something here, you must keep it consistent there as well. + makeResponsive(svg) { + const width = svg.getAttribute("width"); + if (width === null) { + throw new Error("Couldn't find SVG width"); + } + const numWidth = Number(width.slice(0, -2)); + + if (numWidth > 650) { + changed = true; + svg.setAttribute("width", "100%"); + svg.removeAttribute("height"); + } + }, + + // NB: there's effectively a copy of this function + // in `core/svg.ts`. + // if you change something here, you must keep it consistent there as well. + fixupAlignment(svg, align) { + let style = svg.getAttribute("style") || ""; + + switch (align) { + case "left": + style = `${style}; display: block; margin: auto auto auto 0`; + break; + case "right": + style = `${style}; display: block; margin: auto 0 auto auto`; + break; + case "center": + style = `${style}; display: block; margin: auto auto auto auto`; + break; + } + svg.setAttribute("style", style); + }, + + resolveOptions(svgEl) { + return svgEl.parentElement.parentElement.parentElement.parentElement + .dataset; + }, + + // NB: there's effectively a copy of this function + // in our mermaid runtime in `core/svg.ts`. + // if you change something here, you must keep it consistent there as well. + resolveSize(svgEl) { + const inInches = (size) => { + if (size.endsWith("in")) { + return Number(size.slice(0, -2)); + } + if (size.endsWith("pt") || size.endsWith("px")) { + // assume 96 dpi for now + return Number(size.slice(0, -2)) / 96; + } + return Number(size); + }; + + // these are figWidth and figHeight on purpose, + // because data attributes are translated to camelCase by the DOM API + const kFigWidth = "figWidth", + kFigHeight = "figHeight"; + const options = this.resolveOptions(svgEl); + let width = svgEl.getAttribute("width"); + let height = svgEl.getAttribute("height"); + const getViewBox = () => { + const vb = svgEl.attributes.getNamedItem("viewBox").value; // do it the roundabout way so that viewBox isn't dropped by deno_dom and text/html + if (!vb) return undefined; + const lst = vb.trim().split(" ").map(Number); + if (lst.length !== 4) return undefined; + if (lst.some(isNaN)) return undefined; + return lst; + }; + if (!width || !height) { + // attempt to resolve figure dimensions via viewBox + const viewBox = getViewBox(); + if (viewBox !== undefined) { + const [_mx, _my, vbWidth, vbHeight] = viewBox; + width = `${vbWidth}px`; + height = `${vbHeight}px`; + } else { + throw new Error( + "Mermaid generated an SVG without a viewbox attribute. Without knowing the diagram dimensions, quarto cannot convert it to a PNG" + ); + } + } + + let svgWidthInInches, svgHeightInInches; + + if ( + (width.slice(0, -2) === "pt" && height.slice(0, -2) === "pt") || + (width.slice(0, -2) === "px" && height.slice(0, -2) === "px") || + (!isNaN(Number(width)) && !isNaN(Number(height))) + ) { + // we assume 96 dpi which is generally what seems to be used. + svgWidthInInches = Number(width.slice(0, -2)) / 96; + svgHeightInInches = Number(height.slice(0, -2)) / 96; + } + const viewBox = getViewBox(); + if (viewBox !== undefined) { + // assume width and height come from viewbox. + const [_mx, _my, vbWidth, vbHeight] = viewBox; + svgWidthInInches = vbWidth / 96; + svgHeightInInches = vbHeight / 96; + } else { + throw new Error( + "Internal Error: Couldn't resolve width and height of SVG" + ); + } + const svgWidthOverHeight = svgWidthInInches / svgHeightInInches; + let widthInInches, heightInInches; + + if (options[kFigWidth] && options[kFigHeight]) { + // both were prescribed, so just go with them + widthInInches = inInches(String(options[kFigWidth])); + heightInInches = inInches(String(options[kFigHeight])); + } else if (options[kFigWidth]) { + // we were only given width, use that and adjust height based on aspect ratio; + widthInInches = inInches(String(options[kFigWidth])); + heightInInches = widthInInches / svgWidthOverHeight; + } else if (options[kFigHeight]) { + // we were only given height, use that and adjust width based on aspect ratio; + heightInInches = inInches(String(options[kFigHeight])); + widthInInches = heightInInches * svgWidthOverHeight; + } else { + // we were not given either, use svg's prescribed height + heightInInches = svgHeightInInches; + widthInInches = svgWidthInInches; + } + + return { + widthInInches, + heightInInches, + widthInPoints: Math.round(widthInInches * 96), + heightInPoints: Math.round(heightInInches * 96), + explicitWidth: options?.[kFigWidth] !== undefined, + explicitHeight: options?.[kFigHeight] !== undefined, + }; + }, + + postProcess(svg) { + const options = this.resolveOptions(svg); + if ( + options.responsive && + options["figWidth"] === undefined && + options["figHeight"] === undefined + ) { + this.makeResponsive(svg); + } else { + this.setSvgSize(svg); + } + if (options["reveal"]) { + this.fixupAlignment(svg, options["figAlign"] || "center"); + } + + // forward align attributes to the correct parent dif + // so that the svg figure is aligned correctly + const div = svg.parentElement.parentElement.parentElement; + const align = div.parentElement.parentElement.dataset.layoutAlign; + if (align) { + div.classList.remove("quarto-figure-left"); + div.classList.remove("quarto-figure-center"); + div.classList.remove("quarto-figure-right"); + div.classList.add(`quarto-figure-${align}`); + } + }, +}; + +// deno-lint-ignore no-window-prefix +window.addEventListener( + "load", + async function () { + let i = 0; + // we need pre because of whitespace preservation + for (const el of Array.from(document.querySelectorAll("pre.mermaid-js"))) { + //   doesn't appear to be treated as whitespace by mermaid + // so we replace it with a space. + const text = el.textContent.replaceAll(" ", " "); + const { svg: output } = await mermaid.mermaidAPI.render( + `mermaid-${++i}`, + text, + el + ); + el.innerHTML = output; + if (el.dataset.label) { + // patch mermaid's emitted style + const svg = el.firstChild; + const style = svg.querySelector("style"); + style.innerHTML = style.innerHTML.replaceAll( + `#${svg.id}`, + `#${el.dataset.label}-mermaid` + ); + svg.id = el.dataset.label + "-mermaid"; + delete el.dataset.label; + } + + const svg = el.querySelector("svg"); + const parent = el.parentElement; + parent.removeChild(el); + parent.appendChild(svg); + svg.classList.add("mermaid-js"); + } + for (const svgEl of Array.from( + document.querySelectorAll("svg.mermaid-js") + )) { + _quartoMermaid.postProcess(svgEl); + } + }, + false +); diff --git a/_versioned/0_8_5/site_libs/quarto-diagram/mermaid.css b/_versioned/0_8_5/site_libs/quarto-diagram/mermaid.css new file mode 100644 index 00000000..9f8bb7c7 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-diagram/mermaid.css @@ -0,0 +1,13 @@ +.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: "trebuchet ms", verdana, arial; + font-size: 12px; + background: #ffffde; + border: 1px solid #aaaa33; + border-radius: 2px; + pointer-events: none; + z-index: 1000; +} diff --git a/_versioned/0_8_5/site_libs/quarto-diagram/mermaid.min.js b/_versioned/0_8_5/site_libs/quarto-diagram/mermaid.min.js new file mode 100644 index 00000000..367f2e01 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-diagram/mermaid.min.js @@ -0,0 +1,1621 @@ +(function(mN,cA){typeof exports=="object"&&typeof module<"u"?module.exports=cA():typeof define=="function"&&define.amd?define(cA):(mN=typeof globalThis<"u"?globalThis:mN||self,mN.mermaid=cA())})(this,function(){"use strict";function mN(i){for(var a=[],f=1;f=f?a:""+Array(f+1-w.length).join(p)+a},a5t=function(a){var f=-a.utcOffset(),p=Math.abs(f),w=Math.floor(p/60),y=p%60;return(f<=0?"+":"-")+Ffe(w,2,"0")+":"+Ffe(y,2,"0")},o5t=function i(a,f){if(a.date()1)return i(b[0])}else{var E=a.name;NE[E]=a,w=E}return!p&&w&&(kN=w),w||!p&&kN},ru=function(a,f){if(jfe(a))return a.clone();var p=typeof f=="object"?f:{};return p.date=a,p.args=arguments,new cU(p)},f5t=function(a,f){return ru(a,{locale:f.$L,utc:f.$u,x:f.$x,$offset:f.$offset})},tl=h5t;tl.l=oU,tl.i=jfe,tl.w=f5t;var d5t=function(a){var f=a.date,p=a.utc;if(f===null)return new Date(NaN);if(tl.u(f))return new Date;if(f instanceof Date)return new Date(f);if(typeof f=="string"&&!/Z$/i.test(f)){var w=f.match(r5t);if(w){var y=w[2]-1||0,b=(w[7]||"0").substring(0,3);return p?new Date(Date.UTC(w[1],y,w[3]||1,w[4]||0,w[5]||0,w[6]||0,b)):new Date(w[1],y,w[3]||1,w[4]||0,w[5]||0,w[6]||0,b)}}return new Date(f)},cU=function(){function i(f){this.$L=oU(f.locale,null,!0),this.parse(f)}var a=i.prototype;return a.parse=function(p){this.$d=d5t(p),this.$x=p.x||{},this.init()},a.init=function(){var p=this.$d;this.$y=p.getFullYear(),this.$M=p.getMonth(),this.$D=p.getDate(),this.$W=p.getDay(),this.$H=p.getHours(),this.$m=p.getMinutes(),this.$s=p.getSeconds(),this.$ms=p.getMilliseconds()},a.$utils=function(){return tl},a.isValid=function(){return this.$d.toString()!==yLe},a.isSame=function(p,w){var y=ru(p);return this.startOf(w)<=y&&y<=this.endOf(w)},a.isAfter=function(p,w){return ru(p){},debug:(...i)=>{},info:(...i)=>{},warn:(...i)=>{},error:(...i)=>{},fatal:(...i)=>{}},$fe=function(i="fatal"){let a=c5.fatal;typeof i=="string"?(i=i.toLowerCase(),i in c5&&(a=c5[i])):typeof i=="number"&&(a=i),Fe.trace=()=>{},Fe.debug=()=>{},Fe.info=()=>{},Fe.warn=()=>{},Fe.error=()=>{},Fe.fatal=()=>{},a<=c5.fatal&&(Fe.fatal=console.error?console.error.bind(console,Gb("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Gb("FATAL"))),a<=c5.error&&(Fe.error=console.error?console.error.bind(console,Gb("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Gb("ERROR"))),a<=c5.warn&&(Fe.warn=console.warn?console.warn.bind(console,Gb("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Gb("WARN"))),a<=c5.info&&(Fe.info=console.info?console.info.bind(console,Gb("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Gb("INFO"))),a<=c5.debug&&(Fe.debug=console.debug?console.debug.bind(console,Gb("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Gb("DEBUG"))),a<=c5.trace&&(Fe.trace=console.debug?console.debug.bind(console,Gb("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Gb("TRACE")))},Gb=i=>`%c${ru().format("ss.SSS")} : ${i} : `;var Wk=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function xLe(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Hfe={};Object.defineProperty(Hfe,"__esModule",{value:!0});var u5=Hfe.sanitizeUrl=void 0,g5t=/^([^\w]*)(javascript|data|vbscript)/im,p5t=/&#(\w+)(^\w|;)?/g,b5t=/&(newline|tab);/gi,v5t=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,w5t=/^.+(:|:)/gim,m5t=[".","/"];function y5t(i){return m5t.indexOf(i[0])>-1}function k5t(i){return i.replace(p5t,function(a,f){return String.fromCharCode(f)})}function x5t(i){var a=k5t(i||"").replace(b5t,"").replace(v5t,"").trim();if(!a)return"about:blank";if(y5t(a))return a;var f=a.match(w5t);if(!f)return a;var p=f[0];return g5t.test(p)?"about:blank":a}u5=Hfe.sanitizeUrl=x5t;function uU(i,a){return i==null||a==null?NaN:ia?1:i>=a?0:NaN}function E5t(i,a){return i==null||a==null?NaN:ai?1:a>=i?0:NaN}function zfe(i){let a,f,p;i.length!==2?(a=uU,f=(E,S)=>uU(i(E),S),p=(E,S)=>i(E)-S):(a=i===uU||i===E5t?i:T5t,f=i,p=i);function w(E,S,N=0,B=E.length){if(N>>1;f(E[R],S)<0?N=R+1:B=R}while(N>>1;f(E[R],S)<=0?N=R+1:B=R}while(NN&&p(E[R-1],S)>-p(E[R],S)?R-1:R}return{left:w,center:b,right:y}}function T5t(){return 0}function _5t(i){return i===null?NaN:+i}const C5t=zfe(uU).right;zfe(_5t).center;const S5t=C5t;class ELe extends Map{constructor(a,f=M5t){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:f}}),a!=null)for(const[p,w]of a)this.set(p,w)}get(a){return super.get(TLe(this,a))}has(a){return super.has(TLe(this,a))}set(a,f){return super.set(A5t(this,a),f)}delete(a){return super.delete(L5t(this,a))}}function TLe({_intern:i,_key:a},f){const p=a(f);return i.has(p)?i.get(p):f}function A5t({_intern:i,_key:a},f){const p=a(f);return i.has(p)?i.get(p):(i.set(p,f),f)}function L5t({_intern:i,_key:a},f){const p=a(f);return i.has(p)&&(f=i.get(p),i.delete(p)),f}function M5t(i){return i!==null&&typeof i=="object"?i.valueOf():i}var Gfe=Math.sqrt(50),qfe=Math.sqrt(10),Vfe=Math.sqrt(2);function D5t(i,a,f){var p,w=-1,y,b,E;if(a=+a,i=+i,f=+f,i===a&&f>0)return[i];if((p=a0){let S=Math.round(i/E),N=Math.round(a/E);for(S*Ea&&--N,b=new Array(y=N-S+1);++wa&&--N,b=new Array(y=N-S+1);++w=0?(y>=Gfe?10:y>=qfe?5:y>=Vfe?2:1)*Math.pow(10,w):-Math.pow(10,-w)/(y>=Gfe?10:y>=qfe?5:y>=Vfe?2:1)}function Ufe(i,a,f){var p=Math.abs(a-i)/Math.max(0,f),w=Math.pow(10,Math.floor(Math.log(p)/Math.LN10)),y=p/w;return y>=Gfe?w*=10:y>=qfe?w*=5:y>=Vfe&&(w*=2),a=p)&&(f=p);else{let p=-1;for(let w of i)(w=a(w,++p,i))!=null&&(f=w)&&(f=w)}return f}function O5t(i,a){let f;if(a===void 0)for(const p of i)p!=null&&(f>p||f===void 0&&p>=p)&&(f=p);else{let p=-1;for(let w of i)(w=a(w,++p,i))!=null&&(f>w||f===void 0&&w>=w)&&(f=w)}return f}function N5t(i){return i}var lU=1,Wfe=2,Kfe=3,hU=4,CLe=1e-6;function P5t(i){return"translate("+i+",0)"}function B5t(i){return"translate(0,"+i+")"}function R5t(i){return a=>+i(a)}function F5t(i,a){return a=Math.max(0,i.bandwidth()-a*2)/2,i.round()&&(a=Math.round(a)),f=>+i(f)+a}function j5t(){return!this.__axis}function SLe(i,a){var f=[],p=null,w=null,y=6,b=6,E=3,S=typeof window<"u"&&window.devicePixelRatio>1?0:.5,N=i===lU||i===hU?-1:1,B=i===hU||i===Wfe?"x":"y",R=i===lU||i===Kfe?P5t:B5t;function j($){var V=p??(a.ticks?a.ticks.apply(a,f):a.domain()),Q=w??(a.tickFormat?a.tickFormat.apply(a,f):N5t),oe=Math.max(y,0)+E,ce=a.range(),se=+ce[0]+S,ge=+ce[ce.length-1]+S,ye=(a.bandwidth?F5t:R5t)(a.copy(),S),ke=$.selection?$.selection():$,Ae=ke.selectAll(".domain").data([null]),de=ke.selectAll(".tick").data(V,a).order(),ve=de.exit(),te=de.enter().append("g").attr("class","tick"),xe=de.select("line"),De=de.select("text");Ae=Ae.merge(Ae.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),de=de.merge(te),xe=xe.merge(te.append("line").attr("stroke","currentColor").attr(B+"2",N*y)),De=De.merge(te.append("text").attr("fill","currentColor").attr(B,N*oe).attr("dy",i===lU?"0em":i===Kfe?"0.71em":"0.32em")),$!==ke&&(Ae=Ae.transition($),de=de.transition($),xe=xe.transition($),De=De.transition($),ve=ve.transition($).attr("opacity",CLe).attr("transform",function(he){return isFinite(he=ye(he))?R(he+S):this.getAttribute("transform")}),te.attr("opacity",CLe).attr("transform",function(he){var Ie=this.parentNode.__axis;return R((Ie&&isFinite(Ie=Ie(he))?Ie:ye(he))+S)})),ve.remove(),Ae.attr("d",i===hU||i===Wfe?b?"M"+N*b+","+se+"H"+S+"V"+ge+"H"+N*b:"M"+S+","+se+"V"+ge:b?"M"+se+","+N*b+"V"+S+"H"+ge+"V"+N*b:"M"+se+","+S+"H"+ge),de.attr("opacity",1).attr("transform",function(he){return R(ye(he)+S)}),xe.attr(B+"2",N*y),De.attr(B,N*oe).text(Q),ke.filter(j5t).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",i===Wfe?"start":i===hU?"end":"middle"),ke.each(function(){this.__axis=ye})}return j.scale=function($){return arguments.length?(a=$,j):a},j.ticks=function(){return f=Array.from(arguments),j},j.tickArguments=function($){return arguments.length?(f=$==null?[]:Array.from($),j):f.slice()},j.tickValues=function($){return arguments.length?(p=$==null?null:Array.from($),j):p&&p.slice()},j.tickFormat=function($){return arguments.length?(w=$,j):w},j.tickSize=function($){return arguments.length?(y=b=+$,j):y},j.tickSizeInner=function($){return arguments.length?(y=+$,j):y},j.tickSizeOuter=function($){return arguments.length?(b=+$,j):b},j.tickPadding=function($){return arguments.length?(E=+$,j):E},j.offset=function($){return arguments.length?(S=+$,j):S},j}function $5t(i){return SLe(lU,i)}function H5t(i){return SLe(Kfe,i)}var z5t={value:()=>{}};function ALe(){for(var i=0,a=arguments.length,f={},p;i=0&&(p=f.slice(w+1),f=f.slice(0,w)),f&&!a.hasOwnProperty(f))throw new Error("unknown type: "+f);return{type:f,name:p}})}fU.prototype=ALe.prototype={constructor:fU,on:function(i,a){var f=this._,p=G5t(i+"",f),w,y=-1,b=p.length;if(arguments.length<2){for(;++y0)for(var f=new Array(w),p=0,w,y;p=0&&(a=i.slice(0,f))!=="xmlns"&&(i=i.slice(f+1)),MLe.hasOwnProperty(a)?{space:MLe[a],local:i}:i}function V5t(i){return function(){var a=this.ownerDocument,f=this.namespaceURI;return f===Yfe&&a.documentElement.namespaceURI===Yfe?a.createElement(i):a.createElementNS(f,i)}}function U5t(i){return function(){return this.ownerDocument.createElementNS(i.space,i.local)}}function DLe(i){var a=dU(i);return(a.local?U5t:V5t)(a)}function W5t(){}function Xfe(i){return i==null?W5t:function(){return this.querySelector(i)}}function K5t(i){typeof i!="function"&&(i=Xfe(i));for(var a=this._groups,f=a.length,p=new Array(f),w=0;w=ge&&(ge=se+1);!(ke=oe[ge])&&++ge=0;)(b=p[w])&&(y&&b.compareDocumentPosition(y)^4&&y.parentNode.insertBefore(b,y),y=b);return this}function w6t(i){i||(i=m6t);function a(R,j){return R&&j?i(R.__data__,j.__data__):!R-!j}for(var f=this._groups,p=f.length,w=new Array(p),y=0;ya?1:i>=a?0:NaN}function y6t(){var i=arguments[0];return arguments[0]=this,i.apply(null,arguments),this}function k6t(){return Array.from(this)}function x6t(){for(var i=this._groups,a=0,f=i.length;a1?this.each((a==null?O6t:typeof a=="function"?P6t:N6t)(i,a,f??"")):gA(this.node(),i)}function gA(i,a){return i.style.getPropertyValue(a)||RLe(i).getComputedStyle(i,null).getPropertyValue(a)}function R6t(i){return function(){delete this[i]}}function F6t(i,a){return function(){this[i]=a}}function j6t(i,a){return function(){var f=a.apply(this,arguments);f==null?delete this[i]:this[i]=f}}function $6t(i,a){return arguments.length>1?this.each((a==null?R6t:typeof a=="function"?j6t:F6t)(i,a)):this.node()[i]}function FLe(i){return i.trim().split(/^|\s+/)}function Qfe(i){return i.classList||new jLe(i)}function jLe(i){this._node=i,this._names=FLe(i.getAttribute("class")||"")}jLe.prototype={add:function(i){var a=this._names.indexOf(i);a<0&&(this._names.push(i),this._node.setAttribute("class",this._names.join(" ")))},remove:function(i){var a=this._names.indexOf(i);a>=0&&(this._names.splice(a,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(i){return this._names.indexOf(i)>=0}};function $Le(i,a){for(var f=Qfe(i),p=-1,w=a.length;++p=0&&(f=a.slice(p+1),a=a.slice(0,p)),{type:a,name:f}})}function gkt(i){return function(){var a=this.__on;if(a){for(var f=0,p=-1,w=a.length,y;f>8&15|a>>4&240,a>>4&15|a&240,(a&15)<<4|a&15,1):f===8?vU(a>>24&255,a>>16&255,a>>8&255,(a&255)/255):f===4?vU(a>>12&15|a>>8&240,a>>8&15|a>>4&240,a>>4&15|a&240,((a&15)<<4|a&15)/255):null):(a=Ekt.exec(i))?new v0(a[1],a[2],a[3],1):(a=Tkt.exec(i))?new v0(a[1]*255/100,a[2]*255/100,a[3]*255/100,1):(a=_kt.exec(i))?vU(a[1],a[2],a[3],a[4]):(a=Ckt.exec(i))?vU(a[1]*255/100,a[2]*255/100,a[3]*255/100,a[4]):(a=Skt.exec(i))?XLe(a[1],a[2]/100,a[3]/100,1):(a=Akt.exec(i))?XLe(a[1],a[2]/100,a[3]/100,a[4]):GLe.hasOwnProperty(i)?ULe(GLe[i]):i==="transparent"?new v0(NaN,NaN,NaN,0):null}function ULe(i){return new v0(i>>16&255,i>>8&255,i&255,1)}function vU(i,a,f,p){return p<=0&&(i=a=f=NaN),new v0(i,a,f,p)}function WLe(i){return i instanceof PE||(i=BE(i)),i?(i=i.rgb(),new v0(i.r,i.g,i.b,i.opacity)):new v0}function e1e(i,a,f,p){return arguments.length===1?WLe(i):new v0(i,a,f,p??1)}function v0(i,a,f,p){this.r=+i,this.g=+a,this.b=+f,this.opacity=+p}EN(v0,e1e,pU(PE,{brighter(i){return i=i==null?bU:Math.pow(bU,i),new v0(this.r*i,this.g*i,this.b*i,this.opacity)},darker(i){return i=i==null?TN:Math.pow(TN,i),new v0(this.r*i,this.g*i,this.b*i,this.opacity)},rgb(){return this},clamp(){return new v0(RE(this.r),RE(this.g),RE(this.b),wU(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:KLe,formatHex:KLe,formatHex8:Dkt,formatRgb:YLe,toString:YLe}));function KLe(){return`#${FE(this.r)}${FE(this.g)}${FE(this.b)}`}function Dkt(){return`#${FE(this.r)}${FE(this.g)}${FE(this.b)}${FE((isNaN(this.opacity)?1:this.opacity)*255)}`}function YLe(){const i=wU(this.opacity);return`${i===1?"rgb(":"rgba("}${RE(this.r)}, ${RE(this.g)}, ${RE(this.b)}${i===1?")":`, ${i})`}`}function wU(i){return isNaN(i)?1:Math.max(0,Math.min(1,i))}function RE(i){return Math.max(0,Math.min(255,Math.round(i)||0))}function FE(i){return i=RE(i),(i<16?"0":"")+i.toString(16)}function XLe(i,a,f,p){return p<=0?i=a=f=NaN:f<=0||f>=1?i=a=NaN:a<=0&&(i=NaN),new $w(i,a,f,p)}function QLe(i){if(i instanceof $w)return new $w(i.h,i.s,i.l,i.opacity);if(i instanceof PE||(i=BE(i)),!i)return new $w;if(i instanceof $w)return i;i=i.rgb();var a=i.r/255,f=i.g/255,p=i.b/255,w=Math.min(a,f,p),y=Math.max(a,f,p),b=NaN,E=y-w,S=(y+w)/2;return E?(a===y?b=(f-p)/E+(f0&&S<1?0:b,new $w(b,E,S,i.opacity)}function Ikt(i,a,f,p){return arguments.length===1?QLe(i):new $w(i,a,f,p??1)}function $w(i,a,f,p){this.h=+i,this.s=+a,this.l=+f,this.opacity=+p}EN($w,Ikt,pU(PE,{brighter(i){return i=i==null?bU:Math.pow(bU,i),new $w(this.h,this.s,this.l*i,this.opacity)},darker(i){return i=i==null?TN:Math.pow(TN,i),new $w(this.h,this.s,this.l*i,this.opacity)},rgb(){var i=this.h%360+(this.h<0)*360,a=isNaN(i)||isNaN(this.s)?0:this.s,f=this.l,p=f+(f<.5?f:1-f)*a,w=2*f-p;return new v0(t1e(i>=240?i-240:i+120,w,p),t1e(i,w,p),t1e(i<120?i+240:i-120,w,p),this.opacity)},clamp(){return new $w(ZLe(this.h),mU(this.s),mU(this.l),wU(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const i=wU(this.opacity);return`${i===1?"hsl(":"hsla("}${ZLe(this.h)}, ${mU(this.s)*100}%, ${mU(this.l)*100}%${i===1?")":`, ${i})`}`}}));function ZLe(i){return i=(i||0)%360,i<0?i+360:i}function mU(i){return Math.max(0,Math.min(1,i||0))}function t1e(i,a,f){return(i<60?a+(f-a)*i/60:i<180?f:i<240?a+(f-a)*(240-i)/60:a)*255}const Okt=Math.PI/180,Nkt=180/Math.PI,yU=18,JLe=.96422,eMe=1,tMe=.82521,nMe=4/29,bA=6/29,rMe=3*bA*bA,Pkt=bA*bA*bA;function iMe(i){if(i instanceof Jy)return new Jy(i.l,i.a,i.b,i.opacity);if(i instanceof l5)return sMe(i);i instanceof v0||(i=WLe(i));var a=s1e(i.r),f=s1e(i.g),p=s1e(i.b),w=n1e((.2225045*a+.7168786*f+.0606169*p)/eMe),y,b;return a===f&&f===p?y=b=w:(y=n1e((.4360747*a+.3850649*f+.1430804*p)/JLe),b=n1e((.0139322*a+.0971045*f+.7141733*p)/tMe)),new Jy(116*w-16,500*(y-w),200*(w-b),i.opacity)}function Bkt(i,a,f,p){return arguments.length===1?iMe(i):new Jy(i,a,f,p??1)}function Jy(i,a,f,p){this.l=+i,this.a=+a,this.b=+f,this.opacity=+p}EN(Jy,Bkt,pU(PE,{brighter(i){return new Jy(this.l+yU*(i??1),this.a,this.b,this.opacity)},darker(i){return new Jy(this.l-yU*(i??1),this.a,this.b,this.opacity)},rgb(){var i=(this.l+16)/116,a=isNaN(this.a)?i:i+this.a/500,f=isNaN(this.b)?i:i-this.b/200;return a=JLe*r1e(a),i=eMe*r1e(i),f=tMe*r1e(f),new v0(i1e(3.1338561*a-1.6168667*i-.4906146*f),i1e(-.9787684*a+1.9161415*i+.033454*f),i1e(.0719453*a-.2289914*i+1.4052427*f),this.opacity)}}));function n1e(i){return i>Pkt?Math.pow(i,1/3):i/rMe+nMe}function r1e(i){return i>bA?i*i*i:rMe*(i-nMe)}function i1e(i){return 255*(i<=.0031308?12.92*i:1.055*Math.pow(i,1/2.4)-.055)}function s1e(i){return(i/=255)<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function Rkt(i){if(i instanceof l5)return new l5(i.h,i.c,i.l,i.opacity);if(i instanceof Jy||(i=iMe(i)),i.a===0&&i.b===0)return new l5(NaN,0()=>i;function aMe(i,a){return function(f){return i+f*a}}function Fkt(i,a,f){return i=Math.pow(i,f),a=Math.pow(a,f)-i,f=1/f,function(p){return Math.pow(i+p*a,f)}}function jkt(i,a){var f=a-i;return f?aMe(i,f>180||f<-180?f-360*Math.round(f/360):f):kU(isNaN(i)?a:i)}function $kt(i){return(i=+i)==1?CN:function(a,f){return f-a?Fkt(a,f,i):kU(isNaN(a)?f:a)}}function CN(i,a){var f=a-i;return f?aMe(i,f):kU(isNaN(i)?a:i)}const xU=function i(a){var f=$kt(a);function p(w,y){var b=f((w=e1e(w)).r,(y=e1e(y)).r),E=f(w.g,y.g),S=f(w.b,y.b),N=CN(w.opacity,y.opacity);return function(B){return w.r=b(B),w.g=E(B),w.b=S(B),w.opacity=N(B),w+""}}return p.gamma=i,p}(1);function Hkt(i,a){a||(a=[]);var f=i?Math.min(a.length,i.length):0,p=a.slice(),w;return function(y){for(w=0;wf&&(y=a.slice(f,y),E[b]?E[b]+=y:E[++b]=y),(p=p[0])===(w=w[0])?E[b]?E[b]+=w:E[++b]=w:(E[++b]=null,S.push({i:b,x:Hw(p,w)})),f=c1e.lastIndex;return f180?B+=360:B-N>180&&(N+=360),j.push({i:R.push(w(R)+"rotate(",null,p)-2,x:Hw(N,B)})):B&&R.push(w(R)+"rotate("+B+p)}function E(N,B,R,j){N!==B?j.push({i:R.push(w(R)+"skewX(",null,p)-2,x:Hw(N,B)}):B&&R.push(w(R)+"skewX("+B+p)}function S(N,B,R,j,$,V){if(N!==R||B!==j){var Q=$.push(w($)+"scale(",null,",",null,")");V.push({i:Q-4,x:Hw(N,R)},{i:Q-2,x:Hw(B,j)})}else(R!==1||j!==1)&&$.push(w($)+"scale("+R+","+j+")")}return function(N,B){var R=[],j=[];return N=i(N),B=i(B),y(N.translateX,N.translateY,B.translateX,B.translateY,R,j),b(N.rotate,B.rotate,R,j),E(N.skewX,B.skewX,R,j),S(N.scaleX,N.scaleY,B.scaleX,B.scaleY,R,j),N=B=null,function($){for(var V=-1,Q=j.length,oe;++V=0&&i._call.call(void 0,a),i=i._next;--vA}function gMe(){jE=(_U=MN.now())+CU,vA=SN=0;try{nxt()}finally{vA=0,ixt(),jE=0}}function rxt(){var i=MN.now(),a=i-_U;a>hMe&&(CU-=a,_U=i)}function ixt(){for(var i,a=TU,f,p=1/0;a;)a._call?(p>a._time&&(p=a._time),i=a,a=a._next):(f=a._next,a._next=null,a=i?i._next=f:TU=f);LN=i,f1e(p)}function f1e(i){if(!vA){SN&&(SN=clearTimeout(SN));var a=i-jE;a>24?(i<1/0&&(SN=setTimeout(gMe,i-MN.now()-CU)),AN&&(AN=clearInterval(AN))):(AN||(_U=MN.now(),AN=setInterval(rxt,hMe)),vA=1,fMe(gMe))}}function pMe(i,a,f){var p=new SU;return a=a==null?0:+a,p.restart(w=>{p.stop(),i(w+a)},a,f),p}var sxt=ALe("start","end","cancel","interrupt"),axt=[],bMe=0,vMe=1,d1e=2,AU=3,wMe=4,g1e=5,LU=6;function MU(i,a,f,p,w,y){var b=i.__transition;if(!b)i.__transition={};else if(f in b)return;oxt(i,f,{name:a,index:p,group:w,on:sxt,tween:axt,time:y.time,delay:y.delay,duration:y.duration,ease:y.ease,timer:null,state:bMe})}function p1e(i,a){var f=zw(i,a);if(f.state>bMe)throw new Error("too late; already scheduled");return f}function e3(i,a){var f=zw(i,a);if(f.state>AU)throw new Error("too late; already running");return f}function zw(i,a){var f=i.__transition;if(!f||!(f=f[a]))throw new Error("transition not found");return f}function oxt(i,a,f){var p=i.__transition,w;p[a]=f,f.timer=dMe(y,0,f.time);function y(N){f.state=vMe,f.timer.restart(b,f.delay,f.time),f.delay<=N&&b(N-f.delay)}function b(N){var B,R,j,$;if(f.state!==vMe)return S();for(B in p)if($=p[B],$.name===f.name){if($.state===AU)return pMe(b);$.state===wMe?($.state=LU,$.timer.stop(),$.on.call("interrupt",i,i.__data__,$.index,$.group),delete p[B]):+Bd1e&&p.state=0&&(a=a.slice(0,f)),!a||a==="start"})}function Fxt(i,a,f){var p,w,y=Rxt(a)?p1e:e3;return function(){var b=y(this,i),E=b.on;E!==p&&(w=(p=E).copy()).on(a,f),b.on=w}}function jxt(i,a){var f=this._id;return arguments.length<2?zw(this.node(),f).on.on(i):this.each(Fxt(f,i,a))}function $xt(i){return function(){var a=this.parentNode;for(var f in this.__transition)if(+f!==i)return;a&&a.removeChild(this)}}function Hxt(){return this.on("end.remove",$xt(this._id))}function zxt(i){var a=this._name,f=this._id;typeof i!="function"&&(i=Xfe(i));for(var p=this._groups,w=p.length,y=new Array(w),b=0;b$E)if(!(Math.abs(B*E-S*N)>$E)||!w)this._+="L"+(this._x1=i)+","+(this._y1=a);else{var j=f-y,$=p-b,V=E*E+S*S,Q=j*j+$*$,oe=Math.sqrt(V),ce=Math.sqrt(R),se=w*Math.tan((v1e-Math.acos((V+R-Q)/(2*oe*ce)))/2),ge=se/ce,ye=se/oe;Math.abs(ge-1)>$E&&(this._+="L"+(i+ge*N)+","+(a+ge*B)),this._+="A"+w+","+w+",0,0,"+ +(B*j>N*$)+","+(this._x1=i+ye*E)+","+(this._y1=a+ye*S)}},arc:function(i,a,f,p,w,y){i=+i,a=+a,f=+f,y=!!y;var b=f*Math.cos(p),E=f*Math.sin(p),S=i+b,N=a+E,B=1^y,R=y?p-w:w-p;if(f<0)throw new Error("negative radius: "+f);this._x1===null?this._+="M"+S+","+N:(Math.abs(this._x1-S)>$E||Math.abs(this._y1-N)>$E)&&(this._+="L"+S+","+N),f&&(R<0&&(R=R%w1e+w1e),R>d8t?this._+="A"+f+","+f+",0,1,"+B+","+(i-b)+","+(a-E)+"A"+f+","+f+",0,1,"+B+","+(this._x1=S)+","+(this._y1=N):R>$E&&(this._+="A"+f+","+f+",0,"+ +(R>=v1e)+","+B+","+(this._x1=i+f*Math.cos(w))+","+(this._y1=a+f*Math.sin(w))))},rect:function(i,a,f,p){this._+="M"+(this._x0=this._x1=+i)+","+(this._y0=this._y1=+a)+"h"+ +f+"v"+ +p+"h"+-f+"Z"},toString:function(){return this._}};function g8t(i){if(!i.ok)throw new Error(i.status+" "+i.statusText);return i.text()}function p8t(i,a){return fetch(i,a).then(g8t)}function b8t(i){return(a,f)=>p8t(a,f).then(p=>new DOMParser().parseFromString(p,i))}var v8t=b8t("image/svg+xml");function w8t(i){return Math.abs(i=Math.round(i))>=1e21?i.toLocaleString("en").replace(/,/g,""):i.toString(10)}function DU(i,a){if((f=(i=a?i.toExponential(a-1):i.toExponential()).indexOf("e"))<0)return null;var f,p=i.slice(0,f);return[p.length>1?p[0]+p.slice(2):p,+i.slice(f+1)]}function wA(i){return i=DU(Math.abs(i)),i?i[1]:NaN}function m8t(i,a){return function(f,p){for(var w=f.length,y=[],b=0,E=i[0],S=0;w>0&&E>0&&(S+E+1>p&&(E=Math.max(1,p-S)),y.push(f.substring(w-=E,w+E)),!((S+=E+1)>p));)E=i[b=(b+1)%i.length];return y.reverse().join(a)}}function y8t(i){return function(a){return a.replace(/[0-9]/g,function(f){return i[+f]})}}var k8t=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function IU(i){if(!(a=k8t.exec(i)))throw new Error("invalid format: "+i);var a;return new k1e({fill:a[1],align:a[2],sign:a[3],symbol:a[4],zero:a[5],width:a[6],comma:a[7],precision:a[8]&&a[8].slice(1),trim:a[9],type:a[10]})}IU.prototype=k1e.prototype;function k1e(i){this.fill=i.fill===void 0?" ":i.fill+"",this.align=i.align===void 0?">":i.align+"",this.sign=i.sign===void 0?"-":i.sign+"",this.symbol=i.symbol===void 0?"":i.symbol+"",this.zero=!!i.zero,this.width=i.width===void 0?void 0:+i.width,this.comma=!!i.comma,this.precision=i.precision===void 0?void 0:+i.precision,this.trim=!!i.trim,this.type=i.type===void 0?"":i.type+""}k1e.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function x8t(i){e:for(var a=i.length,f=1,p=-1,w;f0&&(p=0);break}return p>0?i.slice(0,p)+i.slice(w+1):i}var xMe;function E8t(i,a){var f=DU(i,a);if(!f)return i+"";var p=f[0],w=f[1],y=w-(xMe=Math.max(-8,Math.min(8,Math.floor(w/3)))*3)+1,b=p.length;return y===b?p:y>b?p+new Array(y-b+1).join("0"):y>0?p.slice(0,y)+"."+p.slice(y):"0."+new Array(1-y).join("0")+DU(i,Math.max(0,a+y-1))[0]}function EMe(i,a){var f=DU(i,a);if(!f)return i+"";var p=f[0],w=f[1];return w<0?"0."+new Array(-w).join("0")+p:p.length>w+1?p.slice(0,w+1)+"."+p.slice(w+1):p+new Array(w-p.length+2).join("0")}const TMe={"%":(i,a)=>(i*100).toFixed(a),b:i=>Math.round(i).toString(2),c:i=>i+"",d:w8t,e:(i,a)=>i.toExponential(a),f:(i,a)=>i.toFixed(a),g:(i,a)=>i.toPrecision(a),o:i=>Math.round(i).toString(8),p:(i,a)=>EMe(i*100,a),r:EMe,s:E8t,X:i=>Math.round(i).toString(16).toUpperCase(),x:i=>Math.round(i).toString(16)};function _Me(i){return i}var CMe=Array.prototype.map,SMe=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function T8t(i){var a=i.grouping===void 0||i.thousands===void 0?_Me:m8t(CMe.call(i.grouping,Number),i.thousands+""),f=i.currency===void 0?"":i.currency[0]+"",p=i.currency===void 0?"":i.currency[1]+"",w=i.decimal===void 0?".":i.decimal+"",y=i.numerals===void 0?_Me:y8t(CMe.call(i.numerals,String)),b=i.percent===void 0?"%":i.percent+"",E=i.minus===void 0?"−":i.minus+"",S=i.nan===void 0?"NaN":i.nan+"";function N(R){R=IU(R);var j=R.fill,$=R.align,V=R.sign,Q=R.symbol,oe=R.zero,ce=R.width,se=R.comma,ge=R.precision,ye=R.trim,ke=R.type;ke==="n"?(se=!0,ke="g"):TMe[ke]||(ge===void 0&&(ge=12),ye=!0,ke="g"),(oe||j==="0"&&$==="=")&&(oe=!0,j="0",$="=");var Ae=Q==="$"?f:Q==="#"&&/[boxX]/.test(ke)?"0"+ke.toLowerCase():"",de=Q==="$"?p:/[%p]/.test(ke)?b:"",ve=TMe[ke],te=/[defgprs%]/.test(ke);ge=ge===void 0?6:/[gprs]/.test(ke)?Math.max(1,Math.min(21,ge)):Math.max(0,Math.min(20,ge));function xe(De){var he=Ae,Ie=de,ee,rt,me;if(ke==="c")Ie=ve(De)+Ie,De="";else{De=+De;var gt=De<0||1/De<0;if(De=isNaN(De)?S:ve(Math.abs(De),ge),ye&&(De=x8t(De)),gt&&+De==0&&V!=="+"&&(gt=!1),he=(gt?V==="("?V:E:V==="-"||V==="("?"":V)+he,Ie=(ke==="s"?SMe[8+xMe/3]:"")+Ie+(gt&&V==="("?")":""),te){for(ee=-1,rt=De.length;++eeme||me>57){Ie=(me===46?w+De.slice(ee+1):De.slice(ee))+Ie,De=De.slice(0,ee);break}}}se&&!oe&&(De=a(De,1/0));var pe=he.length+De.length+Ie.length,Et=pe>1)+he+De+Ie+Et.slice(pe);break;default:De=Et+he+De+Ie;break}return y(De)}return xe.toString=function(){return R+""},xe}function B(R,j){var $=N((R=IU(R),R.type="f",R)),V=Math.max(-8,Math.min(8,Math.floor(wA(j)/3)))*3,Q=Math.pow(10,-V),oe=SMe[8+V/3];return function(ce){return $(Q*ce)+oe}}return{format:N,formatPrefix:B}}var OU,AMe,LMe;_8t({thousands:",",grouping:[3],currency:["$",""]});function _8t(i){return OU=T8t(i),AMe=OU.format,LMe=OU.formatPrefix,OU}function C8t(i){return Math.max(0,-wA(Math.abs(i)))}function S8t(i,a){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(wA(a)/3)))*3-wA(Math.abs(i)))}function A8t(i,a){return i=Math.abs(i),a=Math.abs(a)-i,Math.max(0,wA(a)-wA(i))+1}function x1e(i,a){switch(arguments.length){case 0:break;case 1:this.range(i);break;default:this.range(a).domain(i);break}return this}const MMe=Symbol("implicit");function DMe(){var i=new ELe,a=[],f=[],p=MMe;function w(y){let b=i.get(y);if(b===void 0){if(p!==MMe)return p;i.set(y,b=a.push(y)-1)}return f[b%f.length]}return w.domain=function(y){if(!arguments.length)return a.slice();a=[],i=new ELe;for(const b of y)i.has(b)||i.set(b,a.push(b)-1);return w},w.range=function(y){return arguments.length?(f=Array.from(y),w):f.slice()},w.unknown=function(y){return arguments.length?(p=y,w):p},w.copy=function(){return DMe(a,f).unknown(p)},x1e.apply(w,arguments),w}function L8t(i){return function(){return i}}function M8t(i){return+i}var IMe=[0,1];function mA(i){return i}function E1e(i,a){return(a-=i=+i)?function(f){return(f-i)/a}:L8t(isNaN(a)?NaN:.5)}function D8t(i,a){var f;return i>a&&(f=i,i=a,a=f),function(p){return Math.max(i,Math.min(a,p))}}function I8t(i,a,f){var p=i[0],w=i[1],y=a[0],b=a[1];return w2?O8t:I8t,S=N=null,R}function R(j){return j==null||isNaN(j=+j)?y:(S||(S=E(i.map(p),a,f)))(p(b(j)))}return R.invert=function(j){return b(w((N||(N=E(a,i.map(p),Hw)))(j)))},R.domain=function(j){return arguments.length?(i=Array.from(j,M8t),B()):i.slice()},R.range=function(j){return arguments.length?(a=Array.from(j),B()):a.slice()},R.rangeRound=function(j){return a=Array.from(j),f=Kkt,B()},R.clamp=function(j){return arguments.length?(b=j?!0:mA,B()):b!==mA},R.interpolate=function(j){return arguments.length?(f=j,B()):f},R.unknown=function(j){return arguments.length?(y=j,R):y},function(j,$){return p=j,w=$,B()}}function NMe(){return N8t()(mA,mA)}function P8t(i,a,f,p){var w=Ufe(i,a,f),y;switch(p=IU(p??",f"),p.type){case"s":{var b=Math.max(Math.abs(i),Math.abs(a));return p.precision==null&&!isNaN(y=S8t(w,b))&&(p.precision=y),LMe(p,b)}case"":case"e":case"g":case"p":case"r":{p.precision==null&&!isNaN(y=A8t(w,Math.max(Math.abs(i),Math.abs(a))))&&(p.precision=y-(p.type==="e"));break}case"f":case"%":{p.precision==null&&!isNaN(y=C8t(w))&&(p.precision=y-(p.type==="%")*2);break}}return AMe(p)}function B8t(i){var a=i.domain;return i.ticks=function(f){var p=a();return D5t(p[0],p[p.length-1],f??10)},i.tickFormat=function(f,p){var w=a();return P8t(w[0],w[w.length-1],f??10,p)},i.nice=function(f){f==null&&(f=10);var p=a(),w=0,y=p.length-1,b=p[w],E=p[y],S,N,B=10;for(E0;){if(N=_Le(b,E,f),N===S)return p[w]=b,p[y]=E,a(p);if(N>0)b=Math.floor(b/N)*N,E=Math.ceil(E/N)*N;else if(N<0)b=Math.ceil(b*N)/N,E=Math.floor(E*N)/N;else break;S=N}return i},i}function PMe(){var i=NMe();return i.copy=function(){return OMe(i,PMe())},x1e.apply(i,arguments),B8t(i)}function R8t(i,a){i=i.slice();var f=0,p=i.length-1,w=i[f],y=i[p],b;return y0))return S;do S.push(N=new Date(+y)),a(y,E),i(y);while(N=b)for(;i(b),!y(b);)b.setTime(b-1)},function(b,E){if(b>=b)if(E<0)for(;++E<=0;)for(;a(b,-1),!y(b););else for(;--E>=0;)for(;a(b,1),!y(b););})},f&&(w.count=function(y,b){return T1e.setTime(+y),_1e.setTime(+b),i(T1e),i(_1e),Math.floor(f(T1e,_1e))},w.every=function(y){return y=Math.floor(y),!isFinite(y)||!(y>0)?null:y>1?w.filter(p?function(b){return p(b)%y===0}:function(b){return w.count(0,b)%y===0}):w}),w}var NU=tg(function(){},function(i,a){i.setTime(+i+a)},function(i,a){return a-i});NU.every=function(i){return i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?tg(function(a){a.setTime(Math.floor(a/i)*i)},function(a,f){a.setTime(+a+f*i)},function(a,f){return(f-a)/i}):NU};const F8t=NU;NU.range;const d5=1e3,t3=d5*60,HE=t3*60,zE=HE*24,C1e=zE*7,BMe=zE*30,S1e=zE*365;var RMe=tg(function(i){i.setTime(i-i.getMilliseconds())},function(i,a){i.setTime(+i+a*d5)},function(i,a){return(a-i)/d5},function(i){return i.getUTCSeconds()});const DN=RMe;RMe.range;var FMe=tg(function(i){i.setTime(i-i.getMilliseconds()-i.getSeconds()*d5)},function(i,a){i.setTime(+i+a*t3)},function(i,a){return(a-i)/t3},function(i){return i.getMinutes()});const PU=FMe;FMe.range;var jMe=tg(function(i){i.setTime(i-i.getMilliseconds()-i.getSeconds()*d5-i.getMinutes()*t3)},function(i,a){i.setTime(+i+a*HE)},function(i,a){return(a-i)/HE},function(i){return i.getHours()});const BU=jMe;jMe.range;var $Me=tg(i=>i.setHours(0,0,0,0),(i,a)=>i.setDate(i.getDate()+a),(i,a)=>(a-i-(a.getTimezoneOffset()-i.getTimezoneOffset())*t3)/zE,i=>i.getDate()-1);const yA=$Me;$Me.range;function GE(i){return tg(function(a){a.setDate(a.getDate()-(a.getDay()+7-i)%7),a.setHours(0,0,0,0)},function(a,f){a.setDate(a.getDate()+f*7)},function(a,f){return(f-a-(f.getTimezoneOffset()-a.getTimezoneOffset())*t3)/C1e})}var kA=GE(0),RU=GE(1),j8t=GE(2),$8t=GE(3),xA=GE(4),H8t=GE(5),z8t=GE(6);kA.range,RU.range,j8t.range,$8t.range,xA.range,H8t.range,z8t.range;var HMe=tg(function(i){i.setDate(1),i.setHours(0,0,0,0)},function(i,a){i.setMonth(i.getMonth()+a)},function(i,a){return a.getMonth()-i.getMonth()+(a.getFullYear()-i.getFullYear())*12},function(i){return i.getMonth()});const FU=HMe;HMe.range;var A1e=tg(function(i){i.setMonth(0,1),i.setHours(0,0,0,0)},function(i,a){i.setFullYear(i.getFullYear()+a)},function(i,a){return a.getFullYear()-i.getFullYear()},function(i){return i.getFullYear()});A1e.every=function(i){return!isFinite(i=Math.floor(i))||!(i>0)?null:tg(function(a){a.setFullYear(Math.floor(a.getFullYear()/i)*i),a.setMonth(0,1),a.setHours(0,0,0,0)},function(a,f){a.setFullYear(a.getFullYear()+f*i)})};const qE=A1e;A1e.range;var zMe=tg(function(i){i.setUTCHours(0,0,0,0)},function(i,a){i.setUTCDate(i.getUTCDate()+a)},function(i,a){return(a-i)/zE},function(i){return i.getUTCDate()-1});const GMe=zMe;zMe.range;function VE(i){return tg(function(a){a.setUTCDate(a.getUTCDate()-(a.getUTCDay()+7-i)%7),a.setUTCHours(0,0,0,0)},function(a,f){a.setUTCDate(a.getUTCDate()+f*7)},function(a,f){return(f-a)/C1e})}var qMe=VE(0),jU=VE(1),G8t=VE(2),q8t=VE(3),EA=VE(4),V8t=VE(5),U8t=VE(6);qMe.range,jU.range,G8t.range,q8t.range,EA.range,V8t.range,U8t.range;var L1e=tg(function(i){i.setUTCMonth(0,1),i.setUTCHours(0,0,0,0)},function(i,a){i.setUTCFullYear(i.getUTCFullYear()+a)},function(i,a){return a.getUTCFullYear()-i.getUTCFullYear()},function(i){return i.getUTCFullYear()});L1e.every=function(i){return!isFinite(i=Math.floor(i))||!(i>0)?null:tg(function(a){a.setUTCFullYear(Math.floor(a.getUTCFullYear()/i)*i),a.setUTCMonth(0,1),a.setUTCHours(0,0,0,0)},function(a,f){a.setUTCFullYear(a.getUTCFullYear()+f*i)})};const IN=L1e;L1e.range;function W8t(i,a,f,p,w,y){const b=[[DN,1,d5],[DN,5,5*d5],[DN,15,15*d5],[DN,30,30*d5],[y,1,t3],[y,5,5*t3],[y,15,15*t3],[y,30,30*t3],[w,1,HE],[w,3,3*HE],[w,6,6*HE],[w,12,12*HE],[p,1,zE],[p,2,2*zE],[f,1,C1e],[a,1,BMe],[a,3,3*BMe],[i,1,S1e]];function E(N,B,R){const j=Boe).right(b,j);if($===b.length)return i.every(Ufe(N/S1e,B/S1e,R));if($===0)return F8t.every(Math.max(Ufe(N,B,R),1));const[V,Q]=b[j/b[$-1][2]53)return null;"w"in ze||(ze.w=1),"Z"in ze?(Lt=D1e(ON(ze.y,0,1)),Ge=Lt.getUTCDay(),Lt=Ge>4||Ge===0?jU.ceil(Lt):jU(Lt),Lt=GMe.offset(Lt,(ze.V-1)*7),ze.y=Lt.getUTCFullYear(),ze.m=Lt.getUTCMonth(),ze.d=Lt.getUTCDate()+(ze.w+6)%7):(Lt=M1e(ON(ze.y,0,1)),Ge=Lt.getDay(),Lt=Ge>4||Ge===0?RU.ceil(Lt):RU(Lt),Lt=yA.offset(Lt,(ze.V-1)*7),ze.y=Lt.getFullYear(),ze.m=Lt.getMonth(),ze.d=Lt.getDate()+(ze.w+6)%7)}else("W"in ze||"U"in ze)&&("w"in ze||(ze.w="u"in ze?ze.u%7:"W"in ze?1:0),Ge="Z"in ze?D1e(ON(ze.y,0,1)).getUTCDay():M1e(ON(ze.y,0,1)).getDay(),ze.m=0,ze.d="W"in ze?(ze.w+6)%7+ze.W*7-(Ge+5)%7:ze.w+ze.U*7-(Ge+6)%7);return"Z"in ze?(ze.H+=ze.Z/100|0,ze.M+=ze.Z%100,D1e(ze)):M1e(ze)}}function ve(Dt,vt,Nt,ze){for(var Xe=0,Lt=vt.length,Ge=Nt.length,Bn,Oe;Xe=Ge)return-1;if(Bn=vt.charCodeAt(Xe++),Bn===37){if(Bn=vt.charAt(Xe++),Oe=ke[Bn in VMe?vt.charAt(Xe++):Bn],!Oe||(ze=Oe(Dt,Nt,ze))<0)return-1}else if(Bn!=Nt.charCodeAt(ze++))return-1}return ze}function te(Dt,vt,Nt){var ze=N.exec(vt.slice(Nt));return ze?(Dt.p=B.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function xe(Dt,vt,Nt){var ze=$.exec(vt.slice(Nt));return ze?(Dt.w=V.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function De(Dt,vt,Nt){var ze=R.exec(vt.slice(Nt));return ze?(Dt.w=j.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function he(Dt,vt,Nt){var ze=ce.exec(vt.slice(Nt));return ze?(Dt.m=se.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function Ie(Dt,vt,Nt){var ze=Q.exec(vt.slice(Nt));return ze?(Dt.m=oe.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function ee(Dt,vt,Nt){return ve(Dt,a,vt,Nt)}function rt(Dt,vt,Nt){return ve(Dt,f,vt,Nt)}function me(Dt,vt,Nt){return ve(Dt,p,vt,Nt)}function gt(Dt){return b[Dt.getDay()]}function pe(Dt){return y[Dt.getDay()]}function Et(Dt){return S[Dt.getMonth()]}function wt(Dt){return E[Dt.getMonth()]}function jt(Dt){return w[+(Dt.getHours()>=12)]}function At(Dt){return 1+~~(Dt.getMonth()/3)}function Bt(Dt){return b[Dt.getUTCDay()]}function cn(Dt){return y[Dt.getUTCDay()]}function Nn(Dt){return S[Dt.getUTCMonth()]}function Ot(Dt){return E[Dt.getUTCMonth()]}function oi(Dt){return w[+(Dt.getUTCHours()>=12)]}function kt(Dt){return 1+~~(Dt.getUTCMonth()/3)}return{format:function(Dt){var vt=Ae(Dt+="",ge);return vt.toString=function(){return Dt},vt},parse:function(Dt){var vt=de(Dt+="",!1);return vt.toString=function(){return Dt},vt},utcFormat:function(Dt){var vt=Ae(Dt+="",ye);return vt.toString=function(){return Dt},vt},utcParse:function(Dt){var vt=de(Dt+="",!0);return vt.toString=function(){return Dt},vt}}}var VMe={"-":"",_:" ",0:"0"},td=/^\s*\d+/,Q8t=/^%/,Z8t=/[\\^$*+?|[\]().{}]/g;function zc(i,a,f){var p=i<0?"-":"",w=(p?-i:i)+"",y=w.length;return p+(y[a.toLowerCase(),f]))}function e7t(i,a,f){var p=td.exec(a.slice(f,f+1));return p?(i.w=+p[0],f+p[0].length):-1}function t7t(i,a,f){var p=td.exec(a.slice(f,f+1));return p?(i.u=+p[0],f+p[0].length):-1}function n7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.U=+p[0],f+p[0].length):-1}function r7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.V=+p[0],f+p[0].length):-1}function i7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.W=+p[0],f+p[0].length):-1}function UMe(i,a,f){var p=td.exec(a.slice(f,f+4));return p?(i.y=+p[0],f+p[0].length):-1}function WMe(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.y=+p[0]+(+p[0]>68?1900:2e3),f+p[0].length):-1}function s7t(i,a,f){var p=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(a.slice(f,f+6));return p?(i.Z=p[1]?0:-(p[2]+(p[3]||"00")),f+p[0].length):-1}function a7t(i,a,f){var p=td.exec(a.slice(f,f+1));return p?(i.q=p[0]*3-3,f+p[0].length):-1}function o7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.m=p[0]-1,f+p[0].length):-1}function KMe(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.d=+p[0],f+p[0].length):-1}function c7t(i,a,f){var p=td.exec(a.slice(f,f+3));return p?(i.m=0,i.d=+p[0],f+p[0].length):-1}function YMe(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.H=+p[0],f+p[0].length):-1}function u7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.M=+p[0],f+p[0].length):-1}function l7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.S=+p[0],f+p[0].length):-1}function h7t(i,a,f){var p=td.exec(a.slice(f,f+3));return p?(i.L=+p[0],f+p[0].length):-1}function f7t(i,a,f){var p=td.exec(a.slice(f,f+6));return p?(i.L=Math.floor(p[0]/1e3),f+p[0].length):-1}function d7t(i,a,f){var p=Q8t.exec(a.slice(f,f+1));return p?f+p[0].length:-1}function g7t(i,a,f){var p=td.exec(a.slice(f));return p?(i.Q=+p[0],f+p[0].length):-1}function p7t(i,a,f){var p=td.exec(a.slice(f));return p?(i.s=+p[0],f+p[0].length):-1}function XMe(i,a){return zc(i.getDate(),a,2)}function b7t(i,a){return zc(i.getHours(),a,2)}function v7t(i,a){return zc(i.getHours()%12||12,a,2)}function w7t(i,a){return zc(1+yA.count(qE(i),i),a,3)}function QMe(i,a){return zc(i.getMilliseconds(),a,3)}function m7t(i,a){return QMe(i,a)+"000"}function y7t(i,a){return zc(i.getMonth()+1,a,2)}function k7t(i,a){return zc(i.getMinutes(),a,2)}function x7t(i,a){return zc(i.getSeconds(),a,2)}function E7t(i){var a=i.getDay();return a===0?7:a}function T7t(i,a){return zc(kA.count(qE(i)-1,i),a,2)}function ZMe(i){var a=i.getDay();return a>=4||a===0?xA(i):xA.ceil(i)}function _7t(i,a){return i=ZMe(i),zc(xA.count(qE(i),i)+(qE(i).getDay()===4),a,2)}function C7t(i){return i.getDay()}function S7t(i,a){return zc(RU.count(qE(i)-1,i),a,2)}function A7t(i,a){return zc(i.getFullYear()%100,a,2)}function L7t(i,a){return i=ZMe(i),zc(i.getFullYear()%100,a,2)}function M7t(i,a){return zc(i.getFullYear()%1e4,a,4)}function D7t(i,a){var f=i.getDay();return i=f>=4||f===0?xA(i):xA.ceil(i),zc(i.getFullYear()%1e4,a,4)}function I7t(i){var a=i.getTimezoneOffset();return(a>0?"-":(a*=-1,"+"))+zc(a/60|0,"0",2)+zc(a%60,"0",2)}function JMe(i,a){return zc(i.getUTCDate(),a,2)}function O7t(i,a){return zc(i.getUTCHours(),a,2)}function N7t(i,a){return zc(i.getUTCHours()%12||12,a,2)}function P7t(i,a){return zc(1+GMe.count(IN(i),i),a,3)}function eDe(i,a){return zc(i.getUTCMilliseconds(),a,3)}function B7t(i,a){return eDe(i,a)+"000"}function R7t(i,a){return zc(i.getUTCMonth()+1,a,2)}function F7t(i,a){return zc(i.getUTCMinutes(),a,2)}function j7t(i,a){return zc(i.getUTCSeconds(),a,2)}function $7t(i){var a=i.getUTCDay();return a===0?7:a}function H7t(i,a){return zc(qMe.count(IN(i)-1,i),a,2)}function tDe(i){var a=i.getUTCDay();return a>=4||a===0?EA(i):EA.ceil(i)}function z7t(i,a){return i=tDe(i),zc(EA.count(IN(i),i)+(IN(i).getUTCDay()===4),a,2)}function G7t(i){return i.getUTCDay()}function q7t(i,a){return zc(jU.count(IN(i)-1,i),a,2)}function V7t(i,a){return zc(i.getUTCFullYear()%100,a,2)}function U7t(i,a){return i=tDe(i),zc(i.getUTCFullYear()%100,a,2)}function W7t(i,a){return zc(i.getUTCFullYear()%1e4,a,4)}function K7t(i,a){var f=i.getUTCDay();return i=f>=4||f===0?EA(i):EA.ceil(i),zc(i.getUTCFullYear()%1e4,a,4)}function Y7t(){return"+0000"}function nDe(){return"%"}function rDe(i){return+i}function iDe(i){return Math.floor(+i/1e3)}var TA,$U;X7t({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function X7t(i){return TA=X8t(i),$U=TA.format,TA.parse,TA.utcFormat,TA.utcParse,TA}function Q7t(i){return new Date(i)}function Z7t(i){return i instanceof Date?+i:+new Date(+i)}function sDe(i,a,f,p,w,y,b,E,S,N){var B=NMe(),R=B.invert,j=B.domain,$=N(".%L"),V=N(":%S"),Q=N("%I:%M"),oe=N("%I %p"),ce=N("%a %d"),se=N("%b %d"),ge=N("%B"),ye=N("%Y");function ke(Ae){return(S(Ae)1?0:i<-1?BN:Math.acos(i)}function oDe(i){return i>=1?HU:i<=-1?-HU:Math.asin(i)}function nEt(i){return i.innerRadius}function rEt(i){return i.outerRadius}function iEt(i){return i.startAngle}function sEt(i){return i.endAngle}function aEt(i){return i&&i.padAngle}function oEt(i,a,f,p,w,y,b,E){var S=f-i,N=p-a,B=b-w,R=E-y,j=R*S-B*N;if(!(j*jee*ee+rt*rt&&(ve=xe,te=De),{cx:ve,cy:te,x01:-B,y01:-R,x11:ve*(w/ke-1),y11:te*(w/ke-1)}}function CA(){var i=nEt,a=rEt,f=of(0),p=null,w=iEt,y=sEt,b=aEt,E=null;function S(){var N,B,R=+i.apply(this,arguments),j=+a.apply(this,arguments),$=w.apply(this,arguments)-HU,V=y.apply(this,arguments)-HU,Q=aDe(V-$),oe=V>$;if(E||(E=N=y1e()),jm0))E.moveTo(0,0);else if(Q>zU-m0)E.moveTo(j*UE($),j*n3($)),E.arc(0,0,j,$,V,!oe),R>m0&&(E.moveTo(R*UE(V),R*n3(V)),E.arc(0,0,R,V,$,oe));else{var ce=$,se=V,ge=$,ye=V,ke=Q,Ae=Q,de=b.apply(this,arguments)/2,ve=de>m0&&(p?+p.apply(this,arguments):_A(R*R+j*j)),te=I1e(aDe(j-R)/2,+f.apply(this,arguments)),xe=te,De=te,he,Ie;if(ve>m0){var ee=oDe(ve/R*n3(de)),rt=oDe(ve/j*n3(de));(ke-=ee*2)>m0?(ee*=oe?1:-1,ge+=ee,ye-=ee):(ke=0,ge=ye=($+V)/2),(Ae-=rt*2)>m0?(rt*=oe?1:-1,ce+=rt,se-=rt):(Ae=0,ce=se=($+V)/2)}var me=j*UE(ce),gt=j*n3(ce),pe=R*UE(ye),Et=R*n3(ye);if(te>m0){var wt=j*UE(se),jt=j*n3(se),At=R*UE(ge),Bt=R*n3(ge),cn;if(Qm0?De>m0?(he=GU(At,Bt,me,gt,j,De,oe),Ie=GU(wt,jt,pe,Et,j,De,oe),E.moveTo(he.cx+he.x01,he.cy+he.y01),Dem0)||!(ke>m0)?E.lineTo(pe,Et):xe>m0?(he=GU(pe,Et,wt,jt,R,-xe,oe),Ie=GU(me,gt,At,Bt,R,-xe,oe),E.lineTo(he.cx+he.x01,he.cy+he.y01),xei?1:a>=i?0:NaN}function hEt(i){return i}function fEt(){var i=hEt,a=lEt,f=null,p=of(0),w=of(zU),y=of(0);function b(E){var S,N=(E=cDe(E)).length,B,R,j=0,$=new Array(N),V=new Array(N),Q=+p.apply(this,arguments),oe=Math.min(zU,Math.max(-zU,w.apply(this,arguments)-Q)),ce,se=Math.min(Math.abs(oe)/N,y.apply(this,arguments)),ge=se*(oe<0?-1:1),ye;for(S=0;S0&&(j+=ye);for(a!=null?$.sort(function(ke,Ae){return a(V[ke],V[Ae])}):f!=null&&$.sort(function(ke,Ae){return f(E[ke],E[Ae])}),S=0,R=j?(oe-N*ge)/j:0;S0?ye*R:0)+ge,V[B]={data:E[B],index:S,value:ye,startAngle:Q,endAngle:ce,padAngle:se};return V}return b.value=function(E){return arguments.length?(i=typeof E=="function"?E:of(+E),b):i},b.sortValues=function(E){return arguments.length?(a=E,f=null,b):a},b.sort=function(E){return arguments.length?(f=E,a=null,b):f},b.startAngle=function(E){return arguments.length?(p=typeof E=="function"?E:of(+E),b):p},b.endAngle=function(E){return arguments.length?(w=typeof E=="function"?E:of(+E),b):w},b.padAngle=function(E){return arguments.length?(y=typeof E=="function"?E:of(+E),b):y},b}class lDe{constructor(a,f){this._context=a,this._x=f}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(a,f){switch(a=+a,f=+f,this._point){case 0:{this._point=1,this._line?this._context.lineTo(a,f):this._context.moveTo(a,f);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+a)/2,this._y0,this._x0,f,a,f):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+f)/2,a,this._y0,a,f);break}}this._x0=a,this._y0=f}}function dEt(i){return new lDe(i,!0)}function gEt(i){return new lDe(i,!1)}function Kk(){}function qU(i,a,f){i._context.bezierCurveTo((2*i._x0+i._x1)/3,(2*i._y0+i._y1)/3,(i._x0+2*i._x1)/3,(i._y0+2*i._y1)/3,(i._x0+4*i._x1+a)/6,(i._y0+4*i._y1+f)/6)}function VU(i){this._context=i}VU.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:qU(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:qU(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function SA(i){return new VU(i)}function hDe(i){this._context=i}hDe.prototype={areaStart:Kk,areaEnd:Kk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x2=i,this._y2=a;break;case 1:this._point=2,this._x3=i,this._y3=a;break;case 2:this._point=3,this._x4=i,this._y4=a,this._context.moveTo((this._x0+4*this._x1+i)/6,(this._y0+4*this._y1+a)/6);break;default:qU(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function pEt(i){return new hDe(i)}function fDe(i){this._context=i}fDe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var f=(this._x0+4*this._x1+i)/6,p=(this._y0+4*this._y1+a)/6;this._line?this._context.lineTo(f,p):this._context.moveTo(f,p);break;case 3:this._point=4;default:qU(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function bEt(i){return new fDe(i)}function dDe(i,a){this._basis=new VU(i),this._beta=a}dDe.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var i=this._x,a=this._y,f=i.length-1;if(f>0)for(var p=i[0],w=a[0],y=i[f]-p,b=a[f]-w,E=-1,S;++E<=f;)S=E/f,this._basis.point(this._beta*i[E]+(1-this._beta)*(p+S*y),this._beta*a[E]+(1-this._beta)*(w+S*b));this._x=this._y=null,this._basis.lineEnd()},point:function(i,a){this._x.push(+i),this._y.push(+a)}};const vEt=function i(a){function f(p){return a===1?new VU(p):new dDe(p,a)}return f.beta=function(p){return i(+p)},f}(.85);function UU(i,a,f){i._context.bezierCurveTo(i._x1+i._k*(i._x2-i._x0),i._y1+i._k*(i._y2-i._y0),i._x2+i._k*(i._x1-a),i._y2+i._k*(i._y1-f),i._x2,i._y2)}function O1e(i,a){this._context=i,this._k=(1-a)/6}O1e.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:UU(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2,this._x1=i,this._y1=a;break;case 2:this._point=3;default:UU(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const wEt=function i(a){function f(p){return new O1e(p,a)}return f.tension=function(p){return i(+p)},f}(0);function N1e(i,a){this._context=i,this._k=(1-a)/6}N1e.prototype={areaStart:Kk,areaEnd:Kk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:UU(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const mEt=function i(a){function f(p){return new N1e(p,a)}return f.tension=function(p){return i(+p)},f}(0);function P1e(i,a){this._context=i,this._k=(1-a)/6}P1e.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:UU(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const yEt=function i(a){function f(p){return new P1e(p,a)}return f.tension=function(p){return i(+p)},f}(0);function B1e(i,a,f){var p=i._x1,w=i._y1,y=i._x2,b=i._y2;if(i._l01_a>m0){var E=2*i._l01_2a+3*i._l01_a*i._l12_a+i._l12_2a,S=3*i._l01_a*(i._l01_a+i._l12_a);p=(p*E-i._x0*i._l12_2a+i._x2*i._l01_2a)/S,w=(w*E-i._y0*i._l12_2a+i._y2*i._l01_2a)/S}if(i._l23_a>m0){var N=2*i._l23_2a+3*i._l23_a*i._l12_a+i._l12_2a,B=3*i._l23_a*(i._l23_a+i._l12_a);y=(y*N+i._x1*i._l23_2a-a*i._l12_2a)/B,b=(b*N+i._y1*i._l23_2a-f*i._l12_2a)/B}i._context.bezierCurveTo(p,w,y,b,i._x2,i._y2)}function gDe(i,a){this._context=i,this._alpha=a}gDe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,p=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+p*p,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3;default:B1e(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const kEt=function i(a){function f(p){return a?new gDe(p,a):new O1e(p,0)}return f.alpha=function(p){return i(+p)},f}(.5);function pDe(i,a){this._context=i,this._alpha=a}pDe.prototype={areaStart:Kk,areaEnd:Kk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,p=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+p*p,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:B1e(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const xEt=function i(a){function f(p){return a?new pDe(p,a):new N1e(p,0)}return f.alpha=function(p){return i(+p)},f}(.5);function bDe(i,a){this._context=i,this._alpha=a}bDe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,p=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+p*p,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:B1e(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const EEt=function i(a){function f(p){return a?new bDe(p,a):new P1e(p,0)}return f.alpha=function(p){return i(+p)},f}(.5);function vDe(i){this._context=i}vDe.prototype={areaStart:Kk,areaEnd:Kk,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(i,a){i=+i,a=+a,this._point?this._context.lineTo(i,a):(this._point=1,this._context.moveTo(i,a))}};function TEt(i){return new vDe(i)}function wDe(i){return i<0?-1:1}function mDe(i,a,f){var p=i._x1-i._x0,w=a-i._x1,y=(i._y1-i._y0)/(p||w<0&&-0),b=(f-i._y1)/(w||p<0&&-0),E=(y*w+b*p)/(p+w);return(wDe(y)+wDe(b))*Math.min(Math.abs(y),Math.abs(b),.5*Math.abs(E))||0}function yDe(i,a){var f=i._x1-i._x0;return f?(3*(i._y1-i._y0)/f-a)/2:a}function R1e(i,a,f){var p=i._x0,w=i._y0,y=i._x1,b=i._y1,E=(y-p)/3;i._context.bezierCurveTo(p+E,w+E*a,y-E,b-E*f,y,b)}function WU(i){this._context=i}WU.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:R1e(this,this._t0,yDe(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){var f=NaN;if(i=+i,a=+a,!(i===this._x1&&a===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3,R1e(this,yDe(this,f=mDe(this,i,a)),f);break;default:R1e(this,this._t0,f=mDe(this,i,a));break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a,this._t0=f}}};function kDe(i){this._context=new xDe(i)}(kDe.prototype=Object.create(WU.prototype)).point=function(i,a){WU.prototype.point.call(this,a,i)};function xDe(i){this._context=i}xDe.prototype={moveTo:function(i,a){this._context.moveTo(a,i)},closePath:function(){this._context.closePath()},lineTo:function(i,a){this._context.lineTo(a,i)},bezierCurveTo:function(i,a,f,p,w,y){this._context.bezierCurveTo(a,i,p,f,y,w)}};function _Et(i){return new WU(i)}function CEt(i){return new kDe(i)}function EDe(i){this._context=i}EDe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var i=this._x,a=this._y,f=i.length;if(f)if(this._line?this._context.lineTo(i[0],a[0]):this._context.moveTo(i[0],a[0]),f===2)this._context.lineTo(i[1],a[1]);else for(var p=TDe(i),w=TDe(a),y=0,b=1;b=0;--a)w[a]=(b[a]-w[a+1])/y[a];for(y[f-1]=(i[f]+w[f-1])/2,a=0;a=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,a),this._context.lineTo(i,a);else{var f=this._x*(1-this._t)+i*this._t;this._context.lineTo(f,this._y),this._context.lineTo(f,a)}break}}this._x=i,this._y=a}};function AEt(i){return new KU(i,.5)}function LEt(i){return new KU(i,0)}function MEt(i){return new KU(i,1)}function RN(i,a,f){this.k=i,this.x=a,this.y=f}RN.prototype={constructor:RN,scale:function(i){return i===1?this:new RN(this.k*i,this.x,this.y)},translate:function(i,a){return i===0&a===0?this:new RN(this.k,this.x+this.k*i,this.y+this.k*a)},apply:function(i){return[i[0]*this.k+this.x,i[1]*this.k+this.y]},applyX:function(i){return i*this.k+this.x},applyY:function(i){return i*this.k+this.y},invert:function(i){return[(i[0]-this.x)/this.k,(i[1]-this.y)/this.k]},invertX:function(i){return(i-this.x)/this.k},invertY:function(i){return(i-this.y)/this.k},rescaleX:function(i){return i.copy().domain(i.range().map(this.invertX,this).map(i.invert,i))},rescaleY:function(i){return i.copy().domain(i.range().map(this.invertY,this).map(i.invert,i))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},RN.prototype;/*! @license DOMPurify 3.0.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.2/LICENSE */const{entries:_De,setPrototypeOf:CDe,isFrozen:DEt,getPrototypeOf:IEt,getOwnPropertyDescriptor:OEt}=Object;let{freeze:rg,seal:Gw,create:NEt}=Object,{apply:F1e,construct:j1e}=typeof Reflect<"u"&&Reflect;F1e||(F1e=function(a,f,p){return a.apply(f,p)}),rg||(rg=function(a){return a}),Gw||(Gw=function(a){return a}),j1e||(j1e=function(a,f){return new a(...f)});const PEt=qb(Array.prototype.forEach),SDe=qb(Array.prototype.pop),FN=qb(Array.prototype.push),YU=qb(String.prototype.toLowerCase),$1e=qb(String.prototype.toString),BEt=qb(String.prototype.match),qw=qb(String.prototype.replace),REt=qb(String.prototype.indexOf),FEt=qb(String.prototype.trim),A2=qb(RegExp.prototype.test),H1e=jEt(TypeError);function qb(i){return function(a){for(var f=arguments.length,p=new Array(f>1?f-1:0),w=1;w/gm),qEt=Gw(/\${[\w\W]*}/gm),VEt=Gw(/^data-[\-\w.\u00B7-\uFFFF]/),UEt=Gw(/^aria-[\-\w]+$/),IDe=Gw(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),WEt=Gw(/^(?:\w+script|data):/i),KEt=Gw(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ODe=Gw(/^html$/i);var NDe=Object.freeze({__proto__:null,MUSTACHE_EXPR:zEt,ERB_EXPR:GEt,TMPLIT_EXPR:qEt,DATA_ATTR:VEt,ARIA_ATTR:UEt,IS_ALLOWED_URI:IDe,IS_SCRIPT_OR_DATA:WEt,ATTR_WHITESPACE:KEt,DOCTYPE_NAME:ODe});const YEt=()=>typeof window>"u"?null:window,XEt=function(a,f){if(typeof a!="object"||typeof a.createPolicy!="function")return null;let p=null;const w="data-tt-policy-suffix";f.currentScript&&f.currentScript.hasAttribute(w)&&(p=f.currentScript.getAttribute(w));const y="dompurify"+(p?"#"+p:"");try{return a.createPolicy(y,{createHTML(b){return b},createScriptURL(b){return b}})}catch{return console.warn("TrustedTypes policy "+y+" could not be created."),null}};function PDe(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:YEt();const a=Ai=>PDe(Ai);if(a.version="3.0.2",a.removed=[],!i||!i.document||i.document.nodeType!==9)return a.isSupported=!1,a;const f=i.document;let{document:p}=i;const{DocumentFragment:w,HTMLTemplateElement:y,Node:b,Element:E,NodeFilter:S,NamedNodeMap:N=i.NamedNodeMap||i.MozNamedAttrMap,HTMLFormElement:B,DOMParser:R,trustedTypes:j}=i,$=E.prototype,V=XU($,"cloneNode"),Q=XU($,"nextSibling"),oe=XU($,"childNodes"),ce=XU($,"parentNode");if(typeof y=="function"){const Ai=p.createElement("template");Ai.content&&Ai.content.ownerDocument&&(p=Ai.content.ownerDocument)}const se=XEt(j,f),ge=se?se.createHTML(""):"",{implementation:ye,createNodeIterator:ke,createDocumentFragment:Ae,getElementsByTagName:de}=p,{importNode:ve}=f;let te={};a.isSupported=typeof _De=="function"&&typeof ce=="function"&&ye&&typeof ye.createHTMLDocument<"u";const{MUSTACHE_EXPR:xe,ERB_EXPR:De,TMPLIT_EXPR:he,DATA_ATTR:Ie,ARIA_ATTR:ee,IS_SCRIPT_OR_DATA:rt,ATTR_WHITESPACE:me}=NDe;let{IS_ALLOWED_URI:gt}=NDe,pe=null;const Et=Lo({},[...ADe,...z1e,...G1e,...q1e,...LDe]);let wt=null;const jt=Lo({},[...MDe,...V1e,...DDe,...QU]);let At=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Bt=null,cn=null,Nn=!0,Ot=!0,oi=!1,kt=!0,Dt=!1,vt=!1,Nt=!1,ze=!1,Xe=!1,Lt=!1,Ge=!1,Bn=!0,Oe=!1;const Ri="user-content-";let tn=!0,hi=!1,Sr={},Zn=null;const Xn=Lo({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let ir=null;const Hn=Lo({},["audio","video","img","source","image","track"]);let tr=null;const ha=Lo({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Zs="http://www.w3.org/1998/Math/MathML",ns="http://www.w3.org/2000/svg",Hi="http://www.w3.org/1999/xhtml";let Js=Hi,Pc=!1,Ga=null;const ws=Lo({},[Zs,ns,Hi],$1e);let Oi;const Er=["application/xhtml+xml","text/html"],br="text/html";let Dr,Vn=null;const qi=p.createElement("form"),yn=function(nn){return nn instanceof RegExp||nn instanceof Function},Bc=function(nn){Vn&&Vn===nn||((!nn||typeof nn!="object")&&(nn={}),nn=AA(nn),Oi=Er.indexOf(nn.PARSER_MEDIA_TYPE)===-1?Oi=br:Oi=nn.PARSER_MEDIA_TYPE,Dr=Oi==="application/xhtml+xml"?$1e:YU,pe="ALLOWED_TAGS"in nn?Lo({},nn.ALLOWED_TAGS,Dr):Et,wt="ALLOWED_ATTR"in nn?Lo({},nn.ALLOWED_ATTR,Dr):jt,Ga="ALLOWED_NAMESPACES"in nn?Lo({},nn.ALLOWED_NAMESPACES,$1e):ws,tr="ADD_URI_SAFE_ATTR"in nn?Lo(AA(ha),nn.ADD_URI_SAFE_ATTR,Dr):ha,ir="ADD_DATA_URI_TAGS"in nn?Lo(AA(Hn),nn.ADD_DATA_URI_TAGS,Dr):Hn,Zn="FORBID_CONTENTS"in nn?Lo({},nn.FORBID_CONTENTS,Dr):Xn,Bt="FORBID_TAGS"in nn?Lo({},nn.FORBID_TAGS,Dr):{},cn="FORBID_ATTR"in nn?Lo({},nn.FORBID_ATTR,Dr):{},Sr="USE_PROFILES"in nn?nn.USE_PROFILES:!1,Nn=nn.ALLOW_ARIA_ATTR!==!1,Ot=nn.ALLOW_DATA_ATTR!==!1,oi=nn.ALLOW_UNKNOWN_PROTOCOLS||!1,kt=nn.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Dt=nn.SAFE_FOR_TEMPLATES||!1,vt=nn.WHOLE_DOCUMENT||!1,Xe=nn.RETURN_DOM||!1,Lt=nn.RETURN_DOM_FRAGMENT||!1,Ge=nn.RETURN_TRUSTED_TYPE||!1,ze=nn.FORCE_BODY||!1,Bn=nn.SANITIZE_DOM!==!1,Oe=nn.SANITIZE_NAMED_PROPS||!1,tn=nn.KEEP_CONTENT!==!1,hi=nn.IN_PLACE||!1,gt=nn.ALLOWED_URI_REGEXP||IDe,Js=nn.NAMESPACE||Hi,At=nn.CUSTOM_ELEMENT_HANDLING||{},nn.CUSTOM_ELEMENT_HANDLING&&yn(nn.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(At.tagNameCheck=nn.CUSTOM_ELEMENT_HANDLING.tagNameCheck),nn.CUSTOM_ELEMENT_HANDLING&&yn(nn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(At.attributeNameCheck=nn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),nn.CUSTOM_ELEMENT_HANDLING&&typeof nn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(At.allowCustomizedBuiltInElements=nn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Dt&&(Ot=!1),Lt&&(Xe=!0),Sr&&(pe=Lo({},[...LDe]),wt=[],Sr.html===!0&&(Lo(pe,ADe),Lo(wt,MDe)),Sr.svg===!0&&(Lo(pe,z1e),Lo(wt,V1e),Lo(wt,QU)),Sr.svgFilters===!0&&(Lo(pe,G1e),Lo(wt,V1e),Lo(wt,QU)),Sr.mathMl===!0&&(Lo(pe,q1e),Lo(wt,DDe),Lo(wt,QU))),nn.ADD_TAGS&&(pe===Et&&(pe=AA(pe)),Lo(pe,nn.ADD_TAGS,Dr)),nn.ADD_ATTR&&(wt===jt&&(wt=AA(wt)),Lo(wt,nn.ADD_ATTR,Dr)),nn.ADD_URI_SAFE_ATTR&&Lo(tr,nn.ADD_URI_SAFE_ATTR,Dr),nn.FORBID_CONTENTS&&(Zn===Xn&&(Zn=AA(Zn)),Lo(Zn,nn.FORBID_CONTENTS,Dr)),tn&&(pe["#text"]=!0),vt&&Lo(pe,["html","head","body"]),pe.table&&(Lo(pe,["tbody"]),delete Bt.tbody),rg&&rg(nn),Vn=nn)},jn=Lo({},["mi","mo","mn","ms","mtext"]),Ms=Lo({},["foreignobject","desc","title","annotation-xml"]),Pa=Lo({},["title","style","font","a","script"]),Ta=Lo({},z1e);Lo(Ta,G1e),Lo(Ta,$Et);const _a=Lo({},q1e);Lo(_a,HEt);const ka=function(nn){let Tr=ce(nn);(!Tr||!Tr.tagName)&&(Tr={namespaceURI:Js,tagName:"template"});const ai=YU(nn.tagName),Ns=YU(Tr.tagName);return Ga[nn.namespaceURI]?nn.namespaceURI===ns?Tr.namespaceURI===Hi?ai==="svg":Tr.namespaceURI===Zs?ai==="svg"&&(Ns==="annotation-xml"||jn[Ns]):!!Ta[ai]:nn.namespaceURI===Zs?Tr.namespaceURI===Hi?ai==="math":Tr.namespaceURI===ns?ai==="math"&&Ms[Ns]:!!_a[ai]:nn.namespaceURI===Hi?Tr.namespaceURI===ns&&!Ms[Ns]||Tr.namespaceURI===Zs&&!jn[Ns]?!1:!_a[ai]&&(Pa[ai]||!Ta[ai]):!!(Oi==="application/xhtml+xml"&&Ga[nn.namespaceURI]):!1},Qi=function(nn){FN(a.removed,{element:nn});try{nn.parentNode.removeChild(nn)}catch{nn.remove()}},ea=function(nn,Tr){try{FN(a.removed,{attribute:Tr.getAttributeNode(nn),from:Tr})}catch{FN(a.removed,{attribute:null,from:Tr})}if(Tr.removeAttribute(nn),nn==="is"&&!wt[nn])if(Xe||Lt)try{Qi(Tr)}catch{}else try{Tr.setAttribute(nn,"")}catch{}},Ca=function(nn){let Tr,ai;if(ze)nn=""+nn;else{const yu=BEt(nn,/^[\r\n\t ]+/);ai=yu&&yu[0]}Oi==="application/xhtml+xml"&&Js===Hi&&(nn=''+nn+"");const Ns=se?se.createHTML(nn):nn;if(Js===Hi)try{Tr=new R().parseFromString(Ns,Oi)}catch{}if(!Tr||!Tr.documentElement){Tr=ye.createDocument(Js,"template",null);try{Tr.documentElement.innerHTML=Pc?ge:Ns}catch{}}const mc=Tr.body||Tr.documentElement;return nn&&ai&&mc.insertBefore(p.createTextNode(ai),mc.childNodes[0]||null),Js===Hi?de.call(Tr,vt?"html":"body")[0]:vt?Tr.documentElement:mc},Sa=function(nn){return ke.call(nn.ownerDocument||nn,nn,S.SHOW_ELEMENT|S.SHOW_COMMENT|S.SHOW_TEXT,null,!1)},Ka=function(nn){return nn instanceof B&&(typeof nn.nodeName!="string"||typeof nn.textContent!="string"||typeof nn.removeChild!="function"||!(nn.attributes instanceof N)||typeof nn.removeAttribute!="function"||typeof nn.setAttribute!="function"||typeof nn.namespaceURI!="string"||typeof nn.insertBefore!="function"||typeof nn.hasChildNodes!="function")},cg=function(nn){return typeof b=="object"?nn instanceof b:nn&&typeof nn=="object"&&typeof nn.nodeType=="number"&&typeof nn.nodeName=="string"},Gc=function(nn,Tr,ai){te[nn]&&PEt(te[nn],Ns=>{Ns.call(a,Tr,ai,Vn)})},Dh=function(nn){let Tr;if(Gc("beforeSanitizeElements",nn,null),Ka(nn))return Qi(nn),!0;const ai=Dr(nn.nodeName);if(Gc("uponSanitizeElement",nn,{tagName:ai,allowedTags:pe}),nn.hasChildNodes()&&!cg(nn.firstElementChild)&&(!cg(nn.content)||!cg(nn.content.firstElementChild))&&A2(/<[/\w]/g,nn.innerHTML)&&A2(/<[/\w]/g,nn.textContent))return Qi(nn),!0;if(!pe[ai]||Bt[ai]){if(!Bt[ai]&&lp(ai)&&(At.tagNameCheck instanceof RegExp&&A2(At.tagNameCheck,ai)||At.tagNameCheck instanceof Function&&At.tagNameCheck(ai)))return!1;if(tn&&!Zn[ai]){const Ns=ce(nn)||nn.parentNode,mc=oe(nn)||nn.childNodes;if(mc&&Ns){const yu=mc.length;for(let Mo=yu-1;Mo>=0;--Mo)Ns.insertBefore(V(mc[Mo],!0),Q(nn))}}return Qi(nn),!0}return nn instanceof E&&!ka(nn)||(ai==="noscript"||ai==="noembed")&&A2(/<\/no(script|embed)/i,nn.innerHTML)?(Qi(nn),!0):(Dt&&nn.nodeType===3&&(Tr=nn.textContent,Tr=qw(Tr,xe," "),Tr=qw(Tr,De," "),Tr=qw(Tr,he," "),nn.textContent!==Tr&&(FN(a.removed,{element:nn.cloneNode()}),nn.textContent=Tr)),Gc("afterSanitizeElements",nn,null),!1)},Es=function(nn,Tr,ai){if(Bn&&(Tr==="id"||Tr==="name")&&(ai in p||ai in qi))return!1;if(!(Ot&&!cn[Tr]&&A2(Ie,Tr))){if(!(Nn&&A2(ee,Tr))){if(!wt[Tr]||cn[Tr]){if(!(lp(nn)&&(At.tagNameCheck instanceof RegExp&&A2(At.tagNameCheck,nn)||At.tagNameCheck instanceof Function&&At.tagNameCheck(nn))&&(At.attributeNameCheck instanceof RegExp&&A2(At.attributeNameCheck,Tr)||At.attributeNameCheck instanceof Function&&At.attributeNameCheck(Tr))||Tr==="is"&&At.allowCustomizedBuiltInElements&&(At.tagNameCheck instanceof RegExp&&A2(At.tagNameCheck,ai)||At.tagNameCheck instanceof Function&&At.tagNameCheck(ai))))return!1}else if(!tr[Tr]){if(!A2(gt,qw(ai,me,""))){if(!((Tr==="src"||Tr==="xlink:href"||Tr==="href")&&nn!=="script"&&REt(ai,"data:")===0&&ir[nn])){if(!(oi&&!A2(rt,qw(ai,me,"")))){if(ai)return!1}}}}}}return!0},lp=function(nn){return nn.indexOf("-")>0},sd=function(nn){let Tr,ai,Ns,mc;Gc("beforeSanitizeAttributes",nn,null);const{attributes:yu}=nn;if(!yu)return;const Mo={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:wt};for(mc=yu.length;mc--;){Tr=yu[mc];const{name:ku,namespaceURI:Ih}=Tr;if(ai=ku==="value"?Tr.value:FEt(Tr.value),Ns=Dr(ku),Mo.attrName=Ns,Mo.attrValue=ai,Mo.keepAttr=!0,Mo.forceKeepAttr=void 0,Gc("uponSanitizeAttribute",nn,Mo),ai=Mo.attrValue,Mo.forceKeepAttr||(ea(ku,nn),!Mo.keepAttr))continue;if(!kt&&A2(/\/>/i,ai)){ea(ku,nn);continue}Dt&&(ai=qw(ai,xe," "),ai=qw(ai,De," "),ai=qw(ai,he," "));const qf=Dr(nn.nodeName);if(Es(qf,Ns,ai)){if(Oe&&(Ns==="id"||Ns==="name")&&(ea(ku,nn),ai=Ri+ai),se&&typeof j=="object"&&typeof j.getAttributeType=="function"&&!Ih)switch(j.getAttributeType(qf,Ns)){case"TrustedHTML":ai=se.createHTML(ai);break;case"TrustedScriptURL":ai=se.createScriptURL(ai);break}try{Ih?nn.setAttributeNS(Ih,ku,ai):nn.setAttribute(ku,ai),SDe(a.removed)}catch{}}}Gc("afterSanitizeAttributes",nn,null)},sh=function Ai(nn){let Tr;const ai=Sa(nn);for(Gc("beforeSanitizeShadowDOM",nn,null);Tr=ai.nextNode();)Gc("uponSanitizeShadowNode",Tr,null),!Dh(Tr)&&(Tr.content instanceof w&&Ai(Tr.content),sd(Tr));Gc("afterSanitizeShadowDOM",nn,null)};return a.sanitize=function(Ai){let nn=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Tr,ai,Ns,mc;if(Pc=!Ai,Pc&&(Ai=""),typeof Ai!="string"&&!cg(Ai)){if(typeof Ai.toString!="function")throw H1e("toString is not a function");if(Ai=Ai.toString(),typeof Ai!="string")throw H1e("dirty is not a string, aborting")}if(!a.isSupported)return Ai;if(Nt||Bc(nn),a.removed=[],typeof Ai=="string"&&(hi=!1),hi){if(Ai.nodeName){const ku=Dr(Ai.nodeName);if(!pe[ku]||Bt[ku])throw H1e("root node is forbidden and cannot be sanitized in-place")}}else if(Ai instanceof b)Tr=Ca(""),ai=Tr.ownerDocument.importNode(Ai,!0),ai.nodeType===1&&ai.nodeName==="BODY"||ai.nodeName==="HTML"?Tr=ai:Tr.appendChild(ai);else{if(!Xe&&!Dt&&!vt&&Ai.indexOf("<")===-1)return se&&Ge?se.createHTML(Ai):Ai;if(Tr=Ca(Ai),!Tr)return Xe?null:Ge?ge:""}Tr&&ze&&Qi(Tr.firstChild);const yu=Sa(hi?Ai:Tr);for(;Ns=yu.nextNode();)Dh(Ns)||(Ns.content instanceof w&&sh(Ns.content),sd(Ns));if(hi)return Ai;if(Xe){if(Lt)for(mc=Ae.call(Tr.ownerDocument);Tr.firstChild;)mc.appendChild(Tr.firstChild);else mc=Tr;return(wt.shadowroot||wt.shadowrootmod)&&(mc=ve.call(f,mc,!0)),mc}let Mo=vt?Tr.outerHTML:Tr.innerHTML;return vt&&pe["!doctype"]&&Tr.ownerDocument&&Tr.ownerDocument.doctype&&Tr.ownerDocument.doctype.name&&A2(ODe,Tr.ownerDocument.doctype.name)&&(Mo=" +`+Mo),Dt&&(Mo=qw(Mo,xe," "),Mo=qw(Mo,De," "),Mo=qw(Mo,he," ")),se&&Ge?se.createHTML(Mo):Mo},a.setConfig=function(Ai){Bc(Ai),Nt=!0},a.clearConfig=function(){Vn=null,Nt=!1},a.isValidAttribute=function(Ai,nn,Tr){Vn||Bc({});const ai=Dr(Ai),Ns=Dr(nn);return Es(ai,Ns,Tr)},a.addHook=function(Ai,nn){typeof nn=="function"&&(te[Ai]=te[Ai]||[],FN(te[Ai],nn))},a.removeHook=function(Ai){if(te[Ai])return SDe(te[Ai])},a.removeHooks=function(Ai){te[Ai]&&(te[Ai]=[])},a.removeAllHooks=function(){te={}},a}var ZU=PDe();const JU=//gi,QEt=i=>i?FDe(i).replace(/\\n/g,"#br#").split("#br#"):[""],BDe=i=>ZU.sanitize(i),RDe=(i,a)=>{var f;if(((f=a.flowchart)==null?void 0:f.htmlLabels)!==!1){const p=a.securityLevel;p==="antiscript"||p==="strict"?i=BDe(i):p!=="loose"&&(i=FDe(i),i=i.replace(//g,">"),i=i.replace(/=/g,"="),i=t9t(i))}return i},ep=(i,a)=>i&&(a.dompurifyConfig?i=ZU.sanitize(RDe(i,a),a.dompurifyConfig).toString():i=ZU.sanitize(RDe(i,a),{FORBID_TAGS:["style"]}).toString(),i),ZEt=(i,a)=>typeof i=="string"?ep(i,a):i.flat().map(f=>ep(f,a)),JEt=i=>JU.test(i),e9t=i=>i.split(JU),t9t=i=>i.replace(/#br#/g,"
"),FDe=i=>i.replace(JU,"#br#"),n9t=i=>{let a="";return i&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replaceAll(/\(/g,"\\("),a=a.replaceAll(/\)/g,"\\)")),a},d1=i=>!(i===!1||["false","null","0"].includes(String(i).trim().toLowerCase())),Yk=function(i){let a=i;if(i.split("~").length-1>=2){let f=a;do a=f,f=a.replace(/~([^\s,:;]+)~/,"<$1>");while(f!=a);return Yk(f)}else return a},Wa={getRows:QEt,sanitizeText:ep,sanitizeTextOrArray:ZEt,hasBreaks:JEt,splitBreaks:e9t,lineBreakRegex:JU,removeScript:BDe,getUrl:n9t,evaluate:d1},eW={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:i=>i>=255?255:i<0?0:i,g:i=>i>=255?255:i<0?0:i,b:i=>i>=255?255:i<0?0:i,h:i=>i%360,s:i=>i>=100?100:i<0?0:i,l:i=>i>=100?100:i<0?0:i,a:i=>i>=1?1:i<0?0:i},toLinear:i=>{const a=i/255;return i>.03928?Math.pow((a+.055)/1.055,2.4):a/12.92},hue2rgb:(i,a,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<1/6?i+(a-i)*6*f:f<1/2?a:f<2/3?i+(a-i)*(2/3-f)*6:i),hsl2rgb:({h:i,s:a,l:f},p)=>{if(!a)return f*2.55;i/=360,a/=100,f/=100;const w=f<.5?f*(1+a):f+a-f*a,y=2*f-w;switch(p){case"r":return eW.hue2rgb(y,w,i+1/3)*255;case"g":return eW.hue2rgb(y,w,i)*255;case"b":return eW.hue2rgb(y,w,i-1/3)*255}},rgb2hsl:({r:i,g:a,b:f},p)=>{i/=255,a/=255,f/=255;const w=Math.max(i,a,f),y=Math.min(i,a,f),b=(w+y)/2;if(p==="l")return b*100;if(w===y)return 0;const E=w-y,S=b>.5?E/(2-w-y):E/(w+y);if(p==="s")return S*100;switch(w){case i:return((a-f)/E+(aa>f?Math.min(a,Math.max(f,i)):Math.min(f,Math.max(a,i)),round:i=>Math.round(i*1e10)/1e10},unit:{dec2hex:i=>{const a=Math.round(i).toString(16);return a.length>1?a:`0${a}`}}},Xk={};for(let i=0;i<=255;i++)Xk[i]=Na.unit.dec2hex(i);const y0={ALL:0,RGB:1,HSL:2};class r9t{constructor(){this.type=y0.ALL}get(){return this.type}set(a){if(this.type&&this.type!==a)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=a}reset(){this.type=y0.ALL}is(a){return this.type===a}}const i9t=r9t;class s9t{constructor(a,f){this.color=f,this.changed=!1,this.data=a,this.type=new i9t}set(a,f){return this.color=f,this.changed=!1,this.data=a,this.type.type=y0.ALL,this}_ensureHSL(){const a=this.data,{h:f,s:p,l:w}=a;f===void 0&&(a.h=Na.channel.rgb2hsl(a,"h")),p===void 0&&(a.s=Na.channel.rgb2hsl(a,"s")),w===void 0&&(a.l=Na.channel.rgb2hsl(a,"l"))}_ensureRGB(){const a=this.data,{r:f,g:p,b:w}=a;f===void 0&&(a.r=Na.channel.hsl2rgb(a,"r")),p===void 0&&(a.g=Na.channel.hsl2rgb(a,"g")),w===void 0&&(a.b=Na.channel.hsl2rgb(a,"b"))}get r(){const a=this.data,f=a.r;return!this.type.is(y0.HSL)&&f!==void 0?f:(this._ensureHSL(),Na.channel.hsl2rgb(a,"r"))}get g(){const a=this.data,f=a.g;return!this.type.is(y0.HSL)&&f!==void 0?f:(this._ensureHSL(),Na.channel.hsl2rgb(a,"g"))}get b(){const a=this.data,f=a.b;return!this.type.is(y0.HSL)&&f!==void 0?f:(this._ensureHSL(),Na.channel.hsl2rgb(a,"b"))}get h(){const a=this.data,f=a.h;return!this.type.is(y0.RGB)&&f!==void 0?f:(this._ensureRGB(),Na.channel.rgb2hsl(a,"h"))}get s(){const a=this.data,f=a.s;return!this.type.is(y0.RGB)&&f!==void 0?f:(this._ensureRGB(),Na.channel.rgb2hsl(a,"s"))}get l(){const a=this.data,f=a.l;return!this.type.is(y0.RGB)&&f!==void 0?f:(this._ensureRGB(),Na.channel.rgb2hsl(a,"l"))}get a(){return this.data.a}set r(a){this.type.set(y0.RGB),this.changed=!0,this.data.r=a}set g(a){this.type.set(y0.RGB),this.changed=!0,this.data.g=a}set b(a){this.type.set(y0.RGB),this.changed=!0,this.data.b=a}set h(a){this.type.set(y0.HSL),this.changed=!0,this.data.h=a}set s(a){this.type.set(y0.HSL),this.changed=!0,this.data.s=a}set l(a){this.type.set(y0.HSL),this.changed=!0,this.data.l=a}set a(a){this.changed=!0,this.data.a=a}}const a9t=s9t,tW=new a9t({r:0,g:0,b:0,a:0},"transparent"),jDe={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:i=>{if(i.charCodeAt(0)!==35)return;const a=i.match(jDe.re);if(!a)return;const f=a[1],p=parseInt(f,16),w=f.length,y=w%4===0,b=w>4,E=b?1:17,S=b?8:4,N=y?0:-1,B=b?255:15;return tW.set({r:(p>>S*(N+3)&B)*E,g:(p>>S*(N+2)&B)*E,b:(p>>S*(N+1)&B)*E,a:y?(p&B)*E/255:1},i)},stringify:i=>{const{r:a,g:f,b:p,a:w}=i;return w<1?`#${Xk[Math.round(a)]}${Xk[Math.round(f)]}${Xk[Math.round(p)]}${Xk[Math.round(w*255)]}`:`#${Xk[Math.round(a)]}${Xk[Math.round(f)]}${Xk[Math.round(p)]}`}},jN=jDe,nW={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:i=>{const a=i.match(nW.hueRe);if(a){const[,f,p]=a;switch(p){case"grad":return Na.channel.clamp.h(parseFloat(f)*.9);case"rad":return Na.channel.clamp.h(parseFloat(f)*180/Math.PI);case"turn":return Na.channel.clamp.h(parseFloat(f)*360)}}return Na.channel.clamp.h(parseFloat(i))},parse:i=>{const a=i.charCodeAt(0);if(a!==104&&a!==72)return;const f=i.match(nW.re);if(!f)return;const[,p,w,y,b,E]=f;return tW.set({h:nW._hue2deg(p),s:Na.channel.clamp.s(parseFloat(w)),l:Na.channel.clamp.l(parseFloat(y)),a:b?Na.channel.clamp.a(E?parseFloat(b)/100:parseFloat(b)):1},i)},stringify:i=>{const{h:a,s:f,l:p,a:w}=i;return w<1?`hsla(${Na.lang.round(a)}, ${Na.lang.round(f)}%, ${Na.lang.round(p)}%, ${w})`:`hsl(${Na.lang.round(a)}, ${Na.lang.round(f)}%, ${Na.lang.round(p)}%)`}},rW=nW,iW={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:i=>{i=i.toLowerCase();const a=iW.colors[i];if(a)return jN.parse(a)},stringify:i=>{const a=jN.stringify(i);for(const f in iW.colors)if(iW.colors[f]===a)return f}},$De=iW,HDe={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:i=>{const a=i.charCodeAt(0);if(a!==114&&a!==82)return;const f=i.match(HDe.re);if(!f)return;const[,p,w,y,b,E,S,N,B]=f;return tW.set({r:Na.channel.clamp.r(w?parseFloat(p)*2.55:parseFloat(p)),g:Na.channel.clamp.g(b?parseFloat(y)*2.55:parseFloat(y)),b:Na.channel.clamp.b(S?parseFloat(E)*2.55:parseFloat(E)),a:N?Na.channel.clamp.a(B?parseFloat(N)/100:parseFloat(N)):1},i)},stringify:i=>{const{r:a,g:f,b:p,a:w}=i;return w<1?`rgba(${Na.lang.round(a)}, ${Na.lang.round(f)}, ${Na.lang.round(p)}, ${Na.lang.round(w)})`:`rgb(${Na.lang.round(a)}, ${Na.lang.round(f)}, ${Na.lang.round(p)})`}},sW=HDe,r3={format:{keyword:$De,hex:jN,rgb:sW,rgba:sW,hsl:rW,hsla:rW},parse:i=>{if(typeof i!="string")return i;const a=jN.parse(i)||sW.parse(i)||rW.parse(i)||$De.parse(i);if(a)return a;throw new Error(`Unsupported color format: "${i}"`)},stringify:i=>!i.changed&&i.color?i.color:i.type.is(y0.HSL)||i.data.r===void 0?rW.stringify(i):i.a<1||!Number.isInteger(i.r)||!Number.isInteger(i.g)||!Number.isInteger(i.b)?sW.stringify(i):jN.stringify(i)},zDe=(i,a)=>{const f=r3.parse(i);for(const p in a)f[p]=Na.channel.clamp[p](a[p]);return r3.stringify(f)},$N=(i,a,f=0,p=1)=>{if(typeof i!="number")return zDe(i,{a});const w=tW.set({r:Na.channel.clamp.r(i),g:Na.channel.clamp.g(a),b:Na.channel.clamp.b(f),a:Na.channel.clamp.a(p)});return r3.stringify(w)},o9t=i=>{const{r:a,g:f,b:p}=r3.parse(i),w=.2126*Na.channel.toLinear(a)+.7152*Na.channel.toLinear(f)+.0722*Na.channel.toLinear(p);return Na.lang.round(w)},c9t=i=>o9t(i)>=.5,GDe=i=>!c9t(i),qDe=(i,a,f)=>{const p=r3.parse(i),w=p[a],y=Na.channel.clamp[a](w+f);return w!==y&&(p[a]=y),r3.stringify(p)},Qs=(i,a)=>qDe(i,"l",a),ya=(i,a)=>qDe(i,"l",-a),Gn=(i,a)=>{const f=r3.parse(i),p={};for(const w in a)a[w]&&(p[w]=f[w]+a[w]);return zDe(i,p)},u9t=(i,a,f=50)=>{const{r:p,g:w,b:y,a:b}=r3.parse(i),{r:E,g:S,b:N,a:B}=r3.parse(a),R=f/100,j=R*2-1,$=b-B,Q=((j*$===-1?j:(j+$)/(1+j*$))+1)/2,oe=1-Q,ce=p*Q+E*oe,se=w*Q+S*oe,ge=y*Q+N*oe,ye=b*R+B*(1-R);return $N(ce,se,ge,ye)},Bi=(i,a=100)=>{const f=r3.parse(i);return f.r=255-f.r,f.g=255-f.g,f.b=255-f.b,u9t(f,i,a)},ig=(i,a)=>a?Gn(i,{s:-40,l:10}):Gn(i,{s:-40,l:-10}),aW="#ffffff",oW="#f2f2f2";let l9t=class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Gn(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Gn(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ig(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ig(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ig(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Bi(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Bi(this.tertiaryColor),this.lineColor=this.lineColor||Bi(this.background),this.arrowheadColor=this.arrowheadColor||Bi(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?ya(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||ya(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Bi(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qs(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Gn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Gn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Gn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Gn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Gn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Gn(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Gn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Gn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Gn(this.primaryColor,{h:330}),this.darkMode)for(let f=0;f{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}};const h9t=i=>{const a=new l9t;return a.calculate(i),a};let f9t=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qs(this.primaryColor,16),this.tertiaryColor=Gn(this.primaryColor,{h:-160}),this.primaryBorderColor=Bi(this.background),this.secondaryBorderColor=ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ig(this.tertiaryColor,this.darkMode),this.primaryTextColor=Bi(this.primaryColor),this.secondaryTextColor=Bi(this.secondaryColor),this.tertiaryTextColor=Bi(this.tertiaryColor),this.lineColor=Bi(this.background),this.textColor=Bi(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qs(Bi("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=$N(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=ya("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=ya(this.sectionBkgColor,10),this.taskBorderColor=$N(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=$N(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=Qs(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Qs(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Qs(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Gn(this.primaryColor,{h:64}),this.fillType3=Gn(this.secondaryColor,{h:64}),this.fillType4=Gn(this.primaryColor,{h:-64}),this.fillType5=Gn(this.secondaryColor,{h:-64}),this.fillType6=Gn(this.primaryColor,{h:128}),this.fillType7=Gn(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Gn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Gn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Gn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Gn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Gn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Gn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Gn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Gn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Gn(this.primaryColor,{h:330});for(let a=0;a{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}};const d9t=i=>{const a=new f9t;return a.calculate(i),a};let g9t=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Gn(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Gn(this.primaryColor,{h:-160}),this.primaryBorderColor=ig(this.primaryColor,this.darkMode),this.secondaryBorderColor=ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ig(this.tertiaryColor,this.darkMode),this.primaryTextColor=Bi(this.primaryColor),this.secondaryTextColor=Bi(this.secondaryColor),this.tertiaryTextColor=Bi(this.tertiaryColor),this.lineColor=Bi(this.background),this.textColor=Bi(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=$N(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Gn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Gn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Gn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Gn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Gn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Gn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Gn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Gn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Gn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||ya(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||ya(this.tertiaryColor,40);for(let a=0;a{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}};const p9t=i=>{const a=new g9t;return a.calculate(i),a};let b9t=class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Qs("#cde498",10),this.primaryBorderColor=ig(this.primaryColor,this.darkMode),this.secondaryBorderColor=ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ig(this.tertiaryColor,this.darkMode),this.primaryTextColor=Bi(this.primaryColor),this.secondaryTextColor=Bi(this.secondaryColor),this.tertiaryTextColor=Bi(this.primaryColor),this.lineColor=Bi(this.background),this.textColor=Bi(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=ya(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Gn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Gn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Gn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Gn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Gn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Gn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Gn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Gn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Gn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||ya(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||ya(this.tertiaryColor,40);for(let a=0;a{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}};const v9t=i=>{const a=new b9t;return a.calculate(i),a};class w9t{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Qs(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Gn(this.primaryColor,{h:-160}),this.primaryBorderColor=ig(this.primaryColor,this.darkMode),this.secondaryBorderColor=ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ig(this.tertiaryColor,this.darkMode),this.primaryTextColor=Bi(this.primaryColor),this.secondaryTextColor=Bi(this.secondaryColor),this.tertiaryTextColor=Bi(this.tertiaryColor),this.lineColor=Bi(this.background),this.textColor=Bi(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=Qs(this.contrast,55),this.border2=this.contrast,this.actorBorder=Qs(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let a=0;a{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}}const g5={base:{getThemeVariables:h9t},dark:{getThemeVariables:d9t},default:{getThemeVariables:p9t},forest:{getThemeVariables:v9t},neutral:{getThemeVariables:i=>{const a=new w9t;return a.calculate(i),a}}},Qk={theme:"default",themeVariables:g5.default.getThemeVariables(),themeCSS:void 0,maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,deterministicIDSeed:void 0,flowchart:{titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,useMaxWidth:!0,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,displayMode:"",axisFormat:"%Y-%m-%d",tickInterval:void 0,useMaxWidth:!0,topAxis:!1,useWidth:void 0},journey:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},timeline:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},class:{titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},state:{titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},er:{titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12,useMaxWidth:!0},pie:{useWidth:void 0,useMaxWidth:!0,textPosition:.75},requirement:{useWidth:void 0,useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},gitGraph:{titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0},c4:{useWidth:void 0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,useMaxWidth:!0,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},fontSize:16};Qk.class&&(Qk.class.arrowMarkerAbsolute=Qk.arrowMarkerAbsolute),Qk.gitGraph&&(Qk.gitGraph.arrowMarkerAbsolute=Qk.arrowMarkerAbsolute);const VDe=(i,a="")=>Object.keys(i).reduce((f,p)=>Array.isArray(i[p])?f:typeof i[p]=="object"&&i[p]!==null?[...f,a+p,...VDe(i[p],"")]:[...f,a+p],[]),m9t=VDe(Qk,""),y9t=Qk;/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function UDe(i){return typeof i>"u"||i===null}function k9t(i){return typeof i=="object"&&i!==null}function x9t(i){return Array.isArray(i)?i:UDe(i)?[]:[i]}function E9t(i,a){var f,p,w,y;if(a)for(y=Object.keys(a),f=0,p=y.length;fE&&(y=" ... ",a=p-E+y.length),f-p>E&&(b=" ...",f=p+E-b.length),{str:y+i.slice(a,f).replace(/\t/g,"→")+b,pos:p-a+y.length}}function W1e(i,a){return sg.repeat(" ",a-i.length)+i}function I9t(i,a){if(a=Object.create(a||null),!i.buffer)return null;a.maxLength||(a.maxLength=79),typeof a.indent!="number"&&(a.indent=1),typeof a.linesBefore!="number"&&(a.linesBefore=3),typeof a.linesAfter!="number"&&(a.linesAfter=2);for(var f=/\r?\n|\r|\0/g,p=[0],w=[],y,b=-1;y=f.exec(i.buffer);)w.push(y.index),p.push(y.index+y[0].length),i.position<=y.index&&b<0&&(b=p.length-2);b<0&&(b=p.length-1);var E="",S,N,B=Math.min(i.line+a.linesAfter,w.length).toString().length,R=a.maxLength-(a.indent+B+3);for(S=1;S<=a.linesBefore&&!(b-S<0);S++)N=U1e(i.buffer,p[b-S],w[b-S],i.position-(p[b]-p[b-S]),R),E=sg.repeat(" ",a.indent)+W1e((i.line-S+1).toString(),B)+" | "+N.str+` +`+E;for(N=U1e(i.buffer,p[b],w[b],i.position,R),E+=sg.repeat(" ",a.indent)+W1e((i.line+1).toString(),B)+" | "+N.str+` +`,E+=sg.repeat("-",a.indent+B+3+N.pos)+`^ +`,S=1;S<=a.linesAfter&&!(b+S>=w.length);S++)N=U1e(i.buffer,p[b+S],w[b+S],i.position-(p[b]-p[b+S]),R),E+=sg.repeat(" ",a.indent)+W1e((i.line+S+1).toString(),B)+" | "+N.str+` +`;return E.replace(/\n$/,"")}var O9t=I9t,N9t=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],P9t=["scalar","sequence","mapping"];function B9t(i){var a={};return i!==null&&Object.keys(i).forEach(function(f){i[f].forEach(function(p){a[String(p)]=f})}),a}function R9t(i,a){if(a=a||{},Object.keys(a).forEach(function(f){if(N9t.indexOf(f)===-1)throw new p5('Unknown option "'+f+'" is met in definition of "'+i+'" YAML type.')}),this.options=a,this.tag=i,this.kind=a.kind||null,this.resolve=a.resolve||function(){return!0},this.construct=a.construct||function(f){return f},this.instanceOf=a.instanceOf||null,this.predicate=a.predicate||null,this.represent=a.represent||null,this.representName=a.representName||null,this.defaultStyle=a.defaultStyle||null,this.multi=a.multi||!1,this.styleAliases=B9t(a.styleAliases||null),P9t.indexOf(this.kind)===-1)throw new p5('Unknown kind "'+this.kind+'" is specified for "'+i+'" YAML type.')}var k0=R9t;function KDe(i,a){var f=[];return i[a].forEach(function(p){var w=f.length;f.forEach(function(y,b){y.tag===p.tag&&y.kind===p.kind&&y.multi===p.multi&&(w=b)}),f[w]=p}),f}function F9t(){var i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},a,f;function p(w){w.multi?(i.multi[w.kind].push(w),i.multi.fallback.push(w)):i[w.kind][w.tag]=i.fallback[w.tag]=w}for(a=0,f=arguments.length;a=0?"0b"+i.toString(2):"-0b"+i.toString(2).slice(1)},octal:function(i){return i>=0?"0o"+i.toString(8):"-0o"+i.toString(8).slice(1)},decimal:function(i){return i.toString(10)},hexadecimal:function(i){return i>=0?"0x"+i.toString(16).toUpperCase():"-0x"+i.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),iTt=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function sTt(i){return!(i===null||!iTt.test(i)||i[i.length-1]==="_")}function aTt(i){var a,f;return a=i.replace(/_/g,"").toLowerCase(),f=a[0]==="-"?-1:1,"+-".indexOf(a[0])>=0&&(a=a.slice(1)),a===".inf"?f===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:a===".nan"?NaN:f*parseFloat(a,10)}var oTt=/^[-+]?[0-9]+e/;function cTt(i,a){var f;if(isNaN(i))switch(a){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===i)switch(a){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===i)switch(a){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(sg.isNegativeZero(i))return"-0.0";return f=i.toString(10),oTt.test(f)?f.replace("e",".e"):f}function uTt(i){return Object.prototype.toString.call(i)==="[object Number]"&&(i%1!==0||sg.isNegativeZero(i))}var lTt=new k0("tag:yaml.org,2002:float",{kind:"scalar",resolve:sTt,construct:aTt,predicate:uTt,represent:cTt,defaultStyle:"lowercase"}),hTt=YDe.extend({implicit:[U9t,X9t,rTt,lTt]}),fTt=hTt,XDe=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),QDe=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function dTt(i){return i===null?!1:XDe.exec(i)!==null||QDe.exec(i)!==null}function gTt(i){var a,f,p,w,y,b,E,S=0,N=null,B,R,j;if(a=XDe.exec(i),a===null&&(a=QDe.exec(i)),a===null)throw new Error("Date resolve error");if(f=+a[1],p=+a[2]-1,w=+a[3],!a[4])return new Date(Date.UTC(f,p,w));if(y=+a[4],b=+a[5],E=+a[6],a[7]){for(S=a[7].slice(0,3);S.length<3;)S+="0";S=+S}return a[9]&&(B=+a[10],R=+(a[11]||0),N=(B*60+R)*6e4,a[9]==="-"&&(N=-N)),j=new Date(Date.UTC(f,p,w,y,b,E,S)),N&&j.setTime(j.getTime()-N),j}function pTt(i){return i.toISOString()}var bTt=new k0("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:dTt,construct:gTt,instanceOf:Date,represent:pTt});function vTt(i){return i==="<<"||i===null}var wTt=new k0("tag:yaml.org,2002:merge",{kind:"scalar",resolve:vTt}),Y1e=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function mTt(i){if(i===null)return!1;var a,f,p=0,w=i.length,y=Y1e;for(f=0;f64)){if(a<0)return!1;p+=6}return p%8===0}function yTt(i){var a,f,p=i.replace(/[\r\n=]/g,""),w=p.length,y=Y1e,b=0,E=[];for(a=0;a>16&255),E.push(b>>8&255),E.push(b&255)),b=b<<6|y.indexOf(p.charAt(a));return f=w%4*6,f===0?(E.push(b>>16&255),E.push(b>>8&255),E.push(b&255)):f===18?(E.push(b>>10&255),E.push(b>>2&255)):f===12&&E.push(b>>4&255),new Uint8Array(E)}function kTt(i){var a="",f=0,p,w,y=i.length,b=Y1e;for(p=0;p>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]),f=(f<<8)+i[p];return w=y%3,w===0?(a+=b[f>>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]):w===2?(a+=b[f>>10&63],a+=b[f>>4&63],a+=b[f<<2&63],a+=b[64]):w===1&&(a+=b[f>>2&63],a+=b[f<<4&63],a+=b[64],a+=b[64]),a}function xTt(i){return Object.prototype.toString.call(i)==="[object Uint8Array]"}var ETt=new k0("tag:yaml.org,2002:binary",{kind:"scalar",resolve:mTt,construct:yTt,predicate:xTt,represent:kTt}),TTt=Object.prototype.hasOwnProperty,_Tt=Object.prototype.toString;function CTt(i){if(i===null)return!0;var a=[],f,p,w,y,b,E=i;for(f=0,p=E.length;f>10)+55296,(i-65536&1023)+56320)}for(var sIe=new Array(256),aIe=new Array(256),MA=0;MA<256;MA++)sIe[MA]=iIe(MA)?1:0,aIe[MA]=iIe(MA);function UTt(i,a){this.input=i,this.filename=a.filename||null,this.schema=a.schema||RTt,this.onWarning=a.onWarning||null,this.legacy=a.legacy||!1,this.json=a.json||!1,this.listener=a.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=i.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function oIe(i,a){var f={name:i.filename,buffer:i.input.slice(0,-1),position:i.position,line:i.line,column:i.position-i.lineStart};return f.snippet=O9t(f),new p5(a,f)}function Os(i,a){throw oIe(i,a)}function lW(i,a){i.onWarning&&i.onWarning.call(null,oIe(i,a))}var cIe={YAML:function(a,f,p){var w,y,b;a.version!==null&&Os(a,"duplication of %YAML directive"),p.length!==1&&Os(a,"YAML directive accepts exactly one argument"),w=/^([0-9]+)\.([0-9]+)$/.exec(p[0]),w===null&&Os(a,"ill-formed argument of the YAML directive"),y=parseInt(w[1],10),b=parseInt(w[2],10),y!==1&&Os(a,"unacceptable YAML version of the document"),a.version=p[0],a.checkLineBreaks=b<2,b!==1&&b!==2&&lW(a,"unsupported YAML version of the document")},TAG:function(a,f,p){var w,y;p.length!==2&&Os(a,"TAG directive accepts exactly two arguments"),w=p[0],y=p[1],tIe.test(w)||Os(a,"ill-formed tag handle (first argument) of the TAG directive"),Zk.call(a.tagMap,w)&&Os(a,'there is a previously declared suffix for "'+w+'" tag handle'),nIe.test(y)||Os(a,"ill-formed tag prefix (second argument) of the TAG directive");try{y=decodeURIComponent(y)}catch{Os(a,"tag prefix is malformed: "+y)}a.tagMap[w]=y}};function Jk(i,a,f,p){var w,y,b,E;if(a1&&(i.result+=sg.repeat(` +`,a-1))}function WTt(i,a,f){var p,w,y,b,E,S,N,B,R=i.kind,j=i.result,$;if($=i.input.charCodeAt(i.position),tp($)||LA($)||$===35||$===38||$===42||$===33||$===124||$===62||$===39||$===34||$===37||$===64||$===96||($===63||$===45)&&(w=i.input.charCodeAt(i.position+1),tp(w)||f&&LA(w)))return!1;for(i.kind="scalar",i.result="",y=b=i.position,E=!1;$!==0;){if($===58){if(w=i.input.charCodeAt(i.position+1),tp(w)||f&&LA(w))break}else if($===35){if(p=i.input.charCodeAt(i.position-1),tp(p))break}else{if(i.position===i.lineStart&&hW(i)||f&&LA($))break;if(i3($))if(S=i.line,N=i.lineStart,B=i.lineIndent,Ff(i,!1,-1),i.lineIndent>=a){E=!0,$=i.input.charCodeAt(i.position);continue}else{i.position=b,i.line=S,i.lineStart=N,i.lineIndent=B;break}}E&&(Jk(i,y,b,!1),Z1e(i,i.line-S),y=b=i.position,E=!1),KE($)||(b=i.position+1),$=i.input.charCodeAt(++i.position)}return Jk(i,y,b,!1),i.result?!0:(i.kind=R,i.result=j,!1)}function KTt(i,a){var f,p,w;if(f=i.input.charCodeAt(i.position),f!==39)return!1;for(i.kind="scalar",i.result="",i.position++,p=w=i.position;(f=i.input.charCodeAt(i.position))!==0;)if(f===39)if(Jk(i,p,i.position,!0),f=i.input.charCodeAt(++i.position),f===39)p=i.position,i.position++,w=i.position;else return!0;else i3(f)?(Jk(i,p,w,!0),Z1e(i,Ff(i,!1,a)),p=w=i.position):i.position===i.lineStart&&hW(i)?Os(i,"unexpected end of the document within a single quoted scalar"):(i.position++,w=i.position);Os(i,"unexpected end of the stream within a single quoted scalar")}function YTt(i,a){var f,p,w,y,b,E;if(E=i.input.charCodeAt(i.position),E!==34)return!1;for(i.kind="scalar",i.result="",i.position++,f=p=i.position;(E=i.input.charCodeAt(i.position))!==0;){if(E===34)return Jk(i,f,i.position,!0),i.position++,!0;if(E===92){if(Jk(i,f,i.position,!0),E=i.input.charCodeAt(++i.position),i3(E))Ff(i,!1,a);else if(E<256&&sIe[E])i.result+=aIe[E],i.position++;else if((b=GTt(E))>0){for(w=b,y=0;w>0;w--)E=i.input.charCodeAt(++i.position),(b=zTt(E))>=0?y=(y<<4)+b:Os(i,"expected hexadecimal character");i.result+=VTt(y),i.position++}else Os(i,"unknown escape sequence");f=p=i.position}else i3(E)?(Jk(i,f,p,!0),Z1e(i,Ff(i,!1,a)),f=p=i.position):i.position===i.lineStart&&hW(i)?Os(i,"unexpected end of the document within a double quoted scalar"):(i.position++,p=i.position)}Os(i,"unexpected end of the stream within a double quoted scalar")}function XTt(i,a){var f=!0,p,w,y,b=i.tag,E,S=i.anchor,N,B,R,j,$,V=Object.create(null),Q,oe,ce,se;if(se=i.input.charCodeAt(i.position),se===91)B=93,$=!1,E=[];else if(se===123)B=125,$=!0,E={};else return!1;for(i.anchor!==null&&(i.anchorMap[i.anchor]=E),se=i.input.charCodeAt(++i.position);se!==0;){if(Ff(i,!0,a),se=i.input.charCodeAt(i.position),se===B)return i.position++,i.tag=b,i.anchor=S,i.kind=$?"mapping":"sequence",i.result=E,!0;f?se===44&&Os(i,"expected the node content, but found ','"):Os(i,"missed comma between flow collection entries"),oe=Q=ce=null,R=j=!1,se===63&&(N=i.input.charCodeAt(i.position+1),tp(N)&&(R=j=!0,i.position++,Ff(i,!0,a))),p=i.line,w=i.lineStart,y=i.position,IA(i,a,cW,!1,!0),oe=i.tag,Q=i.result,Ff(i,!0,a),se=i.input.charCodeAt(i.position),(j||i.line===p)&&se===58&&(R=!0,se=i.input.charCodeAt(++i.position),Ff(i,!0,a),IA(i,a,cW,!1,!0),ce=i.result),$?DA(i,E,V,oe,Q,ce,p,w,y):R?E.push(DA(i,null,V,oe,Q,ce,p,w,y)):E.push(Q),Ff(i,!0,a),se=i.input.charCodeAt(i.position),se===44?(f=!0,se=i.input.charCodeAt(++i.position)):f=!1}Os(i,"unexpected end of the stream within a flow collection")}function QTt(i,a){var f,p,w=X1e,y=!1,b=!1,E=a,S=0,N=!1,B,R;if(R=i.input.charCodeAt(i.position),R===124)p=!1;else if(R===62)p=!0;else return!1;for(i.kind="scalar",i.result="";R!==0;)if(R=i.input.charCodeAt(++i.position),R===43||R===45)X1e===w?w=R===43?eIe:FTt:Os(i,"repeat of a chomping mode identifier");else if((B=qTt(R))>=0)B===0?Os(i,"bad explicit indentation width of a block scalar; it cannot be less than one"):b?Os(i,"repeat of an indentation width identifier"):(E=a+B-1,b=!0);else break;if(KE(R)){do R=i.input.charCodeAt(++i.position);while(KE(R));if(R===35)do R=i.input.charCodeAt(++i.position);while(!i3(R)&&R!==0)}for(;R!==0;){for(Q1e(i),i.lineIndent=0,R=i.input.charCodeAt(i.position);(!b||i.lineIndentE&&(E=i.lineIndent),i3(R)){S++;continue}if(i.lineIndenta)&&S!==0)Os(i,"bad indentation of a sequence entry");else if(i.lineIndenta)&&(oe&&(b=i.line,E=i.lineStart,S=i.position),IA(i,a,uW,!0,w)&&(oe?V=i.result:Q=i.result),oe||(DA(i,R,j,$,V,Q,b,E,S),$=V=Q=null),Ff(i,!0,-1),se=i.input.charCodeAt(i.position)),(i.line===y||i.lineIndent>a)&&se!==0)Os(i,"bad indentation of a mapping entry");else if(i.lineIndenta?S=1:i.lineIndent===a?S=0:i.lineIndenta?S=1:i.lineIndent===a?S=0:i.lineIndent tag; it should be "scalar", not "'+i.kind+'"'),R=0,j=i.implicitTypes.length;R"),i.result!==null&&V.kind!==i.kind&&Os(i,"unacceptable node kind for !<"+i.tag+'> tag; it should be "'+V.kind+'", not "'+i.kind+'"'),V.resolve(i.result,i.tag)?(i.result=V.construct(i.result,i.tag),i.anchor!==null&&(i.anchorMap[i.anchor]=i.result)):Os(i,"cannot resolve a node with !<"+i.tag+"> explicit tag")}return i.listener!==null&&i.listener("close",i),i.tag!==null||i.anchor!==null||B}function n_t(i){var a=i.position,f,p,w,y=!1,b;for(i.version=null,i.checkLineBreaks=i.legacy,i.tagMap=Object.create(null),i.anchorMap=Object.create(null);(b=i.input.charCodeAt(i.position))!==0&&(Ff(i,!0,-1),b=i.input.charCodeAt(i.position),!(i.lineIndent>0||b!==37));){for(y=!0,b=i.input.charCodeAt(++i.position),f=i.position;b!==0&&!tp(b);)b=i.input.charCodeAt(++i.position);for(p=i.input.slice(f,i.position),w=[],p.length<1&&Os(i,"directive name must not be less than one character in length");b!==0;){for(;KE(b);)b=i.input.charCodeAt(++i.position);if(b===35){do b=i.input.charCodeAt(++i.position);while(b!==0&&!i3(b));break}if(i3(b))break;for(f=i.position;b!==0&&!tp(b);)b=i.input.charCodeAt(++i.position);w.push(i.input.slice(f,i.position))}b!==0&&Q1e(i),Zk.call(cIe,p)?cIe[p](i,p,w):lW(i,'unknown document directive "'+p+'"')}if(Ff(i,!0,-1),i.lineIndent===0&&i.input.charCodeAt(i.position)===45&&i.input.charCodeAt(i.position+1)===45&&i.input.charCodeAt(i.position+2)===45?(i.position+=3,Ff(i,!0,-1)):y&&Os(i,"directives end mark is expected"),IA(i,i.lineIndent-1,uW,!1,!0),Ff(i,!0,-1),i.checkLineBreaks&&$Tt.test(i.input.slice(a,i.position))&&lW(i,"non-ASCII line breaks are interpreted as content"),i.documents.push(i.result),i.position===i.lineStart&&hW(i)){i.input.charCodeAt(i.position)===46&&(i.position+=3,Ff(i,!0,-1));return}if(i.position"u"&&(f=a,a=null);var p=hIe(i,f);if(typeof a!="function")return p;for(var w=0,y=p.length;wJ1e(i,y,f)),i):Array.isArray(a)&&Array.isArray(i)?(a.forEach(y=>{i.includes(y)||i.push(y)}),i):i===void 0||p<=0?i!=null&&typeof i=="object"&&typeof a=="object"?Object.assign(i,a):a:(a!==void 0&&typeof i=="object"&&typeof a=="object"&&Object.keys(a).forEach(y=>{typeof a[y]=="object"&&(i[y]===void 0||typeof i[y]=="object")?(i[y]===void 0&&(i[y]=Array.isArray(a[y])?[]:{}),i[y]=J1e(i[y],a[y],{depth:p-1,clobber:w})):(w||typeof i[y]!="object"&&typeof a[y]!="object")&&(i[y]=a[y])}),i)},nd=J1e,OA=Object.freeze(y9t);let np=nd({},OA),dIe,NA=[],zN=nd({},OA);const fW=(i,a)=>{let f=nd({},i),p={};for(const w of a)bIe(w),p=nd(p,w);if(f=nd(f,p),p.theme&&p.theme in g5){const w=nd({},dIe),y=nd(w.themeVariables||{},p.themeVariables);f.theme&&f.theme in g5&&(f.themeVariables=g5[f.theme].getThemeVariables(y))}return zN=f,yIe(zN),zN},h_t=i=>(np=nd({},OA),np=nd(np,i),i.theme&&g5[i.theme]&&(np.themeVariables=g5[i.theme].getThemeVariables(i.themeVariables)),fW(np,NA),np),f_t=i=>{dIe=nd({},i)},d_t=i=>(np=nd(np,i),fW(np,NA),np),gIe=()=>nd({},np),pIe=i=>(yIe(i),nd(zN,i),Tt()),Tt=()=>nd({},zN),bIe=i=>{["secure",...np.secure??[]].forEach(a=>{i[a]!==void 0&&(Fe.debug(`Denied attempt to modify a secure key ${a}`,i[a]),delete i[a])}),Object.keys(i).forEach(a=>{a.indexOf("__")===0&&delete i[a]}),Object.keys(i).forEach(a=>{typeof i[a]=="string"&&(i[a].includes("<")||i[a].includes(">")||i[a].includes("url(data:"))&&delete i[a],typeof i[a]=="object"&&bIe(i[a])})},vIe=i=>{i.fontFamily&&(i.themeVariables?i.themeVariables.fontFamily||(i.themeVariables={fontFamily:i.fontFamily}):i.themeVariables={fontFamily:i.fontFamily}),NA.push(i),fW(np,NA)},dW=(i=np)=>{NA=[],fW(i,NA)};var wIe=(i=>(i.LAZY_LOAD_DEPRECATED="The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",i))(wIe||{});const mIe={},g_t=i=>{mIe[i]||(Fe.warn(wIe[i]),mIe[i]=!0)},yIe=i=>{i&&(i.lazyLoadedDiagrams||i.loadExternalDiagramsAtStartup)&&g_t("LAZY_LOAD_DEPRECATED")},p_t=function(i,a){for(let f of a)i.attr(f[0],f[1])},b_t=function(i,a,f){let p=new Map;return f?(p.set("width","100%"),p.set("style",`max-width: ${a}px;`)):(p.set("height",i),p.set("width",a)),p},Vw=function(i,a,f,p){const w=b_t(a,f,p);p_t(i,w)},YE=function(i,a,f,p){const w=a.node().getBBox(),y=w.width,b=w.height;Fe.info(`SVG bounds: ${y}x${b}`,w);let E=0,S=0;Fe.info(`Graph bounds: ${E}x${S}`,i),E=y+f*2,S=b+f*2,Fe.info(`Calculated bounds: ${E}x${S}`),Vw(a,S,E,p);const N=`${w.x-f} ${w.y-f} ${w.width+2*f} ${w.height+2*f}`;a.attr("viewBox",N)},gW={},v_t=(i,a,f)=>{let p="";return i in gW&&gW[i]?p=gW[i](f):Fe.warn(`No theme found for ${i}`),` & { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + fill: ${f.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${f.errorBkgColor}; + } + & .error-text { + fill: ${f.errorTextColor}; + stroke: ${f.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 2px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${f.lineColor}; + stroke: ${f.lineColor}; + } + & .marker.cross { + stroke: ${f.lineColor}; + } + + & svg { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + } + + ${p} + + ${a} +`},w_t=(i,a)=>{gW[i]=a},m_t=v_t;let ede="",pW="",tde="";const nde=i=>ep(i,Tt()),rp=function(){ede="",tde="",pW=""},ip=function(i){ede=nde(i).replace(/^\s+/g,"")},L2=function(){return ede||pW},M2=function(i){tde=nde(i).replace(/\n\s+/g,` +`)},D2=function(){return tde},Uw=function(i){pW=nde(i)},Ww=function(){return pW},kIe=Object.freeze(Object.defineProperty({__proto__:null,clear:rp,default:{getAccTitle:L2,setAccTitle:ip,getDiagramTitle:Ww,setDiagramTitle:Uw,getAccDescription:D2,setAccDescription:M2,clear:rp},getAccDescription:D2,getAccTitle:L2,getDiagramTitle:Ww,setAccDescription:M2,setAccTitle:ip,setDiagramTitle:Uw},Symbol.toStringTag,{value:"Module"}));let XE={};const rde=function(i,a,f,p){Fe.debug("parseDirective is being called",a,f,p);try{if(a!==void 0)switch(a=a.trim(),f){case"open_directive":XE={};break;case"type_directive":if(!XE)throw new Error("currentDirective is undefined");XE.type=a.toLowerCase();break;case"arg_directive":if(!XE)throw new Error("currentDirective is undefined");XE.args=JSON.parse(a);break;case"close_directive":y_t(i,XE,p),XE=void 0;break}}catch(w){Fe.error(`Error while rendering sequenceDiagram directive: ${a} jison context: ${f}`),Fe.error(w.message)}},y_t=function(i,a,f){switch(Fe.info(`Directive type=${a.type} with args:`,a.args),a.type){case"init":case"initialize":{["config"].forEach(p=>{a.args[p]!==void 0&&(f==="flowchart-v2"&&(f="flowchart"),a.args[f]=a.args[p],delete a.args[p])}),Fe.info("sanitize in handleDirective",a.args),jA(a.args),Fe.info("sanitize in handleDirective (done)",a.args),vIe(a.args);break}case"wrap":case"nowrap":i&&i.setWrap&&i.setWrap(a.type==="wrap");break;case"themeCss":Fe.warn("themeCss encountered");break;default:Fe.warn(`Unhandled directive: source: '%%{${a.type}: ${JSON.stringify(a.args?a.args:{})}}%%`,a);break}},k_t=Fe,x_t=$fe,GN=Tt,E_t=i=>ep(i,GN()),xIe=YE,T_t=()=>kIe,__t=(i,a,f,p)=>rde(i,a,f,p),bW={},vW=(i,a,f)=>{if(bW[i])throw new Error(`Diagram ${i} already registered.`);bW[i]=a,f&&_Ie(i,f),w_t(i,a.styles),a.injectUtils&&a.injectUtils(k_t,x_t,GN,E_t,xIe,T_t(),__t)},ide=i=>{if(i in bW)return bW[i];throw new Error(`Diagram ${i} not found.`)};class EIe extends Error{constructor(a){super(a),this.name="UnknownDiagramError"}}const C_t=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,S_t=/\s*%%.*\n/gm,PA={},wW=function(i,a){i=i.replace(fIe,"").replace(C_t,"").replace(S_t,` +`);for(const[f,{detector:p}]of Object.entries(PA))if(p(i,a))return f;throw new EIe(`No diagram type detected matching given configuration for text: ${i}`)},TIe=(...i)=>{for(const{id:a,detector:f,loader:p}of i)_Ie(a,f,p)},A_t=async()=>{Fe.debug("Loading registered diagrams");const a=(await Promise.allSettled(Object.entries(PA).map(async([f,{detector:p,loader:w}])=>{if(w)try{ide(f)}catch{try{const{diagram:b,id:E}=await w();vW(E,b,p)}catch(b){throw Fe.error(`Failed to load external diagram with key ${f}. Removing from detectors.`),delete PA[f],b}}}))).filter(f=>f.status==="rejected");if(a.length>0){Fe.error(`Failed to load ${a.length} external diagrams`);for(const f of a)Fe.error(f);throw new Error(`Failed to load ${a.length} external diagrams`)}},_Ie=(i,a,f)=>{PA[i]?Fe.error(`Detector with key ${i} already exists`):PA[i]={detector:a,loader:f},Fe.debug(`Detector with key ${i} added${f?" with loader":""}`)},L_t=i=>PA[i].loader;var M_t=typeof global=="object"&&global&&global.Object===Object&&global;const CIe=M_t;var D_t=typeof self=="object"&&self&&self.Object===Object&&self,I_t=CIe||D_t||Function("return this")();const Kw=I_t;var O_t=Kw.Symbol;const Vb=O_t;var SIe=Object.prototype,N_t=SIe.hasOwnProperty,P_t=SIe.toString,qN=Vb?Vb.toStringTag:void 0;function B_t(i){var a=N_t.call(i,qN),f=i[qN];try{i[qN]=void 0;var p=!0}catch{}var w=P_t.call(i);return p&&(a?i[qN]=f:delete i[qN]),w}var R_t=Object.prototype,F_t=R_t.toString;function j_t(i){return F_t.call(i)}var $_t="[object Null]",H_t="[object Undefined]",AIe=Vb?Vb.toStringTag:void 0;function QE(i){return i==null?i===void 0?H_t:$_t:AIe&&AIe in Object(i)?B_t(i):j_t(i)}function I2(i){var a=typeof i;return i!=null&&(a=="object"||a=="function")}var z_t="[object AsyncFunction]",G_t="[object Function]",q_t="[object GeneratorFunction]",V_t="[object Proxy]";function BA(i){if(!I2(i))return!1;var a=QE(i);return a==G_t||a==q_t||a==z_t||a==V_t}var U_t=Kw["__core-js_shared__"];const sde=U_t;var LIe=function(){var i=/[^.]+$/.exec(sde&&sde.keys&&sde.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function W_t(i){return!!LIe&&LIe in i}var K_t=Function.prototype,Y_t=K_t.toString;function ZE(i){if(i!=null){try{return Y_t.call(i)}catch{}try{return i+""}catch{}}return""}var X_t=/[\\^$.*+?()[\]{}|]/g,Q_t=/^\[object .+?Constructor\]$/,Z_t=Function.prototype,J_t=Object.prototype,eCt=Z_t.toString,tCt=J_t.hasOwnProperty,nCt=RegExp("^"+eCt.call(tCt).replace(X_t,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function rCt(i){if(!I2(i)||W_t(i))return!1;var a=BA(i)?nCt:Q_t;return a.test(ZE(i))}function iCt(i,a){return i==null?void 0:i[a]}function JE(i,a){var f=iCt(i,a);return rCt(f)?f:void 0}var sCt=JE(Object,"create");const VN=sCt;function aCt(){this.__data__=VN?VN(null):{},this.size=0}function oCt(i){var a=this.has(i)&&delete this.__data__[i];return this.size-=a?1:0,a}var cCt="__lodash_hash_undefined__",uCt=Object.prototype,lCt=uCt.hasOwnProperty;function hCt(i){var a=this.__data__;if(VN){var f=a[i];return f===cCt?void 0:f}return lCt.call(a,i)?a[i]:void 0}var fCt=Object.prototype,dCt=fCt.hasOwnProperty;function gCt(i){var a=this.__data__;return VN?a[i]!==void 0:dCt.call(a,i)}var pCt="__lodash_hash_undefined__";function bCt(i,a){var f=this.__data__;return this.size+=this.has(i)?0:1,f[i]=VN&&a===void 0?pCt:a,this}function e9(i){var a=-1,f=i==null?0:i.length;for(this.clear();++a-1}function ECt(i,a){var f=this.__data__,p=mW(f,i);return p<0?(++this.size,f.push([i,a])):f[p][1]=a,this}function b5(i){var a=-1,f=i==null?0:i.length;for(this.clear();++ay.args);jA(w),p=nd(p,[...w])}else p=f.args;if(p){let w=wW(i,a);["config"].forEach(y=>{p[y]!==void 0&&(w==="flowchart-v2"&&(w="flowchart"),p[w]=p[y],delete p[y])})}return p},MIe=function(i,a=null){try{const f=new RegExp(`[%]{2}(?![{]${OCt.source})(?=[}][%]{2}).* +`,"ig");i=i.trim().replace(f,"").replace(/'/gm,'"'),Fe.debug(`Detecting diagram directive${a!==null?" type:"+a:""} based on the text:${i}`);let p;const w=[];for(;(p=ade.exec(i))!==null;)if(p.index===ade.lastIndex&&ade.lastIndex++,p&&!a||a&&p[1]&&p[1].match(a)||a&&p[2]&&p[2].match(a)){const y=p[1]?p[1]:p[2],b=p[3]?p[3].trim():p[4]?JSON.parse(p[4].trim()):null;w.push({type:y,args:b})}return w.length===0&&w.push({type:i,args:null}),w.length===1?w[0]:w}catch(f){return Fe.error(`ERROR: ${f.message} - Unable to parse directive + ${a!==null?" type:"+a:""} based on the text:${i}`),{type:null,args:null}}},PCt=function(i,a){for(const[f,p]of a.entries())if(p.match(i))return f;return-1};function Ub(i,a){if(!i)return a;const f=`curve${i.charAt(0).toUpperCase()+i.slice(1)}`;return ICt[f]||a}function BCt(i,a){const f=i.trim();if(f)return a.securityLevel!=="loose"?u5(f):f}const RCt=(i,...a)=>{const f=i.split("."),p=f.length-1,w=f[p];let y=window;for(let b=0;b{f+=kW(y,a),a=y});let p=f/2,w;return a=void 0,i.forEach(y=>{if(a&&!w){const b=kW(y,a);if(b=1&&(w={x:y.x,y:y.y}),E>0&&E<1&&(w={x:(1-E)*a.x+E*y.x,y:(1-E)*a.y+E*y.y})}}a=y}),w}function jCt(i){return i.length===1?i[0]:FCt(i)}const $Ct=(i,a,f)=>{let p;Fe.info(`our points ${JSON.stringify(a)}`),a[0]!==f&&(a=a.reverse());let y=25,b;p=void 0,a.forEach(B=>{if(p&&!b){const R=kW(B,p);if(R=1&&(b={x:B.x,y:B.y}),j>0&&j<1&&(b={x:(1-j)*p.x+j*B.x,y:(1-j)*p.y+j*B.y})}}p=B});const E=i?10:5,S=Math.atan2(a[0].y-b.y,a[0].x-b.x),N={x:0,y:0};return N.x=Math.sin(S)*E+(a[0].x+b.x)/2,N.y=-Math.cos(S)*E+(a[0].y+b.y)/2,N};function HCt(i,a,f){let p=JSON.parse(JSON.stringify(f)),w;Fe.info("our points",p),a!=="start_left"&&a!=="start_right"&&(p=p.reverse()),p.forEach(R=>{w=R});let b=25+i,E;w=void 0,p.forEach(R=>{if(w&&!E){const j=kW(R,w);if(j=1&&(E={x:R.x,y:R.y}),$>0&&$<1&&(E={x:(1-$)*w.x+$*R.x,y:(1-$)*w.y+$*R.y})}}w=R});const S=10+i*.5,N=Math.atan2(p[0].y-E.y,p[0].x-E.x),B={x:0,y:0};return B.x=Math.sin(N)*S+(p[0].x+E.x)/2,B.y=-Math.cos(N)*S+(p[0].y+E.y)/2,a==="start_left"&&(B.x=Math.sin(N+Math.PI)*S+(p[0].x+E.x)/2,B.y=-Math.cos(N+Math.PI)*S+(p[0].y+E.y)/2),a==="end_right"&&(B.x=Math.sin(N-Math.PI)*S+(p[0].x+E.x)/2-5,B.y=-Math.cos(N-Math.PI)*S+(p[0].y+E.y)/2-5),a==="end_left"&&(B.x=Math.sin(N)*S+(p[0].x+E.x)/2-5,B.y=-Math.cos(N)*S+(p[0].y+E.y)/2-5),B}function Yw(i){let a="",f="";for(const p of i)p!==void 0&&(p.startsWith("color:")||p.startsWith("text-align:")?f=f+p+";":a=a+p+";");return{style:a,labelStyle:f}}let DIe=0;const IIe=()=>(DIe++,"id-"+Math.random().toString(36).substr(2,12)+"-"+DIe);function zCt(i){let a="";const f="0123456789abcdef",p=f.length;for(let w=0;wzCt(i.length),GCt=function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0}},qCt=function(i,a){const f=a.text.replace(Wa.lineBreakRegex," "),[,p]=$A(a.fontSize),w=i.append("text");w.attr("x",a.x),w.attr("y",a.y),w.style("text-anchor",a.anchor),w.style("font-family",a.fontFamily),w.style("font-size",p),w.style("font-weight",a.fontWeight),w.attr("fill",a.fill),a.class!==void 0&&w.attr("class",a.class);const y=w.append("tspan");return y.attr("x",a.x+a.textMargin*2),y.attr("fill",a.fill),y.text(f),w},NIe=FA((i,a,f)=>{if(!i||(f=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},f),Wa.lineBreakRegex.test(i)))return i;const p=i.split(" "),w=[];let y="";return p.forEach((b,E)=>{const S=s3(`${b} `,f),N=s3(y,f);if(S>a){const{hyphenatedStrings:j,remainingWord:$}=VCt(b,a,"-",f);w.push(y,...j),y=$}else N+S>=a?(w.push(y),y=b):y=[y,b].filter(Boolean).join(" ");E+1===p.length&&w.push(y)}),w.filter(b=>b!=="").join(f.joinWith)},(i,a,f)=>`${i}${a}${f.fontSize}${f.fontWeight}${f.fontFamily}${f.joinWith}`),VCt=FA((i,a,f="-",p)=>{p=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},p);const w=[...i],y=[];let b="";return w.forEach((E,S)=>{const N=`${b}${E}`;if(s3(N,p)>=a){const R=S+1,j=w.length===R,$=`${N}${f}`;y.push(j?N:$),b=""}else b=N}),{hyphenatedStrings:y,remainingWord:b}},(i,a,f="-",p)=>`${i}${a}${f}${p.fontSize}${p.fontWeight}${p.fontFamily}`);function ode(i,a){return a=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},a),cde(i,a).height}function s3(i,a){return a=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},a),cde(i,a).width}const cde=FA((i,a)=>{a=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},a);const{fontSize:f,fontFamily:p,fontWeight:w}=a;if(!i)return{width:0,height:0};const[,y]=$A(f),b=["sans-serif",p],E=i.split(Wa.lineBreakRegex),S=[],N=Cr("body");if(!N.remove)return{width:0,height:0,lineHeight:0};const B=N.append("svg");for(const j of b){let $=0;const V={width:0,height:0,lineHeight:0};for(const Q of E){const oe=GCt();oe.text=Q;const ce=qCt(B,oe).style("font-size",y).style("font-weight",w).style("font-family",j),se=(ce._groups||ce)[0][0].getBBox();if(se.width===0&&se.height===0)throw new Error("svg element not in render tree");V.width=Math.round(Math.max(V.width,se.width)),$=Math.round(se.height),V.height+=$,V.lineHeight=Math.round(Math.max(V.lineHeight,$))}S.push(V)}B.remove();const R=isNaN(S[1].height)||isNaN(S[1].width)||isNaN(S[1].lineHeight)||S[0].height>S[1].height&&S[0].width>S[1].width&&S[0].lineHeight>S[1].lineHeight?0:1;return S[R]},(i,a)=>`${i}${a.fontSize}${a.fontWeight}${a.fontFamily}`),UCt=class{constructor(a,f){this.deterministic=a,this.seed=f,this.count=f?f.length:0}next(){return this.deterministic?this.count++:Date.now()}};let xW;const WCt=function(i){return xW=xW||document.createElement("div"),i=escape(i).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),xW.innerHTML=i,unescape(xW.textContent)},jA=i=>{if(Fe.debug("directiveSanitizer called with",i),typeof i=="object"&&(i.length?i.forEach(a=>jA(a)):Object.keys(i).forEach(a=>{Fe.debug("Checking key",a),a.startsWith("__")&&(Fe.debug("sanitize deleting __ option",a),delete i[a]),a.includes("proto")&&(Fe.debug("sanitize deleting proto option",a),delete i[a]),a.includes("constr")&&(Fe.debug("sanitize deleting constr option",a),delete i[a]),a.includes("themeCSS")&&(Fe.debug("sanitizing themeCss option"),i[a]=EW(i[a])),a.includes("fontFamily")&&(Fe.debug("sanitizing fontFamily option"),i[a]=EW(i[a])),a.includes("altFontFamily")&&(Fe.debug("sanitizing altFontFamily option"),i[a]=EW(i[a])),m9t.includes(a)?typeof i[a]=="object"&&(Fe.debug("sanitize deleting object",a),jA(i[a])):(Fe.debug("sanitize deleting option",a),delete i[a])})),i.themeVariables){const a=Object.keys(i.themeVariables);for(const f of a){const p=i.themeVariables[f];p&&p.match&&!p.match(/^[\d "#%(),.;A-Za-z]+$/)&&(i.themeVariables[f]="")}}Fe.debug("After sanitization",i)},EW=i=>{let a=0,f=0;for(const p of i){if(a{if(!p)return;const w=i.node().getBBox();i.append("text").text(p).attr("x",w.x+w.width/2).attr("y",-f).attr("class",a)},$A=i=>{if(typeof i=="number")return[i,i+"px"];const a=parseInt(i,10);return Number.isNaN(a)?[void 0,void 0]:i===String(a)?[a,i+"px"]:[a,i]},co={assignWithDepth:nd,wrapLabel:NIe,calculateTextHeight:ode,calculateTextWidth:s3,calculateTextDimensions:cde,detectInit:NCt,detectDirective:MIe,isSubstringInArray:PCt,interpolateToCurve:Ub,calcLabelPosition:jCt,calcCardinalityPosition:$Ct,calcTerminalLabelPosition:HCt,formatUrl:BCt,getStylesFromArray:Yw,generateId:IIe,random:OIe,runFunc:RCt,entityDecode:WCt,initIdGenerator:UCt,directiveSanitizer:jA,sanitizeCss:EW,insertTitle:YCt,parseFontSize:$A};var BIe="comm",RIe="rule",FIe="decl",XCt="@import",QCt="@keyframes",ZCt=Math.abs,ude=String.fromCharCode;function jIe(i){return i.trim()}function lde(i,a,f){return i.replace(a,f)}function JCt(i,a){return i.indexOf(a)}function WN(i,a){return i.charCodeAt(a)|0}function KN(i,a,f){return i.slice(a,f)}function ex(i){return i.length}function $Ie(i){return i.length}function TW(i,a){return a.push(i),i}var _W=1,HA=1,HIe=0,Wb=0,jf=0,zA="";function hde(i,a,f,p,w,y,b){return{value:i,root:a,parent:f,type:p,props:w,children:y,line:_W,column:HA,length:b,return:""}}function eSt(){return jf}function tSt(){return jf=Wb>0?WN(zA,--Wb):0,HA--,jf===10&&(HA=1,_W--),jf}function Xw(){return jf=Wb2||fde(jf)>3?"":" "}function sSt(i,a){for(;--a&&Xw()&&!(jf<48||jf>102||jf>57&&jf<65||jf>70&&jf<97););return SW(i,CW()+(a<6&&t9()==32&&Xw()==32))}function gde(i){for(;Xw();)switch(jf){case i:return Wb;case 34:case 39:i!==34&&i!==39&&gde(jf);break;case 40:i===41&&gde(i);break;case 92:Xw();break}return Wb}function aSt(i,a){for(;Xw()&&i+jf!==47+10;)if(i+jf===42+42&&t9()===47)break;return"/*"+SW(a,Wb-1)+"*"+ude(i===47?i:Xw())}function oSt(i){for(;!fde(t9());)Xw();return SW(i,Wb)}function cSt(i){return rSt(AW("",null,null,null,[""],i=nSt(i),0,[0],i))}function AW(i,a,f,p,w,y,b,E,S){for(var N=0,B=0,R=b,j=0,$=0,V=0,Q=1,oe=1,ce=1,se=0,ge="",ye=w,ke=y,Ae=p,de=ge;oe;)switch(V=se,se=Xw()){case 40:if(V!=108&&WN(de,R-1)==58){JCt(de+=lde(dde(se),"&","&\f"),"&\f")!=-1&&(ce=-1);break}case 34:case 39:case 91:de+=dde(se);break;case 9:case 10:case 13:case 32:de+=iSt(V);break;case 92:de+=sSt(CW()-1,7);continue;case 47:switch(t9()){case 42:case 47:TW(uSt(aSt(Xw(),CW()),a,f),S);break;default:de+="/"}break;case 123*Q:E[N++]=ex(de)*ce;case 125*Q:case 59:case 0:switch(se){case 0:case 125:oe=0;case 59+B:$>0&&ex(de)-R&&TW($>32?GIe(de+";",p,f,R-1):GIe(lde(de," ","")+";",p,f,R-2),S);break;case 59:de+=";";default:if(TW(Ae=zIe(de,a,f,N,B,w,E,ge,ye=[],ke=[],R),y),se===123)if(B===0)AW(de,a,Ae,Ae,ye,y,R,E,ke);else switch(j===99&&WN(de,3)===110?100:j){case 100:case 109:case 115:AW(i,Ae,Ae,p&&TW(zIe(i,Ae,Ae,0,0,w,E,ge,w,ye=[],R),ke),w,ke,R,E,p?ye:ke);break;default:AW(de,Ae,Ae,Ae,[""],ke,0,E,ke)}}N=B=$=0,Q=ce=1,ge=de="",R=b;break;case 58:R=1+ex(de),$=V;default:if(Q<1){if(se==123)--Q;else if(se==125&&Q++==0&&tSt()==125)continue}switch(de+=ude(se),se*Q){case 38:ce=B>0?1:(de+="\f",-1);break;case 44:E[N++]=(ex(de)-1)*ce,ce=1;break;case 64:t9()===45&&(de+=dde(Xw())),j=t9(),B=R=ex(ge=de+=oSt(CW())),se++;break;case 45:V===45&&ex(de)==2&&(Q=0)}}return y}function zIe(i,a,f,p,w,y,b,E,S,N,B){for(var R=w-1,j=w===0?y:[""],$=$Ie(j),V=0,Q=0,oe=0;V0?j[ce]+" "+se:lde(se,/&\f/g,j[ce])))&&(S[oe++]=ge);return hde(i,a,f,w===0?RIe:E,S,N,B)}function uSt(i,a,f){return hde(i,a,f,BIe,ude(eSt()),KN(i,2,-2),0)}function GIe(i,a,f,p){return hde(i,a,f,FIe,KN(i,0,p),KN(i,p+1,-1),p)}function pde(i,a){for(var f="",p=$Ie(i),w=0;wi.match(/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>rMt);return{id:VIe,diagram:i}}},UIe="flowchart",fSt={id:UIe,detector:(i,a)=>{var f,p;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-wrapper"||((p=a==null?void 0:a.flowchart)==null?void 0:p.defaultRenderer)==="elk"?!1:i.match(/^\s*graph/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>kFt);return{id:UIe,diagram:i}}},WIe="flowchart-v2",dSt={id:WIe,detector:(i,a)=>{var f,p,w;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-d3"||((p=a==null?void 0:a.flowchart)==null?void 0:p.defaultRenderer)==="elk"?!1:i.match(/^\s*graph/)!==null&&((w=a==null?void 0:a.flowchart)==null?void 0:w.defaultRenderer)==="dagre-wrapper"?!0:i.match(/^\s*flowchart/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>xFt);return{id:WIe,diagram:i}}},KIe="er",gSt={id:KIe,detector:i=>i.match(/^\s*erDiagram/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>YFt);return{id:KIe,diagram:i}}},YIe="gitGraph",pSt={id:YIe,detector:i=>i.match(/^\s*gitGraph/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>xjt);return{id:YIe,diagram:i}}},XIe="gantt",bSt={id:XIe,detector:i=>i.match(/^\s*gantt/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>x$t);return{id:XIe,diagram:i}}},QIe="info",vSt={id:QIe,detector:i=>i.match(/^\s*info/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>T$t);return{id:QIe,diagram:i}}},ZIe="pie",wSt={id:ZIe,detector:i=>i.match(/^\s*pie/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>A$t);return{id:ZIe,diagram:i}}},JIe="requirement",mSt={id:JIe,detector:i=>i.match(/^\s*requirement(Diagram)?/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>F$t);return{id:JIe,diagram:i}}},eOe="sequence",ySt={id:eOe,detector:i=>i.match(/^\s*sequenceDiagram/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>$Ht);return{id:eOe,diagram:i}}},tOe="class",kSt={id:tOe,detector:(i,a)=>{var f;return((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:i.match(/^\s*classDiagram/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>czt);return{id:tOe,diagram:i}}},nOe="classDiagram",xSt={id:nOe,detector:(i,a)=>{var f;return i.match(/^\s*classDiagram/)!==null&&((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!0:i.match(/^\s*classDiagram-v2/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>gzt);return{id:nOe,diagram:i}}},rOe="state",ESt={id:rOe,detector:(i,a)=>{var f;return((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:i.match(/^\s*stateDiagram/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>nGt);return{id:rOe,diagram:i}}},iOe="stateDiagram",TSt={id:iOe,detector:(i,a)=>{var f,p;return!!(i.match(/^\s*stateDiagram-v2/)!==null||i.match(/^\s*stateDiagram/)&&((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper"||i.match(/^\s*stateDiagram/)&&((p=a==null?void 0:a.state)==null?void 0:p.defaultRenderer)==="dagre-wrapper")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>kGt);return{id:iOe,diagram:i}}},sOe="journey",_St={id:sOe,detector:i=>i.match(/^\s*journey/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>zGt);return{id:sOe,diagram:i}}},CSt=()=>"",aOe={setConf:function(){},draw:(i,a,f)=>{try{Fe.debug(`Renering svg for syntax error +`);const p=Cr("#"+a),w=p.append("g");w.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),w.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),w.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),w.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),w.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),w.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),w.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),w.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+f),p.attr("height",100),p.attr("width",500),p.attr("viewBox","768 0 912 512")}catch(p){Fe.error("Error while rendering info diagram"),Fe.error(KCt(p))}}},SSt={db:{clear:()=>{}},styles:CSt,renderer:aOe,parser:{parser:{yy:{}},parse:()=>{}},init:()=>{}},oOe="flowchart-elk",ASt={id:oOe,detector:(i,a)=>{var f;return!!(i.match(/^\s*flowchart-elk/)||i.match(/^\s*flowchart|graph/)&&((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="elk")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>iqt);return{id:oOe,diagram:i}}},cOe="timeline",LSt={id:cOe,detector:i=>i.match(/^\s*timeline/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Eqt);return{id:cOe,diagram:i}}},uOe="mindmap",MSt={id:uOe,detector:i=>i.match(/^\s*mindmap/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>tVt);return{id:uOe,diagram:i}}};let lOe=!1;const bde=()=>{lOe||(lOe=!0,vW("error",SSt,i=>i.toLowerCase().trim()==="error"),vW("---",{db:{clear:()=>{}},styles:{},renderer:{},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},i=>i.toLowerCase().trimStart().startsWith("---")),TIe(hSt,xSt,kSt,gSt,bSt,vSt,wSt,mSt,ySt,ASt,dSt,fSt,MSt,LSt,pSt,TSt,ESt,_St))},DSt=i=>i.trimStart().replace(/^\s*%%(?!{)[^\n]+\n?/gm,"");class hOe{constructor(a){var y,b;this.text=a,this.type="graph",this.text+=` +`;const f=Tt();try{this.type=wW(a,f)}catch(E){this.type="error",this.detectError=E}const p=ide(this.type);Fe.debug("Type "+this.type),this.db=p.db,(b=(y=this.db).clear)==null||b.call(y),this.renderer=p.renderer,this.parser=p.parser;const w=this.parser.parse.bind(this.parser);this.parser.parse=E=>w(DSt(l_t(E,this.db))),this.parser.parser.yy=this.db,p.init&&(p.init(f),Fe.info("Initialized diagram "+this.type,f)),this.parse()}parse(){var a,f;if(this.detectError)throw this.detectError;(f=(a=this.db).clear)==null||f.call(a),this.parser.parse(this.text)}async render(a,f){await this.renderer.draw(this.text,a,f,this)}getParser(){return this.parser}getType(){return this.type}}const vde=async i=>{const a=wW(i,Tt());try{ide(a)}catch{const p=L_t(a);if(!p)throw new EIe(`Diagram ${a} not found.`);const{id:w,diagram:y}=await p();vW(w,y)}return new hOe(i)};let wde=[];const ISt=i=>{wde.push(i)},OSt=()=>{wde.forEach(i=>{i()}),wde=[]};var NSt=Object.prototype;function LW(i){var a=i&&i.constructor,f=typeof a=="function"&&a.prototype||NSt;return i===f}function fOe(i,a){return function(f){return i(a(f))}}var PSt=fOe(Object.keys,Object);const BSt=PSt;var RSt=Object.prototype,FSt=RSt.hasOwnProperty;function dOe(i){if(!LW(i))return BSt(i);var a=[];for(var f in Object(i))FSt.call(i,f)&&f!="constructor"&&a.push(f);return a}var jSt=JE(Kw,"DataView");const mde=jSt;var $St=JE(Kw,"Promise");const yde=$St;var HSt=JE(Kw,"Set");const GA=HSt;var zSt=JE(Kw,"WeakMap");const kde=zSt;var gOe="[object Map]",GSt="[object Object]",pOe="[object Promise]",bOe="[object Set]",vOe="[object WeakMap]",wOe="[object DataView]",qSt=ZE(mde),VSt=ZE(UN),USt=ZE(yde),WSt=ZE(GA),KSt=ZE(kde),n9=QE;(mde&&n9(new mde(new ArrayBuffer(1)))!=wOe||UN&&n9(new UN)!=gOe||yde&&n9(yde.resolve())!=pOe||GA&&n9(new GA)!=bOe||kde&&n9(new kde)!=vOe)&&(n9=function(i){var a=QE(i),f=a==GSt?i.constructor:void 0,p=f?ZE(f):"";if(p)switch(p){case qSt:return wOe;case VSt:return gOe;case USt:return pOe;case WSt:return bOe;case KSt:return vOe}return a});const qA=n9;function a3(i){return i!=null&&typeof i=="object"}var YSt="[object Arguments]";function mOe(i){return a3(i)&&QE(i)==YSt}var yOe=Object.prototype,XSt=yOe.hasOwnProperty,QSt=yOe.propertyIsEnumerable,ZSt=mOe(function(){return arguments}())?mOe:function(i){return a3(i)&&XSt.call(i,"callee")&&!QSt.call(i,"callee")};const VA=ZSt;var JSt=Array.isArray;const $f=JSt;var eAt=9007199254740991;function xde(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=eAt}function tx(i){return i!=null&&xde(i.length)&&!BA(i)}function tAt(){return!1}var kOe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,xOe=kOe&&typeof module=="object"&&module&&!module.nodeType&&module,nAt=xOe&&xOe.exports===kOe,EOe=nAt?Kw.Buffer:void 0,rAt=EOe?EOe.isBuffer:void 0,iAt=rAt||tAt;const UA=iAt;var sAt="[object Arguments]",aAt="[object Array]",oAt="[object Boolean]",cAt="[object Date]",uAt="[object Error]",lAt="[object Function]",hAt="[object Map]",fAt="[object Number]",dAt="[object Object]",gAt="[object RegExp]",pAt="[object Set]",bAt="[object String]",vAt="[object WeakMap]",wAt="[object ArrayBuffer]",mAt="[object DataView]",yAt="[object Float32Array]",kAt="[object Float64Array]",xAt="[object Int8Array]",EAt="[object Int16Array]",TAt="[object Int32Array]",_At="[object Uint8Array]",CAt="[object Uint8ClampedArray]",SAt="[object Uint16Array]",AAt="[object Uint32Array]",Tl={};Tl[yAt]=Tl[kAt]=Tl[xAt]=Tl[EAt]=Tl[TAt]=Tl[_At]=Tl[CAt]=Tl[SAt]=Tl[AAt]=!0,Tl[sAt]=Tl[aAt]=Tl[wAt]=Tl[oAt]=Tl[mAt]=Tl[cAt]=Tl[uAt]=Tl[lAt]=Tl[hAt]=Tl[fAt]=Tl[dAt]=Tl[gAt]=Tl[pAt]=Tl[bAt]=Tl[vAt]=!1;function LAt(i){return a3(i)&&xde(i.length)&&!!Tl[QE(i)]}function MW(i){return function(a){return i(a)}}var TOe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,YN=TOe&&typeof module=="object"&&module&&!module.nodeType&&module,MAt=YN&&YN.exports===TOe,Ede=MAt&&CIe.process,DAt=function(){try{var i=YN&&YN.require&&YN.require("util").types;return i||Ede&&Ede.binding&&Ede.binding("util")}catch{}}();const WA=DAt;var _Oe=WA&&WA.isTypedArray,IAt=_Oe?MW(_Oe):LAt;const DW=IAt;var OAt="[object Map]",NAt="[object Set]",PAt=Object.prototype,BAt=PAt.hasOwnProperty;function KA(i){if(i==null)return!0;if(tx(i)&&($f(i)||typeof i=="string"||typeof i.splice=="function"||UA(i)||DW(i)||VA(i)))return!i.length;var a=qA(i);if(a==OAt||a==NAt)return!i.size;if(LW(i))return!dOe(i).length;for(var f in i)if(BAt.call(i,f))return!1;return!0}const RAt="graphics-document document";function FAt(i,a){i.attr("role",RAt),KA(a)||i.attr("aria-roledescription",a)}function jAt(i,a,f,p){if(i.insert!==void 0)if(a||f){if(f){const w="chart-desc-"+p;i.attr("aria-describedby",w),i.insert("desc",":first-child").attr("id",w).text(f)}if(a){const w="chart-title-"+p;i.attr("aria-labelledby",w),i.insert("title",":first-child").attr("id",w).text(a)}}else return}const COe=["graph","flowchart","flowchart-v2","flowchart-elk","stateDiagram","stateDiagram-v2"],$At=5e4,HAt="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",zAt="sandbox",GAt="loose",qAt="http://www.w3.org/2000/svg",VAt="http://www.w3.org/1999/xlink",UAt="http://www.w3.org/1999/xhtml",WAt="100%",KAt="100%",YAt="border:0;margin:0;",XAt="margin:0",QAt="allow-top-navigation-by-user-activation allow-popups",ZAt='The "iframe" tag is not supported by your browser.',JAt=["foreignobject"],eLt=["dominant-baseline"];async function tLt(i,a){bde();try{(await vde(i)).parse()}catch(f){if(a!=null&&a.suppressErrors)return!1;throw f}return!0}const nLt=function(i){let a=i;return a=a.replace(/style.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/classDef.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/#\w+;/g,function(f){const p=f.substring(1,f.length-1);return/^\+?\d+$/.test(p)?"fl°°"+p+"¶ß":"fl°"+p+"¶ß"}),a},XN=function(i){let a=i;return a=a.replace(/fl°°/g,"&#"),a=a.replace(/fl°/g,"&"),a=a.replace(/¶ß/g,";"),a},SOe=(i,a,f=[])=>` +.${i} ${a} { ${f.join(" !important; ")} !important; }`,rLt=(i,a,f={})=>{var w;let p="";if(i.themeCSS!==void 0&&(p+=` +${i.themeCSS}`),i.fontFamily!==void 0&&(p+=` +:root { --mermaid-font-family: ${i.fontFamily}}`),i.altFontFamily!==void 0&&(p+=` +:root { --mermaid-alt-font-family: ${i.altFontFamily}}`),!KA(f)&&COe.includes(a)){const S=i.htmlLabels||((w=i.flowchart)==null?void 0:w.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const N in f){const B=f[N];KA(B.styles)||S.forEach(R=>{p+=SOe(B.id,R,B.styles)}),KA(B.textStyles)||(p+=SOe(B.id,"tspan",B.textStyles))}}return p},iLt=(i,a,f,p)=>{const w=rLt(i,a,f),y=m_t(a,w,i.themeVariables);return pde(cSt(`${p}{${y}}`),lSt)},sLt=(i="",a,f)=>{let p=i;return!f&&!a&&(p=p.replace(/marker-end="url\(.*?#/g,'marker-end="url(#')),p=XN(p),p=p.replace(/
/g,"
"),p},aLt=(i="",a)=>{const f=a?a.viewBox.baseVal.height+"px":KAt,p=btoa(''+i+"");return``},AOe=(i,a,f,p,w)=>{const y=i.append("div");y.attr("id",f),p&&y.attr("style",p);const b=y.append("svg").attr("id",a).attr("width","100%").attr("xmlns",qAt);return w&&b.attr("xmlns:xlink",w),b.append("g"),i};function LOe(i,a){return i.append("iframe").attr("id",a).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const oLt=(i,a,f,p)=>{var w,y,b;(w=i.getElementById(a))==null||w.remove(),(y=i.getElementById(f))==null||y.remove(),(b=i.getElementById(p))==null||b.remove()},cLt=async function(i,a,f){var Ie,ee,rt,me;bde(),dW();const p=co.detectInit(a);p&&(jA(p),vIe(p));const w=Tt();Fe.debug(w),a.length>((w==null?void 0:w.maxTextSize)??$At)&&(a=HAt),a=a.replace(/\r\n?/g,` +`),a=a.replace(/<(\w+)([^>]*)>/g,(gt,pe,Et)=>"<"+pe+Et.replace(/="([^"]*)"/g,"='$1'")+">");const y="#"+i,b="i"+i,E="#"+b,S="d"+i,N="#"+S;let B=Cr("body");const R=w.securityLevel===zAt,j=w.securityLevel===GAt,$=w.fontFamily;if(f!==void 0){if(f&&(f.innerHTML=""),R){const gt=LOe(Cr(f),b);B=Cr(gt.nodes()[0].contentDocument.body),B.node().style.margin=0}else B=Cr(f);AOe(B,i,S,`font-family: ${$}`,VAt)}else{if(oLt(document,i,S,b),R){const gt=LOe(Cr("body"),b);B=Cr(gt.nodes()[0].contentDocument.body),B.node().style.margin=0}else B=Cr("body");AOe(B,i,S)}a=nLt(a);let V,Q;try{V=await vde(a)}catch(gt){V=new hOe("error"),Q=gt}const oe=B.select(N).node(),ce=V.type,se=oe.firstChild,ge=se.firstChild,ye=COe.includes(ce)?V.renderer.getClasses(a,V):{},ke=iLt(w,ce,ye,y),Ae=document.createElement("style");Ae.innerHTML=ke,se.insertBefore(Ae,ge);try{await V.renderer.draw(a,i,qIe,V)}catch(gt){throw aOe.draw(a,i,qIe),gt}const de=B.select(`${N} svg`),ve=(ee=(Ie=V.db).getAccTitle)==null?void 0:ee.call(Ie),te=(me=(rt=V.db).getAccDescription)==null?void 0:me.call(rt);lLt(ce,de,ve,te),B.select(`[id="${i}"]`).selectAll("foreignobject > *").attr("xmlns",UAt);let xe=B.select(N).node().innerHTML;if(Fe.debug("config.arrowMarkerAbsolute",w.arrowMarkerAbsolute),xe=sLt(xe,R,d1(w.arrowMarkerAbsolute)),R){const gt=B.select(N+" svg").node();xe=aLt(xe,gt)}else j||(xe=ZU.sanitize(xe,{ADD_TAGS:JAt,ADD_ATTR:eLt}));if(OSt(),Q)throw Q;const he=Cr(R?E:N).node();return he&&"remove"in he&&he.remove(),{svg:xe,bindFunctions:V.db.bindFunctions}};function uLt(i={}){var f;i!=null&&i.fontFamily&&!((f=i.themeVariables)!=null&&f.fontFamily)&&(i.themeVariables||(i.themeVariables={}),i.themeVariables.fontFamily=i.fontFamily),f_t(i),i!=null&&i.theme&&i.theme in g5?i.themeVariables=g5[i.theme].getThemeVariables(i.themeVariables):i&&(i.themeVariables=g5.default.getThemeVariables(i.themeVariables));const a=typeof i=="object"?h_t(i):gIe();$fe(a.logLevel),bde()}function lLt(i,a,f,p){FAt(a,i),jAt(a,f,p,a.attr("id"))}const rd=Object.freeze({render:cLt,parse:tLt,parseDirective:rde,getDiagramFromText:vde,initialize:uLt,getConfig:Tt,setConfig:pIe,getSiteConfig:gIe,updateSiteConfig:d_t,reset:()=>{dW()},globalReset:()=>{dW(OA)},defaultConfig:OA});$fe(Tt().logLevel),dW(Tt());const hLt=(i,a,f)=>{Fe.warn(i),PIe(i)?(f&&f(i.str,i.hash),a.push({...i,message:i.str,error:i})):(f&&f(i),i instanceof Error&&a.push({str:i.message,message:i.message,hash:i.name,error:i}))},MOe=async function(i={querySelector:".mermaid"}){try{await fLt(i)}catch(a){if(PIe(a)&&Fe.error(a.str),O2.parseError&&O2.parseError(a),!i.suppressErrors)throw Fe.error("Use the suppressErrors option to suppress these errors"),a}},fLt=async function({postRenderCallback:i,querySelector:a,nodes:f}={querySelector:".mermaid"}){const p=rd.getConfig();Fe.debug(`${i?"":"No "}Callback function found`);let w;if(f)w=f;else if(a)w=document.querySelectorAll(a);else throw new Error("Nodes and querySelector are both undefined");Fe.debug(`Found ${w.length} diagrams`),(p==null?void 0:p.startOnLoad)!==void 0&&(Fe.debug("Start On Load: "+(p==null?void 0:p.startOnLoad)),rd.updateSiteConfig({startOnLoad:p==null?void 0:p.startOnLoad}));const y=new co.initIdGenerator(p.deterministicIds,p.deterministicIDSeed);let b;const E=[];for(const S of Array.from(w)){Fe.info("Rendering diagram: "+S.id);/*! Check if previously processed */if(S.getAttribute("data-processed"))continue;S.setAttribute("data-processed","true");const N=`mermaid-${y.next()}`;b=S.innerHTML,b=mN(co.entityDecode(b)).trim().replace(//gi,"
");const B=co.detectInit(b);B&&Fe.debug("Detected early reinit: ",B);try{const{svg:R,bindFunctions:j}=await NOe(N,b,S);S.innerHTML=R,i&&await i(N),j&&j(S)}catch(R){hLt(R,E,O2.parseError)}}if(E.length>0)throw E[0]},DOe=function(i){rd.initialize(i)},dLt=async function(i,a,f){Fe.warn("mermaid.init is deprecated. Please use run instead."),i&&DOe(i);const p={postRenderCallback:f,querySelector:".mermaid"};typeof a=="string"?p.querySelector=a:a&&(a instanceof HTMLElement?p.nodes=[a]:p.nodes=a),await MOe(p)},gLt=async(i,{lazyLoad:a=!0}={})=>{TIe(...i),a===!1&&await A_t()},IOe=function(){if(O2.startOnLoad){const{startOnLoad:i}=rd.getConfig();i&&O2.run().catch(a=>Fe.error("Mermaid failed to initialize",a))}};if(typeof document<"u"){/*! + * Wait for document loaded before starting the execution + */window.addEventListener("load",IOe,!1)}const pLt=function(i){O2.parseError=i},IW=[];let Tde=!1;const OOe=async()=>{if(!Tde){for(Tde=!0;IW.length>0;){const i=IW.shift();if(i)try{await i()}catch(a){Fe.error("Error executing queue",a)}}Tde=!1}},bLt=async(i,a)=>new Promise((f,p)=>{const w=()=>new Promise((y,b)=>{rd.parse(i,a).then(E=>{y(E),f(E)},E=>{var S;Fe.error("Error parsing",E),(S=O2.parseError)==null||S.call(O2,E),b(E),p(E)})});IW.push(w),OOe().catch(p)}),NOe=(i,a,f)=>new Promise((p,w)=>{const y=()=>new Promise((b,E)=>{rd.render(i,a,f).then(S=>{b(S),p(S)},S=>{var N;Fe.error("Error parsing",S),(N=O2.parseError)==null||N.call(O2,S),E(S),w(S)})});IW.push(y),OOe().catch(w)}),O2={startOnLoad:!0,mermaidAPI:rd,parse:bLt,render:NOe,init:dLt,run:MOe,registerExternalDiagrams:gLt,initialize:DOe,parseError:void 0,contentLoaded:IOe,setParseErrorHandler:pLt,detectType:wW};var OW=function(){var i=function(Oi,Er,br,Dr){for(br=br||{},Dr=Oi.length;Dr--;br[Oi[Dr]]=Er);return br},a=[1,6],f=[1,7],p=[1,8],w=[1,9],y=[1,16],b=[1,11],E=[1,12],S=[1,13],N=[1,14],B=[1,15],R=[1,27],j=[1,33],$=[1,34],V=[1,35],Q=[1,36],oe=[1,37],ce=[1,72],se=[1,73],ge=[1,74],ye=[1,75],ke=[1,76],Ae=[1,77],de=[1,78],ve=[1,38],te=[1,39],xe=[1,40],De=[1,41],he=[1,42],Ie=[1,43],ee=[1,44],rt=[1,45],me=[1,46],gt=[1,47],pe=[1,48],Et=[1,49],wt=[1,50],jt=[1,51],At=[1,52],Bt=[1,53],cn=[1,54],Nn=[1,55],Ot=[1,56],oi=[1,57],kt=[1,59],Dt=[1,60],vt=[1,61],Nt=[1,62],ze=[1,63],Xe=[1,64],Lt=[1,65],Ge=[1,66],Bn=[1,67],Oe=[1,68],Ri=[1,69],tn=[24,52],hi=[24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],Sr=[15,24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],Zn=[1,94],Xn=[1,95],ir=[1,96],Hn=[1,97],tr=[15,24,52],ha=[7,8,9,10,18,22,25,26,27,28],Zs=[15,24,43,52],ns=[15,24,43,52,86,87,89,90],Hi=[15,43],Js=[44,46,47,48,49,50,51,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],Pc={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,directive:6,direction_tb:7,direction_bt:8,direction_rl:9,direction_lr:10,graphConfig:11,openDirective:12,typeDirective:13,closeDirective:14,NEWLINE:15,":":16,argDirective:17,open_directive:18,type_directive:19,arg_directive:20,close_directive:21,C4_CONTEXT:22,statements:23,EOF:24,C4_CONTAINER:25,C4_COMPONENT:26,C4_DYNAMIC:27,C4_DEPLOYMENT:28,otherStatements:29,diagramStatements:30,otherStatement:31,title:32,accDescription:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,boundaryStatement:39,boundaryStartStatement:40,boundaryStopStatement:41,boundaryStart:42,LBRACE:43,ENTERPRISE_BOUNDARY:44,attributes:45,SYSTEM_BOUNDARY:46,BOUNDARY:47,CONTAINER_BOUNDARY:48,NODE:49,NODE_L:50,NODE_R:51,RBRACE:52,diagramStatement:53,PERSON:54,PERSON_EXT:55,SYSTEM:56,SYSTEM_DB:57,SYSTEM_QUEUE:58,SYSTEM_EXT:59,SYSTEM_EXT_DB:60,SYSTEM_EXT_QUEUE:61,CONTAINER:62,CONTAINER_DB:63,CONTAINER_QUEUE:64,CONTAINER_EXT:65,CONTAINER_EXT_DB:66,CONTAINER_EXT_QUEUE:67,COMPONENT:68,COMPONENT_DB:69,COMPONENT_QUEUE:70,COMPONENT_EXT:71,COMPONENT_EXT_DB:72,COMPONENT_EXT_QUEUE:73,REL:74,BIREL:75,REL_U:76,REL_D:77,REL_L:78,REL_R:79,REL_B:80,REL_INDEX:81,UPDATE_EL_STYLE:82,UPDATE_REL_STYLE:83,UPDATE_LAYOUT_CONFIG:84,attribute:85,STR:86,STR_KEY:87,STR_VALUE:88,ATTRIBUTE:89,ATTRIBUTE_EMPTY:90,$accept:0,$end:1},terminals_:{2:"error",7:"direction_tb",8:"direction_bt",9:"direction_rl",10:"direction_lr",15:"NEWLINE",16:":",18:"open_directive",19:"type_directive",20:"arg_directive",21:"close_directive",22:"C4_CONTEXT",24:"EOF",25:"C4_CONTAINER",26:"C4_COMPONENT",27:"C4_DYNAMIC",28:"C4_DEPLOYMENT",32:"title",33:"accDescription",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",43:"LBRACE",44:"ENTERPRISE_BOUNDARY",46:"SYSTEM_BOUNDARY",47:"BOUNDARY",48:"CONTAINER_BOUNDARY",49:"NODE",50:"NODE_L",51:"NODE_R",52:"RBRACE",54:"PERSON",55:"PERSON_EXT",56:"SYSTEM",57:"SYSTEM_DB",58:"SYSTEM_QUEUE",59:"SYSTEM_EXT",60:"SYSTEM_EXT_DB",61:"SYSTEM_EXT_QUEUE",62:"CONTAINER",63:"CONTAINER_DB",64:"CONTAINER_QUEUE",65:"CONTAINER_EXT",66:"CONTAINER_EXT_DB",67:"CONTAINER_EXT_QUEUE",68:"COMPONENT",69:"COMPONENT_DB",70:"COMPONENT_QUEUE",71:"COMPONENT_EXT",72:"COMPONENT_EXT_DB",73:"COMPONENT_EXT_QUEUE",74:"REL",75:"BIREL",76:"REL_U",77:"REL_D",78:"REL_L",79:"REL_R",80:"REL_B",81:"REL_INDEX",82:"UPDATE_EL_STYLE",83:"UPDATE_REL_STYLE",84:"UPDATE_LAYOUT_CONFIG",86:"STR",87:"STR_KEY",88:"STR_VALUE",89:"ATTRIBUTE",90:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[11,4],[11,4],[11,4],[11,4],[23,1],[23,1],[23,2],[29,1],[29,2],[29,3],[31,1],[31,1],[31,2],[31,2],[31,1],[39,3],[40,3],[40,3],[40,4],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[41,1],[30,1],[30,2],[30,3],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,1],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[45,1],[45,2],[85,1],[85,2],[85,1],[85,1]],performAction:function(Er,br,Dr,Vn,qi,yn,Bc){var jn=yn.length-1;switch(qi){case 4:Vn.setDirection("TB");break;case 5:Vn.setDirection("BT");break;case 6:Vn.setDirection("RL");break;case 7:Vn.setDirection("LR");break;case 11:Vn.parseDirective("%%{","open_directive");break;case 12:break;case 13:yn[jn]=yn[jn].trim().replace(/'/g,'"'),Vn.parseDirective(yn[jn],"arg_directive");break;case 14:Vn.parseDirective("}%%","close_directive","c4Context");break;case 15:case 16:case 17:case 18:case 19:Vn.setC4Type(yn[jn-3]);break;case 26:Vn.setTitle(yn[jn].substring(6)),this.$=yn[jn].substring(6);break;case 27:Vn.setAccDescription(yn[jn].substring(15)),this.$=yn[jn].substring(15);break;case 28:this.$=yn[jn].trim(),Vn.setTitle(this.$);break;case 29:case 30:this.$=yn[jn].trim(),Vn.setAccDescription(this.$);break;case 35:case 36:yn[jn].splice(2,0,"ENTERPRISE"),Vn.addPersonOrSystemBoundary(...yn[jn]),this.$=yn[jn];break;case 37:Vn.addPersonOrSystemBoundary(...yn[jn]),this.$=yn[jn];break;case 38:yn[jn].splice(2,0,"CONTAINER"),Vn.addContainerBoundary(...yn[jn]),this.$=yn[jn];break;case 39:Vn.addDeploymentNode("node",...yn[jn]),this.$=yn[jn];break;case 40:Vn.addDeploymentNode("nodeL",...yn[jn]),this.$=yn[jn];break;case 41:Vn.addDeploymentNode("nodeR",...yn[jn]),this.$=yn[jn];break;case 42:Vn.popBoundaryParseStack();break;case 46:Vn.addPersonOrSystem("person",...yn[jn]),this.$=yn[jn];break;case 47:Vn.addPersonOrSystem("external_person",...yn[jn]),this.$=yn[jn];break;case 48:Vn.addPersonOrSystem("system",...yn[jn]),this.$=yn[jn];break;case 49:Vn.addPersonOrSystem("system_db",...yn[jn]),this.$=yn[jn];break;case 50:Vn.addPersonOrSystem("system_queue",...yn[jn]),this.$=yn[jn];break;case 51:Vn.addPersonOrSystem("external_system",...yn[jn]),this.$=yn[jn];break;case 52:Vn.addPersonOrSystem("external_system_db",...yn[jn]),this.$=yn[jn];break;case 53:Vn.addPersonOrSystem("external_system_queue",...yn[jn]),this.$=yn[jn];break;case 54:Vn.addContainer("container",...yn[jn]),this.$=yn[jn];break;case 55:Vn.addContainer("container_db",...yn[jn]),this.$=yn[jn];break;case 56:Vn.addContainer("container_queue",...yn[jn]),this.$=yn[jn];break;case 57:Vn.addContainer("external_container",...yn[jn]),this.$=yn[jn];break;case 58:Vn.addContainer("external_container_db",...yn[jn]),this.$=yn[jn];break;case 59:Vn.addContainer("external_container_queue",...yn[jn]),this.$=yn[jn];break;case 60:Vn.addComponent("component",...yn[jn]),this.$=yn[jn];break;case 61:Vn.addComponent("component_db",...yn[jn]),this.$=yn[jn];break;case 62:Vn.addComponent("component_queue",...yn[jn]),this.$=yn[jn];break;case 63:Vn.addComponent("external_component",...yn[jn]),this.$=yn[jn];break;case 64:Vn.addComponent("external_component_db",...yn[jn]),this.$=yn[jn];break;case 65:Vn.addComponent("external_component_queue",...yn[jn]),this.$=yn[jn];break;case 67:Vn.addRel("rel",...yn[jn]),this.$=yn[jn];break;case 68:Vn.addRel("birel",...yn[jn]),this.$=yn[jn];break;case 69:Vn.addRel("rel_u",...yn[jn]),this.$=yn[jn];break;case 70:Vn.addRel("rel_d",...yn[jn]),this.$=yn[jn];break;case 71:Vn.addRel("rel_l",...yn[jn]),this.$=yn[jn];break;case 72:Vn.addRel("rel_r",...yn[jn]),this.$=yn[jn];break;case 73:Vn.addRel("rel_b",...yn[jn]),this.$=yn[jn];break;case 74:yn[jn].splice(0,1),Vn.addRel("rel",...yn[jn]),this.$=yn[jn];break;case 75:Vn.updateElStyle("update_el_style",...yn[jn]),this.$=yn[jn];break;case 76:Vn.updateRelStyle("update_rel_style",...yn[jn]),this.$=yn[jn];break;case 77:Vn.updateLayoutConfig("update_layout_config",...yn[jn]),this.$=yn[jn];break;case 78:this.$=[yn[jn]];break;case 79:yn[jn].unshift(yn[jn-1]),this.$=yn[jn];break;case 80:case 82:this.$=yn[jn].trim();break;case 81:let Ms={};Ms[yn[jn-1].trim()]=yn[jn].trim(),this.$=Ms;break;case 83:this.$="";break}},table:[{3:1,4:2,5:3,6:4,7:a,8:f,9:p,10:w,11:5,12:10,18:y,22:b,25:E,26:S,27:N,28:B},{1:[3]},{1:[2,1]},{1:[2,2]},{3:17,4:2,5:3,6:4,7:a,8:f,9:p,10:w,11:5,12:10,18:y,22:b,25:E,26:S,27:N,28:B},{1:[2,8]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{1:[2,7]},{13:18,19:[1,19]},{15:[1,20]},{15:[1,21]},{15:[1,22]},{15:[1,23]},{15:[1,24]},{19:[2,11]},{1:[2,3]},{14:25,16:[1,26],21:R},i([16,21],[2,12]),{23:28,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{23:79,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{23:80,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{23:81,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{23:82,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{15:[1,83]},{17:84,20:[1,85]},{15:[2,14]},{24:[1,86]},i(tn,[2,20],{53:32,39:58,40:70,42:71,30:87,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri}),i(tn,[2,21]),i(hi,[2,23],{15:[1,88]}),i(tn,[2,43],{15:[1,89]}),i(Sr,[2,26]),i(Sr,[2,27]),{35:[1,90]},{37:[1,91]},i(Sr,[2,30]),{45:92,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:98,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:99,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:100,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:101,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:102,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:103,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:104,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:105,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:106,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:107,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:108,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:109,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:110,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:111,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:112,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:113,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:114,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:115,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:116,85:93,86:Zn,87:Xn,89:ir,90:Hn},i(tr,[2,66]),{45:117,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:118,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:119,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:120,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:121,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:122,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:123,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:124,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:125,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:126,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:127,85:93,86:Zn,87:Xn,89:ir,90:Hn},{30:128,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{15:[1,130],43:[1,129]},{45:131,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:132,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:133,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:134,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:135,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:136,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:137,85:93,86:Zn,87:Xn,89:ir,90:Hn},{24:[1,138]},{24:[1,139]},{24:[1,140]},{24:[1,141]},i(ha,[2,9]),{14:142,21:R},{21:[2,13]},{1:[2,15]},i(tn,[2,22]),i(hi,[2,24],{31:31,29:143,32:j,33:$,34:V,36:Q,38:oe}),i(tn,[2,44],{29:29,30:30,31:31,53:32,39:58,40:70,42:71,23:144,32:j,33:$,34:V,36:Q,38:oe,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri}),i(Sr,[2,28]),i(Sr,[2,29]),i(tr,[2,46]),i(Zs,[2,78],{85:93,45:145,86:Zn,87:Xn,89:ir,90:Hn}),i(ns,[2,80]),{88:[1,146]},i(ns,[2,82]),i(ns,[2,83]),i(tr,[2,47]),i(tr,[2,48]),i(tr,[2,49]),i(tr,[2,50]),i(tr,[2,51]),i(tr,[2,52]),i(tr,[2,53]),i(tr,[2,54]),i(tr,[2,55]),i(tr,[2,56]),i(tr,[2,57]),i(tr,[2,58]),i(tr,[2,59]),i(tr,[2,60]),i(tr,[2,61]),i(tr,[2,62]),i(tr,[2,63]),i(tr,[2,64]),i(tr,[2,65]),i(tr,[2,67]),i(tr,[2,68]),i(tr,[2,69]),i(tr,[2,70]),i(tr,[2,71]),i(tr,[2,72]),i(tr,[2,73]),i(tr,[2,74]),i(tr,[2,75]),i(tr,[2,76]),i(tr,[2,77]),{41:147,52:[1,148]},{15:[1,149]},{43:[1,150]},i(Hi,[2,35]),i(Hi,[2,36]),i(Hi,[2,37]),i(Hi,[2,38]),i(Hi,[2,39]),i(Hi,[2,40]),i(Hi,[2,41]),{1:[2,16]},{1:[2,17]},{1:[2,18]},{1:[2,19]},{15:[1,151]},i(hi,[2,25]),i(tn,[2,45]),i(Zs,[2,79]),i(ns,[2,81]),i(tr,[2,31]),i(tr,[2,42]),i(Js,[2,32]),i(Js,[2,33],{15:[1,152]}),i(ha,[2,10]),i(Js,[2,34])],defaultActions:{2:[2,1],3:[2,2],5:[2,8],6:[2,4],7:[2,5],8:[2,6],9:[2,7],16:[2,11],17:[2,3],27:[2,14],85:[2,13],86:[2,15],138:[2,16],139:[2,17],140:[2,18],141:[2,19]},parseError:function(Er,br){if(br.recoverable)this.trace(Er);else{var Dr=new Error(Er);throw Dr.hash=br,Dr}},parse:function(Er){var br=this,Dr=[0],Vn=[],qi=[null],yn=[],Bc=this.table,jn="",Ms=0,Pa=0,Ta=2,_a=1,ka=yn.slice.call(arguments,1),Qi=Object.create(this.lexer),ea={yy:{}};for(var Ca in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ca)&&(ea.yy[Ca]=this.yy[Ca]);Qi.setInput(Er,ea.yy),ea.yy.lexer=Qi,ea.yy.parser=this,typeof Qi.yylloc>"u"&&(Qi.yylloc={});var Sa=Qi.yylloc;yn.push(Sa);var Ka=Qi.options&&Qi.options.ranges;typeof ea.yy.parseError=="function"?this.parseError=ea.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function cg(){var Ns;return Ns=Vn.pop()||Qi.lex()||_a,typeof Ns!="number"&&(Ns instanceof Array&&(Vn=Ns,Ns=Vn.pop()),Ns=br.symbols_[Ns]||Ns),Ns}for(var Gc,Dh,Es,lp,sd={},sh,Ai,nn,Tr;;){if(Dh=Dr[Dr.length-1],this.defaultActions[Dh]?Es=this.defaultActions[Dh]:((Gc===null||typeof Gc>"u")&&(Gc=cg()),Es=Bc[Dh]&&Bc[Dh][Gc]),typeof Es>"u"||!Es.length||!Es[0]){var ai="";Tr=[];for(sh in Bc[Dh])this.terminals_[sh]&&sh>Ta&&Tr.push("'"+this.terminals_[sh]+"'");Qi.showPosition?ai="Parse error on line "+(Ms+1)+`: +`+Qi.showPosition()+` +Expecting `+Tr.join(", ")+", got '"+(this.terminals_[Gc]||Gc)+"'":ai="Parse error on line "+(Ms+1)+": Unexpected "+(Gc==_a?"end of input":"'"+(this.terminals_[Gc]||Gc)+"'"),this.parseError(ai,{text:Qi.match,token:this.terminals_[Gc]||Gc,line:Qi.yylineno,loc:Sa,expected:Tr})}if(Es[0]instanceof Array&&Es.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Dh+", token: "+Gc);switch(Es[0]){case 1:Dr.push(Gc),qi.push(Qi.yytext),yn.push(Qi.yylloc),Dr.push(Es[1]),Gc=null,Pa=Qi.yyleng,jn=Qi.yytext,Ms=Qi.yylineno,Sa=Qi.yylloc;break;case 2:if(Ai=this.productions_[Es[1]][1],sd.$=qi[qi.length-Ai],sd._$={first_line:yn[yn.length-(Ai||1)].first_line,last_line:yn[yn.length-1].last_line,first_column:yn[yn.length-(Ai||1)].first_column,last_column:yn[yn.length-1].last_column},Ka&&(sd._$.range=[yn[yn.length-(Ai||1)].range[0],yn[yn.length-1].range[1]]),lp=this.performAction.apply(sd,[jn,Pa,Ms,ea.yy,Es[1],qi,yn].concat(ka)),typeof lp<"u")return lp;Ai&&(Dr=Dr.slice(0,-1*Ai*2),qi=qi.slice(0,-1*Ai),yn=yn.slice(0,-1*Ai)),Dr.push(this.productions_[Es[1]][0]),qi.push(sd.$),yn.push(sd._$),nn=Bc[Dr[Dr.length-2]][Dr[Dr.length-1]],Dr.push(nn);break;case 3:return!0}}return!0}},Ga=function(){var Oi={EOF:1,parseError:function(br,Dr){if(this.yy.parser)this.yy.parser.parseError(br,Dr);else throw new Error(br)},setInput:function(Er,br){return this.yy=br||this.yy||{},this._input=Er,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Er=this._input[0];this.yytext+=Er,this.yyleng++,this.offset++,this.match+=Er,this.matched+=Er;var br=Er.match(/(?:\r\n?|\n).*/g);return br?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Er},unput:function(Er){var br=Er.length,Dr=Er.split(/(?:\r\n?|\n)/g);this._input=Er+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-br),this.offset-=br;var Vn=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Dr.length-1&&(this.yylineno-=Dr.length-1);var qi=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Dr?(Dr.length===Vn.length?this.yylloc.first_column:0)+Vn[Vn.length-Dr.length].length-Dr[0].length:this.yylloc.first_column-br},this.options.ranges&&(this.yylloc.range=[qi[0],qi[0]+this.yyleng-br]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Er){this.unput(this.match.slice(Er))},pastInput:function(){var Er=this.matched.substr(0,this.matched.length-this.match.length);return(Er.length>20?"...":"")+Er.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Er=this.match;return Er.length<20&&(Er+=this._input.substr(0,20-Er.length)),(Er.substr(0,20)+(Er.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Er=this.pastInput(),br=new Array(Er.length+1).join("-");return Er+this.upcomingInput()+` +`+br+"^"},test_match:function(Er,br){var Dr,Vn,qi;if(this.options.backtrack_lexer&&(qi={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(qi.yylloc.range=this.yylloc.range.slice(0))),Vn=Er[0].match(/(?:\r\n?|\n).*/g),Vn&&(this.yylineno+=Vn.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Vn?Vn[Vn.length-1].length-Vn[Vn.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Er[0].length},this.yytext+=Er[0],this.match+=Er[0],this.matches=Er,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Er[0].length),this.matched+=Er[0],Dr=this.performAction.call(this,this.yy,this,br,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Dr)return Dr;if(this._backtrack){for(var yn in qi)this[yn]=qi[yn];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Er,br,Dr,Vn;this._more||(this.yytext="",this.match="");for(var qi=this._currentRules(),yn=0;ynbr[0].length)){if(br=Dr,Vn=yn,this.options.backtrack_lexer){if(Er=this.test_match(Dr,qi[yn]),Er!==!1)return Er;if(this._backtrack){br=!1;continue}else return!1}else if(!this.options.flex)break}return br?(Er=this.test_match(br,qi[Vn]),Er!==!1?Er:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var br=this.next();return br||this.lex()},begin:function(br){this.conditionStack.push(br)},popState:function(){var br=this.conditionStack.length-1;return br>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(br){return br=this.conditionStack.length-1-Math.abs(br||0),br>=0?this.conditionStack[br]:"INITIAL"},pushState:function(br){this.begin(br)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(br,Dr,Vn,qi){switch(Vn){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:return 32;case 10:return 33;case 11:return this.begin("acc_title"),34;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),36;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:break;case 19:c;break;case 20:return 15;case 21:break;case 22:return 22;case 23:return 25;case 24:return 26;case 25:return 27;case 26:return 28;case 27:return this.begin("person_ext"),55;case 28:return this.begin("person"),54;case 29:return this.begin("system_ext_queue"),61;case 30:return this.begin("system_ext_db"),60;case 31:return this.begin("system_ext"),59;case 32:return this.begin("system_queue"),58;case 33:return this.begin("system_db"),57;case 34:return this.begin("system"),56;case 35:return this.begin("boundary"),47;case 36:return this.begin("enterprise_boundary"),44;case 37:return this.begin("system_boundary"),46;case 38:return this.begin("container_ext_queue"),67;case 39:return this.begin("container_ext_db"),66;case 40:return this.begin("container_ext"),65;case 41:return this.begin("container_queue"),64;case 42:return this.begin("container_db"),63;case 43:return this.begin("container"),62;case 44:return this.begin("container_boundary"),48;case 45:return this.begin("component_ext_queue"),73;case 46:return this.begin("component_ext_db"),72;case 47:return this.begin("component_ext"),71;case 48:return this.begin("component_queue"),70;case 49:return this.begin("component_db"),69;case 50:return this.begin("component"),68;case 51:return this.begin("node"),49;case 52:return this.begin("node"),49;case 53:return this.begin("node_l"),50;case 54:return this.begin("node_r"),51;case 55:return this.begin("rel"),74;case 56:return this.begin("birel"),75;case 57:return this.begin("rel_u"),76;case 58:return this.begin("rel_u"),76;case 59:return this.begin("rel_d"),77;case 60:return this.begin("rel_d"),77;case 61:return this.begin("rel_l"),78;case 62:return this.begin("rel_l"),78;case 63:return this.begin("rel_r"),79;case 64:return this.begin("rel_r"),79;case 65:return this.begin("rel_b"),80;case 66:return this.begin("rel_index"),81;case 67:return this.begin("update_el_style"),82;case 68:return this.begin("update_rel_style"),83;case 69:return this.begin("update_layout_config"),84;case 70:return"EOF_IN_STRUCT";case 71:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 72:this.begin("attribute");break;case 73:this.popState(),this.popState();break;case 74:return 90;case 75:break;case 76:return 90;case 77:this.begin("string");break;case 78:this.popState();break;case 79:return"STR";case 80:this.begin("string_kv");break;case 81:return this.begin("string_kv_key"),"STR_KEY";case 82:this.popState(),this.begin("string_kv_value");break;case 83:return"STR_VALUE";case 84:this.popState(),this.popState();break;case 85:return"STR";case 86:return"LBRACE";case 87:return"RBRACE";case 88:return"SPACE";case 89:return"EOL";case 90:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},string_kv_value:{rules:[83,84],inclusive:!1},string_kv_key:{rules:[82],inclusive:!1},string_kv:{rules:[81],inclusive:!1},string:{rules:[78,79],inclusive:!1},attribute:{rules:[73,74,75,76,77,80,85],inclusive:!1},update_layout_config:{rules:[70,71,72,73],inclusive:!1},update_rel_style:{rules:[70,71,72,73],inclusive:!1},update_el_style:{rules:[70,71,72,73],inclusive:!1},rel_b:{rules:[70,71,72,73],inclusive:!1},rel_r:{rules:[70,71,72,73],inclusive:!1},rel_l:{rules:[70,71,72,73],inclusive:!1},rel_d:{rules:[70,71,72,73],inclusive:!1},rel_u:{rules:[70,71,72,73],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[70,71,72,73],inclusive:!1},node_r:{rules:[70,71,72,73],inclusive:!1},node_l:{rules:[70,71,72,73],inclusive:!1},node:{rules:[70,71,72,73],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[70,71,72,73],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[70,71,72,73],inclusive:!1},component_ext:{rules:[70,71,72,73],inclusive:!1},component_queue:{rules:[70,71,72,73],inclusive:!1},component_db:{rules:[70,71,72,73],inclusive:!1},component:{rules:[70,71,72,73],inclusive:!1},container_boundary:{rules:[70,71,72,73],inclusive:!1},container_ext_queue:{rules:[],inclusive:!1},container_ext_db:{rules:[70,71,72,73],inclusive:!1},container_ext:{rules:[70,71,72,73],inclusive:!1},container_queue:{rules:[70,71,72,73],inclusive:!1},container_db:{rules:[70,71,72,73],inclusive:!1},container:{rules:[70,71,72,73],inclusive:!1},birel:{rules:[70,71,72,73],inclusive:!1},system_boundary:{rules:[70,71,72,73],inclusive:!1},enterprise_boundary:{rules:[70,71,72,73],inclusive:!1},boundary:{rules:[70,71,72,73],inclusive:!1},system_ext_queue:{rules:[70,71,72,73],inclusive:!1},system_ext_db:{rules:[70,71,72,73],inclusive:!1},system_ext:{rules:[70,71,72,73],inclusive:!1},system_queue:{rules:[70,71,72,73],inclusive:!1},system_db:{rules:[70,71,72,73],inclusive:!1},system:{rules:[70,71,72,73],inclusive:!1},person_ext:{rules:[70,71,72,73],inclusive:!1},person:{rules:[70,71,72,73],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,86,87,88,89,90],inclusive:!0}}};return Oi}();Pc.lexer=Ga;function ws(){this.yy={}}return ws.prototype=Pc,Pc.Parser=ws,new ws}();OW.parser=OW;const vLt=OW;let Qw=[],nx=[""],ag="global",Zw="",o3=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],QN=[],_de="",Cde=!1,NW=4,PW=2;var POe;const wLt=function(){return POe},mLt=function(i){POe=ep(i,Tt())},yLt=function(i,a,f){rd.parseDirective(this,i,a,f)},kLt=function(i,a,f,p,w,y,b,E,S){if(i==null||a===void 0||a===null||f===void 0||f===null||p===void 0||p===null)return;let N={};const B=QN.find(R=>R.from===a&&R.to===f);if(B?N=B:QN.push(N),N.type=i,N.from=a,N.to=f,N.label={text:p},w==null)N.techn={text:""};else if(typeof w=="object"){let[R,j]=Object.entries(w)[0];N[R]={text:j}}else N.techn={text:w};if(y==null)N.descr={text:""};else if(typeof y=="object"){let[R,j]=Object.entries(y)[0];N[R]={text:j}}else N.descr={text:y};if(typeof b=="object"){let[R,j]=Object.entries(b)[0];N[R]=j}else N.sprite=b;if(typeof E=="object"){let[R,j]=Object.entries(E)[0];N[R]=j}else N.tags=E;if(typeof S=="object"){let[R,j]=Object.entries(S)[0];N[R]=j}else N.link=S;N.wrap=rx()},xLt=function(i,a,f,p,w,y,b){if(a===null||f===null)return;let E={};const S=Qw.find(N=>N.alias===a);if(S&&a===S.alias?E=S:(E.alias=a,Qw.push(E)),f==null?E.label={text:""}:E.label={text:f},p==null)E.descr={text:""};else if(typeof p=="object"){let[N,B]=Object.entries(p)[0];E[N]={text:B}}else E.descr={text:p};if(typeof w=="object"){let[N,B]=Object.entries(w)[0];E[N]=B}else E.sprite=w;if(typeof y=="object"){let[N,B]=Object.entries(y)[0];E[N]=B}else E.tags=y;if(typeof b=="object"){let[N,B]=Object.entries(b)[0];E[N]=B}else E.link=b;E.typeC4Shape={text:i},E.parentBoundary=ag,E.wrap=rx()},ELt=function(i,a,f,p,w,y,b,E){if(a===null||f===null)return;let S={};const N=Qw.find(B=>B.alias===a);if(N&&a===N.alias?S=N:(S.alias=a,Qw.push(S)),f==null?S.label={text:""}:S.label={text:f},p==null)S.techn={text:""};else if(typeof p=="object"){let[B,R]=Object.entries(p)[0];S[B]={text:R}}else S.techn={text:p};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[B,R]=Object.entries(w)[0];S[B]={text:R}}else S.descr={text:w};if(typeof y=="object"){let[B,R]=Object.entries(y)[0];S[B]=R}else S.sprite=y;if(typeof b=="object"){let[B,R]=Object.entries(b)[0];S[B]=R}else S.tags=b;if(typeof E=="object"){let[B,R]=Object.entries(E)[0];S[B]=R}else S.link=E;S.wrap=rx(),S.typeC4Shape={text:i},S.parentBoundary=ag},TLt=function(i,a,f,p,w,y,b,E){if(a===null||f===null)return;let S={};const N=Qw.find(B=>B.alias===a);if(N&&a===N.alias?S=N:(S.alias=a,Qw.push(S)),f==null?S.label={text:""}:S.label={text:f},p==null)S.techn={text:""};else if(typeof p=="object"){let[B,R]=Object.entries(p)[0];S[B]={text:R}}else S.techn={text:p};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[B,R]=Object.entries(w)[0];S[B]={text:R}}else S.descr={text:w};if(typeof y=="object"){let[B,R]=Object.entries(y)[0];S[B]=R}else S.sprite=y;if(typeof b=="object"){let[B,R]=Object.entries(b)[0];S[B]=R}else S.tags=b;if(typeof E=="object"){let[B,R]=Object.entries(E)[0];S[B]=R}else S.link=E;S.wrap=rx(),S.typeC4Shape={text:i},S.parentBoundary=ag},_Lt=function(i,a,f,p,w){if(i===null||a===null)return;let y={};const b=o3.find(E=>E.alias===i);if(b&&i===b.alias?y=b:(y.alias=i,o3.push(y)),a==null?y.label={text:""}:y.label={text:a},f==null)y.type={text:"system"};else if(typeof f=="object"){let[E,S]=Object.entries(f)[0];y[E]={text:S}}else y.type={text:f};if(typeof p=="object"){let[E,S]=Object.entries(p)[0];y[E]=S}else y.tags=p;if(typeof w=="object"){let[E,S]=Object.entries(w)[0];y[E]=S}else y.link=w;y.parentBoundary=ag,y.wrap=rx(),Zw=ag,ag=i,nx.push(Zw)},CLt=function(i,a,f,p,w){if(i===null||a===null)return;let y={};const b=o3.find(E=>E.alias===i);if(b&&i===b.alias?y=b:(y.alias=i,o3.push(y)),a==null?y.label={text:""}:y.label={text:a},f==null)y.type={text:"container"};else if(typeof f=="object"){let[E,S]=Object.entries(f)[0];y[E]={text:S}}else y.type={text:f};if(typeof p=="object"){let[E,S]=Object.entries(p)[0];y[E]=S}else y.tags=p;if(typeof w=="object"){let[E,S]=Object.entries(w)[0];y[E]=S}else y.link=w;y.parentBoundary=ag,y.wrap=rx(),Zw=ag,ag=i,nx.push(Zw)},SLt=function(i,a,f,p,w,y,b,E){if(a===null||f===null)return;let S={};const N=o3.find(B=>B.alias===a);if(N&&a===N.alias?S=N:(S.alias=a,o3.push(S)),f==null?S.label={text:""}:S.label={text:f},p==null)S.type={text:"node"};else if(typeof p=="object"){let[B,R]=Object.entries(p)[0];S[B]={text:R}}else S.type={text:p};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[B,R]=Object.entries(w)[0];S[B]={text:R}}else S.descr={text:w};if(typeof b=="object"){let[B,R]=Object.entries(b)[0];S[B]=R}else S.tags=b;if(typeof E=="object"){let[B,R]=Object.entries(E)[0];S[B]=R}else S.link=E;S.nodeType=i,S.parentBoundary=ag,S.wrap=rx(),Zw=ag,ag=a,nx.push(Zw)},ALt=function(){ag=Zw,nx.pop(),Zw=nx.pop(),nx.push(Zw)},LLt=function(i,a,f,p,w,y,b,E,S,N,B){let R=Qw.find(j=>j.alias===a);if(!(R===void 0&&(R=o3.find(j=>j.alias===a),R===void 0))){if(f!=null)if(typeof f=="object"){let[j,$]=Object.entries(f)[0];R[j]=$}else R.bgColor=f;if(p!=null)if(typeof p=="object"){let[j,$]=Object.entries(p)[0];R[j]=$}else R.fontColor=p;if(w!=null)if(typeof w=="object"){let[j,$]=Object.entries(w)[0];R[j]=$}else R.borderColor=w;if(y!=null)if(typeof y=="object"){let[j,$]=Object.entries(y)[0];R[j]=$}else R.shadowing=y;if(b!=null)if(typeof b=="object"){let[j,$]=Object.entries(b)[0];R[j]=$}else R.shape=b;if(E!=null)if(typeof E=="object"){let[j,$]=Object.entries(E)[0];R[j]=$}else R.sprite=E;if(S!=null)if(typeof S=="object"){let[j,$]=Object.entries(S)[0];R[j]=$}else R.techn=S;if(N!=null)if(typeof N=="object"){let[j,$]=Object.entries(N)[0];R[j]=$}else R.legendText=N;if(B!=null)if(typeof B=="object"){let[j,$]=Object.entries(B)[0];R[j]=$}else R.legendSprite=B}},MLt=function(i,a,f,p,w,y,b){const E=QN.find(S=>S.from===a&&S.to===f);if(E!==void 0){if(p!=null)if(typeof p=="object"){let[S,N]=Object.entries(p)[0];E[S]=N}else E.textColor=p;if(w!=null)if(typeof w=="object"){let[S,N]=Object.entries(w)[0];E[S]=N}else E.lineColor=w;if(y!=null)if(typeof y=="object"){let[S,N]=Object.entries(y)[0];E[S]=parseInt(N)}else E.offsetX=parseInt(y);if(b!=null)if(typeof b=="object"){let[S,N]=Object.entries(b)[0];E[S]=parseInt(N)}else E.offsetY=parseInt(b)}},DLt=function(i,a,f){let p=NW,w=PW;if(typeof a=="object"){const y=Object.values(a)[0];p=parseInt(y)}else p=parseInt(a);if(typeof f=="object"){const y=Object.values(f)[0];w=parseInt(y)}else w=parseInt(f);p>=1&&(NW=p),w>=1&&(PW=w)},ILt=function(){return NW},OLt=function(){return PW},NLt=function(){return ag},PLt=function(){return Zw},BOe=function(i){return i==null?Qw:Qw.filter(a=>a.parentBoundary===i)},BLt=function(i){return Qw.find(a=>a.alias===i)},RLt=function(i){return Object.keys(BOe(i))},FLt=function(i){return i==null?o3:o3.filter(a=>a.parentBoundary===i)},jLt=function(){return QN},$Lt=function(){return _de},HLt=function(i){Cde=i},rx=function(){return Cde},ROe={addPersonOrSystem:xLt,addPersonOrSystemBoundary:_Lt,addContainer:ELt,addContainerBoundary:CLt,addComponent:TLt,addDeploymentNode:SLt,popBoundaryParseStack:ALt,addRel:kLt,updateElStyle:LLt,updateRelStyle:MLt,updateLayoutConfig:DLt,autoWrap:rx,setWrap:HLt,getC4ShapeArray:BOe,getC4Shape:BLt,getC4ShapeKeys:RLt,getBoundarys:FLt,getCurrentBoundaryParse:NLt,getParentBoundaryParse:PLt,getRels:jLt,getTitle:$Lt,getC4Type:wLt,getC4ShapeInRow:ILt,getC4BoundaryInRow:OLt,setAccTitle:ip,getAccTitle:L2,getAccDescription:D2,setAccDescription:M2,parseDirective:yLt,getConfig:()=>Tt().c4,clear:function(){Qw=[],o3=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Zw="",ag="global",nx=[""],QN=[],nx=[""],_de="",Cde=!1,NW=4,PW=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(i){_de=ep(i,Tt())},setC4Type:mLt},Sde=function(i,a){const f=i.append("rect");if(f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.attrs!=="undefined"&&a.attrs!==null)for(let p in a.attrs)f.attr(p,a.attrs[p]);return a.class!=="undefined"&&f.attr("class",a.class),f},FOe=function(i,a,f,p,w,y){const b=i.append("image");b.attr("width",a),b.attr("height",f),b.attr("x",p),b.attr("y",w);let E=y.startsWith("data:image/png;base64")?y:u5(y);b.attr("xlink:href",E)},zLt=(i,a,f)=>{const p=i.append("g");let w=0;for(let y of a){let b=y.textColor?y.textColor:"#444444",E=y.lineColor?y.lineColor:"#444444",S=y.offsetX?parseInt(y.offsetX):0,N=y.offsetY?parseInt(y.offsetY):0,B="";if(w===0){let j=p.append("line");j.attr("x1",y.startPoint.x),j.attr("y1",y.startPoint.y),j.attr("x2",y.endPoint.x),j.attr("y2",y.endPoint.y),j.attr("stroke-width","1"),j.attr("stroke",E),j.style("fill","none"),y.type!=="rel_b"&&j.attr("marker-end","url("+B+"#arrowhead)"),(y.type==="birel"||y.type==="rel_b")&&j.attr("marker-start","url("+B+"#arrowend)"),w=-1}else{let j=p.append("path");j.attr("fill","none").attr("stroke-width","1").attr("stroke",E).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",y.startPoint.x).replaceAll("starty",y.startPoint.y).replaceAll("controlx",y.startPoint.x+(y.endPoint.x-y.startPoint.x)/2-(y.endPoint.x-y.startPoint.x)/4).replaceAll("controly",y.startPoint.y+(y.endPoint.y-y.startPoint.y)/2).replaceAll("stopx",y.endPoint.x).replaceAll("stopy",y.endPoint.y)),y.type!=="rel_b"&&j.attr("marker-end","url("+B+"#arrowhead)"),(y.type==="birel"||y.type==="rel_b")&&j.attr("marker-start","url("+B+"#arrowend)")}let R=f.messageFont();w5(f)(y.label.text,p,Math.min(y.startPoint.x,y.endPoint.x)+Math.abs(y.endPoint.x-y.startPoint.x)/2+S,Math.min(y.startPoint.y,y.endPoint.y)+Math.abs(y.endPoint.y-y.startPoint.y)/2+N,y.label.width,y.label.height,{fill:b},R),y.techn&&y.techn.text!==""&&(R=f.messageFont(),w5(f)("["+y.techn.text+"]",p,Math.min(y.startPoint.x,y.endPoint.x)+Math.abs(y.endPoint.x-y.startPoint.x)/2+S,Math.min(y.startPoint.y,y.endPoint.y)+Math.abs(y.endPoint.y-y.startPoint.y)/2+f.messageFontSize+5+N,Math.max(y.label.width,y.techn.width),y.techn.height,{fill:b,"font-style":"italic"},R))}},GLt=function(i,a,f){const p=i.append("g");let w=a.bgColor?a.bgColor:"none",y=a.borderColor?a.borderColor:"#444444",b=a.fontColor?a.fontColor:"black",E={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};a.nodeType&&(E={"stroke-width":1});let S={x:a.x,y:a.y,fill:w,stroke:y,width:a.width,height:a.height,rx:2.5,ry:2.5,attrs:E};Sde(p,S);let N=f.boundaryFont();N.fontWeight="bold",N.fontSize=N.fontSize+2,N.fontColor=b,w5(f)(a.label.text,p,a.x,a.y+a.label.Y,a.width,a.height,{fill:"#444444"},N),a.type&&a.type.text!==""&&(N=f.boundaryFont(),N.fontColor=b,w5(f)(a.type.text,p,a.x,a.y+a.type.Y,a.width,a.height,{fill:"#444444"},N)),a.descr&&a.descr.text!==""&&(N=f.boundaryFont(),N.fontSize=N.fontSize-2,N.fontColor=b,w5(f)(a.descr.text,p,a.x,a.y+a.descr.Y,a.width,a.height,{fill:"#444444"},N))},qLt=function(i,a,f){var R;let p=a.bgColor?a.bgColor:f[a.typeC4Shape.text+"_bg_color"],w=a.borderColor?a.borderColor:f[a.typeC4Shape.text+"_border_color"],y=a.fontColor?a.fontColor:"#FFFFFF",b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(a.typeC4Shape.text){case"person":b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}const E=i.append("g");E.attr("class","person-man");const S=jOe();switch(a.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":S.x=a.x,S.y=a.y,S.fill=p,S.width=a.width,S.height=a.height,S.stroke=w,S.rx=2.5,S.ry=2.5,S.attrs={"stroke-width":.5},Sde(E,S);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":E.append("path").attr("fill",p).attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2).replaceAll("height",a.height)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":E.append("path").attr("fill",p).attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("width",a.width).replaceAll("half",a.height/2)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",a.x+a.width).replaceAll("starty",a.y).replaceAll("half",a.height/2));break}let N=JLt(f,a.typeC4Shape.text);switch(E.append("text").attr("fill",y).attr("font-family",N.fontFamily).attr("font-size",N.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",a.typeC4Shape.width).attr("x",a.x+a.width/2-a.typeC4Shape.width/2).attr("y",a.y+a.typeC4Shape.Y).text("<<"+a.typeC4Shape.text+">>"),a.typeC4Shape.text){case"person":case"external_person":FOe(E,48,48,a.x+a.width/2-24,a.y+a.image.Y,b);break}let B=f[a.typeC4Shape.text+"Font"]();return B.fontWeight="bold",B.fontSize=B.fontSize+2,B.fontColor=y,w5(f)(a.label.text,E,a.x,a.y+a.label.Y,a.width,a.height,{fill:y},B),B=f[a.typeC4Shape.text+"Font"](),B.fontColor=y,a.techn&&((R=a.techn)==null?void 0:R.text)!==""?w5(f)(a.techn.text,E,a.x,a.y+a.techn.Y,a.width,a.height,{fill:y,"font-style":"italic"},B):a.type&&a.type.text!==""&&w5(f)(a.type.text,E,a.x,a.y+a.type.Y,a.width,a.height,{fill:y,"font-style":"italic"},B),a.descr&&a.descr.text!==""&&(B=f.personFont(),B.fontColor=y,w5(f)(a.descr.text,E,a.x,a.y+a.descr.Y,a.width,a.height,{fill:y},B)),a.height},VLt=function(i){i.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},ULt=function(i){i.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},WLt=function(i){i.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},KLt=function(i){i.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},YLt=function(i){i.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},XLt=function(i){i.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},QLt=function(i){i.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},ZLt=function(i){const f=i.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);f.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),f.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},jOe=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},JLt=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),w5=function(){function i(w,y,b,E,S,N,B){const R=y.append("text").attr("x",b+S/2).attr("y",E+N/2+5).style("text-anchor","middle").text(w);p(R,B)}function a(w,y,b,E,S,N,B,R){const{fontSize:j,fontFamily:$,fontWeight:V}=R,Q=w.split(Wa.lineBreakRegex);for(let oe=0;oe=this.data.widthLimit||p>=this.data.widthLimit||this.nextData.cnt>$Oe)&&(f=this.nextData.startx+a.margin+xs.nextLinePaddingX,w=this.nextData.stopy+a.margin*2,this.nextData.stopx=p=f+a.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=y=w+a.height,this.nextData.cnt=1),a.x=f,a.y=w,this.updateVal(this.data,"startx",f,Math.min),this.updateVal(this.data,"starty",w,Math.min),this.updateVal(this.data,"stopx",p,Math.max),this.updateVal(this.data,"stopy",y,Math.max),this.updateVal(this.nextData,"startx",f,Math.min),this.updateVal(this.nextData,"starty",w,Math.min),this.updateVal(this.nextData,"stopx",p,Math.max),this.updateVal(this.nextData,"stopy",y,Math.max)}init(a){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},Lde(a.db.getConfig())}bumpLastMargin(a){this.data.stopx+=a,this.data.stopy+=a}}const Lde=function(i){nd(xs,i),i.fontFamily&&(xs.personFontFamily=xs.systemFontFamily=xs.messageFontFamily=i.fontFamily),i.fontSize&&(xs.personFontSize=xs.systemFontSize=xs.messageFontSize=i.fontSize),i.fontWeight&&(xs.personFontWeight=xs.systemFontWeight=xs.messageFontWeight=i.fontWeight)},ZN=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),FW=i=>({fontFamily:i.boundaryFontFamily,fontSize:i.boundaryFontSize,fontWeight:i.boundaryFontWeight}),eMt=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight});function Jw(i,a,f,p,w){if(!a[i].width)if(f)a[i].text=NIe(a[i].text,w,p),a[i].textLines=a[i].text.split(Wa.lineBreakRegex).length,a[i].width=w,a[i].height=ode(a[i].text,p);else{let y=a[i].text.split(Wa.lineBreakRegex);a[i].textLines=y.length;let b=0;a[i].height=0,a[i].width=0;for(const E of y)a[i].width=Math.max(s3(E,p),a[i].width),b=ode(E,p),a[i].height=a[i].height+b}}const zOe=function(i,a,f){a.x=f.data.startx,a.y=f.data.starty,a.width=f.data.stopx-f.data.startx,a.height=f.data.stopy-f.data.starty,a.label.y=xs.c4ShapeMargin-35;let p=a.wrap&&xs.wrap,w=FW(xs);w.fontSize=w.fontSize+2,w.fontWeight="bold";let y=s3(a.label.text,w);Jw("label",a,p,w,y),c3.drawBoundary(i,a,xs)},GOe=function(i,a,f,p){let w=0;for(const y of p){w=0;const b=f[y];let E=ZN(xs,b.typeC4Shape.text);switch(E.fontSize=E.fontSize-2,b.typeC4Shape.width=s3("<<"+b.typeC4Shape.text+">>",E),b.typeC4Shape.height=E.fontSize+2,b.typeC4Shape.Y=xs.c4ShapePadding,w=b.typeC4Shape.Y+b.typeC4Shape.height-4,b.image={width:0,height:0,Y:0},b.typeC4Shape.text){case"person":case"external_person":b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height;break}b.sprite&&(b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height);let S=b.wrap&&xs.wrap,N=xs.width-xs.c4ShapePadding*2,B=ZN(xs,b.typeC4Shape.text);if(B.fontSize=B.fontSize+2,B.fontWeight="bold",Jw("label",b,S,B,N),b.label.Y=w+8,w=b.label.Y+b.label.height,b.type&&b.type.text!==""){b.type.text="["+b.type.text+"]";let $=ZN(xs,b.typeC4Shape.text);Jw("type",b,S,$,N),b.type.Y=w+5,w=b.type.Y+b.type.height}else if(b.techn&&b.techn.text!==""){b.techn.text="["+b.techn.text+"]";let $=ZN(xs,b.techn.text);Jw("techn",b,S,$,N),b.techn.Y=w+5,w=b.techn.Y+b.techn.height}let R=w,j=b.label.width;if(b.descr&&b.descr.text!==""){let $=ZN(xs,b.typeC4Shape.text);Jw("descr",b,S,$,N),b.descr.Y=w+20,w=b.descr.Y+b.descr.height,j=Math.max(b.label.width,b.descr.width),R=w-b.descr.textLines*5}j=j+xs.c4ShapePadding,b.width=Math.max(b.width||xs.width,j,xs.width),b.height=Math.max(b.height||xs.height,R,xs.height),b.margin=b.margin||xs.c4ShapeMargin,i.insert(b),c3.drawC4Shape(a,b,xs)}i.bumpLastMargin(xs.c4ShapeMargin)};let Kb=class{constructor(a,f){this.x=a,this.y=f}},qOe=function(i,a){let f=i.x,p=i.y,w=a.x,y=a.y,b=f+i.width/2,E=p+i.height/2,S=Math.abs(f-w),N=Math.abs(p-y),B=N/S,R=i.height/i.width,j=null;return p==y&&fw?j=new Kb(f,E):f==w&&py&&(j=new Kb(b,p)),f>w&&p=B?j=new Kb(f,E+B*i.width/2):j=new Kb(b-S/N*i.height/2,p+i.height):f=B?j=new Kb(f+i.width,E+B*i.width/2):j=new Kb(b+S/N*i.height/2,p+i.height):fy?R>=B?j=new Kb(f+i.width,E-B*i.width/2):j=new Kb(b+i.height/2*S/N,p):f>w&&p>y&&(R>=B?j=new Kb(f,E-i.width/2*B):j=new Kb(b-i.height/2*S/N,p)),j},tMt=function(i,a){let f={x:0,y:0};f.x=a.x+a.width/2,f.y=a.y+a.height/2;let p=qOe(i,f);f.x=i.x+i.width/2,f.y=i.y+i.height/2;let w=qOe(a,f);return{startPoint:p,endPoint:w}};const nMt=function(i,a,f,p){let w=0;for(let y of a){w=w+1;let b=y.wrap&&xs.wrap,E=eMt(xs);p.db.getC4Type()==="C4Dynamic"&&(y.label.text=w+": "+y.label.text);let N=s3(y.label.text,E);Jw("label",y,b,E,N),y.techn&&y.techn.text!==""&&(N=s3(y.techn.text,E),Jw("techn",y,b,E,N)),y.descr&&y.descr.text!==""&&(N=s3(y.descr.text,E),Jw("descr",y,b,E,N));let B=f(y.from),R=f(y.to),j=tMt(B,R);y.startPoint=j.startPoint,y.endPoint=j.endPoint}c3.drawRels(i,a,xs)};function VOe(i,a,f,p,w){let y=new HOe(w);y.data.widthLimit=f.data.widthLimit/Math.min(Ade,p.length);for(let[b,E]of p.entries()){let S=0;E.image={width:0,height:0,Y:0},E.sprite&&(E.image.width=48,E.image.height=48,E.image.Y=S,S=E.image.Y+E.image.height);let N=E.wrap&&xs.wrap,B=FW(xs);if(B.fontSize=B.fontSize+2,B.fontWeight="bold",Jw("label",E,N,B,y.data.widthLimit),E.label.Y=S+8,S=E.label.Y+E.label.height,E.type&&E.type.text!==""){E.type.text="["+E.type.text+"]";let V=FW(xs);Jw("type",E,N,V,y.data.widthLimit),E.type.Y=S+5,S=E.type.Y+E.type.height}if(E.descr&&E.descr.text!==""){let V=FW(xs);V.fontSize=V.fontSize-2,Jw("descr",E,N,V,y.data.widthLimit),E.descr.Y=S+20,S=E.descr.Y+E.descr.height}if(b==0||b%Ade===0){let V=f.data.startx+xs.diagramMarginX,Q=f.data.stopy+xs.diagramMarginY+S;y.setData(V,V,Q,Q)}else{let V=y.data.stopx!==y.data.startx?y.data.stopx+xs.diagramMarginX:y.data.startx,Q=y.data.starty;y.setData(V,V,Q,Q)}y.name=E.alias;let R=w.db.getC4ShapeArray(E.alias),j=w.db.getC4ShapeKeys(E.alias);j.length>0&&GOe(y,i,R,j),a=E.alias;let $=w.db.getBoundarys(a);$.length>0&&VOe(i,a,y,$,w),E.alias!=="global"&&zOe(i,E,y),f.data.stopy=Math.max(y.data.stopy+xs.c4ShapeMargin,f.data.stopy),f.data.stopx=Math.max(y.data.stopx+xs.c4ShapeMargin,f.data.stopx),BW=Math.max(BW,f.data.stopx),RW=Math.max(RW,f.data.stopy)}}const UOe={drawPersonOrSystemArray:GOe,drawBoundary:zOe,setConf:Lde,draw:function(i,a,f,p){xs=Tt().c4;const w=Tt().securityLevel;let y;w==="sandbox"&&(y=Cr("#i"+a));const b=Cr(w==="sandbox"?y.nodes()[0].contentDocument.body:"body");let E=p.db;p.db.setWrap(xs.wrap),$Oe=E.getC4ShapeInRow(),Ade=E.getC4BoundaryInRow(),Fe.debug(`C:${JSON.stringify(xs,null,2)}`);const S=w==="sandbox"?b.select(`[id="${a}"]`):Cr(`[id="${a}"]`);c3.insertComputerIcon(S),c3.insertDatabaseIcon(S),c3.insertClockIcon(S);let N=new HOe(p);N.setData(xs.diagramMarginX,xs.diagramMarginX,xs.diagramMarginY,xs.diagramMarginY),N.data.widthLimit=screen.availWidth,BW=xs.diagramMarginX,RW=xs.diagramMarginY;const B=p.db.getTitle();let R=p.db.getBoundarys("");VOe(S,"",N,R,p),c3.insertArrowHead(S),c3.insertArrowEnd(S),c3.insertArrowCrossHead(S),c3.insertArrowFilledHead(S),nMt(S,p.db.getRels(),p.db.getC4Shape,p),N.data.stopx=BW,N.data.stopy=RW;const j=N.data;let V=j.stopy-j.starty+2*xs.diagramMarginY;const oe=j.stopx-j.startx+2*xs.diagramMarginX;B&&S.append("text").text(B).attr("x",(j.stopx-j.startx)/2-4*xs.diagramMarginX).attr("y",j.starty+xs.diagramMarginY),Vw(S,V,oe,xs.useMaxWidth);const ce=B?60:0;S.attr("viewBox",j.startx-xs.diagramMarginX+" -"+(xs.diagramMarginY+ce)+" "+oe+" "+(V+ce)),Fe.debug("models:",j)}},rMt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:vLt,db:ROe,renderer:UOe,styles:i=>`.person { + stroke: ${i.personBorder}; + fill: ${i.personBkg}; + } +`,init:i=>{UOe.setConf(i.c4)}}},Symbol.toStringTag,{value:"Module"}));var Mde=function(){var i=function(ug,rs,Ps,Aa){for(Ps=Ps||{},Aa=ug.length;Aa--;Ps[ug[Aa]]=rs);return Ps},a=[1,9],f=[1,7],p=[1,6],w=[1,8],y=[1,20,21,22,23,38,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],b=[2,10],E=[1,20],S=[1,21],N=[1,22],B=[1,23],R=[1,30],j=[1,32],$=[1,33],V=[1,34],Q=[1,62],oe=[1,48],ce=[1,52],se=[1,36],ge=[1,37],ye=[1,38],ke=[1,39],Ae=[1,40],de=[1,56],ve=[1,63],te=[1,51],xe=[1,53],De=[1,55],he=[1,59],Ie=[1,60],ee=[1,41],rt=[1,42],me=[1,43],gt=[1,44],pe=[1,61],Et=[1,50],wt=[1,54],jt=[1,57],At=[1,58],Bt=[1,49],cn=[1,66],Nn=[1,71],Ot=[1,20,21,22,23,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],oi=[1,75],kt=[1,74],Dt=[1,76],vt=[20,21,23,81,82],Nt=[1,99],ze=[1,104],Xe=[1,107],Lt=[1,108],Ge=[1,101],Bn=[1,106],Oe=[1,109],Ri=[1,102],tn=[1,114],hi=[1,113],Sr=[1,103],Zn=[1,105],Xn=[1,110],ir=[1,111],Hn=[1,112],tr=[1,115],ha=[20,21,22,23,81,82],Zs=[20,21,22,23,53,81,82],ns=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,92,96,106,107,110,112,113,123,124,125,126,127,128],Hi=[20,21,23],Js=[20,21,23,52,66,67,81,82,92,96,106,107,110,112,113,123,124,125,126,127,128],Pc=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],Ga=[52,66,67,92,96,106,107,110,112,113,123,124,125,126,127,128],ws=[1,150],Oi=[1,158],Er=[1,159],br=[1,160],Dr=[1,161],Vn=[1,145],qi=[1,146],yn=[1,141],Bc=[1,142],jn=[1,153],Ms=[1,154],Pa=[1,155],Ta=[1,156],_a=[1,157],ka=[1,162],Qi=[1,163],ea=[1,148],Ca=[1,151],Sa=[1,147],Ka=[1,144],cg=[20,21,22,23,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],Gc=[1,166],Dh=[20,21,22,23,26,52,66,67,92,106,107,110,112,113,123,124,125,126,127,128],Es=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,87,88,89,90,91,92,93,96,106,107,110,112,113,114,115,123,124,125,126,127,128],lp=[12,21,22,24],sd=[22,107],sh=[1,251],Ai=[1,246],nn=[1,247],Tr=[1,255],ai=[1,252],Ns=[1,249],mc=[1,248],yu=[1,250],Mo=[1,253],ku=[1,254],Ih=[1,256],qf=[1,274],lx=[20,21,23,107],ad=[20,21,22,23,66,67,87,103,106,107,110,111,112,113,114],b3={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,vertex:51,AMP:52,STYLE_SEPARATOR:53,idString:54,DOUBLECIRCLESTART:55,DOUBLECIRCLEEND:56,PS:57,PE:58,"(-":59,"-)":60,STADIUMSTART:61,STADIUMEND:62,SUBROUTINESTART:63,SUBROUTINEEND:64,VERTEX_WITH_PROPS_START:65,ALPHA:66,COLON:67,PIPE:68,CYLINDERSTART:69,CYLINDEREND:70,DIAMOND_START:71,DIAMOND_STOP:72,TAGEND:73,TRAPSTART:74,TRAPEND:75,INVTRAPSTART:76,INVTRAPEND:77,linkStatement:78,arrowText:79,TESTSTR:80,START_LINK:81,LINK:82,textToken:83,STR:84,MD_STR:85,keywords:86,STYLE:87,LINKSTYLE:88,CLASSDEF:89,CLASS:90,CLICK:91,DOWN:92,UP:93,textNoTags:94,textNoTagsToken:95,DEFAULT:96,stylesOpt:97,alphaNum:98,CALLBACKNAME:99,CALLBACKARGS:100,HREF:101,LINK_TARGET:102,HEX:103,numList:104,INTERPOLATE:105,NUM:106,COMMA:107,style:108,styleComponent:109,MINUS:110,UNIT:111,BRKT:112,DOT:113,PCT:114,TAGSTART:115,alphaNumToken:116,idStringToken:117,alphaNumStatement:118,direction_tb:119,direction_bt:120,direction_rl:121,direction_lr:122,PUNCTUATION:123,UNICODE_TEXT:124,PLUS:125,EQUALS:126,MULT:127,UNDERSCORE:128,graphCodeTokens:129,ARROW_CROSS:130,ARROW_POINT:131,ARROW_CIRCLE:132,ARROW_OPEN:133,QUOTE:134,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",52:"AMP",53:"STYLE_SEPARATOR",55:"DOUBLECIRCLESTART",56:"DOUBLECIRCLEEND",57:"PS",58:"PE",59:"(-",60:"-)",61:"STADIUMSTART",62:"STADIUMEND",63:"SUBROUTINESTART",64:"SUBROUTINEEND",65:"VERTEX_WITH_PROPS_START",66:"ALPHA",67:"COLON",68:"PIPE",69:"CYLINDERSTART",70:"CYLINDEREND",71:"DIAMOND_START",72:"DIAMOND_STOP",73:"TAGEND",74:"TRAPSTART",75:"TRAPEND",76:"INVTRAPSTART",77:"INVTRAPEND",80:"TESTSTR",81:"START_LINK",82:"LINK",84:"STR",85:"MD_STR",87:"STYLE",88:"LINKSTYLE",89:"CLASSDEF",90:"CLASS",91:"CLICK",92:"DOWN",93:"UP",96:"DEFAULT",99:"CALLBACKNAME",100:"CALLBACKARGS",101:"HREF",102:"LINK_TARGET",103:"HEX",105:"INTERPOLATE",106:"NUM",107:"COMMA",110:"MINUS",111:"UNIT",112:"BRKT",113:"DOT",114:"PCT",115:"TAGSTART",119:"direction_tb",120:"direction_bt",121:"direction_rl",122:"direction_lr",123:"PUNCTUATION",124:"UNICODE_TEXT",125:"PLUS",126:"EQUALS",127:"MULT",128:"UNDERSCORE",130:"ARROW_CROSS",131:"ARROW_POINT",132:"ARROW_CIRCLE",133:"ARROW_OPEN",134:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[39,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[94,1],[94,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[104,1],[104,3],[97,1],[97,3],[108,1],[108,2],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[95,1],[95,1],[95,1],[95,1],[54,1],[54,2],[98,1],[98,2],[118,1],[118,1],[118,1],[118,1],[43,1],[43,1],[43,1],[43,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1]],performAction:function(rs,Ps,Aa,pi,Rc,_t,hp){var Gt=_t.length-1;switch(Rc){case 5:pi.parseDirective("%%{","open_directive");break;case 6:pi.parseDirective(_t[Gt],"type_directive");break;case 7:_t[Gt]=_t[Gt].trim().replace(/'/g,'"'),pi.parseDirective(_t[Gt],"arg_directive");break;case 8:pi.parseDirective("}%%","close_directive","flowchart");break;case 10:this.$=[];break;case 11:(!Array.isArray(_t[Gt])||_t[Gt].length>0)&&_t[Gt-1].push(_t[Gt]),this.$=_t[Gt-1];break;case 12:case 97:case 153:case 155:case 156:this.$=_t[Gt];break;case 19:pi.setDirection("TB"),this.$="TB";break;case 20:pi.setDirection(_t[Gt-1]),this.$=_t[Gt-1];break;case 35:this.$=_t[Gt-1].nodes;break;case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 41:this.$=pi.addSubGraph(_t[Gt-6],_t[Gt-1],_t[Gt-4]);break;case 42:this.$=pi.addSubGraph(_t[Gt-3],_t[Gt-1],_t[Gt-3]);break;case 43:this.$=pi.addSubGraph(void 0,_t[Gt-1],void 0);break;case 45:this.$=_t[Gt].trim(),pi.setAccTitle(this.$);break;case 46:case 47:this.$=_t[Gt].trim(),pi.setAccDescription(this.$);break;case 51:pi.addLink(_t[Gt-2].stmt,_t[Gt],_t[Gt-1]),this.$={stmt:_t[Gt],nodes:_t[Gt].concat(_t[Gt-2].nodes)};break;case 52:pi.addLink(_t[Gt-3].stmt,_t[Gt-1],_t[Gt-2]),this.$={stmt:_t[Gt-1],nodes:_t[Gt-1].concat(_t[Gt-3].nodes)};break;case 53:this.$={stmt:_t[Gt-1],nodes:_t[Gt-1]};break;case 54:this.$={stmt:_t[Gt],nodes:_t[Gt]};break;case 55:this.$=[_t[Gt]];break;case 56:this.$=_t[Gt-4].concat(_t[Gt]);break;case 57:this.$=[_t[Gt-2]],pi.setClass(_t[Gt-2],_t[Gt]);break;case 58:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"square");break;case 59:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"doublecircle");break;case 60:this.$=_t[Gt-5],pi.addVertex(_t[Gt-5],_t[Gt-2],"circle");break;case 61:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"ellipse");break;case 62:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"stadium");break;case 63:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"subroutine");break;case 64:this.$=_t[Gt-7],pi.addVertex(_t[Gt-7],_t[Gt-1],"rect",void 0,void 0,void 0,Object.fromEntries([[_t[Gt-5],_t[Gt-3]]]));break;case 65:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"cylinder");break;case 66:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"round");break;case 67:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"diamond");break;case 68:this.$=_t[Gt-5],pi.addVertex(_t[Gt-5],_t[Gt-2],"hexagon");break;case 69:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"odd");break;case 70:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"trapezoid");break;case 71:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"inv_trapezoid");break;case 72:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"lean_right");break;case 73:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"lean_left");break;case 74:this.$=_t[Gt],pi.addVertex(_t[Gt]);break;case 75:_t[Gt-1].text=_t[Gt],this.$=_t[Gt-1];break;case 76:case 77:_t[Gt-2].text=_t[Gt-1],this.$=_t[Gt-2];break;case 78:this.$=_t[Gt];break;case 79:var ff=pi.destructLink(_t[Gt],_t[Gt-2]);this.$={type:ff.type,stroke:ff.stroke,length:ff.length,text:_t[Gt-1]};break;case 80:var ff=pi.destructLink(_t[Gt]);this.$={type:ff.type,stroke:ff.stroke,length:ff.length};break;case 81:this.$=_t[Gt-1];break;case 82:this.$={text:_t[Gt],type:"text"};break;case 83:this.$={text:_t[Gt-1].text+""+_t[Gt],type:_t[Gt-1].type};break;case 84:this.$={text:_t[Gt],type:"text"};break;case 85:this.$={text:_t[Gt],type:"markdown"};break;case 98:case 154:this.$=_t[Gt-1]+""+_t[Gt];break;case 99:case 100:this.$=_t[Gt-4],pi.addClass(_t[Gt-2],_t[Gt]);break;case 101:this.$=_t[Gt-4],pi.setClass(_t[Gt-2],_t[Gt]);break;case 102:case 110:this.$=_t[Gt-1],pi.setClickEvent(_t[Gt-1],_t[Gt]);break;case 103:case 111:this.$=_t[Gt-3],pi.setClickEvent(_t[Gt-3],_t[Gt-2]),pi.setTooltip(_t[Gt-3],_t[Gt]);break;case 104:this.$=_t[Gt-2],pi.setClickEvent(_t[Gt-2],_t[Gt-1],_t[Gt]);break;case 105:this.$=_t[Gt-4],pi.setClickEvent(_t[Gt-4],_t[Gt-3],_t[Gt-2]),pi.setTooltip(_t[Gt-4],_t[Gt]);break;case 106:case 112:this.$=_t[Gt-1],pi.setLink(_t[Gt-1],_t[Gt]);break;case 107:case 113:this.$=_t[Gt-3],pi.setLink(_t[Gt-3],_t[Gt-2]),pi.setTooltip(_t[Gt-3],_t[Gt]);break;case 108:case 114:this.$=_t[Gt-3],pi.setLink(_t[Gt-3],_t[Gt-2],_t[Gt]);break;case 109:case 115:this.$=_t[Gt-5],pi.setLink(_t[Gt-5],_t[Gt-4],_t[Gt]),pi.setTooltip(_t[Gt-5],_t[Gt-2]);break;case 116:this.$=_t[Gt-4],pi.addVertex(_t[Gt-2],void 0,void 0,_t[Gt]);break;case 117:case 119:this.$=_t[Gt-4],pi.updateLink(_t[Gt-2],_t[Gt]);break;case 118:this.$=_t[Gt-4],pi.updateLink([_t[Gt-2]],_t[Gt]);break;case 120:this.$=_t[Gt-8],pi.updateLinkInterpolate([_t[Gt-6]],_t[Gt-2]),pi.updateLink([_t[Gt-6]],_t[Gt]);break;case 121:this.$=_t[Gt-8],pi.updateLinkInterpolate(_t[Gt-6],_t[Gt-2]),pi.updateLink(_t[Gt-6],_t[Gt]);break;case 122:this.$=_t[Gt-6],pi.updateLinkInterpolate([_t[Gt-4]],_t[Gt]);break;case 123:this.$=_t[Gt-6],pi.updateLinkInterpolate(_t[Gt-4],_t[Gt]);break;case 124:case 126:this.$=[_t[Gt]];break;case 125:case 127:_t[Gt-2].push(_t[Gt]),this.$=_t[Gt-2];break;case 129:this.$=_t[Gt-1]+_t[Gt];break;case 151:this.$=_t[Gt];break;case 152:this.$=_t[Gt-1]+""+_t[Gt];break;case 157:this.$="v";break;case 158:this.$="-";break;case 159:this.$={stmt:"dir",value:"TB"};break;case 160:this.$={stmt:"dir",value:"BT"};break;case 161:this.$={stmt:"dir",value:"RL"};break;case 162:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,5:3,6:5,12:a,16:4,21:f,22:p,24:w},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:a,16:4,21:f,22:p,24:w},i(y,b,{17:11}),{7:12,13:[1,13]},{16:14,21:f,22:p,24:w},{16:15,21:f,22:p,24:w},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:E,21:S,22:N,23:B,32:24,33:25,34:26,35:27,36:28,37:29,38:R,43:31,44:j,46:$,48:V,50:35,51:45,52:Q,54:46,66:oe,67:ce,87:se,88:ge,89:ye,90:ke,91:Ae,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,119:ee,120:rt,121:me,122:gt,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{8:64,10:[1,65],15:cn},i([10,15],[2,6]),i(y,[2,17]),i(y,[2,18]),i(y,[2,19]),{20:[1,68],21:[1,69],22:Nn,27:67,30:70},i(Ot,[2,11]),i(Ot,[2,12]),i(Ot,[2,13]),i(Ot,[2,14]),i(Ot,[2,15]),i(Ot,[2,16]),{9:72,20:oi,21:kt,23:Dt,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:oi,21:kt,23:Dt},{9:81,20:oi,21:kt,23:Dt},{9:82,20:oi,21:kt,23:Dt},{9:83,20:oi,21:kt,23:Dt},{9:84,20:oi,21:kt,23:Dt},{9:86,20:oi,21:kt,22:[1,85],23:Dt},i(Ot,[2,44]),{45:[1,87]},{47:[1,88]},i(Ot,[2,47]),i(vt,[2,54],{30:89,22:Nn}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:Nt,52:ze,66:Xe,67:Lt,84:[1,97],92:Ge,98:96,99:[1,94],101:[1,95],106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Ot,[2,159]),i(Ot,[2,160]),i(Ot,[2,161]),i(Ot,[2,162]),i(ha,[2,55],{53:[1,116]}),i(Zs,[2,74],{117:129,40:[1,117],52:Q,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:oe,67:ce,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt}),i(ns,[2,151]),i(ns,[2,176]),i(ns,[2,177]),i(ns,[2,178]),i(ns,[2,179]),i(ns,[2,180]),i(ns,[2,181]),i(ns,[2,182]),i(ns,[2,183]),i(ns,[2,184]),i(ns,[2,185]),i(ns,[2,186]),i(ns,[2,187]),i(ns,[2,188]),i(ns,[2,189]),i(ns,[2,190]),i(ns,[2,191]),{9:130,20:oi,21:kt,23:Dt},{11:131,14:[1,132]},i(Hi,[2,8]),i(y,[2,20]),i(y,[2,26]),i(y,[2,27]),{21:[1,133]},i(Js,[2,34],{30:134,22:Nn}),i(Ot,[2,35]),{50:135,51:45,52:Q,54:46,66:oe,67:ce,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},i(Pc,[2,48]),i(Pc,[2,49]),i(Pc,[2,50]),i(Ga,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:ws,24:Oi,26:Er,38:br,39:139,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i([52,66,67,68,80,92,96,106,107,110,112,113,123,124,125,126,127,128],[2,80]),i(Ot,[2,36]),i(Ot,[2,37]),i(Ot,[2,38]),i(Ot,[2,39]),i(Ot,[2,40]),{22:ws,24:Oi,26:Er,38:br,39:164,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(cg,b,{17:165}),i(Ot,[2,45]),i(Ot,[2,46]),i(vt,[2,53],{52:Gc}),{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:167,103:[1,168],106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{96:[1,169],104:170,106:[1,171]},{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,96:[1,172],98:173,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:174,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Hi,[2,102],{22:[1,175],100:[1,176]}),i(Hi,[2,106],{22:[1,177]}),i(Hi,[2,110],{116:100,118:179,22:[1,178],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr}),i(Hi,[2,112],{22:[1,180]}),i(Dh,[2,153]),i(Dh,[2,155]),i(Dh,[2,156]),i(Dh,[2,157]),i(Dh,[2,158]),i(Es,[2,163]),i(Es,[2,164]),i(Es,[2,165]),i(Es,[2,166]),i(Es,[2,167]),i(Es,[2,168]),i(Es,[2,169]),i(Es,[2,170]),i(Es,[2,171]),i(Es,[2,172]),i(Es,[2,173]),i(Es,[2,174]),i(Es,[2,175]),{52:Q,54:181,66:oe,67:ce,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{22:ws,24:Oi,26:Er,38:br,39:182,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:183,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:185,42:Dr,52:ze,57:[1,184],66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:186,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:187,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:188,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{66:[1,189]},{22:ws,24:Oi,26:Er,38:br,39:190,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:191,42:Dr,52:ze,66:Xe,67:Lt,71:[1,192],73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:193,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:194,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:195,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(ns,[2,152]),i(lp,[2,3]),{8:196,15:cn},{15:[2,7]},i(y,[2,28]),i(Js,[2,33]),i(vt,[2,51],{30:197,22:Nn}),i(Ga,[2,75],{22:[1,198]}),{22:[1,199]},{22:ws,24:Oi,26:Er,38:br,39:200,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,82:[1,201],83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Es,[2,82]),i(Es,[2,84]),i(Es,[2,85]),i(Es,[2,141]),i(Es,[2,142]),i(Es,[2,143]),i(Es,[2,144]),i(Es,[2,145]),i(Es,[2,146]),i(Es,[2,147]),i(Es,[2,148]),i(Es,[2,149]),i(Es,[2,150]),i(Es,[2,86]),i(Es,[2,87]),i(Es,[2,88]),i(Es,[2,89]),i(Es,[2,90]),i(Es,[2,91]),i(Es,[2,92]),i(Es,[2,93]),i(Es,[2,94]),i(Es,[2,95]),i(Es,[2,96]),{9:204,20:oi,21:kt,22:ws,23:Dt,24:Oi,26:Er,38:br,40:[1,203],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{18:18,19:19,20:E,21:S,22:N,23:B,32:24,33:25,34:26,35:27,36:28,37:29,38:R,42:[1,205],43:31,44:j,46:$,48:V,50:35,51:45,52:Q,54:46,66:oe,67:ce,87:se,88:ge,89:ye,90:ke,91:Ae,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,119:ee,120:rt,121:me,122:gt,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{22:Nn,30:206},{22:[1,207],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:179,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:[1,208]},{22:[1,209]},{22:[1,210],107:[1,211]},i(sd,[2,124]),{22:[1,212]},{22:[1,213],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:179,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:[1,214],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:179,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{84:[1,215]},i(Hi,[2,104],{22:[1,216]}),{84:[1,217],102:[1,218]},{84:[1,219]},i(Dh,[2,154]),{84:[1,220],102:[1,221]},i(ha,[2,57],{117:129,52:Q,66:oe,67:ce,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt}),{22:ws,24:Oi,26:Er,38:br,41:[1,222],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,56:[1,223],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:224,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,58:[1,225],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,60:[1,226],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,62:[1,227],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,64:[1,228],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{67:[1,229]},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,70:[1,230],73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,72:[1,231],73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:232,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,41:[1,233],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,75:[1,234],77:[1,235],81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,75:[1,237],77:[1,236],81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{9:238,20:oi,21:kt,23:Dt},i(vt,[2,52],{52:Gc}),i(Ga,[2,77]),i(Ga,[2,76]),{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,68:[1,239],73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Ga,[2,79]),i(Es,[2,83]),{22:ws,24:Oi,26:Er,38:br,39:240,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(cg,b,{17:241}),i(Ot,[2,43]),{51:242,52:Q,54:46,66:oe,67:ce,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{22:sh,66:Ai,67:nn,87:Tr,97:243,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:257,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:258,103:ai,105:[1,259],106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:260,103:ai,105:[1,261],106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{106:[1,262]},{22:sh,66:Ai,67:nn,87:Tr,97:263,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:264,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:265,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Hi,[2,103]),{84:[1,266]},i(Hi,[2,107],{22:[1,267]}),i(Hi,[2,108]),i(Hi,[2,111]),i(Hi,[2,113],{22:[1,268]}),i(Hi,[2,114]),i(Zs,[2,58]),i(Zs,[2,59]),{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,58:[1,269],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Zs,[2,66]),i(Zs,[2,61]),i(Zs,[2,62]),i(Zs,[2,63]),{66:[1,270]},i(Zs,[2,65]),i(Zs,[2,67]),{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,72:[1,271],73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Zs,[2,69]),i(Zs,[2,70]),i(Zs,[2,72]),i(Zs,[2,71]),i(Zs,[2,73]),i(lp,[2,4]),i([22,52,66,67,92,96,106,107,110,112,113,123,124,125,126,127,128],[2,81]),{22:ws,24:Oi,26:Er,38:br,41:[1,272],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{18:18,19:19,20:E,21:S,22:N,23:B,32:24,33:25,34:26,35:27,36:28,37:29,38:R,42:[1,273],43:31,44:j,46:$,48:V,50:35,51:45,52:Q,54:46,66:oe,67:ce,87:se,88:ge,89:ye,90:ke,91:Ae,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,119:ee,120:rt,121:me,122:gt,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},i(ha,[2,56]),i(Hi,[2,116],{107:qf}),i(lx,[2,126],{109:275,22:sh,66:Ai,67:nn,87:Tr,103:ai,106:Ns,110:mc,111:yu,112:Mo,113:ku,114:Ih}),i(ad,[2,128]),i(ad,[2,130]),i(ad,[2,131]),i(ad,[2,132]),i(ad,[2,133]),i(ad,[2,134]),i(ad,[2,135]),i(ad,[2,136]),i(ad,[2,137]),i(ad,[2,138]),i(ad,[2,139]),i(ad,[2,140]),i(Hi,[2,117],{107:qf}),i(Hi,[2,118],{107:qf}),{22:[1,276]},i(Hi,[2,119],{107:qf}),{22:[1,277]},i(sd,[2,125]),i(Hi,[2,99],{107:qf}),i(Hi,[2,100],{107:qf}),i(Hi,[2,101],{116:100,118:179,26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr}),i(Hi,[2,105]),{102:[1,278]},{102:[1,279]},{58:[1,280]},{68:[1,281]},{72:[1,282]},{9:283,20:oi,21:kt,23:Dt},i(Ot,[2,42]),{22:sh,66:Ai,67:nn,87:Tr,103:ai,106:Ns,108:284,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},i(ad,[2,129]),{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:285,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:286,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Hi,[2,109]),i(Hi,[2,115]),i(Zs,[2,60]),{22:ws,24:Oi,26:Er,38:br,39:287,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Zs,[2,68]),i(cg,b,{17:288}),i(lx,[2,127],{109:275,22:sh,66:Ai,67:nn,87:Tr,103:ai,106:Ns,110:mc,111:yu,112:Mo,113:ku,114:Ih}),i(Hi,[2,122],{116:100,118:179,22:[1,289],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr}),i(Hi,[2,123],{116:100,118:179,22:[1,290],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr}),{22:ws,24:Oi,26:Er,38:br,41:[1,291],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{18:18,19:19,20:E,21:S,22:N,23:B,32:24,33:25,34:26,35:27,36:28,37:29,38:R,42:[1,292],43:31,44:j,46:$,48:V,50:35,51:45,52:Q,54:46,66:oe,67:ce,87:se,88:ge,89:ye,90:ke,91:Ae,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,119:ee,120:rt,121:me,122:gt,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{22:sh,66:Ai,67:nn,87:Tr,97:293,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:294,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},i(Zs,[2,64]),i(Ot,[2,41]),i(Hi,[2,120],{107:qf}),i(Hi,[2,121],{107:qf})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],132:[2,7]},parseError:function(rs,Ps){if(Ps.recoverable)this.trace(rs);else{var Aa=new Error(rs);throw Aa.hash=Ps,Aa}},parse:function(rs){var Ps=this,Aa=[0],pi=[],Rc=[null],_t=[],hp=this.table,Gt="",ff=0,sm=0,m9=2,fp=1,N5=_t.slice.call(arguments,1),ah=Object.create(this.lexer),od={yy:{}};for(var P5 in this.yy)Object.prototype.hasOwnProperty.call(this.yy,P5)&&(od.yy[P5]=this.yy[P5]);ah.setInput(rs,od.yy),od.yy.lexer=ah,od.yy.parser=this,typeof ah.yylloc>"u"&&(ah.yylloc={});var B5=ah.yylloc;_t.push(B5);var y9=ah.options&&ah.options.ranges;typeof od.yy.parseError=="function"?this.parseError=od.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function vL(){var oh;return oh=pi.pop()||ah.lex()||fp,typeof oh!="number"&&(oh instanceof Array&&(pi=oh,oh=pi.pop()),oh=Ps.symbols_[oh]||oh),oh}for(var v1,dp,cd,am,ev={},om,yc,hx,Vo;;){if(dp=Aa[Aa.length-1],this.defaultActions[dp]?cd=this.defaultActions[dp]:((v1===null||typeof v1>"u")&&(v1=vL()),cd=hp[dp]&&hp[dp][v1]),typeof cd>"u"||!cd.length||!cd[0]){var fx="";Vo=[];for(om in hp[dp])this.terminals_[om]&&om>m9&&Vo.push("'"+this.terminals_[om]+"'");ah.showPosition?fx="Parse error on line "+(ff+1)+`: +`+ah.showPosition()+` +Expecting `+Vo.join(", ")+", got '"+(this.terminals_[v1]||v1)+"'":fx="Parse error on line "+(ff+1)+": Unexpected "+(v1==fp?"end of input":"'"+(this.terminals_[v1]||v1)+"'"),this.parseError(fx,{text:ah.match,token:this.terminals_[v1]||v1,line:ah.yylineno,loc:B5,expected:Vo})}if(cd[0]instanceof Array&&cd.length>1)throw new Error("Parse Error: multiple actions possible at state: "+dp+", token: "+v1);switch(cd[0]){case 1:Aa.push(v1),Rc.push(ah.yytext),_t.push(ah.yylloc),Aa.push(cd[1]),v1=null,sm=ah.yyleng,Gt=ah.yytext,ff=ah.yylineno,B5=ah.yylloc;break;case 2:if(yc=this.productions_[cd[1]][1],ev.$=Rc[Rc.length-yc],ev._$={first_line:_t[_t.length-(yc||1)].first_line,last_line:_t[_t.length-1].last_line,first_column:_t[_t.length-(yc||1)].first_column,last_column:_t[_t.length-1].last_column},y9&&(ev._$.range=[_t[_t.length-(yc||1)].range[0],_t[_t.length-1].range[1]]),am=this.performAction.apply(ev,[Gt,sm,ff,od.yy,cd[1],Rc,_t].concat(N5)),typeof am<"u")return am;yc&&(Aa=Aa.slice(0,-1*yc*2),Rc=Rc.slice(0,-1*yc),_t=_t.slice(0,-1*yc)),Aa.push(this.productions_[cd[1]][0]),Rc.push(ev.$),_t.push(ev._$),hx=hp[Aa[Aa.length-2]][Aa[Aa.length-1]],Aa.push(hx);break;case 3:return!0}}return!0}},bL=function(){var ug={EOF:1,parseError:function(Ps,Aa){if(this.yy.parser)this.yy.parser.parseError(Ps,Aa);else throw new Error(Ps)},setInput:function(rs,Ps){return this.yy=Ps||this.yy||{},this._input=rs,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var rs=this._input[0];this.yytext+=rs,this.yyleng++,this.offset++,this.match+=rs,this.matched+=rs;var Ps=rs.match(/(?:\r\n?|\n).*/g);return Ps?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),rs},unput:function(rs){var Ps=rs.length,Aa=rs.split(/(?:\r\n?|\n)/g);this._input=rs+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ps),this.offset-=Ps;var pi=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Aa.length-1&&(this.yylineno-=Aa.length-1);var Rc=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Aa?(Aa.length===pi.length?this.yylloc.first_column:0)+pi[pi.length-Aa.length].length-Aa[0].length:this.yylloc.first_column-Ps},this.options.ranges&&(this.yylloc.range=[Rc[0],Rc[0]+this.yyleng-Ps]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(rs){this.unput(this.match.slice(rs))},pastInput:function(){var rs=this.matched.substr(0,this.matched.length-this.match.length);return(rs.length>20?"...":"")+rs.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var rs=this.match;return rs.length<20&&(rs+=this._input.substr(0,20-rs.length)),(rs.substr(0,20)+(rs.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var rs=this.pastInput(),Ps=new Array(rs.length+1).join("-");return rs+this.upcomingInput()+` +`+Ps+"^"},test_match:function(rs,Ps){var Aa,pi,Rc;if(this.options.backtrack_lexer&&(Rc={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Rc.yylloc.range=this.yylloc.range.slice(0))),pi=rs[0].match(/(?:\r\n?|\n).*/g),pi&&(this.yylineno+=pi.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:pi?pi[pi.length-1].length-pi[pi.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+rs[0].length},this.yytext+=rs[0],this.match+=rs[0],this.matches=rs,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(rs[0].length),this.matched+=rs[0],Aa=this.performAction.call(this,this.yy,this,Ps,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Aa)return Aa;if(this._backtrack){for(var _t in Rc)this[_t]=Rc[_t];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var rs,Ps,Aa,pi;this._more||(this.yytext="",this.match="");for(var Rc=this._currentRules(),_t=0;_tPs[0].length)){if(Ps=Aa,pi=_t,this.options.backtrack_lexer){if(rs=this.test_match(Aa,Rc[_t]),rs!==!1)return rs;if(this._backtrack){Ps=!1;continue}else return!1}else if(!this.options.flex)break}return Ps?(rs=this.test_match(Ps,Rc[pi]),rs!==!1?rs:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ps=this.next();return Ps||this.lex()},begin:function(Ps){this.conditionStack.push(Ps)},popState:function(){var Ps=this.conditionStack.length-1;return Ps>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ps){return Ps=this.conditionStack.length-1-Math.abs(Ps||0),Ps>=0?this.conditionStack[Ps]:"INITIAL"},pushState:function(Ps){this.begin(Ps)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(Ps,Aa,pi,Rc){switch(pi){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:return this.begin("acc_title"),44;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),46;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:this.begin("md_string");break;case 13:return"MD_STR";case 14:this.popState();break;case 15:this.begin("string");break;case 16:this.popState();break;case 17:return"STR";case 18:return 87;case 19:return 96;case 20:return 88;case 21:return 105;case 22:return 89;case 23:return 90;case 24:this.begin("href");break;case 25:this.popState();break;case 26:return 101;case 27:this.begin("callbackname");break;case 28:this.popState();break;case 29:this.popState(),this.begin("callbackargs");break;case 30:return 99;case 31:this.popState();break;case 32:return 100;case 33:this.begin("click");break;case 34:this.popState();break;case 35:return 91;case 36:return Ps.lex.firstGraph()&&this.begin("dir"),24;case 37:return Ps.lex.firstGraph()&&this.begin("dir"),24;case 38:return Ps.lex.firstGraph()&&this.begin("dir"),24;case 39:return 38;case 40:return 42;case 41:return 102;case 42:return 102;case 43:return 102;case 44:return 102;case 45:return this.popState(),25;case 46:return this.popState(),26;case 47:return this.popState(),26;case 48:return this.popState(),26;case 49:return this.popState(),26;case 50:return this.popState(),26;case 51:return this.popState(),26;case 52:return this.popState(),26;case 53:return this.popState(),26;case 54:return this.popState(),26;case 55:return this.popState(),26;case 56:return 119;case 57:return 120;case 58:return 121;case 59:return 122;case 60:return 106;case 61:return 112;case 62:return 53;case 63:return 67;case 64:return 52;case 65:return 20;case 66:return 107;case 67:return 127;case 68:return 82;case 69:return 82;case 70:return 82;case 71:return 82;case 72:return 81;case 73:return 81;case 74:return 81;case 75:return 59;case 76:return 60;case 77:return 61;case 78:return 62;case 79:return 63;case 80:return 64;case 81:return 65;case 82:return 69;case 83:return 70;case 84:return 55;case 85:return 56;case 86:return 110;case 87:return 113;case 88:return 128;case 89:return 125;case 90:return 114;case 91:return 126;case 92:return 126;case 93:return 115;case 94:return 73;case 95:return 93;case 96:return"SEP";case 97:return 92;case 98:return 66;case 99:return 75;case 100:return 74;case 101:return 77;case 102:return 76;case 103:return 123;case 104:return 124;case 105:return 68;case 106:return 57;case 107:return 58;case 108:return 40;case 109:return 41;case 110:return 71;case 111:return 72;case 112:return 134;case 113:return 21;case 114:return 22;case 115:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[31,32],inclusive:!1},callbackname:{rules:[28,29,30],inclusive:!1},href:{rules:[25,26],inclusive:!1},click:{rules:[34,35],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[45,46,47,48,49,50,51,52,53,54,55],inclusive:!1},acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},md_string:{rules:[13,14],inclusive:!1},string:{rules:[16,17],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,15,18,19,20,21,22,23,24,27,33,36,37,38,39,40,41,42,43,44,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115],inclusive:!0}}};return ug}();b3.lexer=bL;function im(){this.yy={}}return im.prototype=b3,b3.Parser=im,new im}();Mde.parser=Mde;const Dde=Mde,iMt="flowchart-";let WOe=0,Ide=Tt(),_l={},r9=[],YA={},m5=[],jW={},Ode={},$W=0,Nde=!0,Yb,HW,zW=[];const GW=i=>Wa.sanitizeText(i,Ide),KOe=function(i,a,f){rd.parseDirective(this,i,a,f)},JN=function(i){const a=Object.keys(_l);for(const f of a)if(_l[f].id===i)return _l[f].domId;return i},YOe=function(i,a,f,p,w,y,b={}){let E,S=i;S!==void 0&&S.trim().length!==0&&(_l[S]===void 0&&(_l[S]={id:S,labelType:"text",domId:iMt+S+"-"+WOe,styles:[],classes:[]}),WOe++,a!==void 0?(Ide=Tt(),E=GW(a.text.trim()),_l[S].labelType=a.type,E[0]==='"'&&E[E.length-1]==='"'&&(E=E.substring(1,E.length-1)),_l[S].text=E):_l[S].text===void 0&&(_l[S].text=i),f!==void 0&&(_l[S].type=f),p!=null&&p.forEach(function(N){_l[S].styles.push(N)}),w!=null&&w.forEach(function(N){_l[S].classes.push(N)}),y!==void 0&&(_l[S].dir=y),_l[S].props===void 0?_l[S].props=b:b!==void 0&&Object.assign(_l[S].props,b))},XOe=function(i,a,f){const y={start:i,end:a,type:void 0,text:"",labelType:"text"};Fe.info("abc78 Got edge...",y);const b=f.text;b!==void 0&&(y.text=GW(b.text.trim()),y.text[0]==='"'&&y.text[y.text.length-1]==='"'&&(y.text=y.text.substring(1,y.text.length-1)),y.labelType=b.type),f!==void 0&&(y.type=f.type,y.stroke=f.stroke,y.length=f.length),r9.push(y)},QOe=function(i,a,f){Fe.info("addLink (abc78)",i,a,f);let p,w;for(p=0;p/)&&(Yb="LR"),Yb.match(/.*v/)&&(Yb="TB"),Yb==="TD"&&(Yb="TB")},qW=function(i,a){i.split(",").forEach(function(f){let p=f;_l[p]!==void 0&&_l[p].classes.push(a),jW[p]!==void 0&&jW[p].classes.push(a)})},sMt=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(Ode[HW==="gen-1"?JN(f):f]=GW(a))})},aMt=function(i,a,f){let p=JN(i);if(Tt().securityLevel!=="loose"||a===void 0)return;let w=[];if(typeof f=="string"){w=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let y=0;y")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),Cr(this).classed("hover",!1)})};zW.push(lNe);const hNe=function(i="gen-1"){_l={},YA={},r9=[],zW=[lNe],m5=[],jW={},$W=0,Ode=[],Nde=!0,HW=i,rp()},fNe=i=>{HW=i||"gen-2"},dNe=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},gNe=function(i,a,f){let p=i.text.trim(),w=f.text;i===f&&f.text.match(/\s/)&&(p=void 0);function y(B){const R={boolean:{},number:{},string:{}},j=[];let $;return{nodeList:B.filter(function(Q){const oe=typeof Q;return Q.stmt&&Q.stmt==="dir"?($=Q.value,!1):Q.trim()===""?!1:oe in R?R[oe].hasOwnProperty(Q)?!1:R[oe][Q]=!0:j.includes(Q)?!1:j.push(Q)}),dir:$}}let b=[];const{nodeList:E,dir:S}=y(b.concat.apply(b,a));if(b=E,HW==="gen-1")for(let B=0;B2e3)return;if(pNe[eP]=a,m5[a].id===i)return{result:!0,count:0};let p=0,w=1;for(;p=0){const b=bNe(i,y);if(b.result)return{result:!0,count:w+b.count};w=w+b.count}p=p+1}return{result:!1,count:w}},vNe=function(i){return pNe[i]},wNe=function(){eP=-1,m5.length>0&&bNe("none",m5.length-1)},mNe=function(){return m5},yNe=()=>Nde?(Nde=!1,!0):!1,cMt=i=>{let a=i.trim(),f="arrow_open";switch(a[0]){case"<":f="arrow_point",a=a.slice(1);break;case"x":f="arrow_cross",a=a.slice(1);break;case"o":f="arrow_circle",a=a.slice(1);break}let p="normal";return a.includes("=")&&(p="thick"),a.includes(".")&&(p="dotted"),{type:f,stroke:p}},uMt=(i,a)=>{const f=a.length;let p=0;for(let w=0;w{const a=i.trim();let f=a.slice(0,-1),p="arrow_open";switch(a.slice(-1)){case"x":p="arrow_cross",a[0]==="x"&&(p="double_"+p,f=f.slice(1));break;case">":p="arrow_point",a[0]==="<"&&(p="double_"+p,f=f.slice(1));break;case"o":p="arrow_circle",a[0]==="o"&&(p="double_"+p,f=f.slice(1));break}let w="normal",y=f.length-1;f[0]==="="&&(w="thick"),f[0]==="~"&&(w="invisible");let b=uMt(".",f);return b&&(w="dotted",y=b),{type:p,stroke:w,length:y}},kNe=(i,a)=>{const f=lMt(i);let p;if(a){if(p=cMt(a),p.stroke!==f.stroke)return{type:"INVALID",stroke:"INVALID"};if(p.type==="arrow_open")p.type=f.type;else{if(p.type!==f.type)return{type:"INVALID",stroke:"INVALID"};p.type="double_"+p.type}return p.type==="double_arrow"&&(p.type="double_arrow_point"),p.length=f.length,p}return f},xNe=(i,a)=>{let f=!1;return i.forEach(p=>{p.nodes.indexOf(a)>=0&&(f=!0)}),f},ENe=(i,a)=>{const f=[];return i.nodes.forEach((p,w)=>{xNe(a,p)||f.push(i.nodes[w])}),{nodes:f}},TNe={firstGraph:yNe},ix={parseDirective:KOe,defaultConfig:()=>OA.flowchart,setAccTitle:ip,getAccTitle:L2,getAccDescription:D2,setAccDescription:M2,addVertex:YOe,lookUpDomId:JN,addLink:QOe,updateLinkInterpolate:ZOe,updateLink:JOe,addClass:eNe,setDirection:tNe,setClass:qW,setTooltip:sMt,getTooltip:rNe,setClickEvent:iNe,setLink:nNe,bindFunctions:sNe,getDirection:aNe,getVertices:oNe,getEdges:cNe,getClasses:uNe,clear:hNe,setGen:fNe,defaultStyle:dNe,addSubGraph:gNe,getDepthFirstPos:vNe,indexNodes:wNe,getSubGraphs:mNe,destructLink:kNe,lex:TNe,exists:xNe,makeUniq:ENe,setDiagramTitle:Uw,getDiagramTitle:Ww},hMt=Object.freeze(Object.defineProperty({__proto__:null,addClass:eNe,addLink:QOe,addSingleLink:XOe,addSubGraph:gNe,addVertex:YOe,bindFunctions:sNe,clear:hNe,default:ix,defaultStyle:dNe,destructLink:kNe,firstGraph:yNe,getClasses:uNe,getDepthFirstPos:vNe,getDirection:aNe,getEdges:cNe,getSubGraphs:mNe,getTooltip:rNe,getVertices:oNe,indexNodes:wNe,lex:TNe,lookUpDomId:JN,parseDirective:KOe,setClass:qW,setClickEvent:iNe,setDirection:tNe,setGen:fNe,setLink:nNe,updateLink:JOe,updateLinkInterpolate:ZOe},Symbol.toStringTag,{value:"Module"}));var fMt="[object Symbol]";function i9(i){return typeof i=="symbol"||a3(i)&&QE(i)==fMt}function XA(i,a){for(var f=-1,p=i==null?0:i.length,w=Array(p);++f0){if(++a>=LMt)return arguments[0]}else a=0;return i.apply(void 0,arguments)}}function QA(i){return function(){return i}}var OMt=function(){try{var i=JE(Object,"defineProperty");return i({},"",{}),i}catch{}}();const UW=OMt;var NMt=UW?function(i,a){return UW(i,"toString",{configurable:!0,enumerable:!1,value:QA(a),writable:!0})}:s9,PMt=IMt(NMt);const INe=PMt;function ONe(i,a){for(var f=-1,p=i==null?0:i.length;++f-1}var $Mt=9007199254740991,HMt=/^(?:0|[1-9]\d*)$/;function WW(i,a){var f=typeof i;return a=a??$Mt,!!a&&(f=="number"||f!="symbol"&&HMt.test(i))&&i>-1&&i%1==0&&i1?f[w-1]:void 0,b=w>2?f[2]:void 0;for(y=i.length>3&&typeof y=="function"?(w--,y):void 0,b&&nP(f[0],f[1],b)&&(y=w<3?void 0:y,w=1),a=Object(a);++p0&&f(E)?a>1?JW(E,a-1,f,p,w):Bde(w,E):p||(w[w.length]=E)}return w}function ZA(i){var a=i==null?0:i.length;return a?JW(i,1):[]}function uDt(i){return INe(BNe(i,void 0,ZA),i+"")}var lDt=fOe(Object.getPrototypeOf,Object);const Rde=lDt;var hDt="[object Object]",fDt=Function.prototype,dDt=Object.prototype,$Ne=fDt.toString,gDt=dDt.hasOwnProperty,pDt=$Ne.call(Object);function HNe(i){if(!a3(i)||QE(i)!=hDt)return!1;var a=Rde(i);if(a===null)return!0;var f=gDt.call(a,"constructor")&&a.constructor;return typeof f=="function"&&f instanceof f&&$Ne.call(f)==pDt}function bDt(i,a,f,p){var w=-1,y=i==null?0:i.length;for(p&&y&&(f=i[++w]);++wE))return!1;var N=y.get(i),B=y.get(a);if(N&&B)return N==a&&B==i;var R=-1,j=!0,$=f&ZIt?new sP:void 0;for(y.set(i,a),y.set(a,i);++R2?a[2]:void 0;for(w&&nP(a[0],a[1],w)&&(p=1);++f-1?w[y?a[b]:b]:void 0}}var VOt=Math.max;function UOt(i,a,f){var p=i==null?0:i.length;if(!p)return-1;var w=f==null?0:TMt(f);return w<0&&(w=VOt(p+w,0)),NNe(i,sx(a),w)}var WOt=qOt(UOt);const Yde=WOt;function kPe(i,a){var f=-1,p=tx(i)?Array(i.length):[];return nK(i,function(w,y,b){p[++f]=a(w,y,b)}),p}function Hf(i,a){var f=$f(i)?XA:kPe;return f(i,sx(a))}function KOt(i,a){return i==null?i:qde(i,Kde(a),a9)}function YOt(i,a){return i&&Vde(i,Kde(a))}function XOt(i,a){return i>a}var QOt=Object.prototype,ZOt=QOt.hasOwnProperty;function JOt(i,a){return i!=null&&ZOt.call(i,a)}function Ja(i,a){return i!=null&&pPe(i,a,JOt)}function eNt(i,a){return XA(a,function(f){return i[f]})}function k5(i){return i==null?[]:eNt(i,N2(i))}function cf(i){return i===void 0}function xPe(i,a){return ia||y&&b&&S&&!E&&!N||p&&b&&S||!f&&S||!w)return 1;if(!p&&!y&&!N&&i=E)return S;var N=f[p];return S*(N=="desc"?-1:1)}}return i.index-a.index}function oNt(i,a,f){a.length?a=XA(a,function(y){return $f(y)?function(b){return ZW(b,y.length===1?y[0]:y)}:y}):a=[s9];var p=-1;a=XA(a,MW(sx));var w=kPe(i,function(y,b,E){var S=XA(a,function(N){return N(y)});return{criteria:S,index:++p,value:y}});return iNt(w,function(y,b){return aNt(y,b,f)})}function cNt(i,a){return rNt(i,a,function(f,p){return bPe(i,p)})}var uNt=uDt(function(i,a){return i==null?{}:cNt(i,a)});const oP=uNt;var lNt=Math.ceil,hNt=Math.max;function fNt(i,a,f,p){for(var w=-1,y=hNt(lNt((a-i)/(f||1)),0),b=Array(y);y--;)b[p?y:++w]=i,i+=f;return b}function dNt(i){return function(a,f,p){return p&&typeof p!="number"&&nP(a,f,p)&&(f=p=void 0),a=VW(a),f===void 0?(f=a,a=0):f=VW(f),p=p===void 0?a1&&nP(i,a[0],a[1])?a=[]:f>2&&nP(a[0],a[1],a[2])&&(a=[a[0]]),oNt(i,JW(a,1),[])});const uP=bNt;var vNt=1/0,wNt=GA&&1/Hde(new GA([,-0]))[1]==vNt?function(i){return new GA(i)}:AMt;const mNt=wNt;var yNt=200;function kNt(i,a,f){var p=-1,w=jMt,y=i.length,b=!0,E=[],S=E;if(f)b=!1,w=zOt;else if(y>=yNt){var N=a?null:mNt(i);if(N)return Hde(N);b=!1,w=oPe,S=new sP}else S=a?[]:E;e:for(;++p1?w.setNode(y,f):w.setNode(y)}),this}setNode(a,f){return Ja(this._nodes,a)?(arguments.length>1&&(this._nodes[a]=f),this):(this._nodes[a]=arguments.length>1?f:this._defaultNodeLabelFn(a),this._isCompound&&(this._parent[a]=u9,this._children[a]={},this._children[u9][a]=!0),this._in[a]={},this._preds[a]={},this._out[a]={},this._sucs[a]={},++this._nodeCount,this)}node(a){return this._nodes[a]}hasNode(a){return Ja(this._nodes,a)}removeNode(a){var f=this;if(Ja(this._nodes,a)){var p=function(w){f.removeEdge(f._edgeObjs[w])};delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],lr(this.children(a),function(w){f.setParent(w)}),delete this._children[a]),lr(N2(this._in[a]),p),delete this._in[a],delete this._preds[a],lr(N2(this._out[a]),p),delete this._out[a],delete this._sucs[a],--this._nodeCount}return this}setParent(a,f){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(cf(f))f=u9;else{f+="";for(var p=f;!cf(p);p=this.parent(p))if(p===a)throw new Error("Setting "+f+" as parent of "+a+" would create a cycle");this.setNode(f)}return this.setNode(a),this._removeFromParentsChildList(a),this._parent[a]=f,this._children[f][a]=!0,this}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}parent(a){if(this._isCompound){var f=this._parent[a];if(f!==u9)return f}}children(a){if(cf(a)&&(a=u9),this._isCompound){var f=this._children[a];if(f)return N2(f)}else{if(a===u9)return this.nodes();if(this.hasNode(a))return[]}}predecessors(a){var f=this._preds[a];if(f)return N2(f)}successors(a){var f=this._sucs[a];if(f)return N2(f)}neighbors(a){var f=this.predecessors(a);if(f)return ENt(f,this.successors(a))}isLeaf(a){var f;return this.isDirected()?f=this.successors(a):f=this.neighbors(a),f.length===0}filterNodes(a){var f=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});f.setGraph(this.graph());var p=this;lr(this._nodes,function(b,E){a(E)&&f.setNode(E,b)}),lr(this._edgeObjs,function(b){f.hasNode(b.v)&&f.hasNode(b.w)&&f.setEdge(b,p.edge(b))});var w={};function y(b){var E=p.parent(b);return E===void 0||f.hasNode(E)?(w[b]=E,E):E in w?w[E]:y(E)}return this._isCompound&&lr(f.nodes(),function(b){f.setParent(b,y(b))}),f}setDefaultEdgeLabel(a){return BA(a)||(a=QA(a)),this._defaultEdgeLabelFn=a,this}edgeCount(){return this._edgeCount}edges(){return k5(this._edgeObjs)}setPath(a,f){var p=this,w=arguments;return cP(a,function(y,b){return w.length>1?p.setEdge(y,b,f):p.setEdge(y,b),b}),this}setEdge(){var a,f,p,w,y=!1,b=arguments[0];typeof b=="object"&&b!==null&&"v"in b?(a=b.v,f=b.w,p=b.name,arguments.length===2&&(w=arguments[1],y=!0)):(a=b,f=arguments[1],p=arguments[3],arguments.length>2&&(w=arguments[2],y=!0)),a=""+a,f=""+f,cf(p)||(p=""+p);var E=lP(this._isDirected,a,f,p);if(Ja(this._edgeLabels,E))return y&&(this._edgeLabels[E]=w),this;if(!cf(p)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(a),this.setNode(f),this._edgeLabels[E]=y?w:this._defaultEdgeLabelFn(a,f,p);var S=ANt(this._isDirected,a,f,p);return a=S.v,f=S.w,Object.freeze(S),this._edgeObjs[E]=S,TPe(this._preds[f],a),TPe(this._sucs[a],f),this._in[f][E]=S,this._out[a][E]=S,this._edgeCount++,this}edge(a,f,p){var w=arguments.length===1?Jde(this._isDirected,arguments[0]):lP(this._isDirected,a,f,p);return this._edgeLabels[w]}hasEdge(a,f,p){var w=arguments.length===1?Jde(this._isDirected,arguments[0]):lP(this._isDirected,a,f,p);return Ja(this._edgeLabels,w)}removeEdge(a,f,p){var w=arguments.length===1?Jde(this._isDirected,arguments[0]):lP(this._isDirected,a,f,p),y=this._edgeObjs[w];return y&&(a=y.v,f=y.w,delete this._edgeLabels[w],delete this._edgeObjs[w],_Pe(this._preds[f],a),_Pe(this._sucs[a],f),delete this._in[f][w],delete this._out[a][w],this._edgeCount--),this}inEdges(a,f){var p=this._in[a];if(p){var w=k5(p);return f?y5(w,function(y){return y.v===f}):w}}outEdges(a,f){var p=this._out[a];if(p){var w=k5(p);return f?y5(w,function(y){return y.w===f}):w}}nodeEdges(a,f){var p=this.inEdges(a,f);if(p)return p.concat(this.outEdges(a,f))}}zf.prototype._nodeCount=0,zf.prototype._edgeCount=0;function TPe(i,a){i[a]?i[a]++:i[a]=1}function _Pe(i,a){--i[a]||delete i[a]}function lP(i,a,f,p){var w=""+a,y=""+f;if(!i&&w>y){var b=w;w=y,y=b}return w+EPe+y+EPe+(cf(p)?SNt:p)}function ANt(i,a,f,p){var w=""+a,y=""+f;if(!i&&w>y){var b=w;w=y,y=b}var E={v:w,w:y};return p&&(E.name=p),E}function Jde(i,a){return lP(i,a.v,a.w,a.name)}class LNt{constructor(){var a={};a._next=a._prev=a,this._sentinel=a}dequeue(){var a=this._sentinel,f=a._prev;if(f!==a)return CPe(f),f}enqueue(a){var f=this._sentinel;a._prev&&a._next&&CPe(a),a._next=f._next,f._next._prev=a,f._next=a,a._prev=f}toString(){for(var a=[],f=this._sentinel,p=f._prev;p!==f;)a.push(JSON.stringify(p,MNt)),p=p._prev;return"["+a.join(", ")+"]"}}function CPe(i){i._prev._next=i._next,i._next._prev=i._prev,delete i._next,delete i._prev}function MNt(i,a){if(i!=="_next"&&i!=="_prev")return a}var DNt=QA(1);function INt(i,a){if(i.nodeCount()<=1)return[];var f=NNt(i,a||DNt),p=ONt(f.graph,f.buckets,f.zeroIdx);return ZA(Hf(p,function(w){return i.outEdges(w.v,w.w)}))}function ONt(i,a,f){for(var p=[],w=a[a.length-1],y=a[0],b;i.nodeCount();){for(;b=y.dequeue();)e0e(i,a,f,b);for(;b=w.dequeue();)e0e(i,a,f,b);if(i.nodeCount()){for(var E=a.length-2;E>0;--E)if(b=a[E].dequeue(),b){p=p.concat(e0e(i,a,f,b,!0));break}}}return p}function e0e(i,a,f,p,w){var y=w?[]:void 0;return lr(i.inEdges(p.v),function(b){var E=i.edge(b),S=i.node(b.v);w&&y.push({v:b.v,w:b.w}),S.out-=E,t0e(a,f,S)}),lr(i.outEdges(p.v),function(b){var E=i.edge(b),S=b.w,N=i.node(S);N.in-=E,t0e(a,f,N)}),i.removeNode(p.v),y}function NNt(i,a){var f=new zf,p=0,w=0;lr(i.nodes(),function(E){f.setNode(E,{v:E,in:0,out:0})}),lr(i.edges(),function(E){var S=f.edge(E.v,E.w)||0,N=a(E),B=S+N;f.setEdge(E.v,E.w,B),w=Math.max(w,f.node(E.v).out+=N),p=Math.max(p,f.node(E.w).in+=N)});var y=c9(w+p+3).map(function(){return new LNt}),b=p+1;return lr(f.nodes(),function(E){t0e(y,b,f.node(E))}),{graph:f,buckets:y,zeroIdx:b}}function t0e(i,a,f){f.out?f.in?i[f.out-f.in+a].enqueue(f):i[i.length-1].enqueue(f):i[0].enqueue(f)}function PNt(i){var a=i.graph().acyclicer==="greedy"?INt(i,f(i)):BNt(i);lr(a,function(p){var w=i.edge(p);i.removeEdge(p),w.forwardName=p.name,w.reversed=!0,i.setEdge(p.w,p.v,w,sK("rev"))});function f(p){return function(w){return p.edge(w).weight}}}function BNt(i){var a=[],f={},p={};function w(y){Ja(p,y)||(p[y]=!0,f[y]=!0,lr(i.outEdges(y),function(b){Ja(f,b.w)?a.push(b):w(b.w)}),delete f[y])}return lr(i.nodes(),w),a}function RNt(i){lr(i.edges(),function(a){var f=i.edge(a);if(f.reversed){i.removeEdge(a);var p=f.forwardName;delete f.reversed,delete f.forwardName,i.setEdge(a.w,a.v,f,p)}})}function eL(i,a,f,p){var w;do w=sK(p);while(i.hasNode(w));return f.dummy=a,i.setNode(w,f),w}function FNt(i){var a=new zf().setGraph(i.graph());return lr(i.nodes(),function(f){a.setNode(f,i.node(f))}),lr(i.edges(),function(f){var p=a.edge(f.v,f.w)||{weight:0,minlen:1},w=i.edge(f);a.setEdge(f.v,f.w,{weight:p.weight+w.weight,minlen:Math.max(p.minlen,w.minlen)})}),a}function SPe(i){var a=new zf({multigraph:i.isMultigraph()}).setGraph(i.graph());return lr(i.nodes(),function(f){i.children(f).length||a.setNode(f,i.node(f))}),lr(i.edges(),function(f){a.setEdge(f,i.edge(f))}),a}function APe(i,a){var f=i.x,p=i.y,w=a.x-f,y=a.y-p,b=i.width/2,E=i.height/2;if(!w&&!y)throw new Error("Not possible to find intersection inside of the rectangle");var S,N;return Math.abs(y)*b>Math.abs(w)*E?(y<0&&(E=-E),S=E*w/y,N=E):(w<0&&(b=-b),S=b,N=b*y/w),{x:f+S,y:p+N}}function aK(i){var a=Hf(c9(MPe(i)+1),function(){return[]});return lr(i.nodes(),function(f){var p=i.node(f),w=p.rank;cf(w)||(a[w][p.order]=f)}),a}function jNt(i){var a=aP(Hf(i.nodes(),function(f){return i.node(f).rank}));lr(i.nodes(),function(f){var p=i.node(f);Ja(p,"rank")&&(p.rank-=a)})}function $Nt(i){var a=aP(Hf(i.nodes(),function(y){return i.node(y).rank})),f=[];lr(i.nodes(),function(y){var b=i.node(y).rank-a;f[b]||(f[b]=[]),f[b].push(y)});var p=0,w=i.graph().nodeRankFactor;lr(f,function(y,b){cf(y)&&b%w!==0?--p:p&&lr(y,function(E){i.node(E).rank+=p})})}function LPe(i,a,f,p){var w={width:0,height:0};return arguments.length>=4&&(w.rank=f,w.order=p),eL(i,"border",w,a)}function MPe(i){return o9(Hf(i.nodes(),function(a){var f=i.node(a).rank;if(!cf(f))return f}))}function HNt(i,a){var f={lhs:[],rhs:[]};return lr(i,function(p){a(p)?f.lhs.push(p):f.rhs.push(p)}),f}function zNt(i,a){var f=vPe();try{return a()}finally{console.log(i+" time: "+(vPe()-f)+"ms")}}function GNt(i,a){return a()}function qNt(i){function a(f){var p=i.children(f),w=i.node(f);if(p.length&&lr(p,a),Ja(w,"minRank")){w.borderLeft=[],w.borderRight=[];for(var y=w.minRank,b=w.maxRank+1;yb.lim&&(E=b,S=!0);var N=y5(a.edges(),function(B){return S===zPe(i,i.node(B.v),E)&&S!==zPe(i,i.node(B.w),E)});return Zde(N,function(B){return hP(a,B)})}function HPe(i,a,f,p){var w=f.v,y=f.w;i.removeEdge(w,y),i.setEdge(p.v,p.w,{}),a0e(i),s0e(i,a),sPt(i,a)}function sPt(i,a){var f=Yde(i.nodes(),function(w){return!a.node(w).parent}),p=rPt(i,f);p=p.slice(1),lr(p,function(w){var y=i.node(w).parent,b=a.edge(w,y),E=!1;b||(b=a.edge(y,w),E=!0),a.node(w).rank=a.node(y).rank+(E?b.minlen:-b.minlen)})}function aPt(i,a,f){return i.hasEdge(a,f)}function zPe(i,a,f){return f.low<=a.lim&&a.lim<=f.lim}function oPt(i){switch(i.graph().ranker){case"network-simplex":GPe(i);break;case"tight-tree":uPt(i);break;case"longest-path":cPt(i);break;default:GPe(i)}}var cPt=i0e;function uPt(i){i0e(i),NPe(i)}function GPe(i){l9(i)}function lPt(i){var a=eL(i,"root",{},"_root"),f=hPt(i),p=o9(k5(f))-1,w=2*p+1;i.graph().nestingRoot=a,lr(i.edges(),function(b){i.edge(b).minlen*=w});var y=fPt(i)+1;lr(i.children(),function(b){qPe(i,a,w,y,p,f,b)}),i.graph().nodeRankFactor=w}function qPe(i,a,f,p,w,y,b){var E=i.children(b);if(!E.length){b!==a&&i.setEdge(a,b,{weight:0,minlen:f});return}var S=LPe(i,"_bt"),N=LPe(i,"_bb"),B=i.node(b);i.setParent(S,b),B.borderTop=S,i.setParent(N,b),B.borderBottom=N,lr(E,function(R){qPe(i,a,f,p,w,y,R);var j=i.node(R),$=j.borderTop?j.borderTop:R,V=j.borderBottom?j.borderBottom:R,Q=j.borderTop?p:2*p,oe=$!==V?1:w-y[b]+1;i.setEdge(S,$,{weight:Q,minlen:oe,nestingEdge:!0}),i.setEdge(V,N,{weight:Q,minlen:oe,nestingEdge:!0})}),i.parent(b)||i.setEdge(a,S,{weight:0,minlen:w+y[b]})}function hPt(i){var a={};function f(p,w){var y=i.children(p);y&&y.length&&lr(y,function(b){f(b,w+1)}),a[p]=w}return lr(i.children(),function(p){f(p,1)}),a}function fPt(i){return cP(i.edges(),function(a,f){return a+i.edge(f).weight},0)}function dPt(i){var a=i.graph();i.removeNode(a.nestingRoot),delete a.nestingRoot,lr(i.edges(),function(f){var p=i.edge(f);p.nestingEdge&&i.removeEdge(f)})}function gPt(i,a,f){var p={},w;lr(f,function(y){for(var b=i.parent(y),E,S;b;){if(E=i.parent(b),E?(S=p[E],p[E]=b):(S=w,w=b),S&&S!==b){a.setEdge(S,b);return}b=E}})}function pPt(i,a,f){var p=bPt(i),w=new zf({compound:!0}).setGraph({root:p}).setDefaultNodeLabel(function(y){return i.node(y)});return lr(i.nodes(),function(y){var b=i.node(y),E=i.parent(y);(b.rank===a||b.minRank<=a&&a<=b.maxRank)&&(w.setNode(y),w.setParent(y,E||p),lr(i[f](y),function(S){var N=S.v===y?S.w:S.v,B=w.edge(N,y),R=cf(B)?0:B.weight;w.setEdge(N,y,{weight:i.edge(S).weight+R})}),Ja(b,"minRank")&&w.setNode(y,{borderLeft:b.borderLeft[a],borderRight:b.borderRight[a]}))}),w}function bPt(i){for(var a;i.hasNode(a=sK("_root")););return a}function vPt(i,a){for(var f=0,p=1;p0;)B%2&&(R+=E[B+1]),B=B-1>>1,E[B]+=N.weight;S+=N.weight*R})),S}function mPt(i){var a={},f=y5(i.nodes(),function(E){return!i.children(E).length}),p=o9(Hf(f,function(E){return i.node(E).rank})),w=Hf(c9(p+1),function(){return[]});function y(E){if(!Ja(a,E)){a[E]=!0;var S=i.node(E);w[S.rank].push(E),lr(i.successors(E),y)}}var b=uP(f,function(E){return i.node(E).rank});return lr(b,y),w}function yPt(i,a){return Hf(a,function(f){var p=i.inEdges(f);if(p.length){var w=cP(p,function(y,b){var E=i.edge(b),S=i.node(b.v);return{sum:y.sum+E.weight*S.order,weight:y.weight+E.weight}},{sum:0,weight:0});return{v:f,barycenter:w.sum/w.weight,weight:w.weight}}else return{v:f}})}function kPt(i,a){var f={};lr(i,function(w,y){var b=f[w.v]={indegree:0,in:[],out:[],vs:[w.v],i:y};cf(w.barycenter)||(b.barycenter=w.barycenter,b.weight=w.weight)}),lr(a.edges(),function(w){var y=f[w.v],b=f[w.w];!cf(y)&&!cf(b)&&(b.indegree++,y.out.push(f[w.w]))});var p=y5(f,function(w){return!w.indegree});return xPt(p)}function xPt(i){var a=[];function f(y){return function(b){b.merged||(cf(b.barycenter)||cf(y.barycenter)||b.barycenter>=y.barycenter)&&EPt(y,b)}}function p(y){return function(b){b.in.push(y),--b.indegree===0&&i.push(b)}}for(;i.length;){var w=i.pop();a.push(w),lr(w.in.reverse(),f(w)),lr(w.out,p(w))}return Hf(y5(a,function(y){return!y.merged}),function(y){return oP(y,["vs","i","barycenter","weight"])})}function EPt(i,a){var f=0,p=0;i.weight&&(f+=i.barycenter*i.weight,p+=i.weight),a.weight&&(f+=a.barycenter*a.weight,p+=a.weight),i.vs=a.vs.concat(i.vs),i.barycenter=f/p,i.weight=p,i.i=Math.min(a.i,i.i),a.merged=!0}function TPt(i,a){var f=HNt(i,function(B){return Ja(B,"barycenter")}),p=f.lhs,w=uP(f.rhs,function(B){return-B.i}),y=[],b=0,E=0,S=0;p.sort(_Pt(!!a)),S=VPe(y,w,S),lr(p,function(B){S+=B.vs.length,y.push(B.vs),b+=B.barycenter*B.weight,E+=B.weight,S=VPe(y,w,S)});var N={vs:ZA(y)};return E&&(N.barycenter=b/E,N.weight=E),N}function VPe(i,a,f){for(var p;a.length&&(p=rK(a)).i<=f;)a.pop(),i.push(p.vs),f++;return f}function _Pt(i){return function(a,f){return a.barycenterf.barycenter?1:i?f.i-a.i:a.i-f.i}}function UPe(i,a,f,p){var w=i.children(a),y=i.node(a),b=y?y.borderLeft:void 0,E=y?y.borderRight:void 0,S={};b&&(w=y5(w,function(V){return V!==b&&V!==E}));var N=yPt(i,w);lr(N,function(V){if(i.children(V.v).length){var Q=UPe(i,V.v,f,p);S[V.v]=Q,Ja(Q,"barycenter")&&SPt(V,Q)}});var B=kPt(N,f);CPt(B,S);var R=TPt(B,p);if(b&&(R.vs=ZA([b,R.vs,E]),i.predecessors(b).length)){var j=i.node(i.predecessors(b)[0]),$=i.node(i.predecessors(E)[0]);Ja(R,"barycenter")||(R.barycenter=0,R.weight=0),R.barycenter=(R.barycenter*R.weight+j.order+$.order)/(R.weight+2),R.weight+=2}return R}function CPt(i,a){lr(i,function(f){f.vs=ZA(f.vs.map(function(p){return a[p]?a[p].vs:p}))})}function SPt(i,a){cf(i.barycenter)?(i.barycenter=a.barycenter,i.weight=a.weight):(i.barycenter=(i.barycenter*i.weight+a.barycenter*a.weight)/(i.weight+a.weight),i.weight+=a.weight)}function APt(i){var a=MPe(i),f=WPe(i,c9(1,a+1),"inEdges"),p=WPe(i,c9(a-1,-1,-1),"outEdges"),w=mPt(i);KPe(i,w);for(var y=Number.POSITIVE_INFINITY,b,E=0,S=0;S<4;++E,++S){LPt(E%2?f:p,E%4>=2),w=aK(i);var N=vPt(i,w);Nb||E>a[S].lim));for(N=S,S=p;(S=i.parent(S))!==N;)y.push(S);return{path:w.concat(y.reverse()),lca:N}}function IPt(i){var a={},f=0;function p(w){var y=f;lr(i.children(w),p),a[w]={low:y,lim:f++}}return lr(i.children(),p),a}function OPt(i,a){var f={};function p(w,y){var b=0,E=0,S=w.length,N=rK(y);return lr(y,function(B,R){var j=PPt(i,B),$=j?i.node(j).order:S;(j||B===N)&&(lr(y.slice(E,R+1),function(V){lr(i.predecessors(V),function(Q){var oe=i.node(Q),ce=oe.order;(ceN)&&YPe(f,j,B)})})}function w(y,b){var E=-1,S,N=0;return lr(b,function(B,R){if(i.node(B).dummy==="border"){var j=i.predecessors(B);j.length&&(S=i.node(j[0]).order,p(b,N,R,E,S),N=R,E=S)}p(b,N,b.length,S,y.length)}),b}return cP(a,w),f}function PPt(i,a){if(i.node(a).dummy)return Yde(i.predecessors(a),function(f){return i.node(f).dummy})}function YPe(i,a,f){if(a>f){var p=a;a=f,f=p}var w=i[a];w||(i[a]=w={}),w[f]=!0}function BPt(i,a,f){if(a>f){var p=a;a=f,f=p}return Ja(i[a],f)}function RPt(i,a,f,p){var w={},y={},b={};return lr(a,function(E){lr(E,function(S,N){w[S]=S,y[S]=S,b[S]=N})}),lr(a,function(E){var S=-1;lr(E,function(N){var B=p(N);if(B.length){B=uP(B,function(Q){return b[Q]});for(var R=(B.length-1)/2,j=Math.floor(R),$=Math.ceil(R);j<=$;++j){var V=B[j];y[N]===N&&S0}function l3(i,a,f){var p=i.x,w=i.y,y=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;a.forEach(function(V){b=Math.min(b,V.x),E=Math.min(E,V.y)});for(var S=p-i.width/2-b,N=w-i.height/2-E,B=0;B1&&y.sort(function(V,Q){var oe=V.x-f.x,ce=V.y-f.y,se=Math.sqrt(oe*oe+ce*ce),ge=Q.x-f.x,ye=Q.y-f.y,ke=Math.sqrt(ge*ge+ye*ye);return seMath.abs(w)*E?(y<0&&(E=-E),S=y===0?0:E*w/y,N=E):(w<0&&(b=-b),S=b,N=w===0?0:b*y/w),{x:f+S,y:p+N}}var w0e={rect:$Bt,ellipse:HBt,circle:zBt,diamond:GBt};function jBt(i){w0e=i}function $Bt(i,a,f){var p=i.insert("rect",":first-child").attr("rx",f.rx).attr("ry",f.ry).attr("x",-a.width/2).attr("y",-a.height/2).attr("width",a.width).attr("height",a.height);return f.intersect=function(w){return v0e(f,w)},p}function HBt(i,a,f){var p=a.width/2,w=a.height/2,y=i.insert("ellipse",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("rx",p).attr("ry",w);return f.intersect=function(b){return tBe(f,p,w,b)},y}function zBt(i,a,f){var p=Math.max(a.width,a.height)/2,w=i.insert("circle",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("r",p);return f.intersect=function(y){return RBt(f,p,y)},w}function GBt(i,a,f){var p=a.width*Math.SQRT2/2,w=a.height*Math.SQRT2/2,y=[{x:0,y:-w},{x:-p,y:0},{x:0,y:w},{x:p,y:0}],b=i.insert("polygon",":first-child").attr("points",y.map(function(E){return E.x+","+E.y}).join(" "));return f.intersect=function(E){return l3(f,y,E)},b}function qBt(){var i=function(a,f){WBt(f);var p=fP(a,"output"),w=fP(p,"clusters"),y=fP(p,"edgePaths"),b=g0e(fP(p,"edgeLabels"),f),E=b0e(fP(p,"nodes"),f,w0e);tL(f),BBt(E,f),PBt(b,f),p0e(y,f,l0e);var S=d0e(w,f);NBt(S,f),KBt(f)};return i.createNodes=function(a){return arguments.length?(OBt(a),i):b0e},i.createClusters=function(a){return arguments.length?(_Bt(a),i):d0e},i.createEdgeLabels=function(a){return arguments.length?(CBt(a),i):g0e},i.createEdgePaths=function(a){return arguments.length?(SBt(a),i):p0e},i.shapes=function(a){return arguments.length?(jBt(a),i):w0e},i.arrows=function(a){return arguments.length?(wBt(a),i):l0e},i}var VBt={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},UBt={arrowhead:"normal",curve:ng};function WBt(i){i.nodes().forEach(function(a){var f=i.node(a);!Ja(f,"label")&&!i.children(a).length&&(f.label=a),Ja(f,"paddingX")&&JA(f,{paddingLeft:f.paddingX,paddingRight:f.paddingX}),Ja(f,"paddingY")&&JA(f,{paddingTop:f.paddingY,paddingBottom:f.paddingY}),Ja(f,"padding")&&JA(f,{paddingLeft:f.padding,paddingRight:f.padding,paddingTop:f.padding,paddingBottom:f.padding}),JA(f,VBt),lr(["paddingLeft","paddingRight","paddingTop","paddingBottom"],function(p){f[p]=Number(f[p])}),Ja(f,"width")&&(f._prevWidth=f.width),Ja(f,"height")&&(f._prevHeight=f.height)}),i.edges().forEach(function(a){var f=i.edge(a);Ja(f,"label")||(f.label=""),JA(f,UBt)})}function KBt(i){lr(i.nodes(),function(a){var f=i.node(a);Ja(f,"_prevWidth")?f.width=f._prevWidth:delete f.width,Ja(f,"_prevHeight")?f.height=f._prevHeight:delete f.height,delete f._prevWidth,delete f._prevHeight})}function fP(i,a){var f=i.select("g."+a);return f.empty()&&(f=i.append("g").attr("class",a)),f}function rBe(i,a,f){const p=a.width,w=a.height,y=(p+w)*.9,b=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],E=x5(i,y,y,b);return f.intersect=function(S){return l3(f,b,S)},E}function iBe(i,a,f){const w=a.height,y=w/4,b=a.width+2*y,E=[{x:y,y:0},{x:b-y,y:0},{x:b,y:-w/2},{x:b-y,y:-w},{x:y,y:-w},{x:0,y:-w/2}],S=x5(i,b,w,E);return f.intersect=function(N){return l3(f,E,N)},S}function sBe(i,a,f){const p=a.width,w=a.height,y=[{x:-w/2,y:0},{x:p,y:0},{x:p,y:-w},{x:-w/2,y:-w},{x:0,y:-w/2}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function aBe(i,a,f){const p=a.width,w=a.height,y=[{x:-2*w/6,y:0},{x:p-w/6,y:0},{x:p+2*w/6,y:-w},{x:w/6,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function oBe(i,a,f){const p=a.width,w=a.height,y=[{x:2*w/6,y:0},{x:p+w/6,y:0},{x:p-2*w/6,y:-w},{x:-w/6,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function cBe(i,a,f){const p=a.width,w=a.height,y=[{x:-2*w/6,y:0},{x:p+2*w/6,y:0},{x:p-w/6,y:-w},{x:w/6,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function uBe(i,a,f){const p=a.width,w=a.height,y=[{x:w/6,y:0},{x:p-w/6,y:0},{x:p+2*w/6,y:-w},{x:-2*w/6,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function lBe(i,a,f){const p=a.width,w=a.height,y=[{x:0,y:0},{x:p+w/2,y:0},{x:p,y:-w/2},{x:p+w/2,y:-w},{x:0,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function hBe(i,a,f){const p=a.height,w=a.width+p/4,y=i.insert("rect",":first-child").attr("rx",p/2).attr("ry",p/2).attr("x",-w/2).attr("y",-p/2).attr("width",w).attr("height",p);return f.intersect=function(b){return v0e(f,b)},y}function fBe(i,a,f){const p=a.width,w=a.height,y=[{x:0,y:0},{x:p,y:0},{x:p,y:-w},{x:0,y:-w},{x:0,y:0},{x:-8,y:0},{x:p+8,y:0},{x:p+8,y:-w},{x:-8,y:-w},{x:-8,y:0}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function dBe(i,a,f){const p=a.width,w=p/2,y=w/(2.5+p/50),b=a.height+y,E="M 0,"+y+" a "+w+","+y+" 0,0,0 "+p+" 0 a "+w+","+y+" 0,0,0 "+-p+" 0 l 0,"+b+" a "+w+","+y+" 0,0,0 "+p+" 0 l 0,"+-b,S=i.attr("label-offset-y",y).insert("path",":first-child").attr("d",E).attr("transform","translate("+-p/2+","+-(b/2+y)+")");return f.intersect=function(N){const B=v0e(f,N),R=B.x-f.x;if(w!=0&&(Math.abs(R)f.height/2-y)){let j=y*y*(1-R*R/(w*w));j!=0&&(j=Math.sqrt(j)),j=y-j,N.y-f.y>0&&(j=-j),B.y+=j}return B},S}function YBt(i){i.shapes().question=rBe,i.shapes().hexagon=iBe,i.shapes().stadium=hBe,i.shapes().subroutine=fBe,i.shapes().cylinder=dBe,i.shapes().rect_left_inv_arrow=sBe,i.shapes().lean_right=aBe,i.shapes().lean_left=oBe,i.shapes().trapezoid=cBe,i.shapes().inv_trapezoid=uBe,i.shapes().rect_right_inv_arrow=lBe}function XBt(i){i({question:rBe}),i({hexagon:iBe}),i({stadium:hBe}),i({subroutine:fBe}),i({cylinder:dBe}),i({rect_left_inv_arrow:sBe}),i({lean_right:aBe}),i({lean_left:oBe}),i({trapezoid:cBe}),i({inv_trapezoid:uBe}),i({rect_right_inv_arrow:lBe})}function x5(i,a,f,p){return i.insert("polygon",":first-child").attr("points",p.map(function(w){return w.x+","+w.y}).join(" ")).attr("transform","translate("+-a/2+","+f/2+")")}const QBt={addToRender:YBt,addToRenderV2:XBt},gBe={},ZBt=function(i){const a=Object.keys(i);for(const f of a)gBe[f]=i[f]},pBe=function(i,a,f,p,w,y){const b=p?p.select(`[id="${f}"]`):Cr(`[id="${f}"]`),E=w||document;Object.keys(i).forEach(function(N){const B=i[N];let R="default";B.classes.length>0&&(R=B.classes.join(" "));const j=Yw(B.styles);let $=B.text!==void 0?B.text:B.id,V;if(d1(Tt().flowchart.htmlLabels)){const ce={label:$.replace(/fa[blrs]?:fa-[\w-]+/g,se=>``)};V=h0e(b,ce).node(),V.parentNode.removeChild(V)}else{const ce=E.createElementNS("http://www.w3.org/2000/svg","text");ce.setAttribute("style",j.labelStyle.replace("color:","fill:"));const se=$.split(Wa.lineBreakRegex);for(const ge of se){const ye=E.createElementNS("http://www.w3.org/2000/svg","tspan");ye.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),ye.setAttribute("dy","1em"),ye.setAttribute("x","1"),ye.textContent=ge,ce.appendChild(ye)}V=ce}let Q=0,oe="";switch(B.type){case"round":Q=5,oe="rect";break;case"square":oe="rect";break;case"diamond":oe="question";break;case"hexagon":oe="hexagon";break;case"odd":oe="rect_left_inv_arrow";break;case"lean_right":oe="lean_right";break;case"lean_left":oe="lean_left";break;case"trapezoid":oe="trapezoid";break;case"inv_trapezoid":oe="inv_trapezoid";break;case"odd_right":oe="rect_left_inv_arrow";break;case"circle":oe="circle";break;case"ellipse":oe="ellipse";break;case"stadium":oe="stadium";break;case"subroutine":oe="subroutine";break;case"cylinder":oe="cylinder";break;case"group":oe="rect";break;default:oe="rect"}Fe.warn("Adding node",B.id,B.domId),a.setNode(y.db.lookUpDomId(B.id),{labelType:"svg",labelStyle:j.labelStyle,shape:oe,label:V,rx:Q,ry:Q,class:R,style:j.style,id:y.db.lookUpDomId(B.id)})})},bBe=function(i,a,f){let p=0,w,y;if(i.defaultStyle!==void 0){const b=Yw(i.defaultStyle);w=b.style,y=b.labelStyle}i.forEach(function(b){p++;var E="L-"+b.start+"-"+b.end,S="LS-"+b.start,N="LE-"+b.end;const B={};b.type==="arrow_open"?B.arrowhead="none":B.arrowhead="normal";let R="",j="";if(b.style!==void 0){const $=Yw(b.style);R=$.style,j=$.labelStyle}else switch(b.stroke){case"normal":R="fill:none",w!==void 0&&(R=w),y!==void 0&&(j=y);break;case"dotted":R="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":R=" stroke-width: 3.5px;fill:none";break}B.style=R,B.labelStyle=j,b.interpolate!==void 0?B.curve=Ub(b.interpolate,ng):i.defaultInterpolate!==void 0?B.curve=Ub(i.defaultInterpolate,ng):B.curve=Ub(gBe.curve,ng),b.text===void 0?b.style!==void 0&&(B.arrowheadStyle="fill: #333"):(B.arrowheadStyle="fill: #333",B.labelpos="c",d1(Tt().flowchart.htmlLabels)?(B.labelType="html",B.label=`${b.text.replace(/fa[blrs]?:fa-[\w-]+/g,$=>``)}`):(B.labelType="text",B.label=b.text.replace(Wa.lineBreakRegex,` +`),b.style===void 0&&(B.style=B.style||"stroke: #333; stroke-width: 1.5px;fill:none"),B.labelStyle=B.labelStyle.replace("color:","fill:"))),B.id=E,B.class=S+" "+N,B.minlen=b.length||1,a.setEdge(f.db.lookUpDomId(b.start),f.db.lookUpDomId(b.end),B,p)})},JBt={setConf:ZBt,addVertices:pBe,addEdges:bBe,getClasses:function(i,a){Fe.info("Extracting classes"),a.db.clear();try{return a.parse(i),a.db.getClasses()}catch(f){return Fe.error(f),{}}},draw:function(i,a,f,p){Fe.info("Drawing flowchart"),p.db.clear();const{securityLevel:w,flowchart:y}=Tt();let b;w==="sandbox"&&(b=Cr("#i"+a));const E=Cr(w==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=w==="sandbox"?b.nodes()[0].contentDocument:document;try{p.parser.parse(i)}catch{Fe.debug("Parsing failed")}let N=p.db.getDirection();N===void 0&&(N="TD");const B=y.nodeSpacing||50,R=y.rankSpacing||50,j=new zf({multigraph:!0,compound:!0}).setGraph({rankdir:N,nodesep:B,ranksep:R,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});let $;const V=p.db.getSubGraphs();for(let Ae=V.length-1;Ae>=0;Ae--)$=V[Ae],p.db.addVertex($.id,$.title,"group",void 0,$.classes);const Q=p.db.getVertices();Fe.warn("Get vertices",Q);const oe=p.db.getEdges();let ce=0;for(ce=V.length-1;ce>=0;ce--){$=V[ce],Jfe("cluster").append("text");for(let Ae=0;Ae<$.nodes.length;Ae++)Fe.warn("Setting subgraph",$.nodes[Ae],p.db.lookUpDomId($.nodes[Ae]),p.db.lookUpDomId($.id)),j.setParent(p.db.lookUpDomId($.nodes[Ae]),p.db.lookUpDomId($.id))}pBe(Q,j,a,E,S,p),bBe(oe,j,p);const se=new qBt;QBt.addToRender(se),se.arrows().none=function(de,ve,te,xe){const he=de.append("marker").attr("id",ve).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 0 0 L 0 0 z");u3(he,te[xe+"Style"])},se.arrows().normal=function(de,ve){de.append("marker").attr("id",ve).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowheadPath").style("stroke-width",1).style("stroke-dasharray","1,0")};const ge=E.select(`[id="${a}"]`),ye=E.select("#"+a+" g");for(se(ye,j),ye.selectAll("g.node").attr("title",function(){return p.db.getTooltip(this.id)}),p.db.indexNodes("subGraph"+ce),ce=0;ce{a.forEach(w=>{rRt[w](i,f,p)})},rRt={extension:(i,a,f)=>{Fe.trace("Making markers for ",f),i.append("defs").append("marker").attr("id",a+"-extensionStart").attr("class","marker extension "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id",a+"-extensionEnd").attr("class","marker extension "+a).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-compositionStart").attr("class","marker composition "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",a+"-compositionEnd").attr("class","marker composition "+a).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-aggregationStart").attr("class","marker aggregation "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",a+"-aggregationEnd").attr("class","marker aggregation "+a).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-dependencyStart").attr("class","marker dependency "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",a+"-dependencyEnd").attr("class","marker dependency "+a).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},lollipop:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-lollipopStart").attr("class","marker lollipop "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","white").attr("cx",6).attr("cy",7).attr("r",6)},point:(i,a)=>{i.append("marker").attr("id",a+"-pointEnd").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",10).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),i.append("marker").attr("id",a+"-pointStart").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:(i,a)=>{i.append("marker").attr("id",a+"-circleEnd").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),i.append("marker").attr("id",a+"-circleStart").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:(i,a)=>{i.append("marker").attr("id",a+"-crossEnd").attr("class","marker cross "+a).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),i.append("marker").attr("id",a+"-crossStart").attr("class","marker cross "+a).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}},vBe=nRt;function iRt(i,a){a&&i.attr("style",a)}function sRt(i){const a=Cr(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),f=a.append("xhtml:div"),p=i.label,w=i.isNode?"nodeLabel":"edgeLabel";return f.html('"+p+""),iRt(f,i.labelStyle),f.style("display","inline-block"),f.style("white-space","nowrap"),f.attr("xmlns","http://www.w3.org/1999/xhtml"),a.node()}const sp=(i,a,f,p)=>{let w=i||"";if(typeof w=="object"&&(w=w[0]),d1(Tt().flowchart.htmlLabels)){w=w.replace(/\\n|\n/g,"
"),Fe.info("vertexText"+w);const y={isNode:p,label:XN(w).replace(/fa[blrs]?:fa-[\w-]+/g,E=>``),labelStyle:a.replace("fill:","color:")};return sRt(y)}else{const y=document.createElementNS("http://www.w3.org/2000/svg","text");y.setAttribute("style",a.replace("color:","fill:"));let b=[];typeof w=="string"?b=w.split(/\\n|\n|/gi):Array.isArray(w)?b=w:b=[];for(const E of b){const S=document.createElementNS("http://www.w3.org/2000/svg","tspan");S.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),S.setAttribute("dy","1em"),S.setAttribute("x","0"),f?S.setAttribute("class","title-row"):S.setAttribute("class","row"),S.textContent=E.trim(),y.appendChild(S)}return y}};var aRt=/\r\n?/g,oRt=/\t/g,cRt=/\f/g,wBe=function(a){return a.replace(aRt,` +`).replace(cRt,"").replace(oRt," ")},mBe=function(a,f){var p=a||{};if(f!=null)for(var w in f)Object.prototype.hasOwnProperty.call(f,w)&&(p[w]=f[w]);return p},yBe=function(a,f){var p=Object.keys(a).filter(function(E){var S=a[E];if(S==null||S.match==null)return!1;var N=S.order;return(typeof N!="number"||!isFinite(N))&&typeof console<"u"&&console.warn("simple-markdown: Invalid order for rule `"+E+"`: "+String(N)),!0});p.sort(function(E,S){var N=a[E],B=a[S],R=N.order,j=B.order;if(R!==j)return R-j;var $=N.quality?0:1,V=B.quality?0:1;return $!==V?$-V:ES?1:0});var w,y=function E(S,N){var B=[];for(N=N||w,w=N;S;){var R=null,j=null,$=null,V=NaN,Q=0,oe=p[0],ce=a[oe];do{var se=ce.order,ge=N.prevCapture==null?"":N.prevCapture[0],ye=ce.match(S,N,ge);if(ye){var ke=ce.quality?ce.quality(ye,N,ge):0;ke<=V||(R=oe,j=ce,$=ye,V=ke)}Q++,oe=p[Q],ce=a[oe]}while(ce&&(!$||ce.order===se&&ce.quality));if(j==null||$==null)throw new Error("Could not find a matching rule for the below content. The rule with highest `order` should always match content provided to it. Check the definition of `match` for '"+p[p.length-1]+`'. It seems to not match the following source: +`+S);if($.index)throw new Error("`match` must return a capture starting at index 0 (the current parse index). Did you forget a ^ at the start of the RegExp?");var Ae=j.parse($,E,N);if(Array.isArray(Ae))Array.prototype.push.apply(B,Ae);else{if(Ae==null||typeof Ae!="object")throw new Error(`parse() function returned invalid parse result: '${Ae}'`);Ae.type==null&&(Ae.type=R),B.push(Ae)}N.prevCapture=$,S=S.substring(N.prevCapture[0].length)}return B},b=function(S,N){return w=mBe(N,f),!w.inline&&!w.disableAutoBlockNewlines&&(S=S+` + +`),w.prevCapture=null,y(wBe(S),w)};return b},ap=function(a){var f=function(w,y,b){return y.inline?a.exec(w):null};return f.regex=a,f},Xb=function(a){var f=function(w,y){return y.inline?null:a.exec(w)};return f.regex=a,f},m0e=function(a){var f=function(w,y){return a.exec(w)};return f.regex=a,f},uRt=typeof Symbol=="function"&&Symbol.for&&Symbol.for("react.element")||60103,Cl=function(a,f,p){var w={$$typeof:uRt,type:a,key:f??void 0,ref:null,props:p,_owner:null};return w},Ah=function(a,f,p,w){p=p||{},w=typeof w<"u"?w:!0;var y="";for(var b in p){var E=p[b];Object.prototype.hasOwnProperty.call(p,b)&&E&&(y+=" "+nL(b)+'="'+nL(E)+'"')}var S="<"+a+y+">";return w?S+f+"":S},kBe={},dP=function(a){if(a==null)return null;try{var f=new URL(a,"https://localhost").protocol;if(f.indexOf("javascript:")===0||f.indexOf("vbscript:")===0||f.indexOf("data:")===0)return null}catch{return null}return a},lRt=/[<>&"']/g,hRt={"<":"<",">":">","&":"&",'"':""","'":"'","/":"/","`":"`"},nL=function(a){return String(a).replace(lRt,function(f){return hRt[f]})},fRt=/\\([^0-9A-Za-z\s])/g,y0e=function(a){return a.replace(fRt,"$1")},oK=function(a,f,p){var w=p.inline||!1;p.inline=!0;var y=a(f,p);return p.inline=w,y},dRt=function(a,f,p){var w=p.inline||!1;p.inline=!1;var y=a(f+` + +`,p);return p.inline=w,y},cK=function(a,f,p){return{content:oK(f,a[1],p)}},k0e=function(){return{}},uK="(?:[*+-]|\\d+\\.)",xBe="( *)("+uK+") +",EBe=new RegExp("^"+xBe),gRt=new RegExp(xBe+"[^\\n]*(?:\\n(?!\\1"+uK+` )[^\\n]*)*( +|$)`,"gm"),TBe=/\n{2,}$/,pRt=/^ (?= *`)|(` *) $/g,bRt=TBe,_Be=/ *\n+$/,vRt=new RegExp("^( *)("+uK+`) [\\s\\S]+?(?: +{2,}(?! )(?!\\1`+uK+` )\\n*|\\s* +*$)`),wRt=/(?:^|\n)( *)$/,lK=function(){var i=/^ *\| *| *\| *$/g,a=/ *$/,f=/^ *-+: *$/,p=/^ *:-+: *$/,w=/^ *:-+ *$/,y=function(R){return f.test(R)?"right":p.test(R)?"center":w.test(R)?"left":null},b=function(R,j,$,V){V&&(R=R.replace(i,""));var Q=R.trim().split("|");return Q.map(y)},E=function(R,j,$,V){var Q=$.inTable;$.inTable=!0;var oe=j(R.trim(),$);$.inTable=Q;var ce=[[]];return oe.forEach(function(se,ge){se.type==="tableSeparator"?(!V||ge!==0&&ge!==oe.length-1)&&ce.push([]):(se.type==="text"&&(oe[ge+1]==null||oe[ge+1].type==="tableSeparator")&&(se.content=se.content.replace(a,"")),ce[ce.length-1].push(se))}),ce},S=function(R,j,$,V){var Q=R.trim().split(` +`);return Q.map(function(oe){return E(oe,j,$,V)})},N=function(R){return function(j,$,V){V.inline=!0;var Q=E(j[1],$,V,R),oe=b(j[2],$,V,R),ce=S(j[3],$,V,R);return V.inline=!1,{type:"table",header:Q,align:oe,cells:ce}}};return{parseTable:N(!0),parseNpTable:N(!1),TABLE_REGEX:/^ *(\|.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/,NPTABLE_REGEX:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/}}(),hK="(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*",CBe=`\\s*?(?:\\s+['"]([\\s\\S]*?)['"])?\\s*`,mRt=/mailto:/i,SBe=function(a,f,p){var w=(a[2]||a[1]).replace(/\s+/g," ").toLowerCase();if(f._defs&&f._defs[w]){var y=f._defs[w];p.target=y.target,p.title=y.title}return f._refs=f._refs||{},f._refs[w]=f._refs[w]||[],f._refs[w].push(p),p},$u=0,gP={Array:{react:function(i,a,f){for(var p=f.key,w=[],y=0,b=0;y"}},codeBlock:{order:$u++,match:Xb(/^(?: [^\n]+\n*)+(?:\n *)+\n/),parse:function(i,a,f){var p=i[0].replace(/^ /gm,"").replace(/\n+$/,"");return{lang:void 0,content:p}},react:function(i,a,f){var p=i.lang?"markdown-code-"+i.lang:void 0;return Cl("pre",f.key,{children:Cl("code",null,{className:p,children:i.content})})},html:function(i,a,f){var p=i.lang?"markdown-code-"+i.lang:void 0,w=Ah("code",nL(i.content),{class:p});return Ah("pre",w)}},fence:{order:$u++,match:Xb(/^ *(`{3,}|~{3,}) *(?:(\S+) *)?\n([\s\S]+?)\n?\1 *(?:\n *)+\n/),parse:function(i,a,f){return{type:"codeBlock",lang:i[2]||void 0,content:i[3]}},react:null,html:null},blockQuote:{order:$u++,match:Xb(/^( *>[^\n]+(\n[^\n]+)*\n*)+\n{2,}/),parse:function(i,a,f){var p=i[0].replace(/^ *> ?/gm,"");return{content:a(p,f)}},react:function(i,a,f){return Cl("blockquote",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("blockquote",a(i.content,f))}},list:{order:$u++,match:function(i,a){var f=a.prevCapture==null?"":a.prevCapture[0],p=wRt.exec(f),w=a._list||!a.inline;return p&&w?(i=p[1]+i,vRt.exec(i)):null},parse:function(i,a,f){var p=i[2],w=p.length>1,y=w?+p:void 0,b=i[0].replace(bRt,` +`).match(gRt),E=!1,S=b.map(function(N,B){var R=EBe.exec(N),j=R?R[0].length:0,$=new RegExp("^ {1,"+j+"}","gm"),V=N.replace($,"").replace(EBe,""),Q=B===b.length-1,oe=V.indexOf(` + +`)!==-1,ce=oe||Q&&E;E=ce;var se=f.inline,ge=f._list;f._list=!0;var ye;ce?(f.inline=!1,ye=V.replace(_Be,` + +`)):(f.inline=!0,ye=V.replace(_Be,""));var ke=a(ye,f);return f.inline=se,f._list=ge,ke});return{ordered:w,start:y,items:S}},react:function(i,a,f){var p=i.ordered?"ol":"ul";return Cl(p,f.key,{start:i.start,children:i.items.map(function(w,y){return Cl("li",""+y,{children:a(w,f)})})})},html:function(i,a,f){var p=i.items.map(function(b){return Ah("li",a(b,f))}).join(""),w=i.ordered?"ol":"ul",y={start:i.start};return Ah(w,p,y)}},def:{order:$u++,match:Xb(/^ *\[([^\]]+)\]: *]*)>?(?: +["(]([^\n]+)[")])? *\n(?: *\n)*/),parse:function(i,a,f){var p=i[1].replace(/\s+/g," ").toLowerCase(),w=i[2],y=i[3];return f._refs&&f._refs[p]&&f._refs[p].forEach(function(b){b.target=w,b.title=y}),f._defs=f._defs||{},f._defs[p]={target:w,title:y},{def:p,target:w,title:y}},react:function(){return null},html:function(){return""}},table:{order:$u++,match:Xb(lK.TABLE_REGEX),parse:lK.parseTable,react:function(i,a,f){var p=function(E){return i.align[E]==null?{}:{textAlign:i.align[E]}},w=i.header.map(function(b,E){return Cl("th",""+E,{style:p(E),scope:"col",children:a(b,f)})}),y=i.cells.map(function(b,E){return Cl("tr",""+E,{children:b.map(function(S,N){return Cl("td",""+N,{style:p(N),children:a(S,f)})})})});return Cl("table",f.key,{children:[Cl("thead","thead",{children:Cl("tr",null,{children:w})}),Cl("tbody","tbody",{children:y})]})},html:function(i,a,f){var p=function(N){return i.align[N]==null?"":"text-align:"+i.align[N]+";"},w=i.header.map(function(S,N){return Ah("th",a(S,f),{style:p(N),scope:"col"})}).join(""),y=i.cells.map(function(S){var N=S.map(function(B,R){return Ah("td",a(B,f),{style:p(R)})}).join("");return Ah("tr",N)}).join(""),b=Ah("thead",Ah("tr",w)),E=Ah("tbody",y);return Ah("table",b+E)}},newline:{order:$u++,match:Xb(/^(?:\n *)*\n/),parse:k0e,react:function(i,a,f){return` +`},html:function(i,a,f){return` +`}},paragraph:{order:$u++,match:Xb(/^((?:[^\n]|\n(?! *\n))+)(?:\n *)+\n/),parse:cK,react:function(i,a,f){return Cl("div",f.key,{className:"paragraph",children:a(i.content,f)})},html:function(i,a,f){var p={class:"paragraph"};return Ah("div",a(i.content,f),p)}},escape:{order:$u++,match:ap(/^\\([^0-9A-Za-z\s])/),parse:function(i,a,f){return{type:"text",content:i[1]}},react:null,html:null},tableSeparator:{order:$u++,match:function(i,a){return a.inTable?/^ *\| */.exec(i):null},parse:function(){return{type:"tableSeparator"}},react:function(){return" | "},html:function(){return" | "}},autolink:{order:$u++,match:ap(/^<([^: >]+:\/[^ >]+)>/),parse:function(i,a,f){return{type:"link",content:[{type:"text",content:i[1]}],target:i[1]}},react:null,html:null},mailto:{order:$u++,match:ap(/^<([^ >]+@[^ >]+)>/),parse:function(i,a,f){var p=i[1],w=i[1];return mRt.test(w)||(w="mailto:"+w),{type:"link",content:[{type:"text",content:p}],target:w}},react:null,html:null},url:{order:$u++,match:ap(/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/),parse:function(i,a,f){return{type:"link",content:[{type:"text",content:i[1]}],target:i[1],title:void 0}},react:null,html:null},link:{order:$u++,match:ap(new RegExp("^\\[("+hK+")\\]\\("+CBe+"\\)")),parse:function(i,a,f){var p={content:a(i[1],f),target:y0e(i[2]),title:i[3]};return p},react:function(i,a,f){return Cl("a",f.key,{href:dP(i.target),title:i.title,children:a(i.content,f)})},html:function(i,a,f){var p={href:dP(i.target),title:i.title};return Ah("a",a(i.content,f),p)}},image:{order:$u++,match:ap(new RegExp("^!\\[("+hK+")\\]\\("+CBe+"\\)")),parse:function(i,a,f){var p={alt:i[1],target:y0e(i[2]),title:i[3]};return p},react:function(i,a,f){return Cl("img",f.key,{src:dP(i.target),alt:i.alt,title:i.title})},html:function(i,a,f){var p={src:dP(i.target),alt:i.alt,title:i.title};return Ah("img","",p,!1)}},reflink:{order:$u++,match:ap(new RegExp("^\\[("+hK+")\\]\\s*\\[([^\\]]*)\\]")),parse:function(i,a,f){return SBe(i,f,{type:"link",content:a(i[1],f)})},react:null,html:null},refimage:{order:$u++,match:ap(new RegExp("^!\\[("+hK+")\\]\\s*\\[([^\\]]*)\\]")),parse:function(i,a,f){return SBe(i,f,{type:"image",alt:i[1]})},react:null,html:null},em:{order:$u,match:ap(new RegExp("^\\b_((?:__|\\\\[\\s\\S]|[^\\\\_])+?)_\\b|^\\*(?=\\S)((?:\\*\\*|\\\\[\\s\\S]|\\s+(?:\\\\[\\s\\S]|[^\\s\\*\\\\]|\\*\\*)|[^\\s\\*\\\\])+?)\\*(?!\\*)")),quality:function(i){return i[0].length+.2},parse:function(i,a,f){return{content:a(i[2]||i[1],f)}},react:function(i,a,f){return Cl("em",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("em",a(i.content,f))}},strong:{order:$u,match:ap(/^\*\*((?:\\[\s\S]|[^\\])+?)\*\*(?!\*)/),quality:function(i){return i[0].length+.1},parse:cK,react:function(i,a,f){return Cl("strong",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("strong",a(i.content,f))}},u:{order:$u++,match:ap(/^__((?:\\[\s\S]|[^\\])+?)__(?!_)/),quality:function(i){return i[0].length},parse:cK,react:function(i,a,f){return Cl("u",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("u",a(i.content,f))}},del:{order:$u++,match:ap(/^~~(?=\S)((?:\\[\s\S]|~(?!~)|[^\s~\\]|\s(?!~~))+?)~~/),parse:cK,react:function(i,a,f){return Cl("del",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("del",a(i.content,f))}},inlineCode:{order:$u++,match:ap(/^(`+)([\s\S]*?[^`])\1(?!`)/),parse:function(i,a,f){return{content:i[2].replace(pRt,"$1")}},react:function(i,a,f){return Cl("code",f.key,{children:i.content})},html:function(i,a,f){return Ah("code",nL(i.content))}},br:{order:$u++,match:m0e(/^ {2,}\n/),parse:k0e,react:function(i,a,f){return Cl("br",f.key,kBe)},html:function(i,a,f){return"
"}},text:{order:$u++,match:m0e(/^[\s\S]+?(?=[^0-9A-Za-z\s\u00c0-\uffff]|\n\n| {2,}\n|\w+:\S|$)/),parse:function(i,a,f){return{content:i[0]}},react:function(i,a,f){return i.content},html:function(i,a,f){return nL(i.content)}}},yRt=function(a,f){!f&&typeof console<"u"&&console.warn("simple-markdown ruleOutput should take 'react' or 'html' as the second argument.");var p=function(y,b,E){return a[y.type][f](y,b,E)};return p},kRt=function(a){var f=function p(w,y){if(y=y||{},Array.isArray(w)){for(var b=y.key,E=[],S=null,N=0;N{R!==0&&(y++,w.push([])),B.split(" ").forEach(j=>{j&&w[y].push({content:j,type:S||"normal"})})}):(E.type==="strong"||E.type==="em")&&E.content.forEach(N=>{b(N,E.type)})}return p.forEach(E=>{E.type==="paragraph"&&E.content.forEach(S=>{b(S)})}),w}function ARt(i){const a=DBe.defaultBlockParse,f=a(i);function p(w){return w.type==="text"?w.content.replace(/\n/g,"
"):w.type==="strong"?`${w.content.map(p).join("")}`:w.type==="em"?`${w.content.map(p).join("")}`:w.type==="paragraph"?`

${w.content.map(p).join("")}

`:""}return f.map(p).join("")}function LRt(i,a){a&&i.attr("style",a)}function MRt(i,a,f,p){const w=i.append("foreignObject"),y=w.append("xhtml:div"),b=a.label,E=a.isNode?"nodeLabel":"edgeLabel";y.html(`"+b+""),LRt(y,a.labelStyle),y.style("display","table-cell"),y.style("white-space","nowrap"),y.style("max-width",f+"px"),y.attr("xmlns","http://www.w3.org/1999/xhtml");let S=y.node().getBoundingClientRect();return S.width===f&&(y.style("display","table"),y.style("white-space","break-spaces"),y.style("width",f+"px"),S=y.node().getBoundingClientRect()),w.style("width",S.width),w.style("height",S.height),w.node()}function IBe(i,a,f){return i.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",a*f-.1+"em").attr("dy",f+"em")}function DRt(i,a,f,p=!1){const y=a.append("g");let b=y.insert("rect").attr("class","background");const E=y.append("text").attr("y","-10.1");let S=-1;if(f.forEach(N=>{S++;let B=IBe(E,S,1.1),R=[...N].reverse(),j,$=[];for(;R.length;)j=R.pop(),$.push(j),OBe(B,$),B.node().getComputedTextLength()>i&&($.pop(),R.push(j),OBe(B,$),$=[],S++,B=IBe(E,S,1.1))}),p){const N=E.node().getBBox(),B=2;return b.attr("x",-B).attr("y",-B).attr("width",N.width+2*B).attr("height",N.height+2*B),y.node()}else return E.node()}function OBe(i,a){i.text(""),a.forEach((f,p)=>{const w=i.append("tspan").attr("font-style",f.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",f.type==="strong"?"bold":"normal");p===0?w.text(f.content):w.text(" "+f.content)})}const dK=(i,a="",{style:f="",isTitle:p=!1,classes:w="",useHtmlLabels:y=!0,isNode:b=!0,width:E,addSvgBackground:S=!1}={})=>{if(Fe.info("createText",a,f,p,w,y,b,S),y){const N=ARt(a),B={isNode:b,label:XN(N).replace(/fa[blrs]?:fa-[\w-]+/g,j=>``),labelStyle:f.replace("fill:","color:")};return MRt(i,B,E,w)}else{const N=SRt(a),B=['"',"'",".",",",":",";","!","?","(",")","[","]","{","}"];let R;return N.forEach($=>{$.forEach(V=>{B.includes(V.content)&&R&&(R.content+=V.content,V.content=""),R=V})}),DRt(E,i,N,S)}},jd=async(i,a,f,p)=>{let w;const y=a.useHtmlLabels||d1(Tt().flowchart.htmlLabels);f?w=f:w="node default";const b=i.insert("g").attr("class",w).attr("id",a.domId||a.id),E=b.insert("g").attr("class","label").attr("style",a.labelStyle);let S;a.labelText===void 0?S="":S=typeof a.labelText=="string"?a.labelText:a.labelText[0];const N=E.node();let B;a.labelType==="markdown"?B=dK(E,ep(XN(S),Tt()),{useHtmlLabels:y,width:a.width||Tt().flowchart.wrappingWidth,classes:"markdown-node-label"}):B=N.appendChild(sp(ep(XN(S),Tt()),a.labelStyle,!1,p));let R=B.getBBox();const j=a.padding/2;if(d1(Tt().flowchart.htmlLabels)){const $=B.children[0],V=Cr(B),Q=$.getElementsByTagName("img");if(Q){const oe=S.replace(/]*>/g,"").trim()==="";await Promise.all([...Q].map(ce=>new Promise(se=>ce.addEventListener("load",function(){if(ce.style.display="flex",ce.style.flexDirection="column",oe){const ge=Tt().fontSize?Tt().fontSize:window.getComputedStyle(document.body).fontSize,ye=5;ce.style.width=parseInt(ge,10)*ye+"px"}else ce.style.width="100%";se(ce)}))))}R=$.getBoundingClientRect(),V.attr("width",R.width),V.attr("height",R.height)}return y?E.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"):E.attr("transform","translate(0, "+-R.height/2+")"),a.centerLabel&&E.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),E.insert("rect",":first-child"),{shapeSvg:b,bbox:R,halfPadding:j,label:E}},uf=(i,a)=>{const f=a.node().getBBox();i.width=f.width,i.height=f.height};function T5(i,a,f,p){return i.insert("polygon",":first-child").attr("points",p.map(function(w){return w.x+","+w.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-a/2+","+f/2+")")}let ec={},nm={},NBe={};const IRt=()=>{nm={},NBe={},ec={}},gK=(i,a)=>(Fe.trace("In isDecendant",a," ",i," = ",nm[a].includes(i)),!!nm[a].includes(i)),ORt=(i,a)=>(Fe.info("Decendants of ",a," is ",nm[a]),Fe.info("Edge is ",i),i.v===a||i.w===a?!1:nm[a]?nm[a].includes(i.v)||gK(i.v,a)||gK(i.w,a)||nm[a].includes(i.w):(Fe.debug("Tilt, ",a,",not in decendants"),!1)),PBe=(i,a,f,p)=>{Fe.warn("Copying children of ",i,"root",p,"data",a.node(i),p);const w=a.children(i)||[];i!==p&&w.push(i),Fe.warn("Copying (nodes) clusterId",i,"nodes",w),w.forEach(y=>{if(a.children(y).length>0)PBe(y,a,f,p);else{const b=a.node(y);Fe.info("cp ",y," to ",p," with parent ",i),f.setNode(y,b),p!==a.parent(y)&&(Fe.warn("Setting parent",y,a.parent(y)),f.setParent(y,a.parent(y))),i!==p&&y!==i?(Fe.debug("Setting parent",y,i),f.setParent(y,i)):(Fe.info("In copy ",i,"root",p,"data",a.node(i),p),Fe.debug("Not Setting parent for node=",y,"cluster!==rootId",i!==p,"node!==clusterId",y!==i));const E=a.edges(y);Fe.debug("Copying Edges",E),E.forEach(S=>{Fe.info("Edge",S);const N=a.edge(S.v,S.w,S.name);Fe.info("Edge data",N,p);try{ORt(S,p)?(Fe.info("Copying as ",S.v,S.w,N,S.name),f.setEdge(S.v,S.w,N,S.name),Fe.info("newGraph edges ",f.edges(),f.edge(f.edges()[0]))):Fe.info("Skipping copy of edge ",S.v,"-->",S.w," rootId: ",p," clusterId:",i)}catch(B){Fe.error(B)}})}Fe.debug("Removing node",y),a.removeNode(y)})},BBe=(i,a)=>{const f=a.children(i);let p=[...f];for(const w of f)NBe[w]=i,p=[...p,...BBe(w,a)];return p},pP=(i,a)=>{Fe.trace("Searching",i);const f=a.children(i);if(Fe.trace("Searching children of id ",i,f),f.length<1)return Fe.trace("This is a valid node",i),i;for(const p of f){const w=pP(p,a);if(w)return Fe.trace("Found replacement for",i," => ",w),w}},pK=i=>!ec[i]||!ec[i].externalConnections?i:ec[i]?ec[i].id:i,NRt=(i,a)=>{if(!i||a>10){Fe.debug("Opting out, no graph ");return}else Fe.debug("Opting in, graph ");i.nodes().forEach(function(f){i.children(f).length>0&&(Fe.warn("Cluster identified",f," Replacement id in edges: ",pP(f,i)),nm[f]=BBe(f,i),ec[f]={id:pP(f,i),clusterData:i.node(f)})}),i.nodes().forEach(function(f){const p=i.children(f),w=i.edges();p.length>0?(Fe.debug("Cluster identified",f,nm),w.forEach(y=>{if(y.v!==f&&y.w!==f){const b=gK(y.v,f),E=gK(y.w,f);b^E&&(Fe.warn("Edge: ",y," leaves cluster ",f),Fe.warn("Decendants of XXX ",f,": ",nm[f]),ec[f].externalConnections=!0)}})):Fe.debug("Not a cluster ",f,nm)}),i.edges().forEach(function(f){const p=i.edge(f);Fe.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(f)),Fe.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(i.edge(f)));let w=f.v,y=f.w;if(Fe.warn("Fix XXX",ec,"ids:",f.v,f.w,"Translating: ",ec[f.v]," --- ",ec[f.w]),ec[f.v]&&ec[f.w]&&ec[f.v]===ec[f.w]){Fe.warn("Fixing and trixing link to self - removing XXX",f.v,f.w,f.name),Fe.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=pK(f.v),y=pK(f.w),i.removeEdge(f.v,f.w,f.name);const b=f.w+"---"+f.v;i.setNode(b,{domId:b,id:b,labelStyle:"",labelText:p.label,padding:0,shape:"labelRect",style:""});const E=JSON.parse(JSON.stringify(p)),S=JSON.parse(JSON.stringify(p));E.label="",E.arrowTypeEnd="none",S.label="",E.fromCluster=f.v,S.toCluster=f.v,i.setEdge(w,b,E,f.name+"-cyclic-special"),i.setEdge(b,y,S,f.name+"-cyclic-special")}else(ec[f.v]||ec[f.w])&&(Fe.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=pK(f.v),y=pK(f.w),i.removeEdge(f.v,f.w,f.name),w!==f.v&&(p.fromCluster=f.v),y!==f.w&&(p.toCluster=f.w),Fe.warn("Fix Replacing with XXX",w,y,f.name),i.setEdge(w,y,p,f.name))}),Fe.warn("Adjusted Graph",E5(i)),RBe(i,0),Fe.trace(ec)},RBe=(i,a)=>{if(Fe.warn("extractor - ",a,E5(i),i.children("D")),a>10){Fe.error("Bailing out");return}let f=i.nodes(),p=!1;for(const w of f){const y=i.children(w);p=p||y.length>0}if(!p){Fe.debug("Done, no node has children",i.nodes());return}Fe.debug("Nodes = ",f,a);for(const w of f)if(Fe.debug("Extracting node",w,ec,ec[w]&&!ec[w].externalConnections,!i.parent(w),i.node(w),i.children("D")," Depth ",a),!ec[w])Fe.debug("Not a cluster",w,a);else if(!ec[w].externalConnections&&i.children(w)&&i.children(w).length>0){Fe.warn("Cluster without external connections, without a parent and with children",w,a);let b=i.graph().rankdir==="TB"?"LR":"TB";ec[w]&&ec[w].clusterData&&ec[w].clusterData.dir&&(b=ec[w].clusterData.dir,Fe.warn("Fixing dir",ec[w].clusterData.dir,b));const E=new zf({multigraph:!0,compound:!0}).setGraph({rankdir:b,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Fe.warn("Old graph before copy",E5(i)),PBe(w,i,E,w),i.setNode(w,{clusterNode:!0,id:w,clusterData:ec[w].clusterData,labelText:ec[w].labelText,graph:E}),Fe.warn("New graph after copy node: (",w,")",E5(E)),Fe.debug("Old graph after copy",E5(i))}else Fe.warn("Cluster ** ",w," **not meeting the criteria !externalConnections:",!ec[w].externalConnections," no parent: ",!i.parent(w)," children ",i.children(w)&&i.children(w).length>0,i.children("D"),a),Fe.debug(ec);f=i.nodes(),Fe.warn("New list of nodes",f);for(const w of f){const y=i.node(w);Fe.warn(" Now next level",w,y),y.clusterNode&&RBe(y.graph,a+1)}},FBe=(i,a)=>{if(a.length===0)return[];let f=Object.assign(a);return a.forEach(p=>{const w=i.children(p),y=FBe(i,w);f=[...f,...y]}),f},PRt=i=>FBe(i,i.children());function BRt(i,a){return i.intersect(a)}function jBe(i,a,f,p){var w=i.x,y=i.y,b=w-p.x,E=y-p.y,S=Math.sqrt(a*a*E*E+f*f*b*b),N=Math.abs(a*f*b/S);p.x0}function jRt(i,a,f){var p=i.x,w=i.y,y=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;typeof a.forEach=="function"?a.forEach(function(V){b=Math.min(b,V.x),E=Math.min(E,V.y)}):(b=Math.min(b,a.x),E=Math.min(E,a.y));for(var S=p-i.width/2-b,N=w-i.height/2-E,B=0;B1&&y.sort(function(V,Q){var oe=V.x-f.x,ce=V.y-f.y,se=Math.sqrt(oe*oe+ce*ce),ge=Q.x-f.x,ye=Q.y-f.y,ke=Math.sqrt(ge*ge+ye*ye);return se{var f=i.x,p=i.y,w=a.x-f,y=a.y-p,b=i.width/2,E=i.height/2,S,N;return Math.abs(y)*b>Math.abs(w)*E?(y<0&&(E=-E),S=y===0?0:E*w/y,N=E):(w<0&&(b=-b),S=b,N=w===0?0:b*y/w),{x:f+S,y:p+N}},Lh={node:BRt,circle:RRt,ellipse:jBe,polygon:jRt,rect:bP},$Rt=async(i,a)=>{a.useHtmlLabels||Tt().flowchart.htmlLabels||(a.centerLabel=!0);const{shapeSvg:p,bbox:w,halfPadding:y}=await jd(i,a,"node "+a.classes,!0);Fe.info("Classes = ",a.classes);const b=p.insert("rect",":first-child");return b.attr("rx",a.rx).attr("ry",a.ry).attr("x",-w.width/2-y).attr("y",-w.height/2-y).attr("width",w.width+a.padding).attr("height",w.height+a.padding),uf(a,b),a.intersect=function(E){return Lh.rect(a,E)},p};let HBe=0;const HRt=function(i,a,f,p,w){const y=function(se){switch(se){case w.db.relationType.AGGREGATION:return"aggregation";case w.db.relationType.EXTENSION:return"extension";case w.db.relationType.COMPOSITION:return"composition";case w.db.relationType.DEPENDENCY:return"dependency";case w.db.relationType.LOLLIPOP:return"lollipop"}};a.points=a.points.filter(se=>!Number.isNaN(se.y));const b=a.points,E=WE().x(function(se){return se.x}).y(function(se){return se.y}).curve(SA),S=i.append("path").attr("d",E(b)).attr("id","edge"+HBe).attr("class","relation");let N="";p.arrowMarkerAbsolute&&(N=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,N=N.replace(/\(/g,"\\("),N=N.replace(/\)/g,"\\)")),f.relation.lineType==1&&S.attr("class","relation dashed-line"),f.relation.lineType==10&&S.attr("class","relation dotted-line"),f.relation.type1!=="none"&&S.attr("marker-start","url("+N+"#"+y(f.relation.type1)+"Start)"),f.relation.type2!=="none"&&S.attr("marker-end","url("+N+"#"+y(f.relation.type2)+"End)");let B,R;const j=a.points.length;let $=co.calcLabelPosition(a.points);B=$.x,R=$.y;let V,Q,oe,ce;if(j%2!==0&&j>1){let se=co.calcCardinalityPosition(f.relation.type1!=="none",a.points,a.points[0]),ge=co.calcCardinalityPosition(f.relation.type2!=="none",a.points,a.points[j-1]);Fe.debug("cardinality_1_point "+JSON.stringify(se)),Fe.debug("cardinality_2_point "+JSON.stringify(ge)),V=se.x,Q=se.y,oe=ge.x,ce=ge.y}if(f.title!==void 0){const se=i.append("g").attr("class","classLabel"),ge=se.append("text").attr("class","label").attr("x",B).attr("y",R).attr("fill","red").attr("text-anchor","middle").text(f.title);window.label=ge;const ye=ge.node().getBBox();se.insert("rect",":first-child").attr("class","box").attr("x",ye.x-p.padding/2).attr("y",ye.y-p.padding/2).attr("width",ye.width+p.padding).attr("height",ye.height+p.padding)}Fe.info("Rendering relation "+JSON.stringify(f)),f.relationTitle1!==void 0&&f.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",V).attr("y",Q).attr("fill","black").attr("font-size","6").text(f.relationTitle1),f.relationTitle2!==void 0&&f.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",oe).attr("y",ce).attr("fill","black").attr("font-size","6").text(f.relationTitle2),HBe++},zRt=function(i,a,f,p){Fe.debug("Rendering class ",a,f);const w=a.id,y={id:w,label:a.id,width:0,height:0},b=i.append("g").attr("id",p.db.lookUpDomId(w)).attr("class","classGroup");let E;a.link?E=b.append("svg:a").attr("xlink:href",a.link).attr("target",a.linkTarget).append("text").attr("y",f.textHeight+f.padding).attr("x",0):E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);let S=!0;a.annotations.forEach(function(ke){const Ae=E.append("tspan").text("«"+ke+"»");S||Ae.attr("dy",f.textHeight),S=!1});let N=zBe(a);const B=E.append("tspan").text(N).attr("class","title");S||B.attr("dy",f.textHeight);const R=E.node().getBBox().height,j=b.append("line").attr("x1",0).attr("y1",f.padding+R+f.dividerMargin/2).attr("y2",f.padding+R+f.dividerMargin/2),$=b.append("text").attr("x",f.padding).attr("y",R+f.dividerMargin+f.textHeight).attr("fill","white").attr("class","classText");S=!0,a.members.forEach(function(ke){GBe($,ke,S,f),S=!1});const V=$.node().getBBox(),Q=b.append("line").attr("x1",0).attr("y1",f.padding+R+f.dividerMargin+V.height).attr("y2",f.padding+R+f.dividerMargin+V.height),oe=b.append("text").attr("x",f.padding).attr("y",R+2*f.dividerMargin+V.height+f.textHeight).attr("fill","white").attr("class","classText");S=!0,a.methods.forEach(function(ke){GBe(oe,ke,S,f),S=!1});const ce=b.node().getBBox();var se=" ";a.cssClasses.length>0&&(se=se+a.cssClasses.join(" "));const ye=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",ce.width+2*f.padding).attr("height",ce.height+f.padding+.5*f.dividerMargin).attr("class",se).node().getBBox().width;return E.node().childNodes.forEach(function(ke){ke.setAttribute("x",(ye-ke.getBBox().width)/2)}),a.tooltip&&E.insert("title").text(a.tooltip),j.attr("x2",ye),Q.attr("x2",ye),y.width=ye,y.height=ce.height+f.padding+.5*f.dividerMargin,y},zBe=function(i){let a=i.id;return i.type&&(a+="<"+i.type+">"),a},GRt=function(i,a,f,p){Fe.debug("Rendering note ",a,f);const w=a.id,y={id:w,text:a.text,width:0,height:0},b=i.append("g").attr("id",w).attr("class","classGroup");let E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);const S=JSON.parse(`"${a.text}"`).split(` +`);S.forEach(function(j){Fe.debug(`Adding line: ${j}`),E.append("tspan").text(j).attr("class","title").attr("dy",f.textHeight)});const N=b.node().getBBox(),R=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",N.width+2*f.padding).attr("height",N.height+S.length*f.textHeight+f.padding+.5*f.dividerMargin).node().getBBox().width;return E.node().childNodes.forEach(function(j){j.setAttribute("x",(R-j.getBBox().width)/2)}),y.width=R,y.height=N.height+S.length*f.textHeight+f.padding+.5*f.dividerMargin,y},bK=function(i){const a=/^([#+~-])?(\w+)(~\w+~|\[])?\s+(\w+) *([$*])?$/,f=/^([#+|~-])?(\w+) *\( *(.*)\) *([$*])? *(\w*[[\]|~]*\s*\w*~?)$/;let p=i.match(a),w=i.match(f);return p&&!w?qRt(p):w?VRt(w):URt(i)},qRt=function(i){let a="",f="";try{let p=i[1]?i[1].trim():"",w=i[2]?i[2].trim():"",y=i[3]?Yk(i[3].trim()):"",b=i[4]?i[4].trim():"",E=i[5]?i[5].trim():"";f=p+w+y+" "+b,a=vK(E)}catch{f=i}return{displayText:f,cssStyle:a}},VRt=function(i){let a="",f="";try{let p=i[1]?i[1].trim():"",w=i[2]?i[2].trim():"",y=i[3]?Yk(i[3].trim()):"",b=i[4]?i[4].trim():"",E=i[5]?" : "+Yk(i[5]).trim():"";f=p+w+"("+y+")"+E,a=vK(b)}catch{f=i}return{displayText:f,cssStyle:a}},URt=function(i){let a="",f="",p="",w="",y=i.substring(0,1),b=i.substring(i.length-1,i.length);y.match(/[#+~-]/)&&(w=y);let E=/[\s\w)~]/;b.match(E)||(f=vK(b));let S=w===""?0:1,N=f===""?i.length:i.length-1;i=i.substring(S,N);let B=i.indexOf("("),R=i.indexOf(")");if(B>1&&R>B&&R<=i.length){let j=i.substring(0,B).trim();const $=i.substring(B+1,R);if(a=w+j+"("+Yk($.trim())+")",R{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=w+y,E=[{x:b/2,y:0},{x:b,y:-b/2},{x:b/2,y:-b},{x:0,y:-b/2}];Fe.info("Question main (Circle)");const S=T5(f,b,b,E);return S.attr("style",a.style),uf(a,S),a.intersect=function(N){return Fe.warn("Intersect called"),Lh.polygon(a,E,N)},f},WRt=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),p=28,w=[{x:0,y:p/2},{x:p/2,y:0},{x:0,y:-p/2},{x:-p/2,y:0}];return f.insert("polygon",":first-child").attr("points",w.map(function(b){return b.x+","+b.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),a.width=28,a.height=28,a.intersect=function(b){return Lh.circle(a,14,b)},f},KRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=4,y=p.height+a.padding,b=y/w,E=p.width+2*b+a.padding,S=[{x:b,y:0},{x:E-b,y:0},{x:E,y:-y/2},{x:E-b,y:-y},{x:b,y:-y},{x:0,y:-y/2}],N=T5(f,E,y,S);return N.attr("style",a.style),uf(a,N),a.intersect=function(B){return Lh.polygon(a,S,B)},f},YRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:-y/2,y:0},{x:w,y:0},{x:w,y:-y},{x:-y/2,y:-y},{x:0,y:-y/2}];return T5(f,w,y,b).attr("style",a.style),a.width=w+y,a.height=y,a.intersect=function(S){return Lh.polygon(a,b,S)},f},XRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:-2*y/6,y:0},{x:w-y/6,y:0},{x:w+2*y/6,y:-y},{x:y/6,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},QRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:2*y/6,y:0},{x:w+y/6,y:0},{x:w-2*y/6,y:-y},{x:-y/6,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},ZRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:-2*y/6,y:0},{x:w+2*y/6,y:0},{x:w-y/6,y:-y},{x:y/6,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},JRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:y/6,y:0},{x:w-y/6,y:0},{x:w+2*y/6,y:-y},{x:-2*y/6,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},eFt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:0,y:0},{x:w+y/2,y:0},{x:w,y:-y/2},{x:w+y/2,y:-y},{x:0,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},tFt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=w/2,b=y/(2.5+w/50),E=p.height+b+a.padding,S="M 0,"+b+" a "+y+","+b+" 0,0,0 "+w+" 0 a "+y+","+b+" 0,0,0 "+-w+" 0 l 0,"+E+" a "+y+","+b+" 0,0,0 "+w+" 0 l 0,"+-E,N=f.attr("label-offset-y",b).insert("path",":first-child").attr("style",a.style).attr("d",S).attr("transform","translate("+-w/2+","+-(E/2+b)+")");return uf(a,N),a.intersect=function(B){const R=Lh.rect(a,B),j=R.x-a.x;if(y!=0&&(Math.abs(j)a.height/2-b)){let $=b*b*(1-j*j/(y*y));$!=0&&($=Math.sqrt($)),$=b-$,B.y-a.y>0&&($=-$),R.y+=$}return R},f},nFt=async(i,a)=>{const{shapeSvg:f,bbox:p,halfPadding:w}=await jd(i,a,"node "+a.classes,!0),y=f.insert("rect",":first-child"),b=p.width+a.padding,E=p.height+a.padding;if(y.attr("class","basic label-container").attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",-p.width/2-w).attr("y",-p.height/2-w).attr("width",b).attr("height",E),a.props){const S=new Set(Object.keys(a.props));a.props.borders&&(VBe(y,a.props.borders,b,E),S.delete("borders")),S.forEach(N=>{Fe.warn(`Unknown node property ${N}`)})}return uf(a,y),a.intersect=function(S){return Lh.rect(a,S)},f},rFt=async(i,a)=>{const{shapeSvg:f}=await jd(i,a,"label",!0);Fe.trace("Classes = ",a.classes);const p=f.insert("rect",":first-child"),w=0,y=0;if(p.attr("width",w).attr("height",y),f.attr("class","label edgeLabel"),a.props){const b=new Set(Object.keys(a.props));a.props.borders&&(VBe(p,a.props.borders,w,y),b.delete("borders")),b.forEach(E=>{Fe.warn(`Unknown node property ${E}`)})}return uf(a,p),a.intersect=function(b){return Lh.rect(a,b)},f};function VBe(i,a,f,p){const w=[],y=E=>{w.push(E,0)},b=E=>{w.push(0,E)};a.includes("t")?(Fe.debug("add top border"),y(f)):b(f),a.includes("r")?(Fe.debug("add right border"),y(p)):b(p),a.includes("b")?(Fe.debug("add bottom border"),y(f)):b(f),a.includes("l")?(Fe.debug("add left border"),y(p)):b(p),i.attr("stroke-dasharray",w.join(" "))}const iFt=(i,a)=>{let f;a.classes?f="node "+a.classes:f="node default";const p=i.insert("g").attr("class",f).attr("id",a.domId||a.id),w=p.insert("rect",":first-child"),y=p.insert("line"),b=p.insert("g").attr("class","label"),E=a.labelText.flat?a.labelText.flat():a.labelText;let S="";typeof E=="object"?S=E[0]:S=E,Fe.info("Label text abc79",S,E,typeof E=="object");const N=b.node().appendChild(sp(S,a.labelStyle,!0,!0));let B={width:0,height:0};if(d1(Tt().flowchart.htmlLabels)){const Q=N.children[0],oe=Cr(N);B=Q.getBoundingClientRect(),oe.attr("width",B.width),oe.attr("height",B.height)}Fe.info("Text 2",E);const R=E.slice(1,E.length);let j=N.getBBox();const $=b.node().appendChild(sp(R.join?R.join("
"):R,a.labelStyle,!0,!0));if(d1(Tt().flowchart.htmlLabels)){const Q=$.children[0],oe=Cr($);B=Q.getBoundingClientRect(),oe.attr("width",B.width),oe.attr("height",B.height)}const V=a.padding/2;return Cr($).attr("transform","translate( "+(B.width>j.width?0:(j.width-B.width)/2)+", "+(j.height+V+5)+")"),Cr(N).attr("transform","translate( "+(B.width{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.height+a.padding,y=p.width+w/4+a.padding,b=f.insert("rect",":first-child").attr("style",a.style).attr("rx",w/2).attr("ry",w/2).attr("x",-y/2).attr("y",-w/2).attr("width",y).attr("height",w);return uf(a,b),a.intersect=function(E){return Lh.rect(a,E)},f},aFt=async(i,a)=>{const{shapeSvg:f,bbox:p,halfPadding:w}=await jd(i,a,void 0,!0),y=f.insert("circle",":first-child");return y.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",p.width/2+w).attr("width",p.width+a.padding).attr("height",p.height+a.padding),Fe.info("Circle main"),uf(a,y),a.intersect=function(b){return Fe.info("Circle intersect",a,p.width/2+w,b),Lh.circle(a,p.width/2+w,b)},f},oFt=async(i,a)=>{const{shapeSvg:f,bbox:p,halfPadding:w}=await jd(i,a,void 0,!0),y=5,b=f.insert("g",":first-child"),E=b.insert("circle"),S=b.insert("circle");return E.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",p.width/2+w+y).attr("width",p.width+a.padding+y*2).attr("height",p.height+a.padding+y*2),S.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",p.width/2+w).attr("width",p.width+a.padding).attr("height",p.height+a.padding),Fe.info("DoubleCircle main"),uf(a,E),a.intersect=function(N){return Fe.info("DoubleCircle intersect",a,p.width/2+w+y,N),Lh.circle(a,p.width/2+w+y,N)},f},cFt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:0,y:0},{x:w,y:0},{x:w,y:-y},{x:0,y:-y},{x:0,y:0},{x:-8,y:0},{x:w+8,y:0},{x:w+8,y:-y},{x:-8,y:-y},{x:-8,y:0}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},uFt=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),p=f.insert("circle",":first-child");return p.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),uf(a,p),a.intersect=function(w){return Lh.circle(a,7,w)},f},UBe=(i,a,f)=>{const p=i.insert("g").attr("class","node default").attr("id",a.domId||a.id);let w=70,y=10;f==="LR"&&(w=10,y=70);const b=p.append("rect").attr("x",-1*w/2).attr("y",-1*y/2).attr("width",w).attr("height",y).attr("class","fork-join");return uf(a,b),a.height=a.height+a.padding/2,a.width=a.width+a.padding/2,a.intersect=function(E){return Lh.rect(a,E)},p},WBe={rhombus:qBe,question:qBe,rect:nFt,labelRect:rFt,rectWithTitle:iFt,choice:WRt,circle:aFt,doublecircle:oFt,stadium:sFt,hexagon:KRt,rect_left_inv_arrow:YRt,lean_right:XRt,lean_left:QRt,trapezoid:ZRt,inv_trapezoid:JRt,rect_right_inv_arrow:eFt,cylinder:tFt,start:uFt,end:(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),p=f.insert("circle",":first-child"),w=f.insert("circle",":first-child");return w.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),p.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),uf(a,w),a.intersect=function(y){return Lh.circle(a,7,y)},f},note:$Rt,subroutine:cFt,fork:UBe,join:UBe,class_box:(i,a)=>{const f=a.padding/2,p=4,w=8;let y;a.classes?y="node "+a.classes:y="node default";const b=i.insert("g").attr("class",y).attr("id",a.domId||a.id),E=b.insert("rect",":first-child"),S=b.insert("line"),N=b.insert("line");let B=0,R=p;const j=b.insert("g").attr("class","label");let $=0;const V=a.classData.annotations&&a.classData.annotations[0],Q=a.classData.annotations[0]?"«"+a.classData.annotations[0]+"»":"",oe=j.node().appendChild(sp(Q,a.labelStyle,!0,!0));let ce=oe.getBBox();if(d1(Tt().flowchart.htmlLabels)){const ve=oe.children[0],te=Cr(oe);ce=ve.getBoundingClientRect(),te.attr("width",ce.width),te.attr("height",ce.height)}a.classData.annotations[0]&&(R+=ce.height+p,B+=ce.width);let se=a.classData.label;a.classData.type!==void 0&&a.classData.type!==""&&(Tt().flowchart.htmlLabels?se+="<"+a.classData.type+">":se+="<"+a.classData.type+">");const ge=j.node().appendChild(sp(se,a.labelStyle,!0,!0));Cr(ge).attr("class","classTitle");let ye=ge.getBBox();if(d1(Tt().flowchart.htmlLabels)){const ve=ge.children[0],te=Cr(ge);ye=ve.getBoundingClientRect(),te.attr("width",ye.width),te.attr("height",ye.height)}R+=ye.height+p,ye.width>B&&(B=ye.width);const ke=[];a.classData.members.forEach(ve=>{const te=bK(ve);let xe=te.displayText;Tt().flowchart.htmlLabels&&(xe=xe.replace(//g,">"));const De=j.node().appendChild(sp(xe,te.cssStyle?te.cssStyle:a.labelStyle,!0,!0));let he=De.getBBox();if(d1(Tt().flowchart.htmlLabels)){const Ie=De.children[0],ee=Cr(De);he=Ie.getBoundingClientRect(),ee.attr("width",he.width),ee.attr("height",he.height)}he.width>B&&(B=he.width),R+=he.height+p,ke.push(De)}),R+=w;const Ae=[];if(a.classData.methods.forEach(ve=>{const te=bK(ve);let xe=te.displayText;Tt().flowchart.htmlLabels&&(xe=xe.replace(//g,">"));const De=j.node().appendChild(sp(xe,te.cssStyle?te.cssStyle:a.labelStyle,!0,!0));let he=De.getBBox();if(d1(Tt().flowchart.htmlLabels)){const Ie=De.children[0],ee=Cr(De);he=Ie.getBoundingClientRect(),ee.attr("width",he.width),ee.attr("height",he.height)}he.width>B&&(B=he.width),R+=he.height+p,Ae.push(De)}),R+=w,V){let ve=(B-ce.width)/2;Cr(oe).attr("transform","translate( "+(-1*B/2+ve)+", "+-1*R/2+")"),$=ce.height+p}let de=(B-ye.width)/2;return Cr(ge).attr("transform","translate( "+(-1*B/2+de)+", "+(-1*R/2+$)+")"),$+=ye.height+p,S.attr("class","divider").attr("x1",-B/2-f).attr("x2",B/2+f).attr("y1",-R/2-f+w+$).attr("y2",-R/2-f+w+$),$+=w,ke.forEach(ve=>{Cr(ve).attr("transform","translate( "+-B/2+", "+(-1*R/2+$+w/2)+")"),$+=ye.height+p}),$+=w,N.attr("class","divider").attr("x1",-B/2-f).attr("x2",B/2+f).attr("y1",-R/2-f+w+$).attr("y2",-R/2-f+w+$),$+=w,Ae.forEach(ve=>{Cr(ve).attr("transform","translate( "+-B/2+", "+(-1*R/2+$)+")"),$+=ye.height+p}),E.attr("class","outer title-state").attr("x",-B/2-f).attr("y",-(R/2)-f).attr("width",B+a.padding).attr("height",R+a.padding),uf(a,E),a.intersect=function(ve){return Lh.rect(a,ve)},b}};let rL={};const KBe=async(i,a,f)=>{let p,w;if(a.link){let y;Tt().securityLevel==="sandbox"?y="_top":a.linkTarget&&(y=a.linkTarget||"_blank"),p=i.insert("svg:a").attr("xlink:href",a.link).attr("target",y),w=await WBe[a.shape](p,a,f)}else w=await WBe[a.shape](i,a,f),p=w;return a.tooltip&&w.attr("title",a.tooltip),a.class&&w.attr("class","node default "+a.class),rL[a.id]=p,a.haveCallback&&rL[a.id].attr("class",rL[a.id].attr("class")+" clickable"),p},lFt=(i,a)=>{rL[a.id]=i},hFt=()=>{rL={}},YBe=i=>{const a=rL[i.id];Fe.trace("Transforming node",i.diff,i,"translate("+(i.x-i.width/2-5)+", "+i.width/2+")");const f=8,p=i.diff||0;return i.clusterNode?a.attr("transform","translate("+(i.x+p-i.width/2)+", "+(i.y-i.height/2-f)+")"):a.attr("transform","translate("+i.x+", "+i.y+")"),p},fFt={rect:(i,a)=>{Fe.info("Creating subgraph rect for ",a.id,a);const f=i.insert("g").attr("class","cluster"+(a.class?" "+a.class:"")).attr("id",a.id),p=f.insert("rect",":first-child"),w=d1(Tt().flowchart.htmlLabels),y=f.insert("g").attr("class","cluster-label"),b=a.labelType==="markdown"?dK(y,a.labelText,{style:a.labelStyle,useHtmlLabels:w}):y.node().appendChild(sp(a.labelText,a.labelStyle,void 0,!0));let E=b.getBBox();if(d1(Tt().flowchart.htmlLabels)){const j=b.children[0],$=Cr(b);E=j.getBoundingClientRect(),$.attr("width",E.width),$.attr("height",E.height)}const S=0*a.padding,N=S/2,B=a.width<=E.width+S?E.width+S:a.width;a.width<=E.width+S?a.diff=(E.width-a.width)/2-a.padding/2:a.diff=-a.padding/2,Fe.trace("Data ",a,JSON.stringify(a)),p.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-B/2).attr("y",a.y-a.height/2-N).attr("width",B).attr("height",a.height+S),w?y.attr("transform","translate("+(a.x-E.width/2)+", "+(a.y-a.height/2)+")"):y.attr("transform","translate("+a.x+", "+(a.y-a.height/2)+")");const R=p.node().getBBox();return a.width=R.width,a.height=R.height,a.intersect=function(j){return bP(a,j)},f},roundedWithTitle:(i,a)=>{const f=i.insert("g").attr("class",a.classes).attr("id",a.id),p=f.insert("rect",":first-child"),w=f.insert("g").attr("class","cluster-label"),y=f.append("rect"),b=w.node().appendChild(sp(a.labelText,a.labelStyle,void 0,!0));let E=b.getBBox();if(d1(Tt().flowchart.htmlLabels)){const j=b.children[0],$=Cr(b);E=j.getBoundingClientRect(),$.attr("width",E.width),$.attr("height",E.height)}E=b.getBBox();const S=0*a.padding,N=S/2,B=a.width<=E.width+a.padding?E.width+a.padding:a.width;a.width<=E.width+a.padding?a.diff=(E.width+a.padding*0-a.width)/2:a.diff=-a.padding/2,p.attr("class","outer").attr("x",a.x-B/2-N).attr("y",a.y-a.height/2-N).attr("width",B+S).attr("height",a.height+S),y.attr("class","inner").attr("x",a.x-B/2-N).attr("y",a.y-a.height/2-N+E.height-1).attr("width",B+S).attr("height",a.height+S-E.height-3),w.attr("transform","translate("+(a.x-E.width/2)+", "+(a.y-a.height/2-a.padding/3+(d1(Tt().flowchart.htmlLabels)?5:3))+")");const R=p.node().getBBox();return a.height=R.height,a.intersect=function(j){return bP(a,j)},f},noteGroup:(i,a)=>{const f=i.insert("g").attr("class","note-cluster").attr("id",a.id),p=f.insert("rect",":first-child"),w=0*a.padding,y=w/2;p.attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-a.width/2-y).attr("y",a.y-a.height/2-y).attr("width",a.width+w).attr("height",a.height+w).attr("fill","none");const b=p.node().getBBox();return a.width=b.width,a.height=b.height,a.intersect=function(E){return bP(a,E)},f},divider:(i,a)=>{const f=i.insert("g").attr("class",a.classes).attr("id",a.id),p=f.insert("rect",":first-child"),w=0*a.padding,y=w/2;p.attr("class","divider").attr("x",a.x-a.width/2-y).attr("y",a.y-a.height/2).attr("width",a.width+w).attr("height",a.height+w);const b=p.node().getBBox();return a.width=b.width,a.height=b.height,a.diff=-a.padding/2,a.intersect=function(E){return bP(a,E)},f}};let XBe={};const dFt=(i,a)=>{Fe.trace("Inserting cluster");const f=a.shape||"rect";XBe[a.id]=fFt[f](i,a)},gFt=()=>{XBe={}};let wK={},$d={};const pFt=()=>{wK={},$d={}},QBe=(i,a)=>{const f=d1(Tt().flowchart.htmlLabels),p=a.labelType==="markdown"?dK(i,a.label,{style:a.labelStyle,useHtmlLabels:f,addSvgBackground:!0}):sp(a.label,a.labelStyle);Fe.info("abc82",a,a.labelType);const w=i.insert("g").attr("class","edgeLabel"),y=w.insert("g").attr("class","label");y.node().appendChild(p);let b=p.getBBox();if(f){const S=p.children[0],N=Cr(p);b=S.getBoundingClientRect(),N.attr("width",b.width),N.attr("height",b.height)}y.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),wK[a.id]=w,a.width=b.width,a.height=b.height;let E;if(a.startLabelLeft){const S=sp(a.startLabelLeft,a.labelStyle),N=i.insert("g").attr("class","edgeTerminals"),B=N.insert("g").attr("class","inner");E=B.node().appendChild(S);const R=S.getBBox();B.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),$d[a.id]||($d[a.id]={}),$d[a.id].startLeft=N,mK(E,a.startLabelLeft)}if(a.startLabelRight){const S=sp(a.startLabelRight,a.labelStyle),N=i.insert("g").attr("class","edgeTerminals"),B=N.insert("g").attr("class","inner");E=N.node().appendChild(S),B.node().appendChild(S);const R=S.getBBox();B.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),$d[a.id]||($d[a.id]={}),$d[a.id].startRight=N,mK(E,a.startLabelRight)}if(a.endLabelLeft){const S=sp(a.endLabelLeft,a.labelStyle),N=i.insert("g").attr("class","edgeTerminals"),B=N.insert("g").attr("class","inner");E=B.node().appendChild(S);const R=S.getBBox();B.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),N.node().appendChild(S),$d[a.id]||($d[a.id]={}),$d[a.id].endLeft=N,mK(E,a.endLabelLeft)}if(a.endLabelRight){const S=sp(a.endLabelRight,a.labelStyle),N=i.insert("g").attr("class","edgeTerminals"),B=N.insert("g").attr("class","inner");E=B.node().appendChild(S);const R=S.getBBox();B.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),N.node().appendChild(S),$d[a.id]||($d[a.id]={}),$d[a.id].endRight=N,mK(E,a.endLabelRight)}return p};function mK(i,a){Tt().flowchart.htmlLabels&&i&&(i.style.width=a.length*9+"px",i.style.height="12px")}const bFt=(i,a)=>{Fe.info("Moving label abc78 ",i.id,i.label,wK[i.id]);let f=a.updatedPath?a.updatedPath:a.originalPath;if(i.label){const p=wK[i.id];let w=i.x,y=i.y;if(f){const b=co.calcLabelPosition(f);Fe.info("Moving label "+i.label+" from (",w,",",y,") to (",b.x,",",b.y,") abc78"),a.updatedPath&&(w=b.x,y=b.y)}p.attr("transform","translate("+w+", "+y+")")}if(i.startLabelLeft){const p=$d[i.id].startLeft;let w=i.x,y=i.y;if(f){const b=co.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_left",f);w=b.x,y=b.y}p.attr("transform","translate("+w+", "+y+")")}if(i.startLabelRight){const p=$d[i.id].startRight;let w=i.x,y=i.y;if(f){const b=co.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_right",f);w=b.x,y=b.y}p.attr("transform","translate("+w+", "+y+")")}if(i.endLabelLeft){const p=$d[i.id].endLeft;let w=i.x,y=i.y;if(f){const b=co.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_left",f);w=b.x,y=b.y}p.attr("transform","translate("+w+", "+y+")")}if(i.endLabelRight){const p=$d[i.id].endRight;let w=i.x,y=i.y;if(f){const b=co.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_right",f);w=b.x,y=b.y}p.attr("transform","translate("+w+", "+y+")")}},vFt=(i,a)=>{const f=i.x,p=i.y,w=Math.abs(a.x-f),y=Math.abs(a.y-p),b=i.width/2,E=i.height/2;return w>=b||y>=E},wFt=(i,a,f)=>{Fe.warn(`intersection calc abc89: + outsidePoint: ${JSON.stringify(a)} + insidePoint : ${JSON.stringify(f)} + node : x:${i.x} y:${i.y} w:${i.width} h:${i.height}`);const p=i.x,w=i.y,y=Math.abs(p-f.x),b=i.width/2;let E=f.xMath.abs(p-a.x)*S){let R=f.y{Fe.warn("abc88 cutPathAtIntersect",i,a);let f=[],p=i[0],w=!1;return i.forEach(y=>{if(Fe.info("abc88 checking point",y,a),!vFt(a,y)&&!w){const b=wFt(a,p,y);Fe.warn("abc88 inside",y,p,b),Fe.warn("abc88 intersection",b);let E=!1;f.forEach(S=>{E=E||S.x===b.x&&S.y===b.y}),f.some(S=>S.x===b.x&&S.y===b.y)?Fe.warn("abc88 no intersect",b,f):f.push(b),w=!0}else Fe.warn("abc88 outside",y,p),p=y,w||f.push(y)}),Fe.warn("abc88 returning points",f),f},mFt=function(i,a,f,p,w,y){let b=f.points,E=!1;const S=y.node(a.v);var N=y.node(a.w);Fe.info("abc88 InsertEdge: ",f),N.intersect&&S.intersect&&(b=b.slice(1,f.points.length-1),b.unshift(S.intersect(b[0])),Fe.info("Last point",b[b.length-1],N,N.intersect(b[b.length-1])),b.push(N.intersect(b[b.length-1]))),f.toCluster&&(Fe.info("to cluster abc88",p[f.toCluster]),b=ZBe(f.points,p[f.toCluster].node),E=!0),f.fromCluster&&(Fe.info("from cluster abc88",p[f.fromCluster]),b=ZBe(b.reverse(),p[f.fromCluster].node).reverse(),E=!0);const B=b.filter(ce=>!Number.isNaN(ce.y));let R;w==="graph"||w==="flowchart"?R=f.curve||SA:R=SA;const j=WE().x(function(ce){return ce.x}).y(function(ce){return ce.y}).curve(R);let $;switch(f.thickness){case"normal":$="edge-thickness-normal";break;case"thick":$="edge-thickness-thick";break;case"invisible":$="edge-thickness-thick";break;default:$=""}switch(f.pattern){case"solid":$+=" edge-pattern-solid";break;case"dotted":$+=" edge-pattern-dotted";break;case"dashed":$+=" edge-pattern-dashed";break}const V=i.append("path").attr("d",j(B)).attr("id",f.id).attr("class"," "+$+(f.classes?" "+f.classes:"")).attr("style",f.style);let Q="";switch((Tt().flowchart.arrowMarkerAbsolute||Tt().state.arrowMarkerAbsolute)&&(Q=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,Q=Q.replace(/\(/g,"\\("),Q=Q.replace(/\)/g,"\\)")),Fe.info("arrowTypeStart",f.arrowTypeStart),Fe.info("arrowTypeEnd",f.arrowTypeEnd),f.arrowTypeStart){case"arrow_cross":V.attr("marker-start","url("+Q+"#"+w+"-crossStart)");break;case"arrow_point":V.attr("marker-start","url("+Q+"#"+w+"-pointStart)");break;case"arrow_barb":V.attr("marker-start","url("+Q+"#"+w+"-barbStart)");break;case"arrow_circle":V.attr("marker-start","url("+Q+"#"+w+"-circleStart)");break;case"aggregation":V.attr("marker-start","url("+Q+"#"+w+"-aggregationStart)");break;case"extension":V.attr("marker-start","url("+Q+"#"+w+"-extensionStart)");break;case"composition":V.attr("marker-start","url("+Q+"#"+w+"-compositionStart)");break;case"dependency":V.attr("marker-start","url("+Q+"#"+w+"-dependencyStart)");break;case"lollipop":V.attr("marker-start","url("+Q+"#"+w+"-lollipopStart)");break}switch(f.arrowTypeEnd){case"arrow_cross":V.attr("marker-end","url("+Q+"#"+w+"-crossEnd)");break;case"arrow_point":V.attr("marker-end","url("+Q+"#"+w+"-pointEnd)");break;case"arrow_barb":V.attr("marker-end","url("+Q+"#"+w+"-barbEnd)");break;case"arrow_circle":V.attr("marker-end","url("+Q+"#"+w+"-circleEnd)");break;case"aggregation":V.attr("marker-end","url("+Q+"#"+w+"-aggregationEnd)");break;case"extension":V.attr("marker-end","url("+Q+"#"+w+"-extensionEnd)");break;case"composition":V.attr("marker-end","url("+Q+"#"+w+"-compositionEnd)");break;case"dependency":V.attr("marker-end","url("+Q+"#"+w+"-dependencyEnd)");break;case"lollipop":V.attr("marker-end","url("+Q+"#"+w+"-lollipopEnd)");break}let oe={};return E&&(oe.updatedPath=b),oe.originalPath=f.points,oe},JBe=async(i,a,f,p)=>{Fe.info("Graph in recursive render: XXX",E5(a),p);const w=a.graph().rankdir;Fe.trace("Dir in recursive render - dir:",w);const y=i.insert("g").attr("class","root");a.nodes()?Fe.info("Recursive render XXX",a.nodes()):Fe.info("No nodes found for",a),a.edges().length>0&&Fe.trace("Recursive edges",a.edge(a.edges()[0]));const b=y.insert("g").attr("class","clusters"),E=y.insert("g").attr("class","edgePaths"),S=y.insert("g").attr("class","edgeLabels"),N=y.insert("g").attr("class","nodes");await Promise.all(a.nodes().map(async function(R){const j=a.node(R);if(p!==void 0){const $=JSON.parse(JSON.stringify(p.clusterData));Fe.info("Setting data for cluster XXX (",R,") ",$,p),a.setNode(p.id,$),a.parent(R)||(Fe.trace("Setting parent",R,p.id),a.setParent(R,p.id,$))}if(Fe.info("(Insert) Node XXX"+R+": "+JSON.stringify(a.node(R))),j&&j.clusterNode){Fe.info("Cluster identified",R,j.width,a.node(R));const $=await JBe(N,j.graph,f,a.node(R)),V=$.elem;uf(j,V),j.diff=$.diff||0,Fe.info("Node bounds (abc123)",R,j,j.width,j.x,j.y),lFt(V,j),Fe.warn("Recursive render complete ",V,j)}else a.children(R).length>0?(Fe.info("Cluster - the non recursive path XXX",R,j.id,j,a),Fe.info(pP(j.id,a)),ec[j.id]={id:pP(j.id,a),node:j}):(Fe.info("Node - the non recursive path",R,j.id,j),await KBe(N,a.node(R),w))})),a.edges().forEach(function(R){const j=a.edge(R.v,R.w,R.name);Fe.info("Edge "+R.v+" -> "+R.w+": "+JSON.stringify(R)),Fe.info("Edge "+R.v+" -> "+R.w+": ",R," ",JSON.stringify(a.edge(R))),Fe.info("Fix",ec,"ids:",R.v,R.w,"Translateing: ",ec[R.v],ec[R.w]),QBe(S,j)}),a.edges().forEach(function(R){Fe.info("Edge "+R.v+" -> "+R.w+": "+JSON.stringify(R))}),Fe.info("#############################################"),Fe.info("### Layout ###"),Fe.info("#############################################"),Fe.info(a),tL(a),Fe.info("Graph after layout:",E5(a));let B=0;return PRt(a).forEach(function(R){const j=a.node(R);Fe.info("Position "+R+": "+JSON.stringify(a.node(R))),Fe.info("Position "+R+": ("+j.x,","+j.y,") width: ",j.width," height: ",j.height),j&&j.clusterNode?YBe(j):a.children(R).length>0?(dFt(b,j),ec[j.id].node=j):YBe(j)}),a.edges().forEach(function(R){const j=a.edge(R);Fe.info("Edge "+R.v+" -> "+R.w+": "+JSON.stringify(j),j);const $=mFt(E,R,j,ec,f,a);bFt(j,$)}),a.nodes().forEach(function(R){const j=a.node(R);Fe.info(R,j.type,j.diff),j.type==="group"&&(B=j.diff)}),{elem:y,diff:B}},C0e=async(i,a,f,p,w)=>{vBe(i,f,p,w),hFt(),pFt(),gFt(),IRt(),Fe.warn("Graph at first:",E5(a)),NRt(a),Fe.warn("Graph after:",E5(a)),await JBe(i,a,p)},eRe={},yFt=function(i){const a=Object.keys(i);for(const f of a)eRe[f]=i[f]},tRe=function(i,a,f,p,w,y){const b=p.select(`[id="${f}"]`);Object.keys(i).forEach(function(S){const N=i[S];let B="default";N.classes.length>0&&(B=N.classes.join(" ")),B=B+" flowchart-label";const R=Yw(N.styles);let j=N.text!==void 0?N.text:N.id,$;if(Fe.info("vertex",N,N.labelType),N.labelType==="markdown")Fe.info("vertex",N,N.labelType);else if(d1(Tt().flowchart.htmlLabels)){const oe={label:j.replace(/fa[blrs]?:fa-[\w-]+/g,ce=>``)};$=h0e(b,oe).node(),$.parentNode.removeChild($)}else{const oe=w.createElementNS("http://www.w3.org/2000/svg","text");oe.setAttribute("style",R.labelStyle.replace("color:","fill:"));const ce=j.split(Wa.lineBreakRegex);for(const se of ce){const ge=w.createElementNS("http://www.w3.org/2000/svg","tspan");ge.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),ge.setAttribute("dy","1em"),ge.setAttribute("x","1"),ge.textContent=se,oe.appendChild(ge)}$=oe}let V=0,Q="";switch(N.type){case"round":V=5,Q="rect";break;case"square":Q="rect";break;case"diamond":Q="question";break;case"hexagon":Q="hexagon";break;case"odd":Q="rect_left_inv_arrow";break;case"lean_right":Q="lean_right";break;case"lean_left":Q="lean_left";break;case"trapezoid":Q="trapezoid";break;case"inv_trapezoid":Q="inv_trapezoid";break;case"odd_right":Q="rect_left_inv_arrow";break;case"circle":Q="circle";break;case"ellipse":Q="ellipse";break;case"stadium":Q="stadium";break;case"subroutine":Q="subroutine";break;case"cylinder":Q="cylinder";break;case"group":Q="rect";break;case"doublecircle":Q="doublecircle";break;default:Q="rect"}a.setNode(N.id,{labelStyle:R.labelStyle,shape:Q,labelText:j,labelType:N.labelType,rx:V,ry:V,class:B,style:R.style,id:N.id,link:N.link,linkTarget:N.linkTarget,tooltip:y.db.getTooltip(N.id)||"",domId:y.db.lookUpDomId(N.id),haveCallback:N.haveCallback,width:N.type==="group"?500:void 0,dir:N.dir,type:N.type,props:N.props,padding:Tt().flowchart.padding}),Fe.info("setNode",{labelStyle:R.labelStyle,labelType:N.labelType,shape:Q,labelText:j,rx:V,ry:V,class:B,style:R.style,id:N.id,domId:y.db.lookUpDomId(N.id),width:N.type==="group"?500:void 0,type:N.type,dir:N.dir,props:N.props,padding:Tt().flowchart.padding})})},nRe=function(i,a,f){Fe.info("abc78 edges = ",i);let p=0,w={},y,b;if(i.defaultStyle!==void 0){const E=Yw(i.defaultStyle);y=E.style,b=E.labelStyle}i.forEach(function(E){p++;var S="L-"+E.start+"-"+E.end;w[S]===void 0?(w[S]=0,Fe.info("abc78 new entry",S,w[S])):(w[S]++,Fe.info("abc78 new entry",S,w[S]));let N=S+"-"+w[S];Fe.info("abc78 new link id to be used is",S,N,w[S]);var B="LS-"+E.start,R="LE-"+E.end;const j={style:"",labelStyle:""};switch(j.minlen=E.length||1,E.type==="arrow_open"?j.arrowhead="none":j.arrowhead="normal",j.arrowTypeStart="arrow_open",j.arrowTypeEnd="arrow_open",E.type){case"double_arrow_cross":j.arrowTypeStart="arrow_cross";case"arrow_cross":j.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":j.arrowTypeStart="arrow_point";case"arrow_point":j.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":j.arrowTypeStart="arrow_circle";case"arrow_circle":j.arrowTypeEnd="arrow_circle";break}let $="",V="";switch(E.stroke){case"normal":$="fill:none;",y!==void 0&&($=y),b!==void 0&&(V=b),j.thickness="normal",j.pattern="solid";break;case"dotted":j.thickness="normal",j.pattern="dotted",j.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":j.thickness="thick",j.pattern="solid",j.style="stroke-width: 3.5px;fill:none;";break;case"invisible":j.thickness="invisible",j.pattern="solid",j.style="stroke-width: 0;fill:none;";break}if(E.style!==void 0){const Q=Yw(E.style);$=Q.style,V=Q.labelStyle}j.style=j.style+=$,j.labelStyle=j.labelStyle+=V,E.interpolate!==void 0?j.curve=Ub(E.interpolate,ng):i.defaultInterpolate!==void 0?j.curve=Ub(i.defaultInterpolate,ng):j.curve=Ub(eRe.curve,ng),E.text===void 0?E.style!==void 0&&(j.arrowheadStyle="fill: #333"):(j.arrowheadStyle="fill: #333",j.labelpos="c"),j.labelType=E.labelType,j.label=E.text.replace(Wa.lineBreakRegex,` +`),E.style===void 0&&(j.style=j.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),j.labelStyle=j.labelStyle.replace("color:","fill:"),j.id=N,j.classes="flowchart-link "+B+" "+R,a.setEdge(E.start,E.end,j,p)})},S0e={setConf:yFt,addVertices:tRe,addEdges:nRe,getClasses:function(i,a){Fe.info("Extracting classes"),a.db.clear();try{return a.parse(i),a.db.getClasses()}catch{return}},draw:async function(i,a,f,p){Fe.info("Drawing flowchart"),p.db.clear(),ix.setGen("gen-2"),p.parser.parse(i);let w=p.db.getDirection();w===void 0&&(w="TD");const{securityLevel:y,flowchart:b}=Tt(),E=b.nodeSpacing||50,S=b.rankSpacing||50;let N;y==="sandbox"&&(N=Cr("#i"+a));const B=Cr(y==="sandbox"?N.nodes()[0].contentDocument.body:"body"),R=y==="sandbox"?N.nodes()[0].contentDocument:document,j=new zf({multigraph:!0,compound:!0}).setGraph({rankdir:w,nodesep:E,ranksep:S,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let $;const V=p.db.getSubGraphs();Fe.info("Subgraphs - ",V);for(let ke=V.length-1;ke>=0;ke--)$=V[ke],Fe.info("Subgraph - ",$),p.db.addVertex($.id,{text:$.title,type:$.labelType},"group",void 0,$.classes,$.dir);const Q=p.db.getVertices(),oe=p.db.getEdges();Fe.info("Edges",oe);let ce=0;for(ce=V.length-1;ce>=0;ce--){$=V[ce],Jfe("cluster").append("text");for(let ke=0;ke<$.nodes.length;ke++)Fe.info("Setting up subgraphs",$.nodes[ke],$.id),j.setParent($.nodes[ke],$.id)}tRe(Q,j,a,B,R,p),nRe(oe,j);const se=B.select(`[id="${a}"]`),ge=B.select("#"+a+" g");if(await C0e(ge,j,["point","circle","cross"],"flowchart",a),co.insertTitle(se,"flowchartTitleText",b.titleTopMargin,p.db.getDiagramTitle()),YE(j,se,b.diagramPadding,b.useMaxWidth),p.db.indexNodes("subGraph"+ce),!b.htmlLabels){const ke=R.querySelectorAll('[id="'+a+'"] .edgeLabel .label');for(const Ae of ke){const de=Ae.getBBox(),ve=R.createElementNS("http://www.w3.org/2000/svg","rect");ve.setAttribute("rx",0),ve.setAttribute("ry",0),ve.setAttribute("width",de.width),ve.setAttribute("height",de.height),Ae.insertBefore(ve,Ae.firstChild)}}Object.keys(Q).forEach(function(ke){const Ae=Q[ke];if(Ae.link){const de=Cr("#"+a+' [id="'+ke+'"]');if(de){const ve=R.createElementNS("http://www.w3.org/2000/svg","a");ve.setAttributeNS("http://www.w3.org/2000/svg","class",Ae.classes.join(" ")),ve.setAttributeNS("http://www.w3.org/2000/svg","href",Ae.link),ve.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),y==="sandbox"?ve.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):Ae.linkTarget&&ve.setAttributeNS("http://www.w3.org/2000/svg","target",Ae.linkTarget);const te=de.insert(function(){return ve},":first-child"),xe=de.select(".label-container");xe&&te.append(function(){return xe.node()});const De=de.select(".label");De&&te.append(function(){return De.node()})}}})}},rRe=i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span,p { + color: ${i.titleColor}; + } + + .label text,span,p { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span,p { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`,kFt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Dde,db:ix,renderer:S0e,styles:rRe,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,JBt.setConf(i.flowchart),ix.clear(),ix.setGen("gen-1")}}},Symbol.toStringTag,{value:"Module"})),xFt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Dde,db:ix,renderer:S0e,styles:rRe,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,pIe({flowchart:{arrowMarkerAbsolute:i.arrowMarkerAbsolute}}),S0e.setConf(i.flowchart),ix.clear(),ix.setGen("gen-2")}}},Symbol.toStringTag,{value:"Module"}));var A0e=function(){var i=function(De,he,Ie,ee){for(Ie=Ie||{},ee=De.length;ee--;Ie[De[ee]]=he);return Ie},a=[1,2],f=[1,5],p=[6,9,11,23,25,27,29,30,31,51],w=[1,17],y=[1,18],b=[1,19],E=[1,20],S=[1,21],N=[1,22],B=[1,25],R=[1,30],j=[1,31],$=[1,32],V=[1,33],Q=[6,9,11,15,20,23,25,27,29,30,31,44,45,46,47,51],oe=[1,45],ce=[30,31,48,49],se=[4,6,9,11,23,25,27,29,30,31,51],ge=[44,45,46,47],ye=[22,37],ke=[1,65],Ae=[1,64],de=[22,37,39,41],ve={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyTypeList:35,attributeComment:36,ATTRIBUTE_WORD:37,attributeKeyType:38,COMMA:39,ATTRIBUTE_KEY:40,COMMENT:41,cardinality:42,relType:43,ZERO_OR_ONE:44,ZERO_OR_MORE:45,ONE_OR_MORE:46,ONLY_ONE:47,NON_IDENTIFYING:48,IDENTIFYING:49,WORD:50,open_directive:51,type_directive:52,arg_directive:53,close_directive:54,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",31:"ENTITY_NAME",37:"ATTRIBUTE_WORD",39:"COMMA",40:"ATTRIBUTE_KEY",41:"COMMENT",44:"ZERO_OR_ONE",45:"ZERO_OR_MORE",46:"ONE_OR_MORE",47:"ONLY_ONE",48:"NON_IDENTIFYING",49:"IDENTIFYING",50:"WORD",51:"open_directive",52:"type_directive",53:"arg_directive",54:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[35,3],[38,1],[36,1],[18,3],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(he,Ie,ee,rt,me,gt,pe){var Et=gt.length-1;switch(me){case 1:break;case 3:this.$=[];break;case 4:gt[Et-1].push(gt[Et]),this.$=gt[Et-1];break;case 5:case 6:this.$=gt[Et];break;case 7:case 8:this.$=[];break;case 12:rt.addEntity(gt[Et-4]),rt.addEntity(gt[Et-2]),rt.addRelationship(gt[Et-4],gt[Et],gt[Et-2],gt[Et-3]);break;case 13:rt.addEntity(gt[Et-3]),rt.addAttributes(gt[Et-3],gt[Et-1]);break;case 14:rt.addEntity(gt[Et-2]);break;case 15:rt.addEntity(gt[Et]);break;case 16:case 17:this.$=gt[Et].trim(),rt.setAccTitle(this.$);break;case 18:case 19:this.$=gt[Et].trim(),rt.setAccDescription(this.$);break;case 20:case 43:this.$=gt[Et];break;case 21:case 41:case 42:this.$=gt[Et].replace(/"/g,"");break;case 22:case 30:this.$=[gt[Et]];break;case 23:gt[Et].push(gt[Et-1]),this.$=gt[Et];break;case 24:this.$={attributeType:gt[Et-1],attributeName:gt[Et]};break;case 25:this.$={attributeType:gt[Et-2],attributeName:gt[Et-1],attributeKeyTypeList:gt[Et]};break;case 26:this.$={attributeType:gt[Et-2],attributeName:gt[Et-1],attributeComment:gt[Et]};break;case 27:this.$={attributeType:gt[Et-3],attributeName:gt[Et-2],attributeKeyTypeList:gt[Et-1],attributeComment:gt[Et]};break;case 28:case 29:case 32:this.$=gt[Et];break;case 31:gt[Et-2].push(gt[Et]),this.$=gt[Et-2];break;case 33:this.$=gt[Et].replace(/"/g,"");break;case 34:this.$={cardA:gt[Et],relType:gt[Et-1],cardB:gt[Et-2]};break;case 35:this.$=rt.Cardinality.ZERO_OR_ONE;break;case 36:this.$=rt.Cardinality.ZERO_OR_MORE;break;case 37:this.$=rt.Cardinality.ONE_OR_MORE;break;case 38:this.$=rt.Cardinality.ONLY_ONE;break;case 39:this.$=rt.Identification.NON_IDENTIFYING;break;case 40:this.$=rt.Identification.IDENTIFYING;break;case 44:rt.parseDirective("%%{","open_directive");break;case 45:rt.parseDirective(gt[Et],"type_directive");break;case 46:gt[Et]=gt[Et].trim().replace(/'/g,'"'),rt.parseDirective(gt[Et],"arg_directive");break;case 47:rt.parseDirective("}%%","close_directive","er");break}},table:[{3:1,4:a,7:3,12:4,51:f},{1:[3]},i(p,[2,3],{5:6}),{3:7,4:a,7:3,12:4,51:f},{13:8,52:[1,9]},{52:[2,44]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:w,25:y,27:b,29:E,30:S,31:N,51:f},{1:[2,2]},{14:23,15:[1,24],54:B},i([15,54],[2,45]),i(p,[2,8],{1:[2,1]}),i(p,[2,4]),{7:15,10:26,12:4,17:16,23:w,25:y,27:b,29:E,30:S,31:N,51:f},i(p,[2,6]),i(p,[2,7]),i(p,[2,11]),i(p,[2,15],{18:27,42:29,20:[1,28],44:R,45:j,46:$,47:V}),{24:[1,34]},{26:[1,35]},{28:[1,36]},i(p,[2,19]),i(Q,[2,20]),i(Q,[2,21]),{11:[1,37]},{16:38,53:[1,39]},{11:[2,47]},i(p,[2,5]),{17:40,30:S,31:N},{21:41,22:[1,42],32:43,33:44,37:oe},{43:46,48:[1,47],49:[1,48]},i(ce,[2,35]),i(ce,[2,36]),i(ce,[2,37]),i(ce,[2,38]),i(p,[2,16]),i(p,[2,17]),i(p,[2,18]),i(se,[2,9]),{14:49,54:B},{54:[2,46]},{15:[1,50]},{22:[1,51]},i(p,[2,14]),{21:52,22:[2,22],32:43,33:44,37:oe},{34:53,37:[1,54]},{37:[2,28]},{42:55,44:R,45:j,46:$,47:V},i(ge,[2,39]),i(ge,[2,40]),{11:[1,56]},{19:57,30:[1,60],31:[1,59],50:[1,58]},i(p,[2,13]),{22:[2,23]},i(ye,[2,24],{35:61,36:62,38:63,40:ke,41:Ae}),i([22,37,40,41],[2,29]),i([30,31],[2,34]),i(se,[2,10]),i(p,[2,12]),i(p,[2,41]),i(p,[2,42]),i(p,[2,43]),i(ye,[2,25],{36:66,39:[1,67],41:Ae}),i(ye,[2,26]),i(de,[2,30]),i(ye,[2,33]),i(de,[2,32]),i(ye,[2,27]),{38:68,40:ke},i(de,[2,31])],defaultActions:{5:[2,44],7:[2,2],25:[2,47],39:[2,46],45:[2,28],52:[2,23]},parseError:function(he,Ie){if(Ie.recoverable)this.trace(he);else{var ee=new Error(he);throw ee.hash=Ie,ee}},parse:function(he){var Ie=this,ee=[0],rt=[],me=[null],gt=[],pe=this.table,Et="",wt=0,jt=0,At=2,Bt=1,cn=gt.slice.call(arguments,1),Nn=Object.create(this.lexer),Ot={yy:{}};for(var oi in this.yy)Object.prototype.hasOwnProperty.call(this.yy,oi)&&(Ot.yy[oi]=this.yy[oi]);Nn.setInput(he,Ot.yy),Ot.yy.lexer=Nn,Ot.yy.parser=this,typeof Nn.yylloc>"u"&&(Nn.yylloc={});var kt=Nn.yylloc;gt.push(kt);var Dt=Nn.options&&Nn.options.ranges;typeof Ot.yy.parseError=="function"?this.parseError=Ot.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function vt(){var Sr;return Sr=rt.pop()||Nn.lex()||Bt,typeof Sr!="number"&&(Sr instanceof Array&&(rt=Sr,Sr=rt.pop()),Sr=Ie.symbols_[Sr]||Sr),Sr}for(var Nt,ze,Xe,Lt,Ge={},Bn,Oe,Ri,tn;;){if(ze=ee[ee.length-1],this.defaultActions[ze]?Xe=this.defaultActions[ze]:((Nt===null||typeof Nt>"u")&&(Nt=vt()),Xe=pe[ze]&&pe[ze][Nt]),typeof Xe>"u"||!Xe.length||!Xe[0]){var hi="";tn=[];for(Bn in pe[ze])this.terminals_[Bn]&&Bn>At&&tn.push("'"+this.terminals_[Bn]+"'");Nn.showPosition?hi="Parse error on line "+(wt+1)+`: +`+Nn.showPosition()+` +Expecting `+tn.join(", ")+", got '"+(this.terminals_[Nt]||Nt)+"'":hi="Parse error on line "+(wt+1)+": Unexpected "+(Nt==Bt?"end of input":"'"+(this.terminals_[Nt]||Nt)+"'"),this.parseError(hi,{text:Nn.match,token:this.terminals_[Nt]||Nt,line:Nn.yylineno,loc:kt,expected:tn})}if(Xe[0]instanceof Array&&Xe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ze+", token: "+Nt);switch(Xe[0]){case 1:ee.push(Nt),me.push(Nn.yytext),gt.push(Nn.yylloc),ee.push(Xe[1]),Nt=null,jt=Nn.yyleng,Et=Nn.yytext,wt=Nn.yylineno,kt=Nn.yylloc;break;case 2:if(Oe=this.productions_[Xe[1]][1],Ge.$=me[me.length-Oe],Ge._$={first_line:gt[gt.length-(Oe||1)].first_line,last_line:gt[gt.length-1].last_line,first_column:gt[gt.length-(Oe||1)].first_column,last_column:gt[gt.length-1].last_column},Dt&&(Ge._$.range=[gt[gt.length-(Oe||1)].range[0],gt[gt.length-1].range[1]]),Lt=this.performAction.apply(Ge,[Et,jt,wt,Ot.yy,Xe[1],me,gt].concat(cn)),typeof Lt<"u")return Lt;Oe&&(ee=ee.slice(0,-1*Oe*2),me=me.slice(0,-1*Oe),gt=gt.slice(0,-1*Oe)),ee.push(this.productions_[Xe[1]][0]),me.push(Ge.$),gt.push(Ge._$),Ri=pe[ee[ee.length-2]][ee[ee.length-1]],ee.push(Ri);break;case 3:return!0}}return!0}},te=function(){var De={EOF:1,parseError:function(Ie,ee){if(this.yy.parser)this.yy.parser.parseError(Ie,ee);else throw new Error(Ie)},setInput:function(he,Ie){return this.yy=Ie||this.yy||{},this._input=he,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var he=this._input[0];this.yytext+=he,this.yyleng++,this.offset++,this.match+=he,this.matched+=he;var Ie=he.match(/(?:\r\n?|\n).*/g);return Ie?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),he},unput:function(he){var Ie=he.length,ee=he.split(/(?:\r\n?|\n)/g);this._input=he+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ie),this.offset-=Ie;var rt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ee.length-1&&(this.yylineno-=ee.length-1);var me=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ee?(ee.length===rt.length?this.yylloc.first_column:0)+rt[rt.length-ee.length].length-ee[0].length:this.yylloc.first_column-Ie},this.options.ranges&&(this.yylloc.range=[me[0],me[0]+this.yyleng-Ie]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(he){this.unput(this.match.slice(he))},pastInput:function(){var he=this.matched.substr(0,this.matched.length-this.match.length);return(he.length>20?"...":"")+he.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var he=this.match;return he.length<20&&(he+=this._input.substr(0,20-he.length)),(he.substr(0,20)+(he.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var he=this.pastInput(),Ie=new Array(he.length+1).join("-");return he+this.upcomingInput()+` +`+Ie+"^"},test_match:function(he,Ie){var ee,rt,me;if(this.options.backtrack_lexer&&(me={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(me.yylloc.range=this.yylloc.range.slice(0))),rt=he[0].match(/(?:\r\n?|\n).*/g),rt&&(this.yylineno+=rt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:rt?rt[rt.length-1].length-rt[rt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+he[0].length},this.yytext+=he[0],this.match+=he[0],this.matches=he,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(he[0].length),this.matched+=he[0],ee=this.performAction.call(this,this.yy,this,Ie,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ee)return ee;if(this._backtrack){for(var gt in me)this[gt]=me[gt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var he,Ie,ee,rt;this._more||(this.yytext="",this.match="");for(var me=this._currentRules(),gt=0;gtIe[0].length)){if(Ie=ee,rt=gt,this.options.backtrack_lexer){if(he=this.test_match(ee,me[gt]),he!==!1)return he;if(this._backtrack){Ie=!1;continue}else return!1}else if(!this.options.flex)break}return Ie?(he=this.test_match(Ie,me[rt]),he!==!1?he:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ie=this.next();return Ie||this.lex()},begin:function(Ie){this.conditionStack.push(Ie)},popState:function(){var Ie=this.conditionStack.length-1;return Ie>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ie){return Ie=this.conditionStack.length-1-Math.abs(Ie||0),Ie>=0?this.conditionStack[Ie]:"INITIAL"},pushState:function(Ie){this.begin(Ie)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Ie,ee,rt,me){switch(rt){case 0:return this.begin("acc_title"),25;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),27;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.begin("open_directive"),51;case 8:return this.begin("type_directive"),52;case 9:return this.popState(),this.begin("arg_directive"),15;case 10:return this.popState(),this.popState(),54;case 11:return 53;case 12:return 11;case 13:break;case 14:return 9;case 15:return 31;case 16:return 50;case 17:return 4;case 18:return this.begin("block"),20;case 19:return 39;case 20:break;case 21:return 40;case 22:return 37;case 23:return 37;case 24:return 41;case 25:break;case 26:return this.popState(),22;case 27:return ee.yytext[0];case 28:return 44;case 29:return 46;case 30:return 46;case 31:return 46;case 32:return 44;case 33:return 44;case 34:return 45;case 35:return 45;case 36:return 45;case 37:return 45;case 38:return 45;case 39:return 46;case 40:return 45;case 41:return 46;case 42:return 47;case 43:return 47;case 44:return 47;case 45:return 47;case 46:return 44;case 47:return 45;case 48:return 46;case 49:return 48;case 50:return 49;case 51:return 49;case 52:return 48;case 53:return 48;case 54:return 48;case 55:return 30;case 56:return ee.yytext[0];case 57:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},open_directive:{rules:[8],inclusive:!1},type_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[10,11],inclusive:!1},block:{rules:[19,20,21,22,23,24,25,26,27],inclusive:!1},INITIAL:{rules:[0,2,4,7,12,13,14,15,16,17,18,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],inclusive:!0}}};return De}();ve.lexer=te;function xe(){this.yy={}}return xe.prototype=ve,ve.Parser=xe,new xe}();A0e.parser=A0e;const EFt=A0e;let vP={},L0e=[];const TFt={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},_Ft={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},CFt=function(i,a,f){rd.parseDirective(this,i,a,f)},iRe=function(i){return vP[i]===void 0&&(vP[i]={attributes:[]},Fe.info("Added new entity :",i)),vP[i]},SFt={Cardinality:TFt,Identification:_Ft,parseDirective:CFt,getConfig:()=>Tt().er,addEntity:iRe,addAttributes:function(i,a){let f=iRe(i),p;for(p=a.length-1;p>=0;p--)f.attributes.push(a[p]),Fe.debug("Added attribute ",a[p].attributeName)},getEntities:()=>vP,addRelationship:function(i,a,f,p){let w={entityA:i,roleA:a,entityB:f,relSpec:p};L0e.push(w),Fe.debug("Added new relationship :",w)},getRelationships:()=>L0e,clear:function(){vP={},L0e=[],rp()},setAccTitle:ip,getAccTitle:L2,setAccDescription:M2,getAccDescription:D2,setDiagramTitle:Uw,getDiagramTitle:Ww},_5={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"},C5={ERMarkers:_5,insertMarkers:function(i,a){let f;i.append("defs").append("marker").attr("id",_5.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),i.append("defs").append("marker").attr("id",_5.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",_5.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",_5.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,0 L21,18"),i.append("defs").append("marker").attr("id",_5.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),i.append("defs").append("marker").attr("id",_5.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),f=i.append("defs").append("marker").attr("id",_5.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),f=i.append("defs").append("marker").attr("id",_5.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")}},AFt=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function LFt(i){return typeof i=="string"&&AFt.test(i)}const Hd=[];for(let i=0;i<256;++i)Hd.push((i+256).toString(16).slice(1));function MFt(i,a=0){return(Hd[i[a+0]]+Hd[i[a+1]]+Hd[i[a+2]]+Hd[i[a+3]]+"-"+Hd[i[a+4]]+Hd[i[a+5]]+"-"+Hd[i[a+6]]+Hd[i[a+7]]+"-"+Hd[i[a+8]]+Hd[i[a+9]]+"-"+Hd[i[a+10]]+Hd[i[a+11]]+Hd[i[a+12]]+Hd[i[a+13]]+Hd[i[a+14]]+Hd[i[a+15]]).toLowerCase()}function DFt(i){if(!LFt(i))throw TypeError("Invalid UUID");let a;const f=new Uint8Array(16);return f[0]=(a=parseInt(i.slice(0,8),16))>>>24,f[1]=a>>>16&255,f[2]=a>>>8&255,f[3]=a&255,f[4]=(a=parseInt(i.slice(9,13),16))>>>8,f[5]=a&255,f[6]=(a=parseInt(i.slice(14,18),16))>>>8,f[7]=a&255,f[8]=(a=parseInt(i.slice(19,23),16))>>>8,f[9]=a&255,f[10]=(a=parseInt(i.slice(24,36),16))/1099511627776&255,f[11]=a/4294967296&255,f[12]=a>>>24&255,f[13]=a>>>16&255,f[14]=a>>>8&255,f[15]=a&255,f}function IFt(i){i=unescape(encodeURIComponent(i));const a=[];for(let f=0;f>>32-a}function RFt(i){const a=[1518500249,1859775393,2400959708,3395469782],f=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof i=="string"){const b=unescape(encodeURIComponent(i));i=[];for(let E=0;E>>0;j=R,R=B,B=M0e(N,30)>>>0,N=S,S=Q}f[0]=f[0]+S>>>0,f[1]=f[1]+N>>>0,f[2]=f[2]+B>>>0,f[3]=f[3]+R>>>0,f[4]=f[4]+j>>>0}return[f[0]>>24&255,f[0]>>16&255,f[0]>>8&255,f[0]&255,f[1]>>24&255,f[1]>>16&255,f[1]>>8&255,f[1]&255,f[2]>>24&255,f[2]>>16&255,f[2]>>8&255,f[2]&255,f[3]>>24&255,f[3]>>16&255,f[3]>>8&255,f[3]&255,f[4]>>24&255,f[4]>>16&255,f[4]>>8&255,f[4]&255]}const FFt=PFt("v5",80,RFt),jFt=/[^\dA-Za-z](\W)*/g;let g1={},wP=new Map;const $Ft=function(i){const a=Object.keys(i);for(const f of a)g1[f]=i[f]},HFt=(i,a,f)=>{const p=g1.entityPadding/3,w=g1.entityPadding/3,y=g1.fontSize*.85,b=a.node().getBBox(),E=[];let S=!1,N=!1,B=0,R=0,j=0,$=0,V=b.height+p*2,Q=1;f.forEach(ge=>{ge.attributeKeyTypeList!==void 0&&ge.attributeKeyTypeList.length>0&&(S=!0),ge.attributeComment!==void 0&&(N=!0)}),f.forEach(ge=>{const ye=`${a.node().id}-attr-${Q}`;let ke=0;const Ae=Yk(ge.attributeType),de=i.append("text").classed("er entityLabel",!0).attr("id",`${ye}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Tt().fontFamily).style("font-size",y+"px").text(Ae),ve=i.append("text").classed("er entityLabel",!0).attr("id",`${ye}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Tt().fontFamily).style("font-size",y+"px").text(ge.attributeName),te={};te.tn=de,te.nn=ve;const xe=de.node().getBBox(),De=ve.node().getBBox();if(B=Math.max(B,xe.width),R=Math.max(R,De.width),ke=Math.max(xe.height,De.height),S){const he=ge.attributeKeyTypeList!==void 0?ge.attributeKeyTypeList.join(","):"",Ie=i.append("text").classed("er entityLabel",!0).attr("id",`${ye}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Tt().fontFamily).style("font-size",y+"px").text(he);te.kn=Ie;const ee=Ie.node().getBBox();j=Math.max(j,ee.width),ke=Math.max(ke,ee.height)}if(N){const he=i.append("text").classed("er entityLabel",!0).attr("id",`${ye}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Tt().fontFamily).style("font-size",y+"px").text(ge.attributeComment||"");te.cn=he;const Ie=he.node().getBBox();$=Math.max($,Ie.width),ke=Math.max(ke,Ie.height)}te.height=ke,E.push(te),V+=ke+p*2,Q+=1});let oe=4;S&&(oe+=2),N&&(oe+=2);const ce=B+R+j+$,se={width:Math.max(g1.minEntityWidth,Math.max(b.width+g1.entityPadding*2,ce+w*oe)),height:f.length>0?V:Math.max(g1.minEntityHeight,b.height+g1.entityPadding*2)};if(f.length>0){const ge=Math.max(0,(se.width-ce-w*oe)/(oe/2));a.attr("transform","translate("+se.width/2+","+(p+b.height/2)+")");let ye=b.height+p*2,ke="attributeBoxOdd";E.forEach(Ae=>{const de=ye+p+Ae.height/2;Ae.tn.attr("transform","translate("+w+","+de+")");const ve=i.insert("rect","#"+Ae.tn.node().id).classed(`er ${ke}`,!0).attr("x",0).attr("y",ye).attr("width",B+w*2+ge).attr("height",Ae.height+p*2),te=parseFloat(ve.attr("x"))+parseFloat(ve.attr("width"));Ae.nn.attr("transform","translate("+(te+w)+","+de+")");const xe=i.insert("rect","#"+Ae.nn.node().id).classed(`er ${ke}`,!0).attr("x",te).attr("y",ye).attr("width",R+w*2+ge).attr("height",Ae.height+p*2);let De=parseFloat(xe.attr("x"))+parseFloat(xe.attr("width"));if(S){Ae.kn.attr("transform","translate("+(De+w)+","+de+")");const he=i.insert("rect","#"+Ae.kn.node().id).classed(`er ${ke}`,!0).attr("x",De).attr("y",ye).attr("width",j+w*2+ge).attr("height",Ae.height+p*2);De=parseFloat(he.attr("x"))+parseFloat(he.attr("width"))}N&&(Ae.cn.attr("transform","translate("+(De+w)+","+de+")"),i.insert("rect","#"+Ae.cn.node().id).classed(`er ${ke}`,"true").attr("x",De).attr("y",ye).attr("width",$+w*2+ge).attr("height",Ae.height+p*2)),ye+=Ae.height+p*2,ke=ke==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else se.height=Math.max(g1.minEntityHeight,V),a.attr("transform","translate("+se.width/2+","+se.height/2+")");return se},zFt=function(i,a,f){const p=Object.keys(a);let w;return p.forEach(function(y){const b=KFt(y,"entity");wP.set(y,b);const E=i.append("g").attr("id",b);w=w===void 0?b:w;const S="text-"+b,N=E.append("text").classed("er entityLabel",!0).attr("id",S).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",Tt().fontFamily).style("font-size",g1.fontSize+"px").text(y),{width:B,height:R}=HFt(E,N,a[y].attributes),$=E.insert("rect","#"+S).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",B).attr("height",R).node().getBBox();f.setNode(b,{width:$.width,height:$.height,shape:"rect",id:b})}),w},GFt=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )")})},sRe=function(i){return(i.entityA+i.roleA+i.entityB).replace(/\s/g,"")},qFt=function(i,a){return i.forEach(function(f){a.setEdge(wP.get(f.entityA),wP.get(f.entityB),{relationship:f},sRe(f))}),i};let aRe=0;const VFt=function(i,a,f,p,w){aRe++;const y=f.edge(wP.get(a.entityA),wP.get(a.entityB),sRe(a)),b=WE().x(function(V){return V.x}).y(function(V){return V.y}).curve(SA),E=i.insert("path","#"+p).classed("er relationshipLine",!0).attr("d",b(y.points)).style("stroke",g1.stroke).style("fill","none");a.relSpec.relType===w.db.Identification.NON_IDENTIFYING&&E.attr("stroke-dasharray","8,8");let S="";switch(g1.arrowMarkerAbsolute&&(S=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,S=S.replace(/\(/g,"\\("),S=S.replace(/\)/g,"\\)")),a.relSpec.cardA){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-end","url("+S+"#"+C5.ERMarkers.ZERO_OR_ONE_END+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-end","url("+S+"#"+C5.ERMarkers.ZERO_OR_MORE_END+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-end","url("+S+"#"+C5.ERMarkers.ONE_OR_MORE_END+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-end","url("+S+"#"+C5.ERMarkers.ONLY_ONE_END+")");break}switch(a.relSpec.cardB){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-start","url("+S+"#"+C5.ERMarkers.ZERO_OR_ONE_START+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-start","url("+S+"#"+C5.ERMarkers.ZERO_OR_MORE_START+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-start","url("+S+"#"+C5.ERMarkers.ONE_OR_MORE_START+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-start","url("+S+"#"+C5.ERMarkers.ONLY_ONE_START+")");break}const N=E.node().getTotalLength(),B=E.node().getPointAtLength(N*.5),R="rel"+aRe,$=i.append("text").classed("er relationshipLabel",!0).attr("id",R).attr("x",B.x).attr("y",B.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",Tt().fontFamily).style("font-size",g1.fontSize+"px").text(a.roleA).node().getBBox();i.insert("rect","#"+R).classed("er relationshipLabelBox",!0).attr("x",B.x-$.width/2).attr("y",B.y-$.height/2).attr("width",$.width).attr("height",$.height)},UFt=function(i,a,f,p){g1=Tt().er,Fe.info("Drawing ER diagram");const w=Tt().securityLevel;let y;w==="sandbox"&&(y=Cr("#i"+a));const E=Cr(w==="sandbox"?y.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);C5.insertMarkers(E,g1);let S;S=new zf({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:g1.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const N=zFt(E,p.db.getEntities(),S),B=qFt(p.db.getRelationships(),S);tL(S),GFt(E,S),B.forEach(function(Q){VFt(E,Q,S,N,p)});const R=g1.diagramPadding;co.insertTitle(E,"entityTitleText",g1.titleTopMargin,p.db.getDiagramTitle());const j=E.node().getBBox(),$=j.width+R*2,V=j.height+R*2;Vw(E,V,$,g1.useMaxWidth),E.attr("viewBox",`${j.x-R} ${j.y-R} ${$} ${V}`)},WFt="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function KFt(i="",a=""){const f=i.replace(jFt,"");return`${oRe(a)}${oRe(f)}${FFt(i,WFt)}`}function oRe(i=""){return i.length>0?`${i}-`:""}const YFt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:EFt,db:SFt,renderer:{setConf:$Ft,draw:UFt},styles:i=>` + .entityBox { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxOdd { + fill: ${i.attributeBackgroundColorOdd}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxEven { + fill: ${i.attributeBackgroundColorEven}; + stroke: ${i.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${i.tertiaryColor}; + opacity: 0.7; + background-color: ${i.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .relationshipLine { + stroke: ${i.lineColor}; + } + + .entityTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`}},Symbol.toStringTag,{value:"Module"}));var D0e=function(){var i=function(ve,te,xe,De){for(xe=xe||{},De=ve.length;De--;xe[ve[De]]=te);return xe},a=[1,4],f=[1,7],p=[1,5],w=[1,9],y=[1,6],b=[2,6],E=[1,16],S=[6,8,14,20,22,24,25,27,29,32,37,40,50,55],N=[8,14,20,22,24,25,27,29,32,37,40],B=[8,13,14,20,22,24,25,27,29,32,37,40],R=[1,26],j=[6,8,14,50,55],$=[8,14,55],V=[1,53],Q=[1,52],oe=[8,14,30,33,35,38,55],ce=[1,67],se=[1,68],ge=[1,69],ye=[8,14,33,35,42,55],ke={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,GG:6,document:7,EOF:8,":":9,DIR:10,options:11,body:12,OPT:13,NL:14,line:15,statement:16,commitStatement:17,mergeStatement:18,cherryPickStatement:19,acc_title:20,acc_title_value:21,acc_descr:22,acc_descr_value:23,acc_descr_multiline_value:24,section:25,branchStatement:26,CHECKOUT:27,ref:28,BRANCH:29,ORDER:30,NUM:31,CHERRY_PICK:32,COMMIT_ID:33,STR:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,openDirective:46,typeDirective:47,closeDirective:48,argDirective:49,open_directive:50,type_directive:51,arg_directive:52,close_directive:53,ID:54,";":55,$accept:0,$end:1},terminals_:{2:"error",6:"GG",8:"EOF",9:":",10:"DIR",13:"OPT",14:"NL",20:"acc_title",21:"acc_title_value",22:"acc_descr",23:"acc_descr_value",24:"acc_descr_multiline_value",25:"section",27:"CHECKOUT",29:"BRANCH",30:"ORDER",31:"NUM",32:"CHERRY_PICK",33:"COMMIT_ID",34:"STR",35:"COMMIT_TAG",36:"EMPTYSTR",37:"MERGE",38:"COMMIT_TYPE",40:"COMMIT",42:"COMMIT_MSG",43:"NORMAL",44:"REVERSE",45:"HIGHLIGHT",50:"open_directive",51:"type_directive",52:"arg_directive",53:"close_directive",54:"ID",55:";"},productions_:[0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[26,2],[26,4],[19,3],[19,5],[19,5],[19,5],[19,5],[18,2],[18,4],[18,4],[18,4],[18,6],[18,6],[18,6],[18,6],[18,6],[18,6],[18,8],[18,8],[18,8],[18,8],[18,8],[18,8],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[41,0],[41,1],[39,1],[39,1],[39,1],[5,3],[5,5],[46,1],[47,1],[49,1],[48,1],[28,1],[28,1],[4,1],[4,1],[4,1]],performAction:function(te,xe,De,he,Ie,ee,rt){var me=ee.length-1;switch(Ie){case 3:return ee[me];case 4:return ee[me-1];case 5:return he.setDirection(ee[me-3]),ee[me-1];case 7:he.setOptions(ee[me-1]),this.$=ee[me];break;case 8:ee[me-1]+=ee[me],this.$=ee[me-1];break;case 10:this.$=[];break;case 11:ee[me-1].push(ee[me]),this.$=ee[me-1];break;case 12:this.$=ee[me-1];break;case 17:this.$=ee[me].trim(),he.setAccTitle(this.$);break;case 18:case 19:this.$=ee[me].trim(),he.setAccDescription(this.$);break;case 20:he.addSection(ee[me].substr(8)),this.$=ee[me].substr(8);break;case 22:he.checkout(ee[me]);break;case 23:he.branch(ee[me]);break;case 24:he.branch(ee[me-2],ee[me]);break;case 25:he.cherryPick(ee[me],"",void 0);break;case 26:he.cherryPick(ee[me-2],"",ee[me]);break;case 27:case 29:he.cherryPick(ee[me-2],"","");break;case 28:he.cherryPick(ee[me],"",ee[me-2]);break;case 30:he.merge(ee[me],"","","");break;case 31:he.merge(ee[me-2],ee[me],"","");break;case 32:he.merge(ee[me-2],"",ee[me],"");break;case 33:he.merge(ee[me-2],"","",ee[me]);break;case 34:he.merge(ee[me-4],ee[me],"",ee[me-2]);break;case 35:he.merge(ee[me-4],"",ee[me],ee[me-2]);break;case 36:he.merge(ee[me-4],"",ee[me-2],ee[me]);break;case 37:he.merge(ee[me-4],ee[me-2],ee[me],"");break;case 38:he.merge(ee[me-4],ee[me-2],"",ee[me]);break;case 39:he.merge(ee[me-4],ee[me],ee[me-2],"");break;case 40:he.merge(ee[me-6],ee[me-4],ee[me-2],ee[me]);break;case 41:he.merge(ee[me-6],ee[me],ee[me-4],ee[me-2]);break;case 42:he.merge(ee[me-6],ee[me-4],ee[me],ee[me-2]);break;case 43:he.merge(ee[me-6],ee[me-2],ee[me-4],ee[me]);break;case 44:he.merge(ee[me-6],ee[me],ee[me-2],ee[me-4]);break;case 45:he.merge(ee[me-6],ee[me-2],ee[me],ee[me-4]);break;case 46:he.commit(ee[me]);break;case 47:he.commit("","",he.commitType.NORMAL,ee[me]);break;case 48:he.commit("","",ee[me],"");break;case 49:he.commit("","",ee[me],ee[me-2]);break;case 50:he.commit("","",ee[me-2],ee[me]);break;case 51:he.commit("",ee[me],he.commitType.NORMAL,"");break;case 52:he.commit("",ee[me-2],he.commitType.NORMAL,ee[me]);break;case 53:he.commit("",ee[me],he.commitType.NORMAL,ee[me-2]);break;case 54:he.commit("",ee[me-2],ee[me],"");break;case 55:he.commit("",ee[me],ee[me-2],"");break;case 56:he.commit("",ee[me-4],ee[me-2],ee[me]);break;case 57:he.commit("",ee[me-4],ee[me],ee[me-2]);break;case 58:he.commit("",ee[me-2],ee[me-4],ee[me]);break;case 59:he.commit("",ee[me],ee[me-4],ee[me-2]);break;case 60:he.commit("",ee[me],ee[me-2],ee[me-4]);break;case 61:he.commit("",ee[me-2],ee[me],ee[me-4]);break;case 62:he.commit(ee[me],"",he.commitType.NORMAL,"");break;case 63:he.commit(ee[me],"",he.commitType.NORMAL,ee[me-2]);break;case 64:he.commit(ee[me-2],"",he.commitType.NORMAL,ee[me]);break;case 65:he.commit(ee[me-2],"",ee[me],"");break;case 66:he.commit(ee[me],"",ee[me-2],"");break;case 67:he.commit(ee[me],ee[me-2],he.commitType.NORMAL,"");break;case 68:he.commit(ee[me-2],ee[me],he.commitType.NORMAL,"");break;case 69:he.commit(ee[me-4],"",ee[me-2],ee[me]);break;case 70:he.commit(ee[me-4],"",ee[me],ee[me-2]);break;case 71:he.commit(ee[me-2],"",ee[me-4],ee[me]);break;case 72:he.commit(ee[me],"",ee[me-4],ee[me-2]);break;case 73:he.commit(ee[me],"",ee[me-2],ee[me-4]);break;case 74:he.commit(ee[me-2],"",ee[me],ee[me-4]);break;case 75:he.commit(ee[me-4],ee[me],ee[me-2],"");break;case 76:he.commit(ee[me-4],ee[me-2],ee[me],"");break;case 77:he.commit(ee[me-2],ee[me],ee[me-4],"");break;case 78:he.commit(ee[me],ee[me-2],ee[me-4],"");break;case 79:he.commit(ee[me],ee[me-4],ee[me-2],"");break;case 80:he.commit(ee[me-2],ee[me-4],ee[me],"");break;case 81:he.commit(ee[me-4],ee[me],he.commitType.NORMAL,ee[me-2]);break;case 82:he.commit(ee[me-4],ee[me-2],he.commitType.NORMAL,ee[me]);break;case 83:he.commit(ee[me-2],ee[me],he.commitType.NORMAL,ee[me-4]);break;case 84:he.commit(ee[me],ee[me-2],he.commitType.NORMAL,ee[me-4]);break;case 85:he.commit(ee[me],ee[me-4],he.commitType.NORMAL,ee[me-2]);break;case 86:he.commit(ee[me-2],ee[me-4],he.commitType.NORMAL,ee[me]);break;case 87:he.commit(ee[me-6],ee[me-4],ee[me-2],ee[me]);break;case 88:he.commit(ee[me-6],ee[me-4],ee[me],ee[me-2]);break;case 89:he.commit(ee[me-6],ee[me-2],ee[me-4],ee[me]);break;case 90:he.commit(ee[me-6],ee[me],ee[me-4],ee[me-2]);break;case 91:he.commit(ee[me-6],ee[me-2],ee[me],ee[me-4]);break;case 92:he.commit(ee[me-6],ee[me],ee[me-2],ee[me-4]);break;case 93:he.commit(ee[me-4],ee[me-6],ee[me-2],ee[me]);break;case 94:he.commit(ee[me-4],ee[me-6],ee[me],ee[me-2]);break;case 95:he.commit(ee[me-2],ee[me-6],ee[me-4],ee[me]);break;case 96:he.commit(ee[me],ee[me-6],ee[me-4],ee[me-2]);break;case 97:he.commit(ee[me-2],ee[me-6],ee[me],ee[me-4]);break;case 98:he.commit(ee[me],ee[me-6],ee[me-2],ee[me-4]);break;case 99:he.commit(ee[me],ee[me-4],ee[me-2],ee[me-6]);break;case 100:he.commit(ee[me-2],ee[me-4],ee[me],ee[me-6]);break;case 101:he.commit(ee[me],ee[me-2],ee[me-4],ee[me-6]);break;case 102:he.commit(ee[me-2],ee[me],ee[me-4],ee[me-6]);break;case 103:he.commit(ee[me-4],ee[me-2],ee[me],ee[me-6]);break;case 104:he.commit(ee[me-4],ee[me],ee[me-2],ee[me-6]);break;case 105:he.commit(ee[me-2],ee[me-4],ee[me-6],ee[me]);break;case 106:he.commit(ee[me],ee[me-4],ee[me-6],ee[me-2]);break;case 107:he.commit(ee[me-2],ee[me],ee[me-6],ee[me-4]);break;case 108:he.commit(ee[me],ee[me-2],ee[me-6],ee[me-4]);break;case 109:he.commit(ee[me-4],ee[me-2],ee[me-6],ee[me]);break;case 110:he.commit(ee[me-4],ee[me],ee[me-6],ee[me-2]);break;case 111:this.$="";break;case 112:this.$=ee[me];break;case 113:this.$=he.commitType.NORMAL;break;case 114:this.$=he.commitType.REVERSE;break;case 115:this.$=he.commitType.HIGHLIGHT;break;case 118:he.parseDirective("%%{","open_directive");break;case 119:he.parseDirective(ee[me],"type_directive");break;case 120:ee[me]=ee[me].trim().replace(/'/g,'"'),he.parseDirective(ee[me],"arg_directive");break;case 121:he.parseDirective("}%%","close_directive","gitGraph");break}},table:[{3:1,4:2,5:3,6:a,8:f,14:p,46:8,50:w,55:y},{1:[3]},{3:10,4:2,5:3,6:a,8:f,14:p,46:8,50:w,55:y},{3:11,4:2,5:3,6:a,8:f,14:p,46:8,50:w,55:y},{7:12,8:b,9:[1,13],10:[1,14],11:15,14:E},i(S,[2,124]),i(S,[2,125]),i(S,[2,126]),{47:17,51:[1,18]},{51:[2,118]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:b,11:15,14:E},{9:[1,21]},i(N,[2,10],{12:22,13:[1,23]}),i(B,[2,9]),{9:[1,25],48:24,53:R},i([9,53],[2,119]),{1:[2,3]},{8:[1,27]},{7:28,8:b,11:15,14:E},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:34,20:[1,35],22:[1,36],24:[1,37],25:[1,38],26:39,27:[1,40],29:[1,44],32:[1,43],37:[1,42],40:[1,41]},i(B,[2,8]),i(j,[2,116]),{49:45,52:[1,46]},i(j,[2,121]),{1:[2,4]},{8:[1,47]},i(N,[2,11]),{4:48,8:f,14:p,55:y},i(N,[2,13]),i($,[2,14]),i($,[2,15]),i($,[2,16]),{21:[1,49]},{23:[1,50]},i($,[2,19]),i($,[2,20]),i($,[2,21]),{28:51,34:V,54:Q},i($,[2,111],{41:54,33:[1,57],34:[1,59],35:[1,55],38:[1,56],42:[1,58]}),{28:60,34:V,54:Q},{33:[1,61],35:[1,62]},{28:63,34:V,54:Q},{48:64,53:R},{53:[2,120]},{1:[2,5]},i(N,[2,12]),i($,[2,17]),i($,[2,18]),i($,[2,22]),i(oe,[2,122]),i(oe,[2,123]),i($,[2,46]),{34:[1,65]},{39:66,43:ce,44:se,45:ge},{34:[1,70]},{34:[1,71]},i($,[2,112]),i($,[2,30],{33:[1,72],35:[1,74],38:[1,73]}),{34:[1,75]},{34:[1,76],36:[1,77]},i($,[2,23],{30:[1,78]}),i(j,[2,117]),i($,[2,47],{33:[1,80],38:[1,79],42:[1,81]}),i($,[2,48],{33:[1,83],35:[1,82],42:[1,84]}),i(ye,[2,113]),i(ye,[2,114]),i(ye,[2,115]),i($,[2,51],{35:[1,85],38:[1,86],42:[1,87]}),i($,[2,62],{33:[1,90],35:[1,88],38:[1,89]}),{34:[1,91]},{39:92,43:ce,44:se,45:ge},{34:[1,93]},i($,[2,25],{35:[1,94]}),{33:[1,95]},{33:[1,96]},{31:[1,97]},{39:98,43:ce,44:se,45:ge},{34:[1,99]},{34:[1,100]},{34:[1,101]},{34:[1,102]},{34:[1,103]},{34:[1,104]},{39:105,43:ce,44:se,45:ge},{34:[1,106]},{34:[1,107]},{39:108,43:ce,44:se,45:ge},{34:[1,109]},i($,[2,31],{35:[1,111],38:[1,110]}),i($,[2,32],{33:[1,113],35:[1,112]}),i($,[2,33],{33:[1,114],38:[1,115]}),{34:[1,116],36:[1,117]},{34:[1,118]},{34:[1,119]},i($,[2,24]),i($,[2,49],{33:[1,120],42:[1,121]}),i($,[2,53],{38:[1,122],42:[1,123]}),i($,[2,63],{33:[1,125],38:[1,124]}),i($,[2,50],{33:[1,126],42:[1,127]}),i($,[2,55],{35:[1,128],42:[1,129]}),i($,[2,66],{33:[1,131],35:[1,130]}),i($,[2,52],{38:[1,132],42:[1,133]}),i($,[2,54],{35:[1,134],42:[1,135]}),i($,[2,67],{35:[1,137],38:[1,136]}),i($,[2,64],{33:[1,139],38:[1,138]}),i($,[2,65],{33:[1,141],35:[1,140]}),i($,[2,68],{35:[1,143],38:[1,142]}),{39:144,43:ce,44:se,45:ge},{34:[1,145]},{34:[1,146]},{34:[1,147]},{34:[1,148]},{39:149,43:ce,44:se,45:ge},i($,[2,26]),i($,[2,27]),i($,[2,28]),i($,[2,29]),{34:[1,150]},{34:[1,151]},{39:152,43:ce,44:se,45:ge},{34:[1,153]},{39:154,43:ce,44:se,45:ge},{34:[1,155]},{34:[1,156]},{34:[1,157]},{34:[1,158]},{34:[1,159]},{34:[1,160]},{34:[1,161]},{39:162,43:ce,44:se,45:ge},{34:[1,163]},{34:[1,164]},{34:[1,165]},{39:166,43:ce,44:se,45:ge},{34:[1,167]},{39:168,43:ce,44:se,45:ge},{34:[1,169]},{34:[1,170]},{34:[1,171]},{39:172,43:ce,44:se,45:ge},{34:[1,173]},i($,[2,37],{35:[1,174]}),i($,[2,38],{38:[1,175]}),i($,[2,36],{33:[1,176]}),i($,[2,39],{35:[1,177]}),i($,[2,34],{38:[1,178]}),i($,[2,35],{33:[1,179]}),i($,[2,60],{42:[1,180]}),i($,[2,73],{33:[1,181]}),i($,[2,61],{42:[1,182]}),i($,[2,84],{38:[1,183]}),i($,[2,74],{33:[1,184]}),i($,[2,83],{38:[1,185]}),i($,[2,59],{42:[1,186]}),i($,[2,72],{33:[1,187]}),i($,[2,58],{42:[1,188]}),i($,[2,78],{35:[1,189]}),i($,[2,71],{33:[1,190]}),i($,[2,77],{35:[1,191]}),i($,[2,57],{42:[1,192]}),i($,[2,85],{38:[1,193]}),i($,[2,56],{42:[1,194]}),i($,[2,79],{35:[1,195]}),i($,[2,80],{35:[1,196]}),i($,[2,86],{38:[1,197]}),i($,[2,70],{33:[1,198]}),i($,[2,81],{38:[1,199]}),i($,[2,69],{33:[1,200]}),i($,[2,75],{35:[1,201]}),i($,[2,76],{35:[1,202]}),i($,[2,82],{38:[1,203]}),{34:[1,204]},{39:205,43:ce,44:se,45:ge},{34:[1,206]},{34:[1,207]},{39:208,43:ce,44:se,45:ge},{34:[1,209]},{34:[1,210]},{34:[1,211]},{34:[1,212]},{39:213,43:ce,44:se,45:ge},{34:[1,214]},{39:215,43:ce,44:se,45:ge},{34:[1,216]},{34:[1,217]},{34:[1,218]},{34:[1,219]},{34:[1,220]},{34:[1,221]},{34:[1,222]},{39:223,43:ce,44:se,45:ge},{34:[1,224]},{34:[1,225]},{34:[1,226]},{39:227,43:ce,44:se,45:ge},{34:[1,228]},{39:229,43:ce,44:se,45:ge},{34:[1,230]},{34:[1,231]},{34:[1,232]},{39:233,43:ce,44:se,45:ge},i($,[2,40]),i($,[2,42]),i($,[2,41]),i($,[2,43]),i($,[2,45]),i($,[2,44]),i($,[2,101]),i($,[2,102]),i($,[2,99]),i($,[2,100]),i($,[2,104]),i($,[2,103]),i($,[2,108]),i($,[2,107]),i($,[2,106]),i($,[2,105]),i($,[2,110]),i($,[2,109]),i($,[2,98]),i($,[2,97]),i($,[2,96]),i($,[2,95]),i($,[2,93]),i($,[2,94]),i($,[2,92]),i($,[2,91]),i($,[2,90]),i($,[2,89]),i($,[2,87]),i($,[2,88])],defaultActions:{9:[2,118],10:[2,1],11:[2,2],19:[2,3],27:[2,4],46:[2,120],47:[2,5]},parseError:function(te,xe){if(xe.recoverable)this.trace(te);else{var De=new Error(te);throw De.hash=xe,De}},parse:function(te){var xe=this,De=[0],he=[],Ie=[null],ee=[],rt=this.table,me="",gt=0,pe=0,Et=2,wt=1,jt=ee.slice.call(arguments,1),At=Object.create(this.lexer),Bt={yy:{}};for(var cn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,cn)&&(Bt.yy[cn]=this.yy[cn]);At.setInput(te,Bt.yy),Bt.yy.lexer=At,Bt.yy.parser=this,typeof At.yylloc>"u"&&(At.yylloc={});var Nn=At.yylloc;ee.push(Nn);var Ot=At.options&&At.options.ranges;typeof Bt.yy.parseError=="function"?this.parseError=Bt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function oi(){var Ri;return Ri=he.pop()||At.lex()||wt,typeof Ri!="number"&&(Ri instanceof Array&&(he=Ri,Ri=he.pop()),Ri=xe.symbols_[Ri]||Ri),Ri}for(var kt,Dt,vt,Nt,ze={},Xe,Lt,Ge,Bn;;){if(Dt=De[De.length-1],this.defaultActions[Dt]?vt=this.defaultActions[Dt]:((kt===null||typeof kt>"u")&&(kt=oi()),vt=rt[Dt]&&rt[Dt][kt]),typeof vt>"u"||!vt.length||!vt[0]){var Oe="";Bn=[];for(Xe in rt[Dt])this.terminals_[Xe]&&Xe>Et&&Bn.push("'"+this.terminals_[Xe]+"'");At.showPosition?Oe="Parse error on line "+(gt+1)+`: +`+At.showPosition()+` +Expecting `+Bn.join(", ")+", got '"+(this.terminals_[kt]||kt)+"'":Oe="Parse error on line "+(gt+1)+": Unexpected "+(kt==wt?"end of input":"'"+(this.terminals_[kt]||kt)+"'"),this.parseError(Oe,{text:At.match,token:this.terminals_[kt]||kt,line:At.yylineno,loc:Nn,expected:Bn})}if(vt[0]instanceof Array&&vt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Dt+", token: "+kt);switch(vt[0]){case 1:De.push(kt),Ie.push(At.yytext),ee.push(At.yylloc),De.push(vt[1]),kt=null,pe=At.yyleng,me=At.yytext,gt=At.yylineno,Nn=At.yylloc;break;case 2:if(Lt=this.productions_[vt[1]][1],ze.$=Ie[Ie.length-Lt],ze._$={first_line:ee[ee.length-(Lt||1)].first_line,last_line:ee[ee.length-1].last_line,first_column:ee[ee.length-(Lt||1)].first_column,last_column:ee[ee.length-1].last_column},Ot&&(ze._$.range=[ee[ee.length-(Lt||1)].range[0],ee[ee.length-1].range[1]]),Nt=this.performAction.apply(ze,[me,pe,gt,Bt.yy,vt[1],Ie,ee].concat(jt)),typeof Nt<"u")return Nt;Lt&&(De=De.slice(0,-1*Lt*2),Ie=Ie.slice(0,-1*Lt),ee=ee.slice(0,-1*Lt)),De.push(this.productions_[vt[1]][0]),Ie.push(ze.$),ee.push(ze._$),Ge=rt[De[De.length-2]][De[De.length-1]],De.push(Ge);break;case 3:return!0}}return!0}},Ae=function(){var ve={EOF:1,parseError:function(xe,De){if(this.yy.parser)this.yy.parser.parseError(xe,De);else throw new Error(xe)},setInput:function(te,xe){return this.yy=xe||this.yy||{},this._input=te,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var te=this._input[0];this.yytext+=te,this.yyleng++,this.offset++,this.match+=te,this.matched+=te;var xe=te.match(/(?:\r\n?|\n).*/g);return xe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),te},unput:function(te){var xe=te.length,De=te.split(/(?:\r\n?|\n)/g);this._input=te+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-xe),this.offset-=xe;var he=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),De.length-1&&(this.yylineno-=De.length-1);var Ie=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:De?(De.length===he.length?this.yylloc.first_column:0)+he[he.length-De.length].length-De[0].length:this.yylloc.first_column-xe},this.options.ranges&&(this.yylloc.range=[Ie[0],Ie[0]+this.yyleng-xe]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(te){this.unput(this.match.slice(te))},pastInput:function(){var te=this.matched.substr(0,this.matched.length-this.match.length);return(te.length>20?"...":"")+te.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var te=this.match;return te.length<20&&(te+=this._input.substr(0,20-te.length)),(te.substr(0,20)+(te.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var te=this.pastInput(),xe=new Array(te.length+1).join("-");return te+this.upcomingInput()+` +`+xe+"^"},test_match:function(te,xe){var De,he,Ie;if(this.options.backtrack_lexer&&(Ie={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ie.yylloc.range=this.yylloc.range.slice(0))),he=te[0].match(/(?:\r\n?|\n).*/g),he&&(this.yylineno+=he.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:he?he[he.length-1].length-he[he.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+te[0].length},this.yytext+=te[0],this.match+=te[0],this.matches=te,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(te[0].length),this.matched+=te[0],De=this.performAction.call(this,this.yy,this,xe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),De)return De;if(this._backtrack){for(var ee in Ie)this[ee]=Ie[ee];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var te,xe,De,he;this._more||(this.yytext="",this.match="");for(var Ie=this._currentRules(),ee=0;eexe[0].length)){if(xe=De,he=ee,this.options.backtrack_lexer){if(te=this.test_match(De,Ie[ee]),te!==!1)return te;if(this._backtrack){xe=!1;continue}else return!1}else if(!this.options.flex)break}return xe?(te=this.test_match(xe,Ie[he]),te!==!1?te:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var xe=this.next();return xe||this.lex()},begin:function(xe){this.conditionStack.push(xe)},popState:function(){var xe=this.conditionStack.length-1;return xe>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(xe){return xe=this.conditionStack.length-1-Math.abs(xe||0),xe>=0?this.conditionStack[xe]:"INITIAL"},pushState:function(xe){this.begin(xe)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(xe,De,he,Ie){switch(he){case 0:return this.begin("open_directive"),50;case 1:return this.begin("type_directive"),51;case 2:return this.popState(),this.begin("arg_directive"),9;case 3:return this.popState(),this.popState(),53;case 4:return 52;case 5:return this.begin("acc_title"),20;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),22;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:return 14;case 13:break;case 14:break;case 15:return 6;case 16:return 40;case 17:return 33;case 18:return 38;case 19:return 42;case 20:return 43;case 21:return 44;case 22:return 45;case 23:return 35;case 24:return 29;case 25:return 30;case 26:return 37;case 27:return 32;case 28:return 27;case 29:return 10;case 30:return 10;case 31:return 9;case 32:return"CARET";case 33:this.begin("options");break;case 34:this.popState();break;case 35:return 13;case 36:return 36;case 37:this.begin("string");break;case 38:this.popState();break;case 39:return 34;case 40:return 31;case 41:return 54;case 42:return 8}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},options:{rules:[34,35],inclusive:!1},string:{rules:[38,39],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,37,40,41,42,43],inclusive:!0}}};return ve}();ke.lexer=Ae;function de(){this.yy={}}return de.prototype=ke,ke.Parser=de,new de}();D0e.parser=D0e;const XFt=D0e;let yK=Tt().gitGraph.mainBranchName,QFt=Tt().gitGraph.mainBranchOrder,p1={},og=null,mP={};mP[yK]={name:yK,order:QFt};let Gf={};Gf[yK]=og;let id=yK,cRe="LR",h9=0;function I0e(){return OIe({length:7})}const ZFt=function(i,a,f){rd.parseDirective(this,i,a,f)};function JFt(i,a){const f=Object.create(null);return i.reduce((p,w)=>{const y=a(w);return f[y]||(f[y]=!0,p.push(w)),p},[])}const ejt=function(i){cRe=i};let uRe={};const tjt=function(i){Fe.debug("options str",i),i=i&&i.trim(),i=i||"{}";try{uRe=JSON.parse(i)}catch(a){Fe.error("error while parsing gitGraph options",a.message)}},njt=function(){return uRe},rjt=function(i,a,f,p){Fe.debug("Entering commit:",i,a,f,p),a=Wa.sanitizeText(a,Tt()),i=Wa.sanitizeText(i,Tt()),p=Wa.sanitizeText(p,Tt());const w={id:a||h9+"-"+I0e(),message:i,seq:h9++,type:f||yP.NORMAL,tag:p||"",parents:og==null?[]:[og.id],branch:id};og=w,p1[w.id]=w,Gf[id]=w.id,Fe.debug("in pushCommit "+w.id)},ijt=function(i,a){if(i=Wa.sanitizeText(i,Tt()),Gf[i]===void 0)Gf[i]=og!=null?og.id:null,mP[i]={name:i,order:a?parseInt(a,10):null},lRe(i),Fe.debug("in createBranch");else{let f=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+i+'")');throw f.hash={text:"branch "+i,token:"branch "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+i+'"']},f}},sjt=function(i,a,f,p){i=Wa.sanitizeText(i,Tt()),a=Wa.sanitizeText(a,Tt());const w=p1[Gf[id]],y=p1[Gf[i]];if(id===i){let E=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(w===void 0||!w){let E=new Error('Incorrect usage of "merge". Current branch ('+id+")has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},E}else if(Gf[i]===void 0){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") does not exist");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+i]},E}else if(y===void 0||!y){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},E}else if(w===y){let E=new Error('Incorrect usage of "merge". Both branches have same head');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(a&&p1[a]!==void 0){let E=new Error('Incorrect usage of "merge". Commit with id:'+a+" already exists, use different custom Id");throw E.hash={text:"merge "+i+a+f+p,token:"merge "+i+a+f+p,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+i+" "+a+"_UNIQUE "+f+" "+p]},E}const b={id:a||h9+"-"+I0e(),message:"merged branch "+i+" into "+id,seq:h9++,parents:[og==null?null:og.id,Gf[i]],branch:id,type:yP.MERGE,customType:f,customId:!!a,tag:p||""};og=b,p1[b.id]=b,Gf[id]=b.id,Fe.debug(Gf),Fe.debug("in mergeBranch")},ajt=function(i,a,f){if(Fe.debug("Entering cherryPick:",i,a,f),i=Wa.sanitizeText(i,Tt()),a=Wa.sanitizeText(a,Tt()),f=Wa.sanitizeText(f,Tt()),!i||p1[i]===void 0){let y=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw y.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},y}let p=p1[i],w=p.branch;if(p.type===yP.MERGE){let y=new Error('Incorrect usage of "cherryPick". Source commit should not be a merge commit');throw y.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},y}if(!a||p1[a]===void 0){if(w===id){let E=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw E.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},E}const y=p1[Gf[id]];if(y===void 0||!y){let E=new Error('Incorrect usage of "cherry-pick". Current branch ('+id+")has no commits");throw E.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},E}const b={id:h9+"-"+I0e(),message:"cherry-picked "+p+" into "+id,seq:h9++,parents:[og==null?null:og.id,p.id],branch:id,type:yP.CHERRY_PICK,tag:f??"cherry-pick:"+p.id};og=b,p1[b.id]=b,Gf[id]=b.id,Fe.debug(Gf),Fe.debug("in cherryPick")}},lRe=function(i){if(i=Wa.sanitizeText(i,Tt()),Gf[i]===void 0){let a=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+i+'")');throw a.hash={text:"checkout "+i,token:"checkout "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+i+'"']},a}else{id=i;const a=Gf[id];og=p1[a]}};function hRe(i,a,f){const p=i.indexOf(a);p===-1?i.push(f):i.splice(p,1,f)}function fRe(i){const a=i.reduce((w,y)=>w.seq>y.seq?w:y,i[0]);let f="";i.forEach(function(w){w===a?f+=" *":f+=" |"});const p=[f,a.id,a.seq];for(let w in Gf)Gf[w]===a.id&&p.push(w);if(Fe.debug(p.join(" ")),a.parents&&a.parents.length==2){const w=p1[a.parents[0]];hRe(i,a,w),i.push(p1[a.parents[1]])}else{if(a.parents.length==0)return;{const w=p1[a.parents];hRe(i,a,w)}}i=JFt(i,w=>w.id),fRe(i)}const ojt=function(){Fe.debug(p1);const i=dRe()[0];fRe([i])},cjt=function(){p1={},og=null;let i=Tt().gitGraph.mainBranchName,a=Tt().gitGraph.mainBranchOrder;Gf={},Gf[i]=null,mP={},mP[i]={name:i,order:a},id=i,h9=0,rp()},ujt=function(){return Object.values(mP).map((a,f)=>a.order!==null?a:{...a,order:parseFloat(`0.${f}`,10)}).sort((a,f)=>a.order-f.order).map(({name:a})=>({name:a}))},ljt=function(){return Gf},hjt=function(){return p1},dRe=function(){const i=Object.keys(p1).map(function(a){return p1[a]});return i.forEach(function(a){Fe.debug(a.id)}),i.sort((a,f)=>a.seq-f.seq),i},fjt=function(){return id},djt=function(){return cRe},gjt=function(){return og},yP={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},pjt={parseDirective:ZFt,getConfig:()=>Tt().gitGraph,setDirection:ejt,setOptions:tjt,getOptions:njt,commit:rjt,branch:ijt,merge:sjt,cherryPick:ajt,checkout:lRe,prettyPrint:ojt,clear:cjt,getBranchesAsObjArray:ujt,getBranches:ljt,getCommits:hjt,getCommitsArray:dRe,getCurrentBranch:fjt,getDirection:djt,getHead:gjt,setAccTitle:ip,getAccTitle:L2,getAccDescription:D2,setAccDescription:M2,setDiagramTitle:Uw,getDiagramTitle:Ww,commitType:yP};let kP={};const P2={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},f9=8;let op={},kK={},xK=[],EK=0;const bjt=()=>{op={},kK={},kP={},EK=0,xK=[]},vjt=i=>{const a=document.createElementNS("http://www.w3.org/2000/svg","text");let f=[];typeof i=="string"?f=i.split(/\\n|\n|/gi):Array.isArray(i)?f=i:f=[];for(const p of f){const w=document.createElementNS("http://www.w3.org/2000/svg","tspan");w.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),w.setAttribute("dy","1em"),w.setAttribute("x","0"),w.setAttribute("class","row"),w.textContent=p.trim(),a.appendChild(w)}return a},gRe=(i,a,f)=>{const p=GN().gitGraph,w=i.append("g").attr("class","commit-bullets"),y=i.append("g").attr("class","commit-labels");let b=0;Object.keys(a).sort((N,B)=>a[N].seq-a[B].seq).forEach(N=>{const B=a[N],R=op[B.branch].pos,j=b+10;if(f){let $,V=B.customType!==void 0&&B.customType!==""?B.customType:B.type;switch(V){case P2.NORMAL:$="commit-normal";break;case P2.REVERSE:$="commit-reverse";break;case P2.HIGHLIGHT:$="commit-highlight";break;case P2.MERGE:$="commit-merge";break;case P2.CHERRY_PICK:$="commit-cherry-pick";break;default:$="commit-normal"}if(V===P2.HIGHLIGHT){const Q=w.append("rect");Q.attr("x",j-10),Q.attr("y",R-10),Q.attr("height",20),Q.attr("width",20),Q.attr("class",`commit ${B.id} commit-highlight${op[B.branch].index%f9} ${$}-outer`),w.append("rect").attr("x",j-6).attr("y",R-6).attr("height",12).attr("width",12).attr("class",`commit ${B.id} commit${op[B.branch].index%f9} ${$}-inner`)}else if(V===P2.CHERRY_PICK)w.append("circle").attr("cx",j).attr("cy",R).attr("r",10).attr("class",`commit ${B.id} ${$}`),w.append("circle").attr("cx",j-3).attr("cy",R+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${B.id} ${$}`),w.append("circle").attr("cx",j+3).attr("cy",R+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${B.id} ${$}`),w.append("line").attr("x1",j+3).attr("y1",R+1).attr("x2",j).attr("y2",R-5).attr("stroke","#fff").attr("class",`commit ${B.id} ${$}`),w.append("line").attr("x1",j-3).attr("y1",R+1).attr("x2",j).attr("y2",R-5).attr("stroke","#fff").attr("class",`commit ${B.id} ${$}`);else{const Q=w.append("circle");if(Q.attr("cx",j),Q.attr("cy",R),Q.attr("r",B.type===P2.MERGE?9:10),Q.attr("class",`commit ${B.id} commit${op[B.branch].index%f9}`),V===P2.MERGE){const oe=w.append("circle");oe.attr("cx",j),oe.attr("cy",R),oe.attr("r",6),oe.attr("class",`commit ${$} ${B.id} commit${op[B.branch].index%f9}`)}V===P2.REVERSE&&w.append("path").attr("d",`M ${j-5},${R-5}L${j+5},${R+5}M${j-5},${R+5}L${j+5},${R-5}`).attr("class",`commit ${$} ${B.id} commit${op[B.branch].index%f9}`)}}if(kK[B.id]={x:b+10,y:R},f){if(B.type!==P2.CHERRY_PICK&&(B.customId&&B.type===P2.MERGE||B.type!==P2.MERGE)&&p.showCommitLabel){const Q=y.append("g"),oe=Q.insert("rect").attr("class","commit-label-bkg"),ce=Q.append("text").attr("x",b).attr("y",R+25).attr("class","commit-label").text(B.id);let se=ce.node().getBBox();if(oe.attr("x",b+10-se.width/2-2).attr("y",R+13.5).attr("width",se.width+2*2).attr("height",se.height+2*2),ce.attr("x",b+10-se.width/2),p.rotateCommitLabel){let ge=-7.5-(se.width+10)/25*9.5,ye=10+se.width/25*8.5;Q.attr("transform","translate("+ge+", "+ye+") rotate(-45, "+b+", "+R+")")}}if(B.tag){const Q=y.insert("polygon"),oe=y.append("circle"),ce=y.append("text").attr("y",R-16).attr("class","tag-label").text(B.tag);let se=ce.node().getBBox();ce.attr("x",b+10-se.width/2);const ge=se.height/2,ye=R-19.2;Q.attr("class","tag-label-bkg").attr("points",` + ${b-se.width/2-4/2},${ye+2} + ${b-se.width/2-4/2},${ye-2} + ${b+10-se.width/2-4},${ye-ge-2} + ${b+10+se.width/2+4},${ye-ge-2} + ${b+10+se.width/2+4},${ye+ge+2} + ${b+10-se.width/2-4},${ye+ge+2}`),oe.attr("cx",b-se.width/2+4/2).attr("cy",ye).attr("r",1.5).attr("class","tag-hole")}}b+=50,b>EK&&(EK=b)})},wjt=(i,a,f)=>Object.keys(f).filter(y=>f[y].branch===a.branch&&f[y].seq>i.seq&&f[y].seq0,O0e=(i,a,f=0)=>{const p=i+Math.abs(i-a)/2;if(f>5)return p;if(xK.every(b=>Math.abs(b-p)>=10))return xK.push(p),p;const y=Math.abs(i-a);return O0e(i,a-y/5,f+1)},mjt=(i,a,f,p)=>{const w=kK[a.id],y=kK[f.id],b=wjt(a,f,p);let E="",S="",N=0,B=0,R=op[f.branch].index,j;if(b){E="A 10 10, 0, 0, 0,",S="A 10 10, 0, 0, 1,",N=10,B=10,R=op[f.branch].index;const $=w.yy.y&&(E="A 20 20, 0, 0, 0,",N=20,B=20,R=op[a.branch].index,j=`M ${w.x} ${w.y} L ${y.x-N} ${w.y} ${E} ${y.x} ${w.y-B} L ${y.x} ${y.y}`),w.y===y.y&&(R=op[a.branch].index,j=`M ${w.x} ${w.y} L ${w.x} ${y.y-N} ${E} ${w.x+B} ${y.y} L ${y.x} ${y.y}`);i.append("path").attr("d",j).attr("class","arrow arrow"+R%f9)},yjt=(i,a)=>{const f=i.append("g").attr("class","commit-arrows");Object.keys(a).forEach(p=>{const w=a[p];w.parents&&w.parents.length>0&&w.parents.forEach(y=>{mjt(f,a[y],w,a)})})},kjt=(i,a)=>{const f=GN().gitGraph,p=i.append("g");a.forEach((w,y)=>{const b=y%f9,E=op[w.name].pos,S=p.append("line");S.attr("x1",0),S.attr("y1",E),S.attr("x2",EK),S.attr("y2",E),S.attr("class","branch branch"+b),xK.push(E);let N=w.name;const B=vjt(N),R=p.insert("rect"),$=p.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+b);$.node().appendChild(B);let V=B.getBBox();R.attr("class","branchLabelBkg label"+b).attr("rx",4).attr("ry",4).attr("x",-V.width-4-(f.rotateCommitLabel===!0?30:0)).attr("y",-V.height/2+8).attr("width",V.width+18).attr("height",V.height+4),$.attr("transform","translate("+(-V.width-14-(f.rotateCommitLabel===!0?30:0))+", "+(E-V.height/2-1)+")"),R.attr("transform","translate(-19, "+(E-V.height/2)+")")})},xjt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:XFt,db:pjt,renderer:{draw:function(i,a,f,p){bjt();const w=GN(),y=w.gitGraph;Fe.debug("in gitgraph renderer",i+` +`,"id:",a,f),kP=p.db.getCommits();const b=p.db.getBranchesAsObjArray();let E=0;b.forEach((N,B)=>{op[N.name]={pos:E,index:B},E+=50+(y.rotateCommitLabel?40:0)});const S=Cr(`[id="${a}"]`);gRe(S,kP,!1),y.showBranches&&kjt(S,b),yjt(S,kP),gRe(S,kP,!0),co.insertTitle(S,"gitTitleText",y.titleTopMargin,p.db.getDiagramTitle()),xIe(void 0,S,y.diagramPadding,y.useMaxWidth??w.useMaxWidth)}},styles:i=>` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0,1,2,3,4,5,6,7].map(a=>` + .branch-label${a} { fill: ${i["gitBranchLabel"+a]}; } + .commit${a} { stroke: ${i["git"+a]}; fill: ${i["git"+a]}; } + .commit-highlight${a} { stroke: ${i["gitInv"+a]}; fill: ${i["gitInv"+a]}; } + .label${a} { fill: ${i["git"+a]}; } + .arrow${a} { stroke: ${i["git"+a]}; } + `).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${i.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelColor};} + .commit-label-bkg { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${i.tagLabelFontSize}; fill: ${i.tagLabelColor};} + .tag-label-bkg { fill: ${i.tagLabelBackground}; stroke: ${i.tagLabelBorder}; } + .tag-hole { fill: ${i.textColor}; } + + .commit-merge { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + .commit-reverse { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`}},Symbol.toStringTag,{value:"Module"}));var N0e=function(){var i=function(ve,te,xe,De){for(xe=xe||{},De=ve.length;De--;xe[ve[De]]=te);return xe},a=[1,3],f=[1,5],p=[7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],w=[1,15],y=[1,16],b=[1,17],E=[1,18],S=[1,19],N=[1,20],B=[1,21],R=[1,22],j=[1,23],$=[1,24],V=[1,25],Q=[1,26],oe=[1,27],ce=[1,29],se=[1,31],ge=[1,34],ye=[5,7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],ke={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,tickInterval:16,excludes:17,includes:18,todayMarker:19,title:20,acc_title:21,acc_title_value:22,acc_descr:23,acc_descr_value:24,acc_descr_multiline_value:25,section:26,clickStatement:27,taskTxt:28,taskData:29,openDirective:30,typeDirective:31,closeDirective:32,":":33,argDirective:34,click:35,callbackname:36,callbackargs:37,href:38,clickStatementDebug:39,open_directive:40,type_directive:41,arg_directive:42,close_directive:43,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"tickInterval",17:"excludes",18:"includes",19:"todayMarker",20:"title",21:"acc_title",22:"acc_title_value",23:"acc_descr",24:"acc_descr_value",25:"acc_descr_multiline_value",26:"section",28:"taskTxt",29:"taskData",33:":",35:"click",36:"callbackname",37:"callbackargs",38:"href",40:"open_directive",41:"type_directive",42:"arg_directive",43:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[27,2],[27,3],[27,3],[27,4],[27,3],[27,4],[27,2],[39,2],[39,3],[39,3],[39,4],[39,3],[39,4],[39,2],[30,1],[31,1],[34,1],[32,1]],performAction:function(te,xe,De,he,Ie,ee,rt){var me=ee.length-1;switch(Ie){case 2:return ee[me-1];case 3:this.$=[];break;case 4:ee[me-1].push(ee[me]),this.$=ee[me-1];break;case 5:case 6:this.$=ee[me];break;case 7:case 8:this.$=[];break;case 9:he.setDateFormat(ee[me].substr(11)),this.$=ee[me].substr(11);break;case 10:he.enableInclusiveEndDates(),this.$=ee[me].substr(18);break;case 11:he.TopAxis(),this.$=ee[me].substr(8);break;case 12:he.setAxisFormat(ee[me].substr(11)),this.$=ee[me].substr(11);break;case 13:he.setTickInterval(ee[me].substr(13)),this.$=ee[me].substr(13);break;case 14:he.setExcludes(ee[me].substr(9)),this.$=ee[me].substr(9);break;case 15:he.setIncludes(ee[me].substr(9)),this.$=ee[me].substr(9);break;case 16:he.setTodayMarker(ee[me].substr(12)),this.$=ee[me].substr(12);break;case 17:he.setDiagramTitle(ee[me].substr(6)),this.$=ee[me].substr(6);break;case 18:this.$=ee[me].trim(),he.setAccTitle(this.$);break;case 19:case 20:this.$=ee[me].trim(),he.setAccDescription(this.$);break;case 21:he.addSection(ee[me].substr(8)),this.$=ee[me].substr(8);break;case 23:he.addTask(ee[me-1],ee[me]),this.$="task";break;case 27:this.$=ee[me-1],he.setClickEvent(ee[me-1],ee[me],null);break;case 28:this.$=ee[me-2],he.setClickEvent(ee[me-2],ee[me-1],ee[me]);break;case 29:this.$=ee[me-2],he.setClickEvent(ee[me-2],ee[me-1],null),he.setLink(ee[me-2],ee[me]);break;case 30:this.$=ee[me-3],he.setClickEvent(ee[me-3],ee[me-2],ee[me-1]),he.setLink(ee[me-3],ee[me]);break;case 31:this.$=ee[me-2],he.setClickEvent(ee[me-2],ee[me],null),he.setLink(ee[me-2],ee[me-1]);break;case 32:this.$=ee[me-3],he.setClickEvent(ee[me-3],ee[me-1],ee[me]),he.setLink(ee[me-3],ee[me-2]);break;case 33:this.$=ee[me-1],he.setLink(ee[me-1],ee[me]);break;case 34:case 40:this.$=ee[me-1]+" "+ee[me];break;case 35:case 36:case 38:this.$=ee[me-2]+" "+ee[me-1]+" "+ee[me];break;case 37:case 39:this.$=ee[me-3]+" "+ee[me-2]+" "+ee[me-1]+" "+ee[me];break;case 41:he.parseDirective("%%{","open_directive");break;case 42:he.parseDirective(ee[me],"type_directive");break;case 43:ee[me]=ee[me].trim().replace(/'/g,'"'),he.parseDirective(ee[me],"arg_directive");break;case 44:he.parseDirective("}%%","close_directive","gantt");break}},table:[{3:1,4:2,5:a,30:4,40:f},{1:[3]},{3:6,4:2,5:a,30:4,40:f},i(p,[2,3],{6:7}),{31:8,41:[1,9]},{41:[2,41]},{1:[2,1]},{4:30,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:w,13:y,14:b,15:E,16:S,17:N,18:B,19:R,20:j,21:$,23:V,25:Q,26:oe,27:28,28:ce,30:4,35:se,40:f},{32:32,33:[1,33],43:ge},i([33,43],[2,42]),i(p,[2,8],{1:[2,2]}),i(p,[2,4]),{4:30,10:35,12:w,13:y,14:b,15:E,16:S,17:N,18:B,19:R,20:j,21:$,23:V,25:Q,26:oe,27:28,28:ce,30:4,35:se,40:f},i(p,[2,6]),i(p,[2,7]),i(p,[2,9]),i(p,[2,10]),i(p,[2,11]),i(p,[2,12]),i(p,[2,13]),i(p,[2,14]),i(p,[2,15]),i(p,[2,16]),i(p,[2,17]),{22:[1,36]},{24:[1,37]},i(p,[2,20]),i(p,[2,21]),i(p,[2,22]),{29:[1,38]},i(p,[2,24]),{36:[1,39],38:[1,40]},{11:[1,41]},{34:42,42:[1,43]},{11:[2,44]},i(p,[2,5]),i(p,[2,18]),i(p,[2,19]),i(p,[2,23]),i(p,[2,27],{37:[1,44],38:[1,45]}),i(p,[2,33],{36:[1,46]}),i(ye,[2,25]),{32:47,43:ge},{43:[2,43]},i(p,[2,28],{38:[1,48]}),i(p,[2,29]),i(p,[2,31],{37:[1,49]}),{11:[1,50]},i(p,[2,30]),i(p,[2,32]),i(ye,[2,26])],defaultActions:{5:[2,41],6:[2,1],34:[2,44],43:[2,43]},parseError:function(te,xe){if(xe.recoverable)this.trace(te);else{var De=new Error(te);throw De.hash=xe,De}},parse:function(te){var xe=this,De=[0],he=[],Ie=[null],ee=[],rt=this.table,me="",gt=0,pe=0,Et=2,wt=1,jt=ee.slice.call(arguments,1),At=Object.create(this.lexer),Bt={yy:{}};for(var cn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,cn)&&(Bt.yy[cn]=this.yy[cn]);At.setInput(te,Bt.yy),Bt.yy.lexer=At,Bt.yy.parser=this,typeof At.yylloc>"u"&&(At.yylloc={});var Nn=At.yylloc;ee.push(Nn);var Ot=At.options&&At.options.ranges;typeof Bt.yy.parseError=="function"?this.parseError=Bt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function oi(){var Ri;return Ri=he.pop()||At.lex()||wt,typeof Ri!="number"&&(Ri instanceof Array&&(he=Ri,Ri=he.pop()),Ri=xe.symbols_[Ri]||Ri),Ri}for(var kt,Dt,vt,Nt,ze={},Xe,Lt,Ge,Bn;;){if(Dt=De[De.length-1],this.defaultActions[Dt]?vt=this.defaultActions[Dt]:((kt===null||typeof kt>"u")&&(kt=oi()),vt=rt[Dt]&&rt[Dt][kt]),typeof vt>"u"||!vt.length||!vt[0]){var Oe="";Bn=[];for(Xe in rt[Dt])this.terminals_[Xe]&&Xe>Et&&Bn.push("'"+this.terminals_[Xe]+"'");At.showPosition?Oe="Parse error on line "+(gt+1)+`: +`+At.showPosition()+` +Expecting `+Bn.join(", ")+", got '"+(this.terminals_[kt]||kt)+"'":Oe="Parse error on line "+(gt+1)+": Unexpected "+(kt==wt?"end of input":"'"+(this.terminals_[kt]||kt)+"'"),this.parseError(Oe,{text:At.match,token:this.terminals_[kt]||kt,line:At.yylineno,loc:Nn,expected:Bn})}if(vt[0]instanceof Array&&vt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Dt+", token: "+kt);switch(vt[0]){case 1:De.push(kt),Ie.push(At.yytext),ee.push(At.yylloc),De.push(vt[1]),kt=null,pe=At.yyleng,me=At.yytext,gt=At.yylineno,Nn=At.yylloc;break;case 2:if(Lt=this.productions_[vt[1]][1],ze.$=Ie[Ie.length-Lt],ze._$={first_line:ee[ee.length-(Lt||1)].first_line,last_line:ee[ee.length-1].last_line,first_column:ee[ee.length-(Lt||1)].first_column,last_column:ee[ee.length-1].last_column},Ot&&(ze._$.range=[ee[ee.length-(Lt||1)].range[0],ee[ee.length-1].range[1]]),Nt=this.performAction.apply(ze,[me,pe,gt,Bt.yy,vt[1],Ie,ee].concat(jt)),typeof Nt<"u")return Nt;Lt&&(De=De.slice(0,-1*Lt*2),Ie=Ie.slice(0,-1*Lt),ee=ee.slice(0,-1*Lt)),De.push(this.productions_[vt[1]][0]),Ie.push(ze.$),ee.push(ze._$),Ge=rt[De[De.length-2]][De[De.length-1]],De.push(Ge);break;case 3:return!0}}return!0}},Ae=function(){var ve={EOF:1,parseError:function(xe,De){if(this.yy.parser)this.yy.parser.parseError(xe,De);else throw new Error(xe)},setInput:function(te,xe){return this.yy=xe||this.yy||{},this._input=te,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var te=this._input[0];this.yytext+=te,this.yyleng++,this.offset++,this.match+=te,this.matched+=te;var xe=te.match(/(?:\r\n?|\n).*/g);return xe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),te},unput:function(te){var xe=te.length,De=te.split(/(?:\r\n?|\n)/g);this._input=te+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-xe),this.offset-=xe;var he=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),De.length-1&&(this.yylineno-=De.length-1);var Ie=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:De?(De.length===he.length?this.yylloc.first_column:0)+he[he.length-De.length].length-De[0].length:this.yylloc.first_column-xe},this.options.ranges&&(this.yylloc.range=[Ie[0],Ie[0]+this.yyleng-xe]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(te){this.unput(this.match.slice(te))},pastInput:function(){var te=this.matched.substr(0,this.matched.length-this.match.length);return(te.length>20?"...":"")+te.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var te=this.match;return te.length<20&&(te+=this._input.substr(0,20-te.length)),(te.substr(0,20)+(te.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var te=this.pastInput(),xe=new Array(te.length+1).join("-");return te+this.upcomingInput()+` +`+xe+"^"},test_match:function(te,xe){var De,he,Ie;if(this.options.backtrack_lexer&&(Ie={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ie.yylloc.range=this.yylloc.range.slice(0))),he=te[0].match(/(?:\r\n?|\n).*/g),he&&(this.yylineno+=he.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:he?he[he.length-1].length-he[he.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+te[0].length},this.yytext+=te[0],this.match+=te[0],this.matches=te,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(te[0].length),this.matched+=te[0],De=this.performAction.call(this,this.yy,this,xe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),De)return De;if(this._backtrack){for(var ee in Ie)this[ee]=Ie[ee];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var te,xe,De,he;this._more||(this.yytext="",this.match="");for(var Ie=this._currentRules(),ee=0;eexe[0].length)){if(xe=De,he=ee,this.options.backtrack_lexer){if(te=this.test_match(De,Ie[ee]),te!==!1)return te;if(this._backtrack){xe=!1;continue}else return!1}else if(!this.options.flex)break}return xe?(te=this.test_match(xe,Ie[he]),te!==!1?te:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var xe=this.next();return xe||this.lex()},begin:function(xe){this.conditionStack.push(xe)},popState:function(){var xe=this.conditionStack.length-1;return xe>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(xe){return xe=this.conditionStack.length-1-Math.abs(xe||0),xe>=0?this.conditionStack[xe]:"INITIAL"},pushState:function(xe){this.begin(xe)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(xe,De,he,Ie){switch(he){case 0:return this.begin("open_directive"),40;case 1:return this.begin("type_directive"),41;case 2:return this.popState(),this.begin("arg_directive"),33;case 3:return this.popState(),this.popState(),43;case 4:return 42;case 5:return this.begin("acc_title"),21;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),23;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:break;case 13:break;case 14:break;case 15:return 11;case 16:break;case 17:break;case 18:break;case 19:this.begin("href");break;case 20:this.popState();break;case 21:return 38;case 22:this.begin("callbackname");break;case 23:this.popState();break;case 24:this.popState(),this.begin("callbackargs");break;case 25:return 36;case 26:this.popState();break;case 27:return 37;case 28:this.begin("click");break;case 29:this.popState();break;case 30:return 35;case 31:return 5;case 32:return 12;case 33:return 13;case 34:return 14;case 35:return 15;case 36:return 16;case 37:return 18;case 38:return 17;case 39:return 19;case 40:return"date";case 41:return 20;case 42:return"accDescription";case 43:return 26;case 44:return 28;case 45:return 29;case 46:return 33;case 47:return 7;case 48:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[26,27],inclusive:!1},callbackname:{rules:[23,24,25],inclusive:!1},href:{rules:[20,21],inclusive:!1},click:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};return ve}();ke.lexer=Ae;function de(){this.yy={}}return de.prototype=ke,ke.Parser=de,new de}();N0e.parser=N0e;const Ejt=N0e;var Tjt="isoweek";const _jt=function(i,a,f){var p=function(S,N){var B=(N?f.utc:f)().year(S).startOf(o5),R=4-B.isoWeekday();return B.isoWeekday()>4&&(R+=7),B.add(R,Fw)},w=function(S){return S.add(4-S.isoWeekday(),Fw)},y=a.prototype;y.isoWeekYear=function(){var E=w(this);return E.year()},y.isoWeek=function(E){if(!this.$utils().u(E))return this.add((E-this.isoWeek())*7,Fw);var S=w(this),N=p(this.isoWeekYear(),this.$u);return S.diff(N,yN)+1},y.isoWeekday=function(E){return this.$utils().u(E)?this.day()||7:this.day(this.day()%7?E:E-7)};var b=y.startOf;y.startOf=function(E,S){var N=this.$utils(),B=N.u(S)?!0:S,R=N.p(E);return R===Tjt?B?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):b.bind(this)(E,S)}};var Cjt=function(a){return a.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(f,p,w){return p||w.slice(1)})},Sjt={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ajt=function(a,f){return a.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(p,w,y){var b=y&&y.toUpperCase();return w||f[y]||Sjt[y]||Cjt(f[b])})},Ljt=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,Mjt=/\d/,TK=/\d\d/,Djt=/\d{3}/,Ijt=/\d{4}/,h3=/\d\d?/,Ojt=/[+-]?\d+/,Njt=/[+-]\d\d:?(\d\d)?|Z/,xP=/\d*[^-_:/,()\s\d]+/,ax={},pRe=function(a){return a=+a,a+(a>68?1900:2e3)};function Pjt(i){if(!i||i==="Z")return 0;var a=i.match(/([+-]|\d\d)/g),f=+(a[1]*60)+(+a[2]||0);return f===0?0:a[0]==="+"?-f:f}var cp=function(a){return function(f){this[a]=+f}},bRe=[Njt,function(i){var a=this.zone||(this.zone={});a.offset=Pjt(i)}],P0e=function(a){var f=ax[a];return f&&(f.indexOf?f:f.s.concat(f.f))},vRe=function(a,f){var p,w=ax,y=w.meridiem;if(!y)p=a===(f?"pm":"PM");else for(var b=1;b<=24;b+=1)if(a.indexOf(y(b,0,f))>-1){p=b>12;break}return p},Bjt={A:[xP,function(i){this.afternoon=vRe(i,!1)}],a:[xP,function(i){this.afternoon=vRe(i,!0)}],S:[Mjt,function(i){this.milliseconds=+i*100}],SS:[TK,function(i){this.milliseconds=+i*10}],SSS:[Djt,function(i){this.milliseconds=+i}],s:[h3,cp("seconds")],ss:[h3,cp("seconds")],m:[h3,cp("minutes")],mm:[h3,cp("minutes")],H:[h3,cp("hours")],h:[h3,cp("hours")],HH:[h3,cp("hours")],hh:[h3,cp("hours")],D:[h3,cp("day")],DD:[TK,cp("day")],Do:[xP,function(i){var a=ax,f=a.ordinal,p=i.match(/\d+/);if(this.day=p[0],!!f)for(var w=1;w<=31;w+=1)f(w).replace(/\[|\]/g,"")===i&&(this.day=w)}],M:[h3,cp("month")],MM:[TK,cp("month")],MMM:[xP,function(i){var a=P0e("months"),f=P0e("monthsShort"),p=(f||a.map(function(w){return w.slice(0,3)})).indexOf(i)+1;if(p<1)throw new Error;this.month=p%12||p}],MMMM:[xP,function(i){var a=P0e("months"),f=a.indexOf(i)+1;if(f<1)throw new Error;this.month=f%12||f}],Y:[Ojt,cp("year")],YY:[TK,function(i){this.year=pRe(i)}],YYYY:[Ijt,cp("year")],Z:bRe,ZZ:bRe};function Rjt(i){var a=i.afternoon;if(a!==void 0){var f=i.hours;a?f<12&&(i.hours+=12):f===12&&(i.hours=0),delete i.afternoon}}function Fjt(i){i=Ajt(i,ax&&ax.formats);for(var a=i.match(Ljt),f=a.length,p=0;p-1)return new Date((f==="X"?1e3:1)*a);var w=Fjt(f),y=w(a),b=y.year,E=y.month,S=y.day,N=y.hours,B=y.minutes,R=y.seconds,j=y.milliseconds,$=y.zone,V=new Date,Q=S||(!b&&!E?V.getDate():1),oe=b||V.getFullYear(),ce=0;b&&!E||(ce=E>0?E-1:V.getMonth());var se=N||0,ge=B||0,ye=R||0,ke=j||0;return $?new Date(Date.UTC(oe,ce,Q,se,ge,ye,ke+$.offset*60*1e3)):p?new Date(Date.UTC(oe,ce,Q,se,ge,ye,ke)):new Date(oe,ce,Q,se,ge,ye,ke)}catch{return new Date("")}};const $jt=function(i,a,f){f.p.customParseFormat=!0,i&&i.parseTwoDigitYear&&(pRe=i.parseTwoDigitYear);var p=a.prototype,w=p.parse;p.parse=function(y){var b=y.date,E=y.utc,S=y.args;this.$u=E;var N=S[1];if(typeof N=="string"){var B=S[2]===!0,R=S[3]===!0,j=B||R,$=S[2];R&&($=S[2]),ax=this.$locale(),!B&&$&&(ax=f.Ls[$]),this.$d=jjt(b,N,E),this.init(),$&&$!==!0&&(this.$L=this.locale($).$L),j&&b!=this.format(N)&&(this.$d=new Date("")),ax={}}else if(N instanceof Array)for(var V=N.length,Q=1;Q<=V;Q+=1){S[1]=N[Q-1];var oe=f.apply(this,S);if(oe.isValid()){this.$d=oe.$d,this.$L=oe.$L,this.init();break}Q===V&&(this.$d=new Date(""))}else w.call(this,y)}},Hjt=function(i,a){var f=a.prototype,p=f.format;f.format=function(w){var y=this,b=this.$locale();if(!this.isValid())return p.bind(this)(w);var E=this.$utils(),S=w||mLe,N=S.replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(B){switch(B){case"Q":return Math.ceil((y.$M+1)/3);case"Do":return b.ordinal(y.$D);case"gggg":return y.weekYear();case"GGGG":return y.isoWeekYear();case"wo":return b.ordinal(y.week(),"W");case"w":case"ww":return E.s(y.week(),B==="w"?1:2,"0");case"W":case"WW":return E.s(y.isoWeek(),B==="W"?1:2,"0");case"k":case"kk":return E.s(String(y.$H===0?24:y.$H),B==="k"?1:2,"0");case"X":return Math.floor(y.$d.getTime()/1e3);case"x":return y.$d.getTime();case"z":return"["+y.offsetName()+"]";case"zzz":return"["+y.offsetName("long")+"]";default:return B}});return p.bind(this)(N)}};ru.extend(_jt),ru.extend($jt),ru.extend(Hjt);let f3="",B0e="",R0e,F0e="",EP=[],TP=[],j0e={},$0e=[],_K=[],iL="",H0e="";const wRe=["active","done","crit","milestone"];let z0e=[],_P=!1,G0e=!1,q0e=0;const zjt=function(i,a,f){rd.parseDirective(this,i,a,f)},Gjt=function(){$0e=[],_K=[],iL="",z0e=[],CK=0,U0e=void 0,SK=void 0,b1=[],f3="",B0e="",H0e="",R0e=void 0,F0e="",EP=[],TP=[],_P=!1,G0e=!1,q0e=0,j0e={},rp()},qjt=function(i){B0e=i},Vjt=function(){return B0e},Ujt=function(i){R0e=i},Wjt=function(){return R0e},Kjt=function(i){F0e=i},Yjt=function(){return F0e},Xjt=function(i){f3=i},Qjt=function(){_P=!0},Zjt=function(){return _P},Jjt=function(){G0e=!0},e$t=function(){return G0e},t$t=function(i){H0e=i},n$t=function(){return H0e},r$t=function(){return f3},i$t=function(i){EP=i.toLowerCase().split(/[\s,]+/)},s$t=function(){return EP},a$t=function(i){TP=i.toLowerCase().split(/[\s,]+/)},o$t=function(){return TP},c$t=function(){return j0e},u$t=function(i){iL=i,$0e.push(i)},l$t=function(){return $0e},h$t=function(){let i=TRe();const a=10;let f=0;for(;!i&&f=6&&f.includes("weekends")||f.includes(i.format("dddd").toLowerCase())?!0:f.includes(i.format(a.trim()))},yRe=function(i,a,f,p){if(!f.length||i.manualEndTime)return;let w;i.startTime instanceof Date?w=ru(i.startTime):w=ru(i.startTime,a,!0),w=w.add(1,"d");let y;i.endTime instanceof Date?y=ru(i.endTime):y=ru(i.endTime,a,!0);const[b,E]=f$t(w,y,a,f,p);i.endTime=b.toDate(),i.renderEndTime=E},f$t=function(i,a,f,p,w){let y=!1,b=null;for(;i<=a;)y||(b=a.toDate()),y=mRe(i,f,p,w),y&&(a=a.add(1,"d")),i=i.add(1,"d");return[a,b]},V0e=function(i,a,f){f=f.trim();const w=/^after\s+([\d\w- ]+)/.exec(f.trim());if(w!==null){let b=null;if(w[1].split(" ").forEach(function(E){let S=aL(E);S!==void 0&&(b?S.endTime>b.endTime&&(b=S):b=S)}),b)return b.endTime;{const E=new Date;return E.setHours(0,0,0,0),E}}let y=ru(f,a.trim(),!0);if(y.isValid())return y.toDate();{Fe.debug("Invalid date:"+f),Fe.debug("With date format:"+a.trim());const b=new Date(f);if(b===void 0||isNaN(b.getTime()))throw new Error("Invalid date:"+f);return b}},kRe=function(i){const a=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(i.trim());return a!==null?[Number.parseFloat(a[1]),a[2]]:[NaN,"ms"]},xRe=function(i,a,f,p=!1){f=f.trim();let w=ru(f,a.trim(),!0);if(w.isValid())return p&&(w=w.add(1,"d")),w.toDate();let y=ru(i);const[b,E]=kRe(f);if(!Number.isNaN(b)){const S=y.add(b,E);S.isValid()&&(y=S)}return y.toDate()};let CK=0;const sL=function(i){return i===void 0?(CK=CK+1,"task"+CK):i},d$t=function(i,a){let f;a.substr(0,1)===":"?f=a.substr(1,a.length):f=a;const p=f.split(","),w={};SRe(p,w,wRe);for(let b=0;b{window.open(f,"_self")}),j0e[p]=f)}),_Re(i,"clickable")},_Re=function(i,a){i.split(",").forEach(function(f){let p=aL(f);p!==void 0&&p.classes.push(a)})},w$t=function(i,a,f){if(Tt().securityLevel!=="loose"||a===void 0)return;let p=[];if(typeof f=="string"){p=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let y=0;y{co.runFunc(a,...p)})},CRe=function(i,a){z0e.push(function(){const f=document.querySelector(`[id="${i}"]`);f!==null&&f.addEventListener("click",function(){a()})},function(){const f=document.querySelector(`[id="${i}-text"]`);f!==null&&f.addEventListener("click",function(){a()})})},m$t={parseDirective:zjt,getConfig:()=>Tt().gantt,clear:Gjt,setDateFormat:Xjt,getDateFormat:r$t,enableInclusiveEndDates:Qjt,endDatesAreInclusive:Zjt,enableTopAxis:Jjt,topAxisEnabled:e$t,setAxisFormat:qjt,getAxisFormat:Vjt,setTickInterval:Ujt,getTickInterval:Wjt,setTodayMarker:Kjt,getTodayMarker:Yjt,setAccTitle:ip,getAccTitle:L2,setDiagramTitle:Uw,getDiagramTitle:Ww,setDisplayMode:t$t,getDisplayMode:n$t,setAccDescription:M2,getAccDescription:D2,addSection:u$t,getSections:l$t,getTasks:h$t,addTask:p$t,findTaskById:aL,addTaskOrg:b$t,setIncludes:i$t,getIncludes:s$t,setExcludes:a$t,getExcludes:o$t,setClickEvent:function(i,a,f){i.split(",").forEach(function(p){w$t(p,a,f)}),_Re(i,"clickable")},setLink:v$t,getLinks:c$t,bindFunctions:function(i){z0e.forEach(function(a){a(i)})},parseDuration:kRe,isInvalidDate:mRe};function SRe(i,a,f){let p=!0;for(;p;)p=!1,f.forEach(function(w){const y="^\\s*"+w+"\\s*$",b=new RegExp(y);i[0].match(b)&&(a[w]=!0,i.shift(1),p=!0)})}const y$t=function(){Fe.debug("Something is calling, setConf, remove the call")},k$t=(i,a)=>{let f=[...i].map(()=>-1/0),p=[...i].sort((y,b)=>y.startTime-b.startTime||y.order-b.order),w=0;for(const y of p)for(let b=0;b=f[b]){f[b]=y.endTime,y.order=b+a,b>w&&(w=b);break}return w};let S5;const x$t=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Ejt,db:m$t,renderer:{setConf:y$t,draw:function(i,a,f,p){const w=Tt().gantt,y=Tt().securityLevel;let b;y==="sandbox"&&(b=Cr("#i"+a));const E=Cr(y==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=y==="sandbox"?b.nodes()[0].contentDocument:document,N=S.getElementById(a);S5=N.parentElement.offsetWidth,S5===void 0&&(S5=1200),w.useWidth!==void 0&&(S5=w.useWidth);const B=p.db.getTasks();let R=[];for(const ve of B)R.push(ve.type);R=de(R);const j={};let $=2*w.topPadding;if(p.db.getDisplayMode()==="compact"||w.displayMode==="compact"){const ve={};for(const xe of B)ve[xe.section]===void 0?ve[xe.section]=[xe]:ve[xe.section].push(xe);let te=0;for(const xe of Object.keys(ve)){const De=k$t(ve[xe],te)+1;te+=De,$+=De*(w.barHeight+w.barGap),j[xe]=De}}else{$+=B.length*(w.barHeight+w.barGap);for(const ve of R)j[ve]=B.filter(te=>te.type===ve).length}N.setAttribute("viewBox","0 0 "+S5+" "+$);const V=E.select(`[id="${a}"]`),Q=J7t().domain([O5t(B,function(ve){return ve.startTime}),I5t(B,function(ve){return ve.endTime})]).rangeRound([0,S5-w.leftPadding-w.rightPadding]);function oe(ve,te){const xe=ve.startTime,De=te.startTime;let he=0;return xe>De?he=1:xewt.order))].map(wt=>ve.find(jt=>jt.order===wt));V.append("g").selectAll("rect").data(me).enter().append("rect").attr("x",0).attr("y",function(wt,jt){return jt=wt.order,jt*te+xe-2}).attr("width",function(){return ee-w.rightPadding/2}).attr("height",te).attr("class",function(wt){for(const[jt,At]of R.entries())if(wt.type===At)return"section section"+jt%w.numberSectionStyles;return"section section0"});const gt=V.append("g").selectAll("rect").data(ve).enter(),pe=p.db.getLinks();if(gt.append("rect").attr("id",function(wt){return wt.id}).attr("rx",3).attr("ry",3).attr("x",function(wt){return wt.milestone?Q(wt.startTime)+De+.5*(Q(wt.endTime)-Q(wt.startTime))-.5*he:Q(wt.startTime)+De}).attr("y",function(wt,jt){return jt=wt.order,jt*te+xe}).attr("width",function(wt){return wt.milestone?he:Q(wt.renderEndTime||wt.endTime)-Q(wt.startTime)}).attr("height",he).attr("transform-origin",function(wt,jt){return jt=wt.order,(Q(wt.startTime)+De+.5*(Q(wt.endTime)-Q(wt.startTime))).toString()+"px "+(jt*te+xe+.5*he).toString()+"px"}).attr("class",function(wt){const jt="task";let At="";wt.classes.length>0&&(At=wt.classes.join(" "));let Bt=0;for(const[Nn,Ot]of R.entries())wt.type===Ot&&(Bt=Nn%w.numberSectionStyles);let cn="";return wt.active?wt.crit?cn+=" activeCrit":cn=" active":wt.done?wt.crit?cn=" doneCrit":cn=" done":wt.crit&&(cn+=" crit"),cn.length===0&&(cn=" task"),wt.milestone&&(cn=" milestone "+cn),cn+=Bt,cn+=" "+At,jt+cn}),gt.append("text").attr("id",function(wt){return wt.id+"-text"}).text(function(wt){return wt.task}).attr("font-size",w.fontSize).attr("x",function(wt){let jt=Q(wt.startTime),At=Q(wt.renderEndTime||wt.endTime);wt.milestone&&(jt+=.5*(Q(wt.endTime)-Q(wt.startTime))-.5*he),wt.milestone&&(At=jt+he);const Bt=this.getBBox().width;return Bt>At-jt?At+Bt+1.5*w.leftPadding>ee?jt+De-5:At+De+5:(At-jt)/2+jt+De}).attr("y",function(wt,jt){return jt=wt.order,jt*te+w.barHeight/2+(w.fontSize/2-2)+xe}).attr("text-height",he).attr("class",function(wt){const jt=Q(wt.startTime);let At=Q(wt.endTime);wt.milestone&&(At=jt+he);const Bt=this.getBBox().width;let cn="";wt.classes.length>0&&(cn=wt.classes.join(" "));let Nn=0;for(const[oi,kt]of R.entries())wt.type===kt&&(Nn=oi%w.numberSectionStyles);let Ot="";return wt.active&&(wt.crit?Ot="activeCritText"+Nn:Ot="activeText"+Nn),wt.done?wt.crit?Ot=Ot+" doneCritText"+Nn:Ot=Ot+" doneText"+Nn:wt.crit&&(Ot=Ot+" critText"+Nn),wt.milestone&&(Ot+=" milestoneText"),Bt>At-jt?At+Bt+1.5*w.leftPadding>ee?cn+" taskTextOutsideLeft taskTextOutside"+Nn+" "+Ot:cn+" taskTextOutsideRight taskTextOutside"+Nn+" "+Ot+" width-"+Bt:cn+" taskText taskText"+Nn+" "+Ot+" width-"+Bt}),Tt().securityLevel==="sandbox"){let wt;wt=Cr("#i"+a);const jt=wt.nodes()[0].contentDocument;gt.filter(function(At){return pe[At.id]!==void 0}).each(function(At){var Bt=jt.querySelector("#"+At.id),cn=jt.querySelector("#"+At.id+"-text");const Nn=Bt.parentNode;var Ot=jt.createElement("a");Ot.setAttribute("xlink:href",pe[At.id]),Ot.setAttribute("target","_top"),Nn.appendChild(Ot),Ot.appendChild(Bt),Ot.appendChild(cn)})}}function ge(ve,te,xe,De,he,Ie,ee,rt){const me=Ie.reduce((Bt,{startTime:cn})=>Bt?Math.min(Bt,cn):cn,0),gt=Ie.reduce((Bt,{endTime:cn})=>Bt?Math.max(Bt,cn):cn,0),pe=p.db.getDateFormat();if(!me||!gt)return;const Et=[];let wt=null,jt=ru(me);for(;jt.valueOf()<=gt;)p.db.isInvalidDate(jt,pe,ee,rt)?wt?wt.end=jt:wt={start:jt,end:jt}:wt&&(Et.push(wt),wt=null),jt=jt.add(1,"d");V.append("g").selectAll("rect").data(Et).enter().append("rect").attr("id",function(Bt){return"exclude-"+Bt.start.format("YYYY-MM-DD")}).attr("x",function(Bt){return Q(Bt.start)+xe}).attr("y",w.gridLineStartPadding).attr("width",function(Bt){const cn=Bt.end.add(1,"day");return Q(cn)-Q(Bt.start)}).attr("height",he-te-w.gridLineStartPadding).attr("transform-origin",function(Bt,cn){return(Q(Bt.start)+xe+.5*(Q(Bt.end)-Q(Bt.start))).toString()+"px "+(cn*ve+.5*he).toString()+"px"}).attr("class","exclude-range")}function ye(ve,te,xe,De){let he=H5t(Q).tickSize(-De+te+w.gridLineStartPadding).tickFormat($U(p.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));const ee=/^([1-9]\d*)(minute|hour|day|week|month)$/.exec(p.db.getTickInterval()||w.tickInterval);if(ee!==null){const rt=ee[1];switch(ee[2]){case"minute":he.ticks(PU.every(rt));break;case"hour":he.ticks(BU.every(rt));break;case"day":he.ticks(yA.every(rt));break;case"week":he.ticks(kA.every(rt));break;case"month":he.ticks(FU.every(rt));break}}if(V.append("g").attr("class","grid").attr("transform","translate("+ve+", "+(De-50)+")").call(he).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),p.db.topAxisEnabled()||w.topAxis){let rt=$5t(Q).tickSize(-De+te+w.gridLineStartPadding).tickFormat($U(p.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));if(ee!==null){const me=ee[1];switch(ee[2]){case"minute":rt.ticks(PU.every(me));break;case"hour":rt.ticks(BU.every(me));break;case"day":rt.ticks(yA.every(me));break;case"week":rt.ticks(kA.every(me));break;case"month":rt.ticks(FU.every(me));break}}V.append("g").attr("class","grid").attr("transform","translate("+ve+", "+te+")").call(rt).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function ke(ve,te){let xe=0;const De=Object.keys(j).map(he=>[he,j[he]]);V.append("g").selectAll("text").data(De).enter().append(function(he){const Ie=he[0].split(Wa.lineBreakRegex),ee=-(Ie.length-1)/2,rt=S.createElementNS("http://www.w3.org/2000/svg","text");rt.setAttribute("dy",ee+"em");for(const[me,gt]of Ie.entries()){const pe=S.createElementNS("http://www.w3.org/2000/svg","tspan");pe.setAttribute("alignment-baseline","central"),pe.setAttribute("x","10"),me>0&&pe.setAttribute("dy","1em"),pe.textContent=gt,rt.appendChild(pe)}return rt}).attr("x",10).attr("y",function(he,Ie){if(Ie>0)for(let ee=0;ee` + .mermaid-main-font { + font-family: "trebuchet ms", verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + .exclude-range { + fill: ${i.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${i.sectionBkgColor}; + } + + .section2 { + fill: ${i.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${i.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${i.titleColor}; + } + + .sectionTitle1 { + fill: ${i.titleColor}; + } + + .sectionTitle2 { + fill: ${i.titleColor}; + } + + .sectionTitle3 { + fill: ${i.titleColor}; + } + + .sectionTitle { + text-anchor: start; + // font-size: ${i.ganttFontSize}; + // text-height: 14px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${i.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + text { + font-family: ${i.fontFamily}; + fill: ${i.textColor}; + } + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${i.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + + // .taskText:not([font-size]) { + // font-size: ${i.ganttFontSize}; + // } + + .taskTextOutsideRight { + fill: ${i.taskTextDarkColor}; + text-anchor: start; + // font-size: ${i.ganttFontSize}; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + + } + + .taskTextOutsideLeft { + fill: ${i.taskTextDarkColor}; + text-anchor: end; + // font-size: ${i.ganttFontSize}; + } + + /* Special case clickable */ + .task.clickable { + cursor: pointer; + } + .taskText.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${i.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${i.taskBkgColor}; + stroke: ${i.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${i.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${i.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${i.activeTaskBkgColor}; + stroke: ${i.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${i.doneTaskBorderColor}; + fill: ${i.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${i.critBorderColor}; + fill: ${i.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${i.taskTextDarkColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${i.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor} ; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } +`}},Symbol.toStringTag,{value:"Module"}));var W0e=function(){var i=function(y,b,E,S){for(E=E||{},S=y.length;S--;E[y[S]]=b);return E},a=[6,9,10],f={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(b,E,S,N,B,R,j){switch(R.length-1,B){case 1:return N;case 4:break;case 6:N.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},i(a,[2,3]),i(a,[2,4]),i(a,[2,5]),i(a,[2,6])],defaultActions:{4:[2,1]},parseError:function(b,E){if(E.recoverable)this.trace(b);else{var S=new Error(b);throw S.hash=E,S}},parse:function(b){var E=this,S=[0],N=[],B=[null],R=[],j=this.table,$="",V=0,Q=0,oe=2,ce=1,se=R.slice.call(arguments,1),ge=Object.create(this.lexer),ye={yy:{}};for(var ke in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ke)&&(ye.yy[ke]=this.yy[ke]);ge.setInput(b,ye.yy),ye.yy.lexer=ge,ye.yy.parser=this,typeof ge.yylloc>"u"&&(ge.yylloc={});var Ae=ge.yylloc;R.push(Ae);var de=ge.options&&ge.options.ranges;typeof ye.yy.parseError=="function"?this.parseError=ye.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ve(){var Et;return Et=N.pop()||ge.lex()||ce,typeof Et!="number"&&(Et instanceof Array&&(N=Et,Et=N.pop()),Et=E.symbols_[Et]||Et),Et}for(var te,xe,De,he,Ie={},ee,rt,me,gt;;){if(xe=S[S.length-1],this.defaultActions[xe]?De=this.defaultActions[xe]:((te===null||typeof te>"u")&&(te=ve()),De=j[xe]&&j[xe][te]),typeof De>"u"||!De.length||!De[0]){var pe="";gt=[];for(ee in j[xe])this.terminals_[ee]&&ee>oe&>.push("'"+this.terminals_[ee]+"'");ge.showPosition?pe="Parse error on line "+(V+1)+`: +`+ge.showPosition()+` +Expecting `+gt.join(", ")+", got '"+(this.terminals_[te]||te)+"'":pe="Parse error on line "+(V+1)+": Unexpected "+(te==ce?"end of input":"'"+(this.terminals_[te]||te)+"'"),this.parseError(pe,{text:ge.match,token:this.terminals_[te]||te,line:ge.yylineno,loc:Ae,expected:gt})}if(De[0]instanceof Array&&De.length>1)throw new Error("Parse Error: multiple actions possible at state: "+xe+", token: "+te);switch(De[0]){case 1:S.push(te),B.push(ge.yytext),R.push(ge.yylloc),S.push(De[1]),te=null,Q=ge.yyleng,$=ge.yytext,V=ge.yylineno,Ae=ge.yylloc;break;case 2:if(rt=this.productions_[De[1]][1],Ie.$=B[B.length-rt],Ie._$={first_line:R[R.length-(rt||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(rt||1)].first_column,last_column:R[R.length-1].last_column},de&&(Ie._$.range=[R[R.length-(rt||1)].range[0],R[R.length-1].range[1]]),he=this.performAction.apply(Ie,[$,Q,V,ye.yy,De[1],B,R].concat(se)),typeof he<"u")return he;rt&&(S=S.slice(0,-1*rt*2),B=B.slice(0,-1*rt),R=R.slice(0,-1*rt)),S.push(this.productions_[De[1]][0]),B.push(Ie.$),R.push(Ie._$),me=j[S[S.length-2]][S[S.length-1]],S.push(me);break;case 3:return!0}}return!0}},p=function(){var y={EOF:1,parseError:function(E,S){if(this.yy.parser)this.yy.parser.parseError(E,S);else throw new Error(E)},setInput:function(b,E){return this.yy=E||this.yy||{},this._input=b,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var b=this._input[0];this.yytext+=b,this.yyleng++,this.offset++,this.match+=b,this.matched+=b;var E=b.match(/(?:\r\n?|\n).*/g);return E?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),b},unput:function(b){var E=b.length,S=b.split(/(?:\r\n?|\n)/g);this._input=b+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-E),this.offset-=E;var N=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),S.length-1&&(this.yylineno-=S.length-1);var B=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:S?(S.length===N.length?this.yylloc.first_column:0)+N[N.length-S.length].length-S[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[B[0],B[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(b){this.unput(this.match.slice(b))},pastInput:function(){var b=this.matched.substr(0,this.matched.length-this.match.length);return(b.length>20?"...":"")+b.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var b=this.match;return b.length<20&&(b+=this._input.substr(0,20-b.length)),(b.substr(0,20)+(b.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var b=this.pastInput(),E=new Array(b.length+1).join("-");return b+this.upcomingInput()+` +`+E+"^"},test_match:function(b,E){var S,N,B;if(this.options.backtrack_lexer&&(B={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(B.yylloc.range=this.yylloc.range.slice(0))),N=b[0].match(/(?:\r\n?|\n).*/g),N&&(this.yylineno+=N.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:N?N[N.length-1].length-N[N.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],S=this.performAction.call(this,this.yy,this,E,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),S)return S;if(this._backtrack){for(var R in B)this[R]=B[R];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var b,E,S,N;this._more||(this.yytext="",this.match="");for(var B=this._currentRules(),R=0;RE[0].length)){if(E=S,N=R,this.options.backtrack_lexer){if(b=this.test_match(S,B[R]),b!==!1)return b;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(b=this.test_match(E,B[N]),b!==!1?b:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var E=this.next();return E||this.lex()},begin:function(E){this.conditionStack.push(E)},popState:function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},pushState:function(E){this.begin(E)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(E,S,N,B){switch(N){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};return y}();f.lexer=p;function w(){this.yy={}}return w.prototype=f,f.Parser=w,new w}();W0e.parser=W0e;const E$t=W0e;var ARe="",LRe=!1;const T$t=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:E$t,db:{setMessage:i=>{Fe.debug("Setting message to: "+i),ARe=i},getMessage:()=>ARe,setInfo:i=>{LRe=i},getInfo:()=>LRe,clear:rp},renderer:{draw:(i,a,f)=>{try{Fe.debug(`Rendering info diagram +`+i);const p=Tt().securityLevel;let w;p==="sandbox"&&(w=Cr("#i"+a));const b=Cr(p==="sandbox"?w.nodes()[0].contentDocument.body:"body").select("#"+a);b.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+f),b.attr("height",100),b.attr("width",400)}catch(p){Fe.error("Error while rendering info diagram"),Fe.error(p.message)}}},styles:()=>""}},Symbol.toStringTag,{value:"Module"}));var K0e=function(){var i=function(Ae,de,ve,te){for(ve=ve||{},te=Ae.length;te--;ve[Ae[te]]=de);return ve},a=[1,4],f=[1,5],p=[1,6],w=[1,7],y=[1,9],b=[1,11,13,15,17,19,20,26,27,28,29],E=[2,5],S=[1,6,11,13,15,17,19,20,26,27,28,29],N=[26,27,28],B=[2,8],R=[1,18],j=[1,19],$=[1,20],V=[1,21],Q=[1,22],oe=[1,23],ce=[1,28],se=[6,26,27,28,29],ge={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,openDirective:21,typeDirective:22,closeDirective:23,":":24,argDirective:25,NEWLINE:26,";":27,EOF:28,open_directive:29,type_directive:30,arg_directive:31,close_directive:32,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",8:"showData",11:"txt",12:"value",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",24:":",26:"NEWLINE",27:";",28:"EOF",29:"open_directive",30:"type_directive",31:"arg_directive",32:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[21,1],[22,1],[25,1],[23,1]],performAction:function(de,ve,te,xe,De,he,Ie){var ee=he.length-1;switch(De){case 4:xe.setShowData(!0);break;case 7:this.$=he[ee-1];break;case 9:xe.addSection(he[ee-1],xe.cleanupValue(he[ee]));break;case 10:this.$=he[ee].trim(),xe.setDiagramTitle(this.$);break;case 11:this.$=he[ee].trim(),xe.setAccTitle(this.$);break;case 12:case 13:this.$=he[ee].trim(),xe.setAccDescription(this.$);break;case 14:xe.addSection(he[ee].substr(8)),this.$=he[ee].substr(8);break;case 21:xe.parseDirective("%%{","open_directive");break;case 22:xe.parseDirective(he[ee],"type_directive");break;case 23:he[ee]=he[ee].trim().replace(/'/g,'"'),xe.parseDirective(he[ee],"arg_directive");break;case 24:xe.parseDirective("}%%","close_directive","pie");break}},table:[{3:1,4:2,5:3,6:a,21:8,26:f,27:p,28:w,29:y},{1:[3]},{3:10,4:2,5:3,6:a,21:8,26:f,27:p,28:w,29:y},{3:11,4:2,5:3,6:a,21:8,26:f,27:p,28:w,29:y},i(b,E,{7:12,8:[1,13]}),i(S,[2,18]),i(S,[2,19]),i(S,[2,20]),{22:14,30:[1,15]},{30:[2,21]},{1:[2,1]},{1:[2,2]},i(N,B,{21:8,9:16,10:17,5:24,1:[2,3],11:R,13:j,15:$,17:V,19:Q,20:oe,29:y}),i(b,E,{7:25}),{23:26,24:[1,27],32:ce},i([24,32],[2,22]),i(b,[2,6]),{4:29,26:f,27:p,28:w},{12:[1,30]},{14:[1,31]},{16:[1,32]},{18:[1,33]},i(N,[2,13]),i(N,[2,14]),i(N,[2,15]),i(N,B,{21:8,9:16,10:17,5:24,1:[2,4],11:R,13:j,15:$,17:V,19:Q,20:oe,29:y}),i(se,[2,16]),{25:34,31:[1,35]},i(se,[2,24]),i(b,[2,7]),i(N,[2,9]),i(N,[2,10]),i(N,[2,11]),i(N,[2,12]),{23:36,32:ce},{32:[2,23]},i(se,[2,17])],defaultActions:{9:[2,21],10:[2,1],11:[2,2],35:[2,23]},parseError:function(de,ve){if(ve.recoverable)this.trace(de);else{var te=new Error(de);throw te.hash=ve,te}},parse:function(de){var ve=this,te=[0],xe=[],De=[null],he=[],Ie=this.table,ee="",rt=0,me=0,gt=2,pe=1,Et=he.slice.call(arguments,1),wt=Object.create(this.lexer),jt={yy:{}};for(var At in this.yy)Object.prototype.hasOwnProperty.call(this.yy,At)&&(jt.yy[At]=this.yy[At]);wt.setInput(de,jt.yy),jt.yy.lexer=wt,jt.yy.parser=this,typeof wt.yylloc>"u"&&(wt.yylloc={});var Bt=wt.yylloc;he.push(Bt);var cn=wt.options&&wt.options.ranges;typeof jt.yy.parseError=="function"?this.parseError=jt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Nn(){var Bn;return Bn=xe.pop()||wt.lex()||pe,typeof Bn!="number"&&(Bn instanceof Array&&(xe=Bn,Bn=xe.pop()),Bn=ve.symbols_[Bn]||Bn),Bn}for(var Ot,oi,kt,Dt,vt={},Nt,ze,Xe,Lt;;){if(oi=te[te.length-1],this.defaultActions[oi]?kt=this.defaultActions[oi]:((Ot===null||typeof Ot>"u")&&(Ot=Nn()),kt=Ie[oi]&&Ie[oi][Ot]),typeof kt>"u"||!kt.length||!kt[0]){var Ge="";Lt=[];for(Nt in Ie[oi])this.terminals_[Nt]&&Nt>gt&&Lt.push("'"+this.terminals_[Nt]+"'");wt.showPosition?Ge="Parse error on line "+(rt+1)+`: +`+wt.showPosition()+` +Expecting `+Lt.join(", ")+", got '"+(this.terminals_[Ot]||Ot)+"'":Ge="Parse error on line "+(rt+1)+": Unexpected "+(Ot==pe?"end of input":"'"+(this.terminals_[Ot]||Ot)+"'"),this.parseError(Ge,{text:wt.match,token:this.terminals_[Ot]||Ot,line:wt.yylineno,loc:Bt,expected:Lt})}if(kt[0]instanceof Array&&kt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+oi+", token: "+Ot);switch(kt[0]){case 1:te.push(Ot),De.push(wt.yytext),he.push(wt.yylloc),te.push(kt[1]),Ot=null,me=wt.yyleng,ee=wt.yytext,rt=wt.yylineno,Bt=wt.yylloc;break;case 2:if(ze=this.productions_[kt[1]][1],vt.$=De[De.length-ze],vt._$={first_line:he[he.length-(ze||1)].first_line,last_line:he[he.length-1].last_line,first_column:he[he.length-(ze||1)].first_column,last_column:he[he.length-1].last_column},cn&&(vt._$.range=[he[he.length-(ze||1)].range[0],he[he.length-1].range[1]]),Dt=this.performAction.apply(vt,[ee,me,rt,jt.yy,kt[1],De,he].concat(Et)),typeof Dt<"u")return Dt;ze&&(te=te.slice(0,-1*ze*2),De=De.slice(0,-1*ze),he=he.slice(0,-1*ze)),te.push(this.productions_[kt[1]][0]),De.push(vt.$),he.push(vt._$),Xe=Ie[te[te.length-2]][te[te.length-1]],te.push(Xe);break;case 3:return!0}}return!0}},ye=function(){var Ae={EOF:1,parseError:function(ve,te){if(this.yy.parser)this.yy.parser.parseError(ve,te);else throw new Error(ve)},setInput:function(de,ve){return this.yy=ve||this.yy||{},this._input=de,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var de=this._input[0];this.yytext+=de,this.yyleng++,this.offset++,this.match+=de,this.matched+=de;var ve=de.match(/(?:\r\n?|\n).*/g);return ve?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),de},unput:function(de){var ve=de.length,te=de.split(/(?:\r\n?|\n)/g);this._input=de+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ve),this.offset-=ve;var xe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),te.length-1&&(this.yylineno-=te.length-1);var De=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:te?(te.length===xe.length?this.yylloc.first_column:0)+xe[xe.length-te.length].length-te[0].length:this.yylloc.first_column-ve},this.options.ranges&&(this.yylloc.range=[De[0],De[0]+this.yyleng-ve]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(de){this.unput(this.match.slice(de))},pastInput:function(){var de=this.matched.substr(0,this.matched.length-this.match.length);return(de.length>20?"...":"")+de.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var de=this.match;return de.length<20&&(de+=this._input.substr(0,20-de.length)),(de.substr(0,20)+(de.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var de=this.pastInput(),ve=new Array(de.length+1).join("-");return de+this.upcomingInput()+` +`+ve+"^"},test_match:function(de,ve){var te,xe,De;if(this.options.backtrack_lexer&&(De={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(De.yylloc.range=this.yylloc.range.slice(0))),xe=de[0].match(/(?:\r\n?|\n).*/g),xe&&(this.yylineno+=xe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:xe?xe[xe.length-1].length-xe[xe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+de[0].length},this.yytext+=de[0],this.match+=de[0],this.matches=de,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(de[0].length),this.matched+=de[0],te=this.performAction.call(this,this.yy,this,ve,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),te)return te;if(this._backtrack){for(var he in De)this[he]=De[he];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var de,ve,te,xe;this._more||(this.yytext="",this.match="");for(var De=this._currentRules(),he=0;heve[0].length)){if(ve=te,xe=he,this.options.backtrack_lexer){if(de=this.test_match(te,De[he]),de!==!1)return de;if(this._backtrack){ve=!1;continue}else return!1}else if(!this.options.flex)break}return ve?(de=this.test_match(ve,De[xe]),de!==!1?de:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ve=this.next();return ve||this.lex()},begin:function(ve){this.conditionStack.push(ve)},popState:function(){var ve=this.conditionStack.length-1;return ve>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ve){return ve=this.conditionStack.length-1-Math.abs(ve||0),ve>=0?this.conditionStack[ve]:"INITIAL"},pushState:function(ve){this.begin(ve)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(ve,te,xe,De){switch(xe){case 0:return this.begin("open_directive"),29;case 1:return this.begin("type_directive"),30;case 2:return this.popState(),this.begin("arg_directive"),24;case 3:return this.popState(),this.popState(),32;case 4:return 31;case 5:break;case 6:break;case 7:return 26;case 8:break;case 9:break;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:return this.begin("acc_title"),15;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),17;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:this.begin("string");break;case 20:this.popState();break;case 21:return"txt";case 22:return 6;case 23:return 8;case 24:return"value";case 25:return 28}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[20,21],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],inclusive:!0}}};return Ae}();ge.lexer=ye;function ke(){this.yy={}}return ke.prototype=ge,ge.Parser=ke,new ke}();K0e.parser=K0e;const _$t=K0e;let AK={},Y0e=!1;const C$t={parseDirective:function(i,a,f){rd.parseDirective(this,i,a,f)},getConfig:()=>Tt().pie,addSection:function(i,a){i=Wa.sanitizeText(i,Tt()),AK[i]===void 0&&(AK[i]=a,Fe.debug("Added new section :",i))},getSections:()=>AK,cleanupValue:function(i){return i.substring(0,1)===":"&&(i=i.substring(1).trim()),Number(i.trim())},clear:function(){AK={},Y0e=!1,rp()},setAccTitle:ip,getAccTitle:L2,setDiagramTitle:Uw,getDiagramTitle:Ww,setShowData:function(i){Y0e=i},getShowData:function(){return Y0e},getAccDescription:D2,setAccDescription:M2},S$t=i=>` + .pieCircle{ + stroke: ${i.pieStrokeColor}; + stroke-width : ${i.pieStrokeWidth}; + opacity : ${i.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${i.pieOuterStrokeColor}; + stroke-width: ${i.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${i.pieTitleTextSize}; + fill: ${i.pieTitleTextColor}; + font-family: ${i.fontFamily}; + } + .slice { + font-family: ${i.fontFamily}; + fill: ${i.pieSectionTextColor}; + font-size:${i.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${i.pieLegendTextColor}; + font-family: ${i.fontFamily}; + font-size: ${i.pieLegendTextSize}; + } +`;let d3=Tt(),A5;const CP=450,A$t=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:_$t,db:C$t,renderer:{draw:(i,a,f,p)=>{var ge;try{d3=Tt(),Fe.debug(`Rendering info diagram +`+i);const ye=Tt().securityLevel;let ke;ye==="sandbox"&&(ke=Cr("#i"+a));const Ae=Cr(ye==="sandbox"?ke.nodes()[0].contentDocument.body:"body"),de=ye==="sandbox"?ke.nodes()[0].contentDocument:document;p.db.clear(),p.parser.parse(i),Fe.debug("Parsed info diagram");const ve=de.getElementById(a);A5=ve.parentElement.offsetWidth,A5===void 0&&(A5=1200),d3.useWidth!==void 0&&(A5=d3.useWidth),d3.pie.useWidth!==void 0&&(A5=d3.pie.useWidth);const te=Ae.select("#"+a);Vw(te,CP,A5,d3.pie.useMaxWidth),ve.setAttribute("viewBox","0 0 "+A5+" "+CP);var w=40,y=18,b=4,E=Math.min(A5,CP)/2-w,S=te.append("g").attr("transform","translate("+A5/2+","+CP/2+")"),N=p.db.getSections(),B=0;Object.keys(N).forEach(function(Ie){B+=N[Ie]});const xe=d3.themeVariables;var R=[xe.pie1,xe.pie2,xe.pie3,xe.pie4,xe.pie5,xe.pie6,xe.pie7,xe.pie8,xe.pie9,xe.pie10,xe.pie11,xe.pie12];const De=((ge=d3.pie)==null?void 0:ge.textPosition)??.75;let[he]=$A(xe.pieOuterStrokeWidth);he??(he=2);var j=DMe().range(R),$=Object.entries(N).map(function(Ie,ee){return{order:ee,name:Ie[0],value:Ie[1]}}),V=fEt().value(function(Ie){return Ie.value}).sort(function(Ie,ee){return Ie.order-ee.order}),Q=V($),oe=CA().innerRadius(0).outerRadius(E),ce=CA().innerRadius(E*De).outerRadius(E*De);S.append("circle").attr("cx",0).attr("cy",0).attr("r",E+he/2).attr("class","pieOuterCircle"),S.selectAll("mySlices").data(Q).enter().append("path").attr("d",oe).attr("fill",function(Ie){return j(Ie.data.name)}).attr("class","pieCircle"),S.selectAll("mySlices").data(Q).enter().append("text").text(function(Ie){return(Ie.data.value/B*100).toFixed(0)+"%"}).attr("transform",function(Ie){return"translate("+ce.centroid(Ie)+")"}).style("text-anchor","middle").attr("class","slice"),S.append("text").text(p.db.getDiagramTitle()).attr("x",0).attr("y",-(CP-50)/2).attr("class","pieTitleText");var se=S.selectAll(".legend").data(j.domain()).enter().append("g").attr("class","legend").attr("transform",function(Ie,ee){const rt=y+b,me=rt*j.domain().length/2,gt=12*y,pe=ee*rt-me;return"translate("+gt+","+pe+")"});se.append("rect").attr("width",y).attr("height",y).style("fill",j).style("stroke",j),se.data(Q).append("text").attr("x",y+b).attr("y",y-b).text(function(Ie){return p.db.getShowData()||d3.showData||d3.pie.showData?Ie.data.name+" ["+Ie.data.value+"]":Ie.data.name})}catch(ye){Fe.error("Error while rendering info diagram"),Fe.error(ye)}}},styles:S$t}},Symbol.toStringTag,{value:"Module"}));var X0e=function(){var i=function(oi,kt,Dt,vt){for(Dt=Dt||{},vt=oi.length;vt--;Dt[oi[vt]]=kt);return Dt},a=[1,3],f=[1,5],p=[1,6],w=[1,7],y=[1,8],b=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],E=[1,22],S=[2,13],N=[1,26],B=[1,27],R=[1,28],j=[1,29],$=[1,30],V=[1,31],Q=[1,24],oe=[1,32],ce=[1,33],se=[1,36],ge=[71,72],ye=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],ke=[1,56],Ae=[1,57],de=[1,58],ve=[1,59],te=[1,60],xe=[1,61],De=[1,62],he=[62,63],Ie=[1,74],ee=[1,70],rt=[1,71],me=[1,72],gt=[1,73],pe=[1,75],Et=[1,79],wt=[1,80],jt=[1,77],At=[1,78],Bt=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72],cn={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,requirementDef:23,elementDef:24,relationshipDef:25,requirementType:26,requirementName:27,STRUCT_START:28,requirementBody:29,ID:30,COLONSEP:31,id:32,TEXT:33,text:34,RISK:35,riskLevel:36,VERIFYMTHD:37,verifyType:38,STRUCT_STOP:39,REQUIREMENT:40,FUNCTIONAL_REQUIREMENT:41,INTERFACE_REQUIREMENT:42,PERFORMANCE_REQUIREMENT:43,PHYSICAL_REQUIREMENT:44,DESIGN_CONSTRAINT:45,LOW_RISK:46,MED_RISK:47,HIGH_RISK:48,VERIFY_ANALYSIS:49,VERIFY_DEMONSTRATION:50,VERIFY_INSPECTION:51,VERIFY_TEST:52,ELEMENT:53,elementName:54,elementBody:55,TYPE:56,type:57,DOCREF:58,ref:59,END_ARROW_L:60,relationship:61,LINE:62,END_ARROW_R:63,CONTAINS:64,COPIES:65,DERIVES:66,SATISFIES:67,VERIFIES:68,REFINES:69,TRACES:70,unqString:71,qString:72,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",28:"STRUCT_START",30:"ID",31:"COLONSEP",33:"TEXT",35:"RISK",37:"VERIFYMTHD",39:"STRUCT_STOP",40:"REQUIREMENT",41:"FUNCTIONAL_REQUIREMENT",42:"INTERFACE_REQUIREMENT",43:"PERFORMANCE_REQUIREMENT",44:"PHYSICAL_REQUIREMENT",45:"DESIGN_CONSTRAINT",46:"LOW_RISK",47:"MED_RISK",48:"HIGH_RISK",49:"VERIFY_ANALYSIS",50:"VERIFY_DEMONSTRATION",51:"VERIFY_INSPECTION",52:"VERIFY_TEST",53:"ELEMENT",56:"TYPE",58:"DOCREF",60:"END_ARROW_L",62:"LINE",63:"END_ARROW_R",64:"CONTAINS",65:"COPIES",66:"DERIVES",67:"SATISFIES",68:"VERIFIES",69:"REFINES",70:"TRACES",71:"unqString",72:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],performAction:function(kt,Dt,vt,Nt,ze,Xe,Lt){var Ge=Xe.length-1;switch(ze){case 6:this.$=Xe[Ge].trim(),Nt.setAccTitle(this.$);break;case 7:case 8:this.$=Xe[Ge].trim(),Nt.setAccDescription(this.$);break;case 9:Nt.parseDirective("%%{","open_directive");break;case 10:Nt.parseDirective(Xe[Ge],"type_directive");break;case 11:Xe[Ge]=Xe[Ge].trim().replace(/'/g,'"'),Nt.parseDirective(Xe[Ge],"arg_directive");break;case 12:Nt.parseDirective("}%%","close_directive","pie");break;case 13:this.$=[];break;case 19:Nt.addRequirement(Xe[Ge-3],Xe[Ge-4]);break;case 20:Nt.setNewReqId(Xe[Ge-2]);break;case 21:Nt.setNewReqText(Xe[Ge-2]);break;case 22:Nt.setNewReqRisk(Xe[Ge-2]);break;case 23:Nt.setNewReqVerifyMethod(Xe[Ge-2]);break;case 26:this.$=Nt.RequirementType.REQUIREMENT;break;case 27:this.$=Nt.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 28:this.$=Nt.RequirementType.INTERFACE_REQUIREMENT;break;case 29:this.$=Nt.RequirementType.PERFORMANCE_REQUIREMENT;break;case 30:this.$=Nt.RequirementType.PHYSICAL_REQUIREMENT;break;case 31:this.$=Nt.RequirementType.DESIGN_CONSTRAINT;break;case 32:this.$=Nt.RiskLevel.LOW_RISK;break;case 33:this.$=Nt.RiskLevel.MED_RISK;break;case 34:this.$=Nt.RiskLevel.HIGH_RISK;break;case 35:this.$=Nt.VerifyType.VERIFY_ANALYSIS;break;case 36:this.$=Nt.VerifyType.VERIFY_DEMONSTRATION;break;case 37:this.$=Nt.VerifyType.VERIFY_INSPECTION;break;case 38:this.$=Nt.VerifyType.VERIFY_TEST;break;case 39:Nt.addElement(Xe[Ge-3]);break;case 40:Nt.setNewElementType(Xe[Ge-2]);break;case 41:Nt.setNewElementDocRef(Xe[Ge-2]);break;case 44:Nt.addRelationship(Xe[Ge-2],Xe[Ge],Xe[Ge-4]);break;case 45:Nt.addRelationship(Xe[Ge-2],Xe[Ge-4],Xe[Ge]);break;case 46:this.$=Nt.Relationships.CONTAINS;break;case 47:this.$=Nt.Relationships.COPIES;break;case 48:this.$=Nt.Relationships.DERIVES;break;case 49:this.$=Nt.Relationships.SATISFIES;break;case 50:this.$=Nt.Relationships.VERIFIES;break;case 51:this.$=Nt.Relationships.REFINES;break;case 52:this.$=Nt.Relationships.TRACES;break}},table:[{3:1,4:2,6:a,9:4,14:f,16:p,18:w,19:y},{1:[3]},{3:10,4:2,5:[1,9],6:a,9:4,14:f,16:p,18:w,19:y},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},i(b,[2,8]),{20:[2,9]},{3:16,4:2,6:a,9:4,14:f,16:p,18:w,19:y},{1:[2,2]},{4:21,5:E,7:17,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{11:34,12:[1,35],22:se},i([12,22],[2,10]),i(b,[2,6]),i(b,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:E,7:38,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{4:21,5:E,7:39,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{4:21,5:E,7:40,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{4:21,5:E,7:41,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{4:21,5:E,7:42,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},i(ge,[2,26]),i(ge,[2,27]),i(ge,[2,28]),i(ge,[2,29]),i(ge,[2,30]),i(ge,[2,31]),i(ye,[2,55]),i(ye,[2,56]),i(b,[2,4]),{13:51,21:[1,52]},i(b,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:ke,65:Ae,66:de,67:ve,68:te,69:xe,70:De},{61:63,64:ke,65:Ae,66:de,67:ve,68:te,69:xe,70:De},{11:64,22:se},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},i(he,[2,46]),i(he,[2,47]),i(he,[2,48]),i(he,[2,49]),i(he,[2,50]),i(he,[2,51]),i(he,[2,52]),{63:[1,68]},i(b,[2,5]),{5:Ie,29:69,30:ee,33:rt,35:me,37:gt,39:pe},{5:Et,39:wt,55:76,56:jt,58:At},{32:81,71:oe,72:ce},{32:82,71:oe,72:ce},i(Bt,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:Ie,29:87,30:ee,33:rt,35:me,37:gt,39:pe},i(Bt,[2,25]),i(Bt,[2,39]),{31:[1,88]},{31:[1,89]},{5:Et,39:wt,55:90,56:jt,58:At},i(Bt,[2,43]),i(Bt,[2,44]),i(Bt,[2,45]),{32:91,71:oe,72:ce},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},i(Bt,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},i(Bt,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:Ie,29:116,30:ee,33:rt,35:me,37:gt,39:pe},{5:Ie,29:117,30:ee,33:rt,35:me,37:gt,39:pe},{5:Ie,29:118,30:ee,33:rt,35:me,37:gt,39:pe},{5:Ie,29:119,30:ee,33:rt,35:me,37:gt,39:pe},{5:Et,39:wt,55:120,56:jt,58:At},{5:Et,39:wt,55:121,56:jt,58:At},i(Bt,[2,20]),i(Bt,[2,21]),i(Bt,[2,22]),i(Bt,[2,23]),i(Bt,[2,40]),i(Bt,[2,41])],defaultActions:{8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},parseError:function(kt,Dt){if(Dt.recoverable)this.trace(kt);else{var vt=new Error(kt);throw vt.hash=Dt,vt}},parse:function(kt){var Dt=this,vt=[0],Nt=[],ze=[null],Xe=[],Lt=this.table,Ge="",Bn=0,Oe=0,Ri=2,tn=1,hi=Xe.slice.call(arguments,1),Sr=Object.create(this.lexer),Zn={yy:{}};for(var Xn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Xn)&&(Zn.yy[Xn]=this.yy[Xn]);Sr.setInput(kt,Zn.yy),Zn.yy.lexer=Sr,Zn.yy.parser=this,typeof Sr.yylloc>"u"&&(Sr.yylloc={});var ir=Sr.yylloc;Xe.push(ir);var Hn=Sr.options&&Sr.options.ranges;typeof Zn.yy.parseError=="function"?this.parseError=Zn.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tr(){var br;return br=Nt.pop()||Sr.lex()||tn,typeof br!="number"&&(br instanceof Array&&(Nt=br,br=Nt.pop()),br=Dt.symbols_[br]||br),br}for(var ha,Zs,ns,Hi,Js={},Pc,Ga,ws,Oi;;){if(Zs=vt[vt.length-1],this.defaultActions[Zs]?ns=this.defaultActions[Zs]:((ha===null||typeof ha>"u")&&(ha=tr()),ns=Lt[Zs]&&Lt[Zs][ha]),typeof ns>"u"||!ns.length||!ns[0]){var Er="";Oi=[];for(Pc in Lt[Zs])this.terminals_[Pc]&&Pc>Ri&&Oi.push("'"+this.terminals_[Pc]+"'");Sr.showPosition?Er="Parse error on line "+(Bn+1)+`: +`+Sr.showPosition()+` +Expecting `+Oi.join(", ")+", got '"+(this.terminals_[ha]||ha)+"'":Er="Parse error on line "+(Bn+1)+": Unexpected "+(ha==tn?"end of input":"'"+(this.terminals_[ha]||ha)+"'"),this.parseError(Er,{text:Sr.match,token:this.terminals_[ha]||ha,line:Sr.yylineno,loc:ir,expected:Oi})}if(ns[0]instanceof Array&&ns.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Zs+", token: "+ha);switch(ns[0]){case 1:vt.push(ha),ze.push(Sr.yytext),Xe.push(Sr.yylloc),vt.push(ns[1]),ha=null,Oe=Sr.yyleng,Ge=Sr.yytext,Bn=Sr.yylineno,ir=Sr.yylloc;break;case 2:if(Ga=this.productions_[ns[1]][1],Js.$=ze[ze.length-Ga],Js._$={first_line:Xe[Xe.length-(Ga||1)].first_line,last_line:Xe[Xe.length-1].last_line,first_column:Xe[Xe.length-(Ga||1)].first_column,last_column:Xe[Xe.length-1].last_column},Hn&&(Js._$.range=[Xe[Xe.length-(Ga||1)].range[0],Xe[Xe.length-1].range[1]]),Hi=this.performAction.apply(Js,[Ge,Oe,Bn,Zn.yy,ns[1],ze,Xe].concat(hi)),typeof Hi<"u")return Hi;Ga&&(vt=vt.slice(0,-1*Ga*2),ze=ze.slice(0,-1*Ga),Xe=Xe.slice(0,-1*Ga)),vt.push(this.productions_[ns[1]][0]),ze.push(Js.$),Xe.push(Js._$),ws=Lt[vt[vt.length-2]][vt[vt.length-1]],vt.push(ws);break;case 3:return!0}}return!0}},Nn=function(){var oi={EOF:1,parseError:function(Dt,vt){if(this.yy.parser)this.yy.parser.parseError(Dt,vt);else throw new Error(Dt)},setInput:function(kt,Dt){return this.yy=Dt||this.yy||{},this._input=kt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var kt=this._input[0];this.yytext+=kt,this.yyleng++,this.offset++,this.match+=kt,this.matched+=kt;var Dt=kt.match(/(?:\r\n?|\n).*/g);return Dt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),kt},unput:function(kt){var Dt=kt.length,vt=kt.split(/(?:\r\n?|\n)/g);this._input=kt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Dt),this.offset-=Dt;var Nt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),vt.length-1&&(this.yylineno-=vt.length-1);var ze=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:vt?(vt.length===Nt.length?this.yylloc.first_column:0)+Nt[Nt.length-vt.length].length-vt[0].length:this.yylloc.first_column-Dt},this.options.ranges&&(this.yylloc.range=[ze[0],ze[0]+this.yyleng-Dt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(kt){this.unput(this.match.slice(kt))},pastInput:function(){var kt=this.matched.substr(0,this.matched.length-this.match.length);return(kt.length>20?"...":"")+kt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var kt=this.match;return kt.length<20&&(kt+=this._input.substr(0,20-kt.length)),(kt.substr(0,20)+(kt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var kt=this.pastInput(),Dt=new Array(kt.length+1).join("-");return kt+this.upcomingInput()+` +`+Dt+"^"},test_match:function(kt,Dt){var vt,Nt,ze;if(this.options.backtrack_lexer&&(ze={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ze.yylloc.range=this.yylloc.range.slice(0))),Nt=kt[0].match(/(?:\r\n?|\n).*/g),Nt&&(this.yylineno+=Nt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Nt?Nt[Nt.length-1].length-Nt[Nt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+kt[0].length},this.yytext+=kt[0],this.match+=kt[0],this.matches=kt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(kt[0].length),this.matched+=kt[0],vt=this.performAction.call(this,this.yy,this,Dt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),vt)return vt;if(this._backtrack){for(var Xe in ze)this[Xe]=ze[Xe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var kt,Dt,vt,Nt;this._more||(this.yytext="",this.match="");for(var ze=this._currentRules(),Xe=0;XeDt[0].length)){if(Dt=vt,Nt=Xe,this.options.backtrack_lexer){if(kt=this.test_match(vt,ze[Xe]),kt!==!1)return kt;if(this._backtrack){Dt=!1;continue}else return!1}else if(!this.options.flex)break}return Dt?(kt=this.test_match(Dt,ze[Nt]),kt!==!1?kt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Dt=this.next();return Dt||this.lex()},begin:function(Dt){this.conditionStack.push(Dt)},popState:function(){var Dt=this.conditionStack.length-1;return Dt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Dt){return Dt=this.conditionStack.length-1-Math.abs(Dt||0),Dt>=0?this.conditionStack[Dt]:"INITIAL"},pushState:function(Dt){this.begin(Dt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Dt,vt,Nt,ze){switch(Nt){case 0:return this.begin("open_directive"),19;case 1:return this.begin("type_directive"),20;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),22;case 4:return 21;case 5:return"title";case 6:return this.begin("acc_title"),14;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),16;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 5;case 14:break;case 15:break;case 16:break;case 17:return 8;case 18:return 6;case 19:return 28;case 20:return 39;case 21:return 31;case 22:return 30;case 23:return 33;case 24:return 35;case 25:return 37;case 26:return 40;case 27:return 41;case 28:return 42;case 29:return 43;case 30:return 44;case 31:return 45;case 32:return 46;case 33:return 47;case 34:return 48;case 35:return 49;case 36:return 50;case 37:return 51;case 38:return 52;case 39:return 53;case 40:return 64;case 41:return 65;case 42:return 66;case 43:return 67;case 44:return 68;case 45:return 69;case 46:return 70;case 47:return 56;case 48:return 58;case 49:return 60;case 50:return 63;case 51:return 62;case 52:this.begin("string");break;case 53:this.popState();break;case 54:return"qString";case 55:return vt.yytext=vt.yytext.trim(),71}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[53,54],inclusive:!1},INITIAL:{rules:[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],inclusive:!0}}};return oi}();cn.lexer=Nn;function Ot(){this.yy={}}return Ot.prototype=cn,cn.Parser=Ot,new Ot}();X0e.parser=X0e;const L$t=X0e;let Q0e=[],up={},SP={},ox={},AP={};const M$t={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},parseDirective:function(i,a,f){rd.parseDirective(this,i,a,f)},getConfig:()=>Tt().req,addRequirement:(i,a)=>(SP[i]===void 0&&(SP[i]={name:i,type:a,id:up.id,text:up.text,risk:up.risk,verifyMethod:up.verifyMethod}),up={},SP[i]),getRequirements:()=>SP,setNewReqId:i=>{up!==void 0&&(up.id=i)},setNewReqText:i=>{up!==void 0&&(up.text=i)},setNewReqRisk:i=>{up!==void 0&&(up.risk=i)},setNewReqVerifyMethod:i=>{up!==void 0&&(up.verifyMethod=i)},setAccTitle:ip,getAccTitle:L2,setAccDescription:M2,getAccDescription:D2,addElement:i=>(AP[i]===void 0&&(AP[i]={name:i,type:ox.type,docRef:ox.docRef},Fe.info("Added new requirement: ",i)),ox={},AP[i]),getElements:()=>AP,setNewElementType:i=>{ox!==void 0&&(ox.type=i)},setNewElementDocRef:i=>{ox!==void 0&&(ox.docRef=i)},addRelationship:(i,a,f)=>{Q0e.push({type:i,src:a,dst:f})},getRelationships:()=>Q0e,clear:()=>{Q0e=[],up={},SP={},ox={},AP={},rp()}},D$t=i=>` + + marker { + fill: ${i.relationColor}; + stroke: ${i.relationColor}; + } + + marker.cross { + stroke: ${i.lineColor}; + } + + svg { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + } + + .reqBox { + fill: ${i.requirementBackground}; + fill-opacity: 1.0; + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${i.requirementTextColor}; + } + .reqLabelBox { + fill: ${i.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + .relationshipLine { + stroke: ${i.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${i.relationLabelColor}; + } + +`,Z0e={CONTAINS:"contains",ARROW:"arrow"},MRe={ReqMarkers:Z0e,insertLineEndings:(i,a)=>{let f=i.append("defs").append("marker").attr("id",Z0e.CONTAINS+"_line_ending").attr("refX",0).attr("refY",a.line_height/2).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("g");f.append("circle").attr("cx",a.line_height/2).attr("cy",a.line_height/2).attr("r",a.line_height/2).attr("fill","none"),f.append("line").attr("x1",0).attr("x2",a.line_height).attr("y1",a.line_height/2).attr("y2",a.line_height/2).attr("stroke-width",1),f.append("line").attr("y1",0).attr("y2",a.line_height).attr("x1",a.line_height/2).attr("x2",a.line_height/2).attr("stroke-width",1),i.append("defs").append("marker").attr("id",Z0e.ARROW+"_line_ending").attr("refX",a.line_height).attr("refY",.5*a.line_height).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("path").attr("d",`M0,0 + L${a.line_height},${a.line_height/2} + M${a.line_height},${a.line_height/2} + L0,${a.line_height}`).attr("stroke-width",1)}};let Mh={},DRe=0;const IRe=(i,a)=>i.insert("rect","#"+a).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",Mh.rect_min_width+"px").attr("height",Mh.rect_min_height+"px"),ORe=(i,a,f)=>{let p=Mh.rect_min_width/2,w=i.append("text").attr("class","req reqLabel reqTitle").attr("id",a).attr("x",p).attr("y",Mh.rect_padding).attr("dominant-baseline","hanging"),y=0;f.forEach(N=>{y==0?w.append("tspan").attr("text-anchor","middle").attr("x",Mh.rect_min_width/2).attr("dy",0).text(N):w.append("tspan").attr("text-anchor","middle").attr("x",Mh.rect_min_width/2).attr("dy",Mh.line_height*.75).text(N),y++});let b=1.5*Mh.rect_padding,E=y*Mh.line_height*.75,S=b+E;return i.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",Mh.rect_min_width).attr("y1",S).attr("y2",S),{titleNode:w,y:S}},NRe=(i,a,f,p)=>{let w=i.append("text").attr("class","req reqLabel").attr("id",a).attr("x",Mh.rect_padding).attr("y",p).attr("dominant-baseline","hanging"),y=0;const b=30;let E=[];return f.forEach(S=>{let N=S.length;for(;N>b&&y<3;){let B=S.substring(0,b);S=S.substring(b,S.length),N=S.length,E[E.length]=B,y++}if(y==3){let B=E[E.length-1];E[E.length-1]=B.substring(0,B.length-4)+"..."}else E[E.length]=S;y=0}),E.forEach(S=>{w.append("tspan").attr("x",Mh.rect_padding).attr("dy",Mh.line_height).text(S)}),w},I$t=(i,a,f,p)=>{const w=a.node().getTotalLength(),y=a.node().getPointAtLength(w*.5),b="rel"+DRe;DRe++;const S=i.append("text").attr("class","req relationshipLabel").attr("id",b).attr("x",y.x).attr("y",y.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(p).node().getBBox();i.insert("rect","#"+b).attr("class","req reqLabelBox").attr("x",y.x-S.width/2).attr("y",y.y-S.height/2).attr("width",S.width).attr("height",S.height).attr("fill","white").attr("fill-opacity","85%")},O$t=function(i,a,f,p,w){const y=f.edge(oL(a.src),oL(a.dst)),b=WE().x(function(S){return S.x}).y(function(S){return S.y}),E=i.insert("path","#"+p).attr("class","er relationshipLine").attr("d",b(y.points)).attr("fill","none");a.type==w.db.Relationships.CONTAINS?E.attr("marker-start","url("+Wa.getUrl(Mh.arrowMarkerAbsolute)+"#"+a.type+"_line_ending)"):(E.attr("stroke-dasharray","10,7"),E.attr("marker-end","url("+Wa.getUrl(Mh.arrowMarkerAbsolute)+"#"+MRe.ReqMarkers.ARROW+"_line_ending)")),I$t(i,E,Mh,`<<${a.type}>>`)},N$t=(i,a,f)=>{Object.keys(i).forEach(p=>{let w=i[p];p=oL(p),Fe.info("Added new requirement: ",p);const y=f.append("g").attr("id",p),b="req-"+p,E=IRe(y,b);let S=ORe(y,p+"_title",[`<<${w.type}>>`,`${w.name}`]);NRe(y,p+"_body",[`Id: ${w.id}`,`Text: ${w.text}`,`Risk: ${w.risk}`,`Verification: ${w.verifyMethod}`],S.y);const N=E.node().getBBox();a.setNode(p,{width:N.width,height:N.height,shape:"rect",id:p})})},P$t=(i,a,f)=>{Object.keys(i).forEach(p=>{let w=i[p];const y=oL(p),b=f.append("g").attr("id",y),E="element-"+y,S=IRe(b,E);let N=ORe(b,E+"_title",["<>",`${p}`]);NRe(b,E+"_body",[`Type: ${w.type||"Not Specified"}`,`Doc Ref: ${w.docRef||"None"}`],N.y);const B=S.node().getBBox();a.setNode(y,{width:B.width,height:B.height,shape:"rect",id:y})})},B$t=(i,a)=>(i.forEach(function(f){let p=oL(f.src),w=oL(f.dst);a.setEdge(p,w,{relationship:f})}),i),R$t=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&(i.select("#"+f),i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )"))})},oL=i=>i.replace(/\s/g,"").replace(/\./g,"_"),F$t=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:L$t,db:M$t,renderer:{draw:(i,a,f,p)=>{Mh=Tt().requirement,p.db.clear(),p.parser.parse(i);const w=Mh.securityLevel;let y;w==="sandbox"&&(y=Cr("#i"+a));const E=Cr(w==="sandbox"?y.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);MRe.insertLineEndings(E,Mh);const S=new zf({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:Mh.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let N=p.db.getRequirements(),B=p.db.getElements(),R=p.db.getRelationships();N$t(N,S,E),P$t(B,S,E),B$t(R,S),tL(S),R$t(E,S),R.forEach(function(oe){O$t(E,oe,S,a,p)});const j=Mh.rect_padding,$=E.node().getBBox(),V=$.width+j*2,Q=$.height+j*2;Vw(E,Q,V,Mh.useMaxWidth),E.attr("viewBox",`${$.x-j} ${$.y-j} ${V} ${Q}`)}},styles:D$t}},Symbol.toStringTag,{value:"Module"}));var J0e=function(){var i=function(Dt,vt,Nt,ze){for(Nt=Nt||{},ze=Dt.length;ze--;Nt[Dt[ze]]=vt);return Nt},a=[1,2],f=[1,3],p=[1,5],w=[1,7],y=[2,5],b=[1,15],E=[1,17],S=[1,19],N=[1,21],B=[1,22],R=[1,23],j=[1,29],$=[1,30],V=[1,31],Q=[1,32],oe=[1,33],ce=[1,34],se=[1,35],ge=[1,36],ye=[1,37],ke=[1,38],Ae=[1,39],de=[1,40],ve=[1,42],te=[1,43],xe=[1,45],De=[1,46],he=[1,47],Ie=[1,48],ee=[1,49],rt=[1,50],me=[1,53],gt=[1,4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,52,53,54,56,57,62,63,64,65,73,83],pe=[4,5,21,54,56],Et=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,54,56,57,62,63,64,65,73,83],wt=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,53,54,56,57,62,63,64,65,73,83],jt=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,52,54,56,57,62,63,64,65,73,83],At=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,54,56,57,62,63,64,65,73,83],Bt=[71,72,73],cn=[1,125],Nn=[1,4,5,7,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,52,53,54,56,57,62,63,64,65,73,83],Ot={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,box_section:11,box_line:12,participant_statement:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,box:19,restOfLine:20,end:21,signal:22,autonumber:23,NUM:24,off:25,activate:26,actor:27,deactivate:28,note_statement:29,links_statement:30,link_statement:31,properties_statement:32,details_statement:33,title:34,legacy_title:35,acc_title:36,acc_title_value:37,acc_descr:38,acc_descr_value:39,acc_descr_multiline_value:40,loop:41,rect:42,opt:43,alt:44,else_sections:45,par:46,par_sections:47,critical:48,option_sections:49,break:50,option:51,and:52,else:53,participant:54,AS:55,participant_actor:56,note:57,placement:58,text2:59,over:60,actor_pair:61,links:62,link:63,properties:64,details:65,spaceList:66,",":67,left_of:68,right_of:69,signaltype:70,"+":71,"-":72,ACTOR:73,SOLID_OPEN_ARROW:74,DOTTED_OPEN_ARROW:75,SOLID_ARROW:76,DOTTED_ARROW:77,SOLID_CROSS:78,DOTTED_CROSS:79,SOLID_POINT:80,DOTTED_POINT:81,TXT:82,open_directive:83,type_directive:84,arg_directive:85,close_directive:86,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",17:":",19:"box",20:"restOfLine",21:"end",23:"autonumber",24:"NUM",25:"off",26:"activate",28:"deactivate",34:"title",35:"legacy_title",36:"acc_title",37:"acc_title_value",38:"acc_descr",39:"acc_descr_value",40:"acc_descr_multiline_value",41:"loop",42:"rect",43:"opt",44:"alt",46:"par",48:"critical",50:"break",51:"option",52:"and",53:"else",54:"participant",55:"AS",56:"participant_actor",57:"note",60:"over",62:"links",63:"link",64:"properties",65:"details",67:",",68:"left_of",69:"right_of",71:"+",72:"-",73:"ACTOR",74:"SOLID_OPEN_ARROW",75:"DOTTED_OPEN_ARROW",76:"SOLID_ARROW",77:"DOTTED_ARROW",78:"SOLID_CROSS",79:"DOTTED_CROSS",80:"SOLID_POINT",81:"DOTTED_POINT",82:"TXT",83:"open_directive",84:"type_directive",85:"arg_directive",86:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[11,0],[11,2],[12,2],[12,1],[12,1],[6,4],[6,6],[10,1],[10,4],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[49,1],[49,4],[47,1],[47,4],[45,1],[45,4],[13,5],[13,3],[13,5],[13,3],[29,4],[29,4],[30,3],[31,3],[32,3],[33,3],[66,2],[66,1],[61,3],[61,1],[58,1],[58,1],[22,5],[22,5],[22,4],[27,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[59,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(vt,Nt,ze,Xe,Lt,Ge,Bn){var Oe=Ge.length-1;switch(Lt){case 4:return Xe.apply(Ge[Oe]),Ge[Oe];case 5:case 10:this.$=[];break;case 6:case 11:Ge[Oe-1].push(Ge[Oe]),this.$=Ge[Oe-1];break;case 7:case 8:case 12:case 13:this.$=Ge[Oe];break;case 9:case 14:this.$=[];break;case 18:Ge[Oe-1].unshift({type:"boxStart",boxData:Xe.parseBoxData(Ge[Oe-2])}),Ge[Oe-1].push({type:"boxEnd",boxText:Ge[Oe-2]}),this.$=Ge[Oe-1];break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(Ge[Oe-2]),sequenceIndexStep:Number(Ge[Oe-1]),sequenceVisible:!0,signalType:Xe.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceIndex:Number(Ge[Oe-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Xe.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Xe.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Xe.LINETYPE.AUTONUMBER};break;case 24:this.$={type:"activeStart",signalType:Xe.LINETYPE.ACTIVE_START,actor:Ge[Oe-1]};break;case 25:this.$={type:"activeEnd",signalType:Xe.LINETYPE.ACTIVE_END,actor:Ge[Oe-1]};break;case 31:Xe.setDiagramTitle(Ge[Oe].substring(6)),this.$=Ge[Oe].substring(6);break;case 32:Xe.setDiagramTitle(Ge[Oe].substring(7)),this.$=Ge[Oe].substring(7);break;case 33:this.$=Ge[Oe].trim(),Xe.setAccTitle(this.$);break;case 34:case 35:this.$=Ge[Oe].trim(),Xe.setAccDescription(this.$);break;case 36:Ge[Oe-1].unshift({type:"loopStart",loopText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.LOOP_START}),Ge[Oe-1].push({type:"loopEnd",loopText:Ge[Oe-2],signalType:Xe.LINETYPE.LOOP_END}),this.$=Ge[Oe-1];break;case 37:Ge[Oe-1].unshift({type:"rectStart",color:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.RECT_START}),Ge[Oe-1].push({type:"rectEnd",color:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.RECT_END}),this.$=Ge[Oe-1];break;case 38:Ge[Oe-1].unshift({type:"optStart",optText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.OPT_START}),Ge[Oe-1].push({type:"optEnd",optText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.OPT_END}),this.$=Ge[Oe-1];break;case 39:Ge[Oe-1].unshift({type:"altStart",altText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.ALT_START}),Ge[Oe-1].push({type:"altEnd",signalType:Xe.LINETYPE.ALT_END}),this.$=Ge[Oe-1];break;case 40:Ge[Oe-1].unshift({type:"parStart",parText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.PAR_START}),Ge[Oe-1].push({type:"parEnd",signalType:Xe.LINETYPE.PAR_END}),this.$=Ge[Oe-1];break;case 41:Ge[Oe-1].unshift({type:"criticalStart",criticalText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.CRITICAL_START}),Ge[Oe-1].push({type:"criticalEnd",signalType:Xe.LINETYPE.CRITICAL_END}),this.$=Ge[Oe-1];break;case 42:Ge[Oe-1].unshift({type:"breakStart",breakText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.BREAK_START}),Ge[Oe-1].push({type:"breakEnd",optText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.BREAK_END}),this.$=Ge[Oe-1];break;case 45:this.$=Ge[Oe-3].concat([{type:"option",optionText:Xe.parseMessage(Ge[Oe-1]),signalType:Xe.LINETYPE.CRITICAL_OPTION},Ge[Oe]]);break;case 47:this.$=Ge[Oe-3].concat([{type:"and",parText:Xe.parseMessage(Ge[Oe-1]),signalType:Xe.LINETYPE.PAR_AND},Ge[Oe]]);break;case 49:this.$=Ge[Oe-3].concat([{type:"else",altText:Xe.parseMessage(Ge[Oe-1]),signalType:Xe.LINETYPE.ALT_ELSE},Ge[Oe]]);break;case 50:Ge[Oe-3].type="addParticipant",Ge[Oe-3].description=Xe.parseMessage(Ge[Oe-1]),this.$=Ge[Oe-3];break;case 51:Ge[Oe-1].type="addParticipant",this.$=Ge[Oe-1];break;case 52:Ge[Oe-3].type="addActor",Ge[Oe-3].description=Xe.parseMessage(Ge[Oe-1]),this.$=Ge[Oe-3];break;case 53:Ge[Oe-1].type="addActor",this.$=Ge[Oe-1];break;case 54:this.$=[Ge[Oe-1],{type:"addNote",placement:Ge[Oe-2],actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 55:Ge[Oe-2]=[].concat(Ge[Oe-1],Ge[Oe-1]).slice(0,2),Ge[Oe-2][0]=Ge[Oe-2][0].actor,Ge[Oe-2][1]=Ge[Oe-2][1].actor,this.$=[Ge[Oe-1],{type:"addNote",placement:Xe.PLACEMENT.OVER,actor:Ge[Oe-2].slice(0,2),text:Ge[Oe]}];break;case 56:this.$=[Ge[Oe-1],{type:"addLinks",actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 57:this.$=[Ge[Oe-1],{type:"addALink",actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 58:this.$=[Ge[Oe-1],{type:"addProperties",actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 59:this.$=[Ge[Oe-1],{type:"addDetails",actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 62:this.$=[Ge[Oe-2],Ge[Oe]];break;case 63:this.$=Ge[Oe];break;case 64:this.$=Xe.PLACEMENT.LEFTOF;break;case 65:this.$=Xe.PLACEMENT.RIGHTOF;break;case 66:this.$=[Ge[Oe-4],Ge[Oe-1],{type:"addMessage",from:Ge[Oe-4].actor,to:Ge[Oe-1].actor,signalType:Ge[Oe-3],msg:Ge[Oe]},{type:"activeStart",signalType:Xe.LINETYPE.ACTIVE_START,actor:Ge[Oe-1]}];break;case 67:this.$=[Ge[Oe-4],Ge[Oe-1],{type:"addMessage",from:Ge[Oe-4].actor,to:Ge[Oe-1].actor,signalType:Ge[Oe-3],msg:Ge[Oe]},{type:"activeEnd",signalType:Xe.LINETYPE.ACTIVE_END,actor:Ge[Oe-4]}];break;case 68:this.$=[Ge[Oe-3],Ge[Oe-1],{type:"addMessage",from:Ge[Oe-3].actor,to:Ge[Oe-1].actor,signalType:Ge[Oe-2],msg:Ge[Oe]}];break;case 69:this.$={type:"addParticipant",actor:Ge[Oe]};break;case 70:this.$=Xe.LINETYPE.SOLID_OPEN;break;case 71:this.$=Xe.LINETYPE.DOTTED_OPEN;break;case 72:this.$=Xe.LINETYPE.SOLID;break;case 73:this.$=Xe.LINETYPE.DOTTED;break;case 74:this.$=Xe.LINETYPE.SOLID_CROSS;break;case 75:this.$=Xe.LINETYPE.DOTTED_CROSS;break;case 76:this.$=Xe.LINETYPE.SOLID_POINT;break;case 77:this.$=Xe.LINETYPE.DOTTED_POINT;break;case 78:this.$=Xe.parseMessage(Ge[Oe].trim().substring(1));break;case 79:Xe.parseDirective("%%{","open_directive");break;case 80:Xe.parseDirective(Ge[Oe],"type_directive");break;case 81:Ge[Oe]=Ge[Oe].trim().replace(/'/g,'"'),Xe.parseDirective(Ge[Oe],"arg_directive");break;case 82:Xe.parseDirective("}%%","close_directive","sequence");break}},table:[{3:1,4:a,5:f,6:4,7:p,14:6,83:w},{1:[3]},{3:8,4:a,5:f,6:4,7:p,14:6,83:w},{3:9,4:a,5:f,6:4,7:p,14:6,83:w},{3:10,4:a,5:f,6:4,7:p,14:6,83:w},i([1,4,5,19,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,54,56,57,62,63,64,65,73,83],y,{8:11}),{15:12,84:[1,13]},{84:[2,79]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{16:51,17:[1,52],86:me},i([17,86],[2,80]),i(gt,[2,6]),{6:41,10:54,13:18,14:6,19:S,22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},i(gt,[2,8]),i(gt,[2,9]),i(gt,[2,17]),{20:[1,55]},{5:[1,56]},{5:[1,59],24:[1,57],25:[1,58]},{27:60,73:rt},{27:61,73:rt},{5:[1,62]},{5:[1,63]},{5:[1,64]},{5:[1,65]},{5:[1,66]},i(gt,[2,31]),i(gt,[2,32]),{37:[1,67]},{39:[1,68]},i(gt,[2,35]),{20:[1,69]},{20:[1,70]},{20:[1,71]},{20:[1,72]},{20:[1,73]},{20:[1,74]},{20:[1,75]},i(gt,[2,43]),{27:76,73:rt},{27:77,73:rt},{70:78,74:[1,79],75:[1,80],76:[1,81],77:[1,82],78:[1,83],79:[1,84],80:[1,85],81:[1,86]},{58:87,60:[1,88],68:[1,89],69:[1,90]},{27:91,73:rt},{27:92,73:rt},{27:93,73:rt},{27:94,73:rt},i([5,55,67,74,75,76,77,78,79,80,81,82],[2,69]),{5:[1,95]},{18:96,85:[1,97]},{5:[2,82]},i(gt,[2,7]),i(pe,[2,10],{11:98}),i(gt,[2,19]),{5:[1,100],24:[1,99]},{5:[1,101]},i(gt,[2,23]),{5:[1,102]},{5:[1,103]},i(gt,[2,26]),i(gt,[2,27]),i(gt,[2,28]),i(gt,[2,29]),i(gt,[2,30]),i(gt,[2,33]),i(gt,[2,34]),i(Et,y,{8:104}),i(Et,y,{8:105}),i(Et,y,{8:106}),i(wt,y,{45:107,8:108}),i(jt,y,{47:109,8:110}),i(At,y,{49:111,8:112}),i(Et,y,{8:113}),{5:[1,115],55:[1,114]},{5:[1,117],55:[1,116]},{27:120,71:[1,118],72:[1,119],73:rt},i(Bt,[2,70]),i(Bt,[2,71]),i(Bt,[2,72]),i(Bt,[2,73]),i(Bt,[2,74]),i(Bt,[2,75]),i(Bt,[2,76]),i(Bt,[2,77]),{27:121,73:rt},{27:123,61:122,73:rt},{73:[2,64]},{73:[2,65]},{59:124,82:cn},{59:126,82:cn},{59:127,82:cn},{59:128,82:cn},i(Nn,[2,15]),{16:129,86:me},{86:[2,81]},{4:[1,132],5:[1,134],12:131,13:133,21:[1,130],54:ve,56:te},{5:[1,135]},i(gt,[2,21]),i(gt,[2,22]),i(gt,[2,24]),i(gt,[2,25]),{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[1,136],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[1,137],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[1,138],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{21:[1,139]},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[2,48],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,53:[1,140],54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{21:[1,141]},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[2,46],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,52:[1,142],54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{21:[1,143]},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[2,44],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,51:[1,144],54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[1,145],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{20:[1,146]},i(gt,[2,51]),{20:[1,147]},i(gt,[2,53]),{27:148,73:rt},{27:149,73:rt},{59:150,82:cn},{59:151,82:cn},{59:152,82:cn},{67:[1,153],82:[2,63]},{5:[2,56]},{5:[2,78]},{5:[2,57]},{5:[2,58]},{5:[2,59]},{5:[1,154]},i(gt,[2,18]),i(pe,[2,11]),{13:155,54:ve,56:te},i(pe,[2,13]),i(pe,[2,14]),i(gt,[2,20]),i(gt,[2,36]),i(gt,[2,37]),i(gt,[2,38]),i(gt,[2,39]),{20:[1,156]},i(gt,[2,40]),{20:[1,157]},i(gt,[2,41]),{20:[1,158]},i(gt,[2,42]),{5:[1,159]},{5:[1,160]},{59:161,82:cn},{59:162,82:cn},{5:[2,68]},{5:[2,54]},{5:[2,55]},{27:163,73:rt},i(Nn,[2,16]),i(pe,[2,12]),i(wt,y,{8:108,45:164}),i(jt,y,{8:110,47:165}),i(At,y,{8:112,49:166}),i(gt,[2,50]),i(gt,[2,52]),{5:[2,66]},{5:[2,67]},{82:[2,62]},{21:[2,49]},{21:[2,47]},{21:[2,45]}],defaultActions:{7:[2,79],8:[2,1],9:[2,2],10:[2,3],53:[2,82],89:[2,64],90:[2,65],97:[2,81],124:[2,56],125:[2,78],126:[2,57],127:[2,58],128:[2,59],150:[2,68],151:[2,54],152:[2,55],161:[2,66],162:[2,67],163:[2,62],164:[2,49],165:[2,47],166:[2,45]},parseError:function(vt,Nt){if(Nt.recoverable)this.trace(vt);else{var ze=new Error(vt);throw ze.hash=Nt,ze}},parse:function(vt){var Nt=this,ze=[0],Xe=[],Lt=[null],Ge=[],Bn=this.table,Oe="",Ri=0,tn=0,hi=2,Sr=1,Zn=Ge.slice.call(arguments,1),Xn=Object.create(this.lexer),ir={yy:{}};for(var Hn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Hn)&&(ir.yy[Hn]=this.yy[Hn]);Xn.setInput(vt,ir.yy),ir.yy.lexer=Xn,ir.yy.parser=this,typeof Xn.yylloc>"u"&&(Xn.yylloc={});var tr=Xn.yylloc;Ge.push(tr);var ha=Xn.options&&Xn.options.ranges;typeof ir.yy.parseError=="function"?this.parseError=ir.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Zs(){var Vn;return Vn=Xe.pop()||Xn.lex()||Sr,typeof Vn!="number"&&(Vn instanceof Array&&(Xe=Vn,Vn=Xe.pop()),Vn=Nt.symbols_[Vn]||Vn),Vn}for(var ns,Hi,Js,Pc,Ga={},ws,Oi,Er,br;;){if(Hi=ze[ze.length-1],this.defaultActions[Hi]?Js=this.defaultActions[Hi]:((ns===null||typeof ns>"u")&&(ns=Zs()),Js=Bn[Hi]&&Bn[Hi][ns]),typeof Js>"u"||!Js.length||!Js[0]){var Dr="";br=[];for(ws in Bn[Hi])this.terminals_[ws]&&ws>hi&&br.push("'"+this.terminals_[ws]+"'");Xn.showPosition?Dr="Parse error on line "+(Ri+1)+`: +`+Xn.showPosition()+` +Expecting `+br.join(", ")+", got '"+(this.terminals_[ns]||ns)+"'":Dr="Parse error on line "+(Ri+1)+": Unexpected "+(ns==Sr?"end of input":"'"+(this.terminals_[ns]||ns)+"'"),this.parseError(Dr,{text:Xn.match,token:this.terminals_[ns]||ns,line:Xn.yylineno,loc:tr,expected:br})}if(Js[0]instanceof Array&&Js.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Hi+", token: "+ns);switch(Js[0]){case 1:ze.push(ns),Lt.push(Xn.yytext),Ge.push(Xn.yylloc),ze.push(Js[1]),ns=null,tn=Xn.yyleng,Oe=Xn.yytext,Ri=Xn.yylineno,tr=Xn.yylloc;break;case 2:if(Oi=this.productions_[Js[1]][1],Ga.$=Lt[Lt.length-Oi],Ga._$={first_line:Ge[Ge.length-(Oi||1)].first_line,last_line:Ge[Ge.length-1].last_line,first_column:Ge[Ge.length-(Oi||1)].first_column,last_column:Ge[Ge.length-1].last_column},ha&&(Ga._$.range=[Ge[Ge.length-(Oi||1)].range[0],Ge[Ge.length-1].range[1]]),Pc=this.performAction.apply(Ga,[Oe,tn,Ri,ir.yy,Js[1],Lt,Ge].concat(Zn)),typeof Pc<"u")return Pc;Oi&&(ze=ze.slice(0,-1*Oi*2),Lt=Lt.slice(0,-1*Oi),Ge=Ge.slice(0,-1*Oi)),ze.push(this.productions_[Js[1]][0]),Lt.push(Ga.$),Ge.push(Ga._$),Er=Bn[ze[ze.length-2]][ze[ze.length-1]],ze.push(Er);break;case 3:return!0}}return!0}},oi=function(){var Dt={EOF:1,parseError:function(Nt,ze){if(this.yy.parser)this.yy.parser.parseError(Nt,ze);else throw new Error(Nt)},setInput:function(vt,Nt){return this.yy=Nt||this.yy||{},this._input=vt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var vt=this._input[0];this.yytext+=vt,this.yyleng++,this.offset++,this.match+=vt,this.matched+=vt;var Nt=vt.match(/(?:\r\n?|\n).*/g);return Nt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),vt},unput:function(vt){var Nt=vt.length,ze=vt.split(/(?:\r\n?|\n)/g);this._input=vt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Nt),this.offset-=Nt;var Xe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ze.length-1&&(this.yylineno-=ze.length-1);var Lt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ze?(ze.length===Xe.length?this.yylloc.first_column:0)+Xe[Xe.length-ze.length].length-ze[0].length:this.yylloc.first_column-Nt},this.options.ranges&&(this.yylloc.range=[Lt[0],Lt[0]+this.yyleng-Nt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(vt){this.unput(this.match.slice(vt))},pastInput:function(){var vt=this.matched.substr(0,this.matched.length-this.match.length);return(vt.length>20?"...":"")+vt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var vt=this.match;return vt.length<20&&(vt+=this._input.substr(0,20-vt.length)),(vt.substr(0,20)+(vt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var vt=this.pastInput(),Nt=new Array(vt.length+1).join("-");return vt+this.upcomingInput()+` +`+Nt+"^"},test_match:function(vt,Nt){var ze,Xe,Lt;if(this.options.backtrack_lexer&&(Lt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Lt.yylloc.range=this.yylloc.range.slice(0))),Xe=vt[0].match(/(?:\r\n?|\n).*/g),Xe&&(this.yylineno+=Xe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Xe?Xe[Xe.length-1].length-Xe[Xe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+vt[0].length},this.yytext+=vt[0],this.match+=vt[0],this.matches=vt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(vt[0].length),this.matched+=vt[0],ze=this.performAction.call(this,this.yy,this,Nt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ze)return ze;if(this._backtrack){for(var Ge in Lt)this[Ge]=Lt[Ge];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var vt,Nt,ze,Xe;this._more||(this.yytext="",this.match="");for(var Lt=this._currentRules(),Ge=0;GeNt[0].length)){if(Nt=ze,Xe=Ge,this.options.backtrack_lexer){if(vt=this.test_match(ze,Lt[Ge]),vt!==!1)return vt;if(this._backtrack){Nt=!1;continue}else return!1}else if(!this.options.flex)break}return Nt?(vt=this.test_match(Nt,Lt[Xe]),vt!==!1?vt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Nt=this.next();return Nt||this.lex()},begin:function(Nt){this.conditionStack.push(Nt)},popState:function(){var Nt=this.conditionStack.length-1;return Nt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Nt){return Nt=this.conditionStack.length-1-Math.abs(Nt||0),Nt>=0?this.conditionStack[Nt]:"INITIAL"},pushState:function(Nt){this.begin(Nt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Nt,ze,Xe,Lt){switch(Xe){case 0:return this.begin("open_directive"),83;case 1:return this.begin("type_directive"),84;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),86;case 4:return 85;case 5:return 5;case 6:break;case 7:break;case 8:break;case 9:break;case 10:break;case 11:return 24;case 12:return this.begin("LINE"),19;case 13:return this.begin("ID"),54;case 14:return this.begin("ID"),56;case 15:return ze.yytext=ze.yytext.trim(),this.begin("ALIAS"),73;case 16:return this.popState(),this.popState(),this.begin("LINE"),55;case 17:return this.popState(),this.popState(),5;case 18:return this.begin("LINE"),41;case 19:return this.begin("LINE"),42;case 20:return this.begin("LINE"),43;case 21:return this.begin("LINE"),44;case 22:return this.begin("LINE"),53;case 23:return this.begin("LINE"),46;case 24:return this.begin("LINE"),52;case 25:return this.begin("LINE"),48;case 26:return this.begin("LINE"),51;case 27:return this.begin("LINE"),50;case 28:return this.popState(),20;case 29:return 21;case 30:return 68;case 31:return 69;case 32:return 62;case 33:return 63;case 34:return 64;case 35:return 65;case 36:return 60;case 37:return 57;case 38:return this.begin("ID"),26;case 39:return this.begin("ID"),28;case 40:return 34;case 41:return 35;case 42:return this.begin("acc_title"),36;case 43:return this.popState(),"acc_title_value";case 44:return this.begin("acc_descr"),38;case 45:return this.popState(),"acc_descr_value";case 46:this.begin("acc_descr_multiline");break;case 47:this.popState();break;case 48:return"acc_descr_multiline_value";case 49:return 7;case 50:return 23;case 51:return 25;case 52:return 67;case 53:return 5;case 54:return ze.yytext=ze.yytext.trim(),73;case 55:return 76;case 56:return 77;case 57:return 74;case 58:return 75;case 59:return 78;case 60:return 79;case 61:return 80;case 62:return 81;case 63:return 82;case 64:return 71;case 65:return 72;case 66:return 5;case 67:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[47,48],inclusive:!1},acc_descr:{rules:[45],inclusive:!1},acc_title:{rules:[43],inclusive:!1},open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,15],inclusive:!1},ALIAS:{rules:[7,8,16,17],inclusive:!1},LINE:{rules:[7,8,28],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,13,14,18,19,20,21,22,23,24,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44,46,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}};return Dt}();Ot.lexer=oi;function kt(){this.yy={}}return kt.prototype=Ot,Ot.Parser=kt,new kt}();J0e.parser=J0e;const j$t=J0e;let LP,cx={},cL=[],rm=[],LK=!1,ege,L5;const $$t=function(i,a,f){rd.parseDirective(this,i,a,f)},H$t=function(i){cL.push({name:i.text,wrap:i.wrap===void 0&&d9()||!!i.wrap,fill:i.color,actorKeys:[]}),L5=cL.slice(-1)[0]},tge=function(i,a,f,p){let w=L5;const y=cx[i];if(y){if(L5&&y.box&&L5!==y.box)throw new Error("A same participant should only be defined in one Box: "+y.name+" can't be in '"+y.box.name+"' and in '"+L5.name+"' at the same time.");if(w=y.box?y.box:L5,y.box=w,y&&a===y.name&&f==null)return}(f==null||f.text==null)&&(f={text:a,wrap:null,type:p}),(p==null||f.text==null)&&(f={text:a,wrap:null,type:p}),cx[i]={box:w,name:a,description:f.text,wrap:f.wrap===void 0&&d9()||!!f.wrap,prevActor:LP,links:{},properties:{},actorCnt:null,rectData:null,type:p||"participant"},LP&&cx[LP]&&(cx[LP].nextActor=i),L5&&L5.actorKeys.push(i),LP=i},z$t=i=>{let a,f=0;for(a=0;a>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},y}return rm.push({from:i,to:a,message:f.text,wrap:f.wrap===void 0&&d9()||!!f.wrap,type:p}),!0},q$t=function(){return cL.length>0},V$t=function(){return cL.some(i=>i.name)},U$t=function(){return rm},W$t=function(){return cL},K$t=function(){return cx},MP=function(i){return cx[i]},Y$t=function(){return Object.keys(cx)},X$t=function(){LK=!0},Q$t=function(){LK=!1},Z$t=()=>LK,J$t=function(i){ege=i},d9=()=>ege!==void 0?ege:Tt().sequence.wrap,eHt=function(){cx={},cL=[],rm=[],LK=!1,rp()},tHt=function(i){const a=i.trim(),f={text:a.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:a.match(/^:?wrap:/)!==null?!0:a.match(/^:?nowrap:/)!==null?!1:void 0};return Fe.debug("parseMessage:",f),f},nHt=function(i){const a=i.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let f=a!=null&&a[1]?a[1].trim():"transparent",p=a!=null&&a[2]?a[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",f)||(f="transparent",p=i.trim());else{const y=new Option().style;y.color=f,y.color!==f&&(f="transparent",p=i.trim())}return{color:f,text:p!==void 0?ep(p.replace(/^:?(?:no)?wrap:/,""),Tt()):void 0,wrap:p!==void 0?p.match(/^:?wrap:/)!==null?!0:p.match(/^:?nowrap:/)!==null?!1:void 0:void 0}},DP={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31},rHt={FILLED:0,OPEN:1},iHt={LEFTOF:0,RIGHTOF:1,OVER:2},PRe=function(i,a,f){f.text,f.wrap===void 0&&d9()||f.wrap;const p=[].concat(i,i);rm.push({from:p[0],to:p[1],message:f.text,wrap:f.wrap===void 0&&d9()||!!f.wrap,type:DP.NOTE,placement:a})},BRe=function(i,a){const f=MP(i);try{let p=ep(a.text,Tt());p=p.replace(/&/g,"&"),p=p.replace(/=/g,"=");const w=JSON.parse(p);nge(f,w)}catch(p){Fe.error("error while parsing actor link text",p)}},sHt=function(i,a){const f=MP(i);try{const b={};let E=ep(a.text,Tt());var p=E.indexOf("@");E=E.replace(/&/g,"&"),E=E.replace(/=/g,"=");var w=E.slice(0,p-1).trim(),y=E.slice(p+1).trim();b[w]=y,nge(f,b)}catch(b){Fe.error("error while parsing actor link text",b)}};function nge(i,a){if(i.links==null)i.links=a;else for(let f in a)i.links[f]=a[f]}const RRe=function(i,a){const f=MP(i);try{let p=ep(a.text,Tt());const w=JSON.parse(p);FRe(f,w)}catch(p){Fe.error("error while parsing actor properties text",p)}};function FRe(i,a){if(i.properties==null)i.properties=a;else for(let f in a)i.properties[f]=a[f]}function aHt(){L5=void 0}const jRe=function(i,a){const f=MP(i),p=document.getElementById(a.text);try{const w=p.innerHTML,y=JSON.parse(w);y.properties&&FRe(f,y.properties),y.links&&nge(f,y.links)}catch(w){Fe.error("error while parsing actor details text",w)}},oHt=function(i,a){if(i!==void 0&&i.properties!==void 0)return i.properties[a]},$Re=function(i){if(Array.isArray(i))i.forEach(function(a){$Re(a)});else switch(i.type){case"sequenceIndex":rm.push({from:void 0,to:void 0,message:{start:i.sequenceIndex,step:i.sequenceIndexStep,visible:i.sequenceVisible},wrap:!1,type:i.signalType});break;case"addParticipant":tge(i.actor,i.actor,i.description,"participant");break;case"addActor":tge(i.actor,i.actor,i.description,"actor");break;case"activeStart":lf(i.actor,void 0,void 0,i.signalType);break;case"activeEnd":lf(i.actor,void 0,void 0,i.signalType);break;case"addNote":PRe(i.actor,i.placement,i.text);break;case"addLinks":BRe(i.actor,i.text);break;case"addALink":sHt(i.actor,i.text);break;case"addProperties":RRe(i.actor,i.text);break;case"addDetails":jRe(i.actor,i.text);break;case"addMessage":lf(i.from,i.to,i.msg,i.signalType);break;case"boxStart":H$t(i.boxData);break;case"boxEnd":aHt();break;case"loopStart":lf(void 0,void 0,i.loopText,i.signalType);break;case"loopEnd":lf(void 0,void 0,void 0,i.signalType);break;case"rectStart":lf(void 0,void 0,i.color,i.signalType);break;case"rectEnd":lf(void 0,void 0,void 0,i.signalType);break;case"optStart":lf(void 0,void 0,i.optText,i.signalType);break;case"optEnd":lf(void 0,void 0,void 0,i.signalType);break;case"altStart":lf(void 0,void 0,i.altText,i.signalType);break;case"else":lf(void 0,void 0,i.altText,i.signalType);break;case"altEnd":lf(void 0,void 0,void 0,i.signalType);break;case"setAccTitle":ip(i.text);break;case"parStart":lf(void 0,void 0,i.parText,i.signalType);break;case"and":lf(void 0,void 0,i.parText,i.signalType);break;case"parEnd":lf(void 0,void 0,void 0,i.signalType);break;case"criticalStart":lf(void 0,void 0,i.criticalText,i.signalType);break;case"option":lf(void 0,void 0,i.optionText,i.signalType);break;case"criticalEnd":lf(void 0,void 0,void 0,i.signalType);break;case"breakStart":lf(void 0,void 0,i.breakText,i.signalType);break;case"breakEnd":lf(void 0,void 0,void 0,i.signalType);break}},cHt={addActor:tge,addMessage:G$t,addSignal:lf,addLinks:BRe,addDetails:jRe,addProperties:RRe,autoWrap:d9,setWrap:J$t,enableSequenceNumbers:X$t,disableSequenceNumbers:Q$t,showSequenceNumbers:Z$t,getMessages:U$t,getActors:K$t,getActor:MP,getActorKeys:Y$t,getActorProperty:oHt,getAccTitle:L2,getBoxes:W$t,getDiagramTitle:Ww,setDiagramTitle:Uw,parseDirective:$$t,getConfig:()=>Tt().sequence,clear:eHt,parseMessage:tHt,parseBoxData:nHt,LINETYPE:DP,ARROWTYPE:rHt,PLACEMENT:iHt,addNote:PRe,setAccTitle:ip,apply:$Re,setAccDescription:M2,getAccDescription:D2,hasAtLeastOneBox:q$t,hasAtLeastOneBoxWithTitle:V$t},uHt=i=>`.actor { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + + text.actor > tspan { + fill: ${i.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${i.actorLineColor}; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${i.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${i.signalColor}; + } + + #arrowhead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .sequenceNumber { + fill: ${i.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${i.signalColor}; + } + + #crosshead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .messageText { + fill: ${i.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${i.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${i.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${i.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation1 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation2 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${i.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + .actor-man circle, line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + stroke-width: 2px; + } +`,MK=function(i,a){const f=i.append("rect");return f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.class!==void 0&&f.attr("class",a.class),f},HRe=(i,a)=>{ISt(()=>{const f=document.querySelectorAll(i);f.length!==0&&(f[0].addEventListener("mouseover",function(){dHt("actor"+a+"_popup")}),f[0].addEventListener("mouseout",function(){gHt("actor"+a+"_popup")}))})},lHt=function(i,a,f,p,w){if(a.links===void 0||a.links===null||Object.keys(a.links).length===0)return{height:0,width:0};const y=a.links,b=a.actorCnt,E=a.rectData;var S="none";w&&(S="block !important");const N=i.append("g");N.attr("id","actor"+b+"_popup"),N.attr("class","actorPopupMenu"),N.attr("display",S),HRe("#actor"+b+"_popup",b);var B="";E.class!==void 0&&(B=" "+E.class);let R=E.width>f?E.width:f;const j=N.append("rect");if(j.attr("class","actorPopupMenuPanel"+B),j.attr("x",E.x),j.attr("y",E.height),j.attr("fill",E.fill),j.attr("stroke",E.stroke),j.attr("width",R),j.attr("height",E.height),j.attr("rx",E.rx),j.attr("ry",E.ry),y!=null){var $=20;for(let oe in y){var V=N.append("a"),Q=u5(y[oe]);V.attr("xlink:href",Q),V.attr("target","_blank"),LHt(p)(oe,V,E.x+10,E.height+$,R,20,{class:"actor"},p),$+=30}}return j.attr("height",$),{height:E.height+$,width:R}},zRe=function(i,a,f,p){const w=i.append("image");w.attr("x",a),w.attr("y",f);var y=u5(p);w.attr("xlink:href",y)},GRe=function(i,a,f,p){const w=i.append("use");w.attr("x",a),w.attr("y",f);var y=u5(p);w.attr("xlink:href","#"+y)},hHt=function(i){return"var pu = document.getElementById('"+i+"'); if (pu != null) { pu.style.display = 'block'; }"},fHt=function(i){return"var pu = document.getElementById('"+i+"'); if (pu != null) { pu.style.display = 'none'; }"},dHt=function(i){var a=document.getElementById(i);a!=null&&(a.style.display="block")},gHt=function(i){var a=document.getElementById(i);a!=null&&(a.style.display="none")},uL=function(i,a){let f=0,p=0;const w=a.text.split(Wa.lineBreakRegex),[y,b]=$A(a.fontSize);let E=[],S=0,N=()=>a.y;if(a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0)switch(a.valign){case"top":case"start":N=()=>Math.round(a.y+a.textMargin);break;case"middle":case"center":N=()=>Math.round(a.y+(f+p+a.textMargin)/2);break;case"bottom":case"end":N=()=>Math.round(a.y+(f+p+2*a.textMargin)-a.textMargin);break}if(a.anchor!==void 0&&a.textMargin!==void 0&&a.width!==void 0)switch(a.anchor){case"left":case"start":a.x=Math.round(a.x+a.textMargin),a.anchor="start",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"middle":case"center":a.x=Math.round(a.x+a.width/2),a.anchor="middle",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"right":case"end":a.x=Math.round(a.x+a.width-a.textMargin),a.anchor="end",a.dominantBaseline="middle",a.alignmentBaseline="middle";break}for(let[B,R]of w.entries()){a.textMargin!==void 0&&a.textMargin===0&&y!==void 0&&(S=B*y);const j=i.append("text");if(j.attr("x",a.x),j.attr("y",N()),a.anchor!==void 0&&j.attr("text-anchor",a.anchor).attr("dominant-baseline",a.dominantBaseline).attr("alignment-baseline",a.alignmentBaseline),a.fontFamily!==void 0&&j.style("font-family",a.fontFamily),b!==void 0&&j.style("font-size",b),a.fontWeight!==void 0&&j.style("font-weight",a.fontWeight),a.fill!==void 0&&j.attr("fill",a.fill),a.class!==void 0&&j.attr("class",a.class),a.dy!==void 0?j.attr("dy",a.dy):S!==0&&j.attr("dy",S),a.tspan){const $=j.append("tspan");$.attr("x",a.x),a.fill!==void 0&&$.attr("fill",a.fill),$.text(R)}else j.text(R);a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0&&(p+=(j._groups||j)[0][0].getBBox().height,f=p),E.push(j)}return E},qRe=function(i,a){function f(w,y,b,E,S){return w+","+y+" "+(w+b)+","+y+" "+(w+b)+","+(y+E-S)+" "+(w+b-S*1.2)+","+(y+E)+" "+w+","+(y+E)}const p=i.append("polygon");return p.attr("points",f(a.x,a.y,a.width,a.height,7)),p.attr("class","labelBox"),a.y=a.y+a.height/2,uL(i,a),p};let g3=-1;const VRe=(i,a)=>{i.selectAll&&i.selectAll(".actor-line").attr("class","200").attr("y2",a-55)},pHt=function(i,a,f,p){const w=a.x+a.width/2,y=a.y+5,b=i.append("g");var E=b;p||(g3++,E.append("line").attr("id","actor"+g3).attr("x1",w).attr("y1",y).attr("x2",w).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"),E=b.append("g"),a.actorCnt=g3,a.links!=null&&(E.attr("id","root-"+g3),HRe("#root-"+g3,g3)));const S=DK();var N="actor";a.properties!=null&&a.properties.class?N=a.properties.class:S.fill="#eaeaea",S.x=a.x,S.y=a.y,S.width=a.width,S.height=a.height,S.class=N,S.rx=3,S.ry=3;const B=MK(E,S);if(a.rectData=S,a.properties!=null&&a.properties.icon){const j=a.properties.icon.trim();j.charAt(0)==="@"?GRe(E,S.x+S.width-20,S.y+10,j.substr(1)):zRe(E,S.x+S.width-20,S.y+10,j)}ige(f)(a.description,E,S.x,S.y,S.width,S.height,{class:"actor"},f);let R=a.height;if(B.node){const j=B.node().getBBox();a.height=j.height,R=j.height}return R},bHt=function(i,a,f,p){const w=a.x+a.width/2,y=a.y+80;p||(g3++,i.append("line").attr("id","actor"+g3).attr("x1",w).attr("y1",y).attr("x2",w).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"));const b=i.append("g");b.attr("class","actor-man");const E=DK();E.x=a.x,E.y=a.y,E.fill="#eaeaea",E.width=a.width,E.height=a.height,E.class="actor",E.rx=3,E.ry=3,b.append("line").attr("id","actor-man-torso"+g3).attr("x1",w).attr("y1",a.y+25).attr("x2",w).attr("y2",a.y+45),b.append("line").attr("id","actor-man-arms"+g3).attr("x1",w-18).attr("y1",a.y+33).attr("x2",w+18).attr("y2",a.y+33),b.append("line").attr("x1",w-18).attr("y1",a.y+60).attr("x2",w).attr("y2",a.y+45),b.append("line").attr("x1",w).attr("y1",a.y+45).attr("x2",w+16).attr("y2",a.y+60);const S=b.append("circle");S.attr("cx",a.x+a.width/2),S.attr("cy",a.y+10),S.attr("r",15),S.attr("width",a.width),S.attr("height",a.height);const N=b.node().getBBox();return a.height=N.height,ige(f)(a.description,b,E.x,E.y+35,E.width,E.height,{class:"actor"},f),a.height},vHt=function(i,a,f,p){switch(a.type){case"actor":return bHt(i,a,f,p);case"participant":return pHt(i,a,f,p)}},wHt=function(i,a,f){const w=i.append("g");URe(w,a),a.name&&ige(f)(a.name,w,a.x,a.y+(a.textMaxHeight||0)/2,a.width,0,{class:"text"},f),w.lower()},mHt=function(i){return i.append("g")},yHt=function(i,a,f,p,w){const y=DK(),b=a.anchored;y.x=a.startx,y.y=a.starty,y.class="activation"+w%3,y.width=a.stopx-a.startx,y.height=f-a.starty,MK(b,y)},kHt=function(i,a,f,p){const{boxMargin:w,boxTextMargin:y,labelBoxHeight:b,labelBoxWidth:E,messageFontFamily:S,messageFontSize:N,messageFontWeight:B}=p,R=i.append("g"),j=function(Q,oe,ce,se){return R.append("line").attr("x1",Q).attr("y1",oe).attr("x2",ce).attr("y2",se).attr("class","loopLine")};j(a.startx,a.starty,a.stopx,a.starty),j(a.stopx,a.starty,a.stopx,a.stopy),j(a.startx,a.stopy,a.stopx,a.stopy),j(a.startx,a.starty,a.startx,a.stopy),a.sections!==void 0&&a.sections.forEach(function(Q){j(a.startx,Q.y,a.stopx,Q.y).style("stroke-dasharray","3, 3")});let $=rge();$.text=f,$.x=a.startx,$.y=a.starty,$.fontFamily=S,$.fontSize=N,$.fontWeight=B,$.anchor="middle",$.valign="middle",$.tspan=!1,$.width=E||50,$.height=b||20,$.textMargin=y,$.class="labelText",qRe(R,$),$=rge(),$.text=a.title,$.x=a.startx+E/2+(a.stopx-a.startx)/2,$.y=a.starty+w+y,$.anchor="middle",$.valign="middle",$.textMargin=y,$.class="loopText",$.fontFamily=S,$.fontSize=N,$.fontWeight=B,$.wrap=!0;let V=uL(R,$);return a.sectionTitles!==void 0&&a.sectionTitles.forEach(function(Q,oe){if(Q.message){$.text=Q.message,$.x=a.startx+(a.stopx-a.startx)/2,$.y=a.sections[oe].y+w+y,$.class="loopText",$.anchor="middle",$.valign="middle",$.tspan=!1,$.fontFamily=S,$.fontSize=N,$.fontWeight=B,$.wrap=a.wrap,V=uL(R,$);let ce=Math.round(V.map(se=>(se._groups||se)[0][0].getBBox().height).reduce((se,ge)=>se+ge));a.sections[oe].height+=ce-(w+y)}}),a.height=Math.round(a.stopy-a.starty),R},URe=function(i,a){MK(i,{x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,stroke:a.stroke,class:"rect"}).lower()},xHt=function(i){i.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},EHt=function(i){i.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},THt=function(i){i.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},_Ht=function(i){i.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},CHt=function(i){i.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},SHt=function(i){i.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},AHt=function(i){i.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},rge=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},DK=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},ige=function(){function i(w,y,b,E,S,N,B){const R=y.append("text").attr("x",b+S/2).attr("y",E+N/2+5).style("text-anchor","middle").text(w);p(R,B)}function a(w,y,b,E,S,N,B,R){const{actorFontSize:j,actorFontFamily:$,actorFontWeight:V}=R,[Q,oe]=$A(j),ce=w.split(Wa.lineBreakRegex);for(let se=0;sei.height||0))+(this.loops.length===0?0:this.loops.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.messages.length===0?0:this.messages.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.notes.length===0?0:this.notes.map(i=>i.height||0).reduce((i,a)=>i+a))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(i){this.boxes.push(i)},addActor:function(i){this.actors.push(i)},addLoop:function(i){this.loops.push(i)},addMessage:function(i){this.messages.push(i)},addNote:function(i){this.notes.push(i)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,KRe(Tt())},updateVal:function(i,a,f,p){i[a]===void 0?i[a]=f:i[a]=p(f,i[a])},updateBounds:function(i,a,f,p){const w=this;let y=0;function b(E){return function(N){y++;const B=w.sequenceItems.length-y+1;w.updateVal(N,"starty",a-B*ln.boxMargin,Math.min),w.updateVal(N,"stopy",p+B*ln.boxMargin,Math.max),w.updateVal(si.data,"startx",i-B*ln.boxMargin,Math.min),w.updateVal(si.data,"stopx",f+B*ln.boxMargin,Math.max),E!=="activation"&&(w.updateVal(N,"startx",i-B*ln.boxMargin,Math.min),w.updateVal(N,"stopx",f+B*ln.boxMargin,Math.max),w.updateVal(si.data,"starty",a-B*ln.boxMargin,Math.min),w.updateVal(si.data,"stopy",p+B*ln.boxMargin,Math.max))}}this.sequenceItems.forEach(b()),this.activations.forEach(b("activation"))},insert:function(i,a,f,p){const w=Math.min(i,f),y=Math.max(i,f),b=Math.min(a,p),E=Math.max(a,p);this.updateVal(si.data,"startx",w,Math.min),this.updateVal(si.data,"starty",b,Math.min),this.updateVal(si.data,"stopx",y,Math.max),this.updateVal(si.data,"stopy",E,Math.max),this.updateBounds(w,b,y,E)},newActivation:function(i,a,f){const p=f[i.from.actor],w=IK(i.from.actor).length||0,y=p.x+p.width/2+(w-1)*ln.activationWidth/2;this.activations.push({startx:y,starty:this.verticalPos+2,stopx:y+ln.activationWidth,stopy:void 0,actor:i.from.actor,anchored:ih.anchorElement(a)})},endActivation:function(i){const a=this.activations.map(function(f){return f.actor}).lastIndexOf(i.from.actor);return this.activations.splice(a,1)[0]},createLoop:function(i={message:void 0,wrap:!1,width:void 0},a){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:i.message,wrap:i.wrap,width:i.width,height:0,fill:a}},newLoop:function(i={message:void 0,wrap:!1,width:void 0},a){this.sequenceItems.push(this.createLoop(i,a))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(i){const a=this.sequenceItems.pop();a.sections=a.sections||[],a.sectionTitles=a.sectionTitles||[],a.sections.push({y:si.getVerticalPos(),height:0}),a.sectionTitles.push(i),this.sequenceItems.push(a)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},MHt=function(i,a){si.bumpVerticalPos(ln.boxMargin),a.height=ln.boxMargin,a.starty=si.getVerticalPos();const f=ih.getNoteRect();f.x=a.startx,f.y=a.starty,f.width=a.width||ln.width,f.class="note";const p=i.append("g"),w=ih.drawRect(p,f),y=ih.getTextObj();y.x=a.startx,y.y=a.starty,y.width=f.width,y.dy="1em",y.text=a.message,y.class="noteText",y.fontFamily=ln.noteFontFamily,y.fontSize=ln.noteFontSize,y.fontWeight=ln.noteFontWeight,y.anchor=ln.noteAlign,y.textMargin=ln.noteMargin,y.valign="center";const b=uL(p,y),E=Math.round(b.map(S=>(S._groups||S)[0][0].getBBox().height).reduce((S,N)=>S+N));w.attr("height",E+2*ln.noteMargin),a.height+=E+2*ln.noteMargin,si.bumpVerticalPos(E+2*ln.noteMargin),a.stopy=a.starty+E+2*ln.noteMargin,a.stopx=a.startx+f.width,si.insert(a.startx,a.starty,a.stopx,a.stopy),si.models.addNote(a)},g9=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight}),lL=i=>({fontFamily:i.noteFontFamily,fontSize:i.noteFontSize,fontWeight:i.noteFontWeight}),sge=i=>({fontFamily:i.actorFontFamily,fontSize:i.actorFontSize,fontWeight:i.actorFontWeight});function DHt(i,a){si.bumpVerticalPos(10);const{startx:f,stopx:p,message:w}=a,y=Wa.splitBreaks(w).length,b=co.calculateTextDimensions(w,g9(ln)),E=b.height/y;a.height+=E,si.bumpVerticalPos(E);let S,N=b.height-10;const B=b.width;if(f===p){S=si.getVerticalPos()+N,ln.rightAngles||(N+=ln.boxMargin,S=si.getVerticalPos()+N),N+=30;const R=Math.max(B/2,ln.width/2);si.insert(f-R,si.getVerticalPos()-10+N,p+R,si.getVerticalPos()+30+N)}else N+=ln.boxMargin,S=si.getVerticalPos()+N,si.insert(f,S-10,p,S);return si.bumpVerticalPos(N),a.height+=N,a.stopy=a.starty+a.height,si.insert(a.fromBounds,a.starty,a.toBounds,a.stopy),S}const IHt=function(i,a,f,p){const{startx:w,stopx:y,starty:b,message:E,type:S,sequenceIndex:N,sequenceVisible:B}=a,R=co.calculateTextDimensions(E,g9(ln)),j=ih.getTextObj();j.x=w,j.y=b+10,j.width=y-w,j.class="messageText",j.dy="1em",j.text=E,j.fontFamily=ln.messageFontFamily,j.fontSize=ln.messageFontSize,j.fontWeight=ln.messageFontWeight,j.anchor=ln.messageAlign,j.valign="center",j.textMargin=ln.wrapPadding,j.tspan=!1,uL(i,j);const $=R.width;let V;w===y?ln.rightAngles?V=i.append("path").attr("d",`M ${w},${f} H ${w+Math.max(ln.width/2,$/2)} V ${f+25} H ${w}`):V=i.append("path").attr("d","M "+w+","+f+" C "+(w+60)+","+(f-10)+" "+(w+60)+","+(f+30)+" "+w+","+(f+20)):(V=i.append("line"),V.attr("x1",w),V.attr("y1",f),V.attr("x2",y),V.attr("y2",f)),S===p.db.LINETYPE.DOTTED||S===p.db.LINETYPE.DOTTED_CROSS||S===p.db.LINETYPE.DOTTED_POINT||S===p.db.LINETYPE.DOTTED_OPEN?(V.style("stroke-dasharray","3, 3"),V.attr("class","messageLine1")):V.attr("class","messageLine0");let Q="";ln.arrowMarkerAbsolute&&(Q=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,Q=Q.replace(/\(/g,"\\("),Q=Q.replace(/\)/g,"\\)")),V.attr("stroke-width",2),V.attr("stroke","none"),V.style("fill","none"),(S===p.db.LINETYPE.SOLID||S===p.db.LINETYPE.DOTTED)&&V.attr("marker-end","url("+Q+"#arrowhead)"),(S===p.db.LINETYPE.SOLID_POINT||S===p.db.LINETYPE.DOTTED_POINT)&&V.attr("marker-end","url("+Q+"#filled-head)"),(S===p.db.LINETYPE.SOLID_CROSS||S===p.db.LINETYPE.DOTTED_CROSS)&&V.attr("marker-end","url("+Q+"#crosshead)"),(B||ln.showSequenceNumbers)&&(V.attr("marker-start","url("+Q+"#sequencenumber)"),i.append("text").attr("x",w).attr("y",f+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(N))},age=function(i,a,f,p,w,y,b){if(w.hideUnusedParticipants===!0){const R=new Set;y.forEach(j=>{R.add(j.from),R.add(j.to)}),f=f.filter(j=>R.has(j))}let E=0,S=0,N=0,B;for(const R of f){const j=a[R],$=j.box;B&&B!=$&&(b||si.models.addBox(B),S+=ln.boxMargin+B.margin),$&&$!=B&&(b||($.x=E+S,$.y=p),S+=$.margin),j.width=j.width||ln.width,j.height=Math.max(j.height||ln.height,ln.height),j.margin=j.margin||ln.actorMargin,j.x=E+S,j.y=si.getVerticalPos();const V=ih.drawActor(i,j,ln,b);N=Math.max(N,V),si.insert(j.x,p,j.x+j.width,j.height),E+=j.width+S,j.box&&(j.box.width=E+$.margin-j.box.x),S=j.margin,B=j.box,si.models.addActor(j)}B&&!b&&si.models.addBox(B),si.bumpVerticalPos(N)},WRe=function(i,a,f,p){let w=0,y=0;for(const b of f){const E=a[b],S=PHt(E),N=ih.drawPopup(i,E,S,ln,ln.forceMenus,p);N.height>w&&(w=N.height),N.width+E.x>y&&(y=N.width+E.x)}return{maxHeight:w,maxWidth:y}},KRe=function(i){nd(ln,i),i.fontFamily&&(ln.actorFontFamily=ln.noteFontFamily=ln.messageFontFamily=i.fontFamily),i.fontSize&&(ln.actorFontSize=ln.noteFontSize=ln.messageFontSize=i.fontSize),i.fontWeight&&(ln.actorFontWeight=ln.noteFontWeight=ln.messageFontWeight=i.fontWeight)},IK=function(i){return si.activations.filter(function(a){return a.actor===i})},YRe=function(i,a){const f=a[i],p=IK(i),w=p.reduce(function(b,E){return Math.min(b,E.startx)},f.x+f.width/2),y=p.reduce(function(b,E){return Math.max(b,E.stopx)},f.x+f.width/2);return[w,y]};function p3(i,a,f,p,w){si.bumpVerticalPos(f);let y=p;if(a.id&&a.message&&i[a.id]){const b=i[a.id].width,E=g9(ln);a.message=co.wrapLabel(`[${a.message}]`,b-2*ln.wrapPadding,E),a.width=b,a.wrap=!0;const S=co.calculateTextDimensions(a.message,E),N=Math.max(S.height,ln.labelBoxHeight);y=p+N,Fe.debug(`${N} - ${a.message}`)}w(a),si.bumpVerticalPos(y)}const OHt=function(i,a,f,p){const{securityLevel:w,sequence:y}=Tt();ln=y,p.db.clear(),p.parser.parse(i);let b;w==="sandbox"&&(b=Cr("#i"+a));const E=Cr(w==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=w==="sandbox"?b.nodes()[0].contentDocument:document;si.init(),Fe.debug(p.db);const N=w==="sandbox"?E.select(`[id="${a}"]`):Cr(`[id="${a}"]`),B=p.db.getActors(),R=p.db.getBoxes(),j=p.db.getActorKeys(),$=p.db.getMessages(),V=p.db.getDiagramTitle(),Q=p.db.hasAtLeastOneBox(),oe=p.db.hasAtLeastOneBoxWithTitle(),ce=NHt(B,$,p);ln.height=BHt(B,ce,R),ih.insertComputerIcon(N),ih.insertDatabaseIcon(N),ih.insertClockIcon(N),Q&&(si.bumpVerticalPos(ln.boxMargin),oe&&si.bumpVerticalPos(R[0].textMaxHeight)),age(N,B,j,0,ln,$,!1);const se=jHt($,B,ce,p);ih.insertArrowHead(N),ih.insertArrowCrossHead(N),ih.insertArrowFilledHead(N),ih.insertSequenceNumber(N);function ge(rt,me){const gt=si.endActivation(rt);gt.starty+18>me&&(gt.starty=me-6,me+=12),ih.drawActivation(N,gt,me,ln,IK(rt.from.actor).length),si.insert(gt.startx,me-10,gt.stopx,me)}let ye=1,ke=1;const Ae=[];$.forEach(function(rt){let me,gt,pe;switch(rt.type){case p.db.LINETYPE.NOTE:gt=rt.noteModel,MHt(N,gt);break;case p.db.LINETYPE.ACTIVE_START:si.newActivation(rt,N,B);break;case p.db.LINETYPE.ACTIVE_END:ge(rt,si.getVerticalPos());break;case p.db.LINETYPE.LOOP_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.LOOP_END:me=si.endLoop(),ih.drawLoop(N,me,"loop",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.RECT_START:p3(se,rt,ln.boxMargin,ln.boxMargin,Et=>si.newLoop(void 0,Et.message));break;case p.db.LINETYPE.RECT_END:me=si.endLoop(),ih.drawBackgroundRect(N,me),si.models.addLoop(me),si.bumpVerticalPos(me.stopy-si.getVerticalPos());break;case p.db.LINETYPE.OPT_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.OPT_END:me=si.endLoop(),ih.drawLoop(N,me,"opt",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.ALT_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.ALT_ELSE:p3(se,rt,ln.boxMargin+ln.boxTextMargin,ln.boxMargin,Et=>si.addSectionToLoop(Et));break;case p.db.LINETYPE.ALT_END:me=si.endLoop(),ih.drawLoop(N,me,"alt",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.PAR_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.PAR_AND:p3(se,rt,ln.boxMargin+ln.boxTextMargin,ln.boxMargin,Et=>si.addSectionToLoop(Et));break;case p.db.LINETYPE.PAR_END:me=si.endLoop(),ih.drawLoop(N,me,"par",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.AUTONUMBER:ye=rt.message.start||ye,ke=rt.message.step||ke,rt.message.visible?p.db.enableSequenceNumbers():p.db.disableSequenceNumbers();break;case p.db.LINETYPE.CRITICAL_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.CRITICAL_OPTION:p3(se,rt,ln.boxMargin+ln.boxTextMargin,ln.boxMargin,Et=>si.addSectionToLoop(Et));break;case p.db.LINETYPE.CRITICAL_END:me=si.endLoop(),ih.drawLoop(N,me,"critical",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.BREAK_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.BREAK_END:me=si.endLoop(),ih.drawLoop(N,me,"break",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;default:try{pe=rt.msgModel,pe.starty=si.getVerticalPos(),pe.sequenceIndex=ye,pe.sequenceVisible=p.db.showSequenceNumbers();const Et=DHt(N,pe);Ae.push({messageModel:pe,lineStartY:Et}),si.models.addMessage(pe)}catch(Et){Fe.error("error while drawing message",Et)}}[p.db.LINETYPE.SOLID_OPEN,p.db.LINETYPE.DOTTED_OPEN,p.db.LINETYPE.SOLID,p.db.LINETYPE.DOTTED,p.db.LINETYPE.SOLID_CROSS,p.db.LINETYPE.DOTTED_CROSS,p.db.LINETYPE.SOLID_POINT,p.db.LINETYPE.DOTTED_POINT].includes(rt.type)&&(ye=ye+ke)}),Ae.forEach(rt=>IHt(N,rt.messageModel,rt.lineStartY,p)),ln.mirrorActors&&(si.bumpVerticalPos(ln.boxMargin*2),age(N,B,j,si.getVerticalPos(),ln,$,!0),si.bumpVerticalPos(ln.boxMargin),VRe(N,si.getVerticalPos())),si.models.boxes.forEach(function(rt){rt.height=si.getVerticalPos()-rt.y,si.insert(rt.x,rt.y,rt.x+rt.width,rt.height),rt.startx=rt.x,rt.starty=rt.y,rt.stopx=rt.startx+rt.width,rt.stopy=rt.starty+rt.height,rt.stroke="rgb(0,0,0, 0.5)",ih.drawBox(N,rt,ln)}),Q&&si.bumpVerticalPos(ln.boxMargin);const de=WRe(N,B,j,S),{bounds:ve}=si.getBounds();Fe.debug("For line height fix Querying: #"+a+" .actor-line"),Jfe("#"+a+" .actor-line").attr("y2",ve.stopy);let xe=ve.stopy-ve.starty;xe{const b=i[y];b.wrap&&(b.description=co.wrapLabel(b.description,ln.width-2*ln.wrapPadding,sge(ln)));const E=co.calculateTextDimensions(b.description,sge(ln));b.width=b.wrap?ln.width:Math.max(ln.width,E.width+2*ln.wrapPadding),b.height=b.wrap?Math.max(E.height,ln.height):ln.height,p=Math.max(p,b.height)});for(const y in a){const b=i[y];if(!b)continue;const E=i[b.nextActor];if(!E){const R=a[y]+ln.actorMargin-b.width/2;b.margin=Math.max(R,ln.actorMargin);continue}const N=a[y]+ln.actorMargin-b.width/2-E.width/2;b.margin=Math.max(N,ln.actorMargin)}let w=0;return f.forEach(y=>{const b=g9(ln);let E=y.actorKeys.reduce((B,R)=>B+=i[R].width+(i[R].margin||0),0);E-=2*ln.boxTextMargin,y.wrap&&(y.name=co.wrapLabel(y.name,E-2*ln.wrapPadding,b));const S=co.calculateTextDimensions(y.name,b);w=Math.max(S.height,w);const N=Math.max(E,S.width+2*ln.wrapPadding);if(y.margin=ln.boxTextMargin,Ey.textMaxHeight=w),Math.max(p,ln.height)}const RHt=function(i,a,f){const p=a[i.from].x,w=a[i.to].x,y=i.wrap&&i.message;let b=co.calculateTextDimensions(y?co.wrapLabel(i.message,ln.width,lL(ln)):i.message,lL(ln));const E={width:y?ln.width:Math.max(ln.width,b.width+2*ln.noteMargin),height:0,startx:a[i.from].x,stopx:0,starty:0,stopy:0,message:i.message};return i.placement===f.db.PLACEMENT.RIGHTOF?(E.width=y?Math.max(ln.width,b.width):Math.max(a[i.from].width/2+a[i.to].width/2,b.width+2*ln.noteMargin),E.startx=p+(a[i.from].width+ln.actorMargin)/2):i.placement===f.db.PLACEMENT.LEFTOF?(E.width=Math.max(y?ln.width:a[i.from].width/2+a[i.to].width/2,b.width+2*ln.noteMargin),E.startx=p-E.width+(a[i.from].width-ln.actorMargin)/2):i.to===i.from?(b=co.calculateTextDimensions(y?co.wrapLabel(i.message,Math.max(ln.width,a[i.from].width),lL(ln)):i.message,lL(ln)),E.width=y?Math.max(ln.width,a[i.from].width):Math.max(a[i.from].width,ln.width,b.width+2*ln.noteMargin),E.startx=p+(a[i.from].width-E.width)/2):(E.width=Math.abs(p+a[i.from].width/2-(w+a[i.to].width/2))+ln.actorMargin,E.startx=pj.actor).lastIndexOf(N.from.actor);delete si.activations.splice(R,1)[0]}break}N.placement!==void 0?(E=RHt(N,a,p),N.noteModel=E,y.forEach(R=>{b=R,b.from=Math.min(b.from,E.startx),b.to=Math.max(b.to,E.startx+E.width),b.width=Math.max(b.width,Math.abs(b.from-b.to))-ln.labelBoxWidth})):(S=FHt(N,a,p),N.msgModel=S,S.startx&&S.stopx&&y.length>0&&y.forEach(R=>{if(b=R,S.startx===S.stopx){const j=a[N.from],$=a[N.to];b.from=Math.min(j.x-S.width/2,j.x-j.width/2,b.from),b.to=Math.max($.x+S.width/2,$.x+j.width/2,b.to),b.width=Math.max(b.width,Math.abs(b.to-b.from))-ln.labelBoxWidth}else b.from=Math.min(S.startx,b.from),b.to=Math.max(S.stopx,b.to),b.width=Math.max(b.width,S.width)-ln.labelBoxWidth}))}),si.activations=[],Fe.debug("Loop type widths:",w),w},$Ht=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:j$t,db:cHt,renderer:{bounds:si,drawActors:age,drawActorsPopup:WRe,setConf:KRe,draw:OHt},styles:uHt}},Symbol.toStringTag,{value:"Module"}));var oge=function(){var i=function(Nt,ze,Xe,Lt){for(Xe=Xe||{},Lt=Nt.length;Lt--;Xe[Nt[Lt]]=ze);return Xe},a=[1,32],f=[1,33],p=[1,34],w=[1,35],y=[1,9],b=[1,8],E=[1,18],S=[1,19],N=[1,20],B=[1,38],R=[1,25],j=[1,23],$=[1,24],V=[1,30],Q=[1,31],oe=[1,26],ce=[1,27],se=[1,28],ge=[1,29],ye=[1,42],ke=[1,39],Ae=[1,40],de=[1,41],ve=[1,43],te=[1,16,24],xe=[1,57],De=[1,58],he=[1,59],Ie=[1,60],ee=[1,61],rt=[1,62],me=[1,63],gt=[1,73],pe=[1,16,24,27,28,35,48,49,63,64,65,66,67,68,69,74,76],Et=[1,16,24,27,28,33,35,48,49,54,63,64,65,66,67,68,69,74,76,89,91,92,93,94],wt=[1,80],jt=[28,89,91,92,93,94],At=[28,68,69,89,91,92,93,94],Bt=[28,63,64,65,66,67,89,91,92,93,94],cn=[1,90],Nn=[1,16,24,48,49],Ot=[1,16,24,35],oi=[8,9,10,11,19,23,42,44,46,52,53,55,56,58,60,70,71,73,77,89,91,92,93,94],kt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,statements:6,direction:7,direction_tb:8,direction_bt:9,direction_rl:10,direction_lr:11,graphConfig:12,openDirective:13,typeDirective:14,closeDirective:15,NEWLINE:16,":":17,argDirective:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,CLASS_DIAGRAM:23,EOF:24,statement:25,classLabel:26,SQS:27,STR:28,SQE:29,className:30,alphaNumToken:31,classLiteralName:32,GENERICTYPE:33,relationStatement:34,LABEL:35,classStatement:36,methodStatement:37,annotationStatement:38,clickStatement:39,cssClassStatement:40,noteStatement:41,acc_title:42,acc_title_value:43,acc_descr:44,acc_descr_value:45,acc_descr_multiline_value:46,classIdentifier:47,STYLE_SEPARATOR:48,STRUCT_START:49,members:50,STRUCT_STOP:51,CLASS:52,ANNOTATION_START:53,ANNOTATION_END:54,MEMBER:55,SEPARATOR:56,relation:57,NOTE_FOR:58,noteText:59,NOTE:60,relationType:61,lineType:62,AGGREGATION:63,EXTENSION:64,COMPOSITION:65,DEPENDENCY:66,LOLLIPOP:67,LINE:68,DOTTED_LINE:69,CALLBACK:70,LINK:71,LINK_TARGET:72,CLICK:73,CALLBACK_NAME:74,CALLBACK_ARGS:75,HREF:76,CSSCLASS:77,commentToken:78,textToken:79,graphCodeTokens:80,textNoTagsToken:81,TAGSTART:82,TAGEND:83,"==":84,"--":85,PCT:86,DEFAULT:87,SPACE:88,MINUS:89,keywords:90,UNICODE_TEXT:91,NUM:92,ALPHA:93,BQUOTE_STR:94,$accept:0,$end:1},terminals_:{2:"error",8:"direction_tb",9:"direction_bt",10:"direction_rl",11:"direction_lr",16:"NEWLINE",17:":",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",23:"CLASS_DIAGRAM",24:"EOF",27:"SQS",28:"STR",29:"SQE",33:"GENERICTYPE",35:"LABEL",42:"acc_title",43:"acc_title_value",44:"acc_descr",45:"acc_descr_value",46:"acc_descr_multiline_value",48:"STYLE_SEPARATOR",49:"STRUCT_START",51:"STRUCT_STOP",52:"CLASS",53:"ANNOTATION_START",54:"ANNOTATION_END",55:"MEMBER",56:"SEPARATOR",58:"NOTE_FOR",60:"NOTE",63:"AGGREGATION",64:"EXTENSION",65:"COMPOSITION",66:"DEPENDENCY",67:"LOLLIPOP",68:"LINE",69:"DOTTED_LINE",70:"CALLBACK",71:"LINK",72:"LINK_TARGET",73:"CLICK",74:"CALLBACK_NAME",75:"CALLBACK_ARGS",76:"HREF",77:"CSSCLASS",80:"graphCodeTokens",82:"TAGSTART",83:"TAGEND",84:"==",85:"--",86:"PCT",87:"DEFAULT",88:"SPACE",89:"MINUS",90:"keywords",91:"UNICODE_TEXT",92:"NUM",93:"ALPHA",94:"BQUOTE_STR"},productions_:[0,[3,1],[3,2],[3,1],[7,1],[7,1],[7,1],[7,1],[4,1],[5,4],[5,6],[13,1],[14,1],[18,1],[15,1],[12,4],[6,1],[6,2],[6,3],[26,3],[30,1],[30,1],[30,2],[30,2],[30,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,2],[25,2],[25,1],[36,1],[36,3],[36,4],[36,6],[47,2],[47,3],[38,4],[50,1],[50,2],[37,1],[37,2],[37,1],[37,1],[34,3],[34,4],[34,4],[34,5],[41,3],[41,2],[57,3],[57,2],[57,2],[57,1],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[39,3],[39,4],[39,3],[39,4],[39,4],[39,5],[39,3],[39,4],[39,4],[39,5],[39,3],[39,4],[39,4],[39,5],[40,3],[78,1],[78,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[81,1],[81,1],[81,1],[81,1],[31,1],[31,1],[31,1],[31,1],[32,1],[59,1]],performAction:function(ze,Xe,Lt,Ge,Bn,Oe,Ri){var tn=Oe.length-1;switch(Bn){case 4:Ge.setDirection("TB");break;case 5:Ge.setDirection("BT");break;case 6:Ge.setDirection("RL");break;case 7:Ge.setDirection("LR");break;case 11:Ge.parseDirective("%%{","open_directive");break;case 12:Ge.parseDirective(Oe[tn],"type_directive");break;case 13:Oe[tn]=Oe[tn].trim().replace(/'/g,'"'),Ge.parseDirective(Oe[tn],"arg_directive");break;case 14:Ge.parseDirective("}%%","close_directive","class");break;case 19:this.$=Oe[tn-1];break;case 20:case 21:this.$=Oe[tn];break;case 22:this.$=Oe[tn-1]+Oe[tn];break;case 23:case 24:this.$=Oe[tn-1]+"~"+Oe[tn]+"~";break;case 25:Ge.addRelation(Oe[tn]);break;case 26:Oe[tn-1].title=Ge.cleanupLabel(Oe[tn]),Ge.addRelation(Oe[tn-1]);break;case 34:this.$=Oe[tn].trim(),Ge.setAccTitle(this.$);break;case 35:case 36:this.$=Oe[tn].trim(),Ge.setAccDescription(this.$);break;case 38:Ge.setCssClass(Oe[tn-2],Oe[tn]);break;case 39:Ge.addMembers(Oe[tn-3],Oe[tn-1]);break;case 40:Ge.setCssClass(Oe[tn-5],Oe[tn-3]),Ge.addMembers(Oe[tn-5],Oe[tn-1]);break;case 41:this.$=Oe[tn],Ge.addClass(Oe[tn]);break;case 42:this.$=Oe[tn-1],Ge.addClass(Oe[tn-1]),Ge.setClassLabel(Oe[tn-1],Oe[tn]);break;case 43:Ge.addAnnotation(Oe[tn],Oe[tn-2]);break;case 44:this.$=[Oe[tn]];break;case 45:Oe[tn].push(Oe[tn-1]),this.$=Oe[tn];break;case 46:break;case 47:Ge.addMember(Oe[tn-1],Ge.cleanupLabel(Oe[tn]));break;case 48:break;case 49:break;case 50:this.$={id1:Oe[tn-2],id2:Oe[tn],relation:Oe[tn-1],relationTitle1:"none",relationTitle2:"none"};break;case 51:this.$={id1:Oe[tn-3],id2:Oe[tn],relation:Oe[tn-1],relationTitle1:Oe[tn-2],relationTitle2:"none"};break;case 52:this.$={id1:Oe[tn-3],id2:Oe[tn],relation:Oe[tn-2],relationTitle1:"none",relationTitle2:Oe[tn-1]};break;case 53:this.$={id1:Oe[tn-4],id2:Oe[tn],relation:Oe[tn-2],relationTitle1:Oe[tn-3],relationTitle2:Oe[tn-1]};break;case 54:Ge.addNote(Oe[tn],Oe[tn-1]);break;case 55:Ge.addNote(Oe[tn]);break;case 56:this.$={type1:Oe[tn-2],type2:Oe[tn],lineType:Oe[tn-1]};break;case 57:this.$={type1:"none",type2:Oe[tn],lineType:Oe[tn-1]};break;case 58:this.$={type1:Oe[tn-1],type2:"none",lineType:Oe[tn]};break;case 59:this.$={type1:"none",type2:"none",lineType:Oe[tn]};break;case 60:this.$=Ge.relationType.AGGREGATION;break;case 61:this.$=Ge.relationType.EXTENSION;break;case 62:this.$=Ge.relationType.COMPOSITION;break;case 63:this.$=Ge.relationType.DEPENDENCY;break;case 64:this.$=Ge.relationType.LOLLIPOP;break;case 65:this.$=Ge.lineType.LINE;break;case 66:this.$=Ge.lineType.DOTTED_LINE;break;case 67:case 73:this.$=Oe[tn-2],Ge.setClickEvent(Oe[tn-1],Oe[tn]);break;case 68:case 74:this.$=Oe[tn-3],Ge.setClickEvent(Oe[tn-2],Oe[tn-1]),Ge.setTooltip(Oe[tn-2],Oe[tn]);break;case 69:case 77:this.$=Oe[tn-2],Ge.setLink(Oe[tn-1],Oe[tn]);break;case 70:this.$=Oe[tn-3],Ge.setLink(Oe[tn-2],Oe[tn-1],Oe[tn]);break;case 71:case 79:this.$=Oe[tn-3],Ge.setLink(Oe[tn-2],Oe[tn-1]),Ge.setTooltip(Oe[tn-2],Oe[tn]);break;case 72:case 80:this.$=Oe[tn-4],Ge.setLink(Oe[tn-3],Oe[tn-2],Oe[tn]),Ge.setTooltip(Oe[tn-3],Oe[tn-1]);break;case 75:this.$=Oe[tn-3],Ge.setClickEvent(Oe[tn-2],Oe[tn-1],Oe[tn]);break;case 76:this.$=Oe[tn-4],Ge.setClickEvent(Oe[tn-3],Oe[tn-2],Oe[tn-1]),Ge.setTooltip(Oe[tn-3],Oe[tn]);break;case 78:this.$=Oe[tn-3],Ge.setLink(Oe[tn-2],Oe[tn-1],Oe[tn]);break;case 81:Ge.setCssClass(Oe[tn-1],Oe[tn]);break}},table:[{3:1,4:2,5:3,6:4,7:17,8:a,9:f,10:p,11:w,12:5,13:6,19:y,23:b,25:7,30:21,31:36,32:37,34:10,36:11,37:12,38:13,39:14,40:15,41:16,42:E,44:S,46:N,47:22,52:B,53:R,55:j,56:$,58:V,60:Q,70:oe,71:ce,73:se,77:ge,89:ye,91:ke,92:Ae,93:de,94:ve},{1:[3]},{1:[2,1]},{3:44,4:2,5:3,6:4,7:17,8:a,9:f,10:p,11:w,12:5,13:6,19:y,23:b,25:7,30:21,31:36,32:37,34:10,36:11,37:12,38:13,39:14,40:15,41:16,42:E,44:S,46:N,47:22,52:B,53:R,55:j,56:$,58:V,60:Q,70:oe,71:ce,73:se,77:ge,89:ye,91:ke,92:Ae,93:de,94:ve},{1:[2,3]},{1:[2,8]},{14:45,20:[1,46]},i($,[2,16],{16:[1,47]}),{16:[1,48]},{20:[2,11]},i(te,[2,25],{35:[1,49]}),i(te,[2,27]),i(te,[2,28]),i(te,[2,29]),i(te,[2,30]),i(te,[2,31]),i(te,[2,32]),i(te,[2,33]),{43:[1,50]},{45:[1,51]},i(te,[2,36]),i(te,[2,46],{57:52,61:55,62:56,28:[1,53],35:[1,54],63:xe,64:De,65:he,66:Ie,67:ee,68:rt,69:me}),i(te,[2,37],{48:[1,64],49:[1,65]}),i(te,[2,48]),i(te,[2,49]),{31:66,89:ye,91:ke,92:Ae,93:de},{30:67,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{30:68,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{30:69,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{28:[1,70]},{30:71,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{28:gt,59:72},i(te,[2,4]),i(te,[2,5]),i(te,[2,6]),i(te,[2,7]),i(pe,[2,20],{31:36,32:37,30:74,33:[1,75],89:ye,91:ke,92:Ae,93:de,94:ve}),i(pe,[2,21],{33:[1,76]}),{30:77,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},i(Et,[2,95]),i(Et,[2,96]),i(Et,[2,97]),i(Et,[2,98]),i([1,16,24,27,28,33,35,48,49,63,64,65,66,67,68,69,74,76],[2,99]),{1:[2,2]},{15:78,17:[1,79],22:wt},i([17,22],[2,12]),i($,[2,17],{25:7,34:10,36:11,37:12,38:13,39:14,40:15,41:16,7:17,30:21,47:22,31:36,32:37,6:81,8:a,9:f,10:p,11:w,42:E,44:S,46:N,52:B,53:R,55:j,56:$,58:V,60:Q,70:oe,71:ce,73:se,77:ge,89:ye,91:ke,92:Ae,93:de,94:ve}),{6:82,7:17,8:a,9:f,10:p,11:w,25:7,30:21,31:36,32:37,34:10,36:11,37:12,38:13,39:14,40:15,41:16,42:E,44:S,46:N,47:22,52:B,53:R,55:j,56:$,58:V,60:Q,70:oe,71:ce,73:se,77:ge,89:ye,91:ke,92:Ae,93:de,94:ve},i(te,[2,26]),i(te,[2,34]),i(te,[2,35]),{28:[1,84],30:83,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{57:85,61:55,62:56,63:xe,64:De,65:he,66:Ie,67:ee,68:rt,69:me},i(te,[2,47]),{62:86,68:rt,69:me},i(jt,[2,59],{61:87,63:xe,64:De,65:he,66:Ie,67:ee}),i(At,[2,60]),i(At,[2,61]),i(At,[2,62]),i(At,[2,63]),i(At,[2,64]),i(Bt,[2,65]),i(Bt,[2,66]),{31:88,89:ye,91:ke,92:Ae,93:de},{50:89,55:cn},{54:[1,91]},{28:[1,92]},{28:[1,93]},{74:[1,94],76:[1,95]},{31:96,89:ye,91:ke,92:Ae,93:de},{28:gt,59:97},i(te,[2,55]),i(te,[2,100]),i(pe,[2,22]),i(pe,[2,23]),i(pe,[2,24]),i(Nn,[2,41],{26:98,27:[1,99]}),{16:[1,100]},{18:101,21:[1,102]},{16:[2,14]},i($,[2,18]),{24:[1,103]},i(Ot,[2,50]),{30:104,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{28:[1,106],30:105,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},i(jt,[2,58],{61:107,63:xe,64:De,65:he,66:Ie,67:ee}),i(jt,[2,57]),i(te,[2,38],{49:[1,108]}),{51:[1,109]},{50:110,51:[2,44],55:cn},{30:111,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},i(te,[2,67],{28:[1,112]}),i(te,[2,69],{28:[1,114],72:[1,113]}),i(te,[2,73],{28:[1,115],75:[1,116]}),i(te,[2,77],{28:[1,118],72:[1,117]}),i(te,[2,81]),i(te,[2,54]),i(Nn,[2,42]),{28:[1,119]},i(oi,[2,9]),{15:120,22:wt},{22:[2,13]},{1:[2,15]},i(Ot,[2,52]),i(Ot,[2,51]),{30:121,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},i(jt,[2,56]),{50:122,55:cn},i(te,[2,39]),{51:[2,45]},i(te,[2,43]),i(te,[2,68]),i(te,[2,70]),i(te,[2,71],{72:[1,123]}),i(te,[2,74]),i(te,[2,75],{28:[1,124]}),i(te,[2,78]),i(te,[2,79],{72:[1,125]}),{29:[1,126]},{16:[1,127]},i(Ot,[2,53]),{51:[1,128]},i(te,[2,72]),i(te,[2,76]),i(te,[2,80]),i(Nn,[2,19]),i(oi,[2,10]),i(te,[2,40])],defaultActions:{2:[2,1],4:[2,3],5:[2,8],9:[2,11],44:[2,2],80:[2,14],102:[2,13],103:[2,15],110:[2,45]},parseError:function(ze,Xe){if(Xe.recoverable)this.trace(ze);else{var Lt=new Error(ze);throw Lt.hash=Xe,Lt}},parse:function(ze){var Xe=this,Lt=[0],Ge=[],Bn=[null],Oe=[],Ri=this.table,tn="",hi=0,Sr=0,Zn=2,Xn=1,ir=Oe.slice.call(arguments,1),Hn=Object.create(this.lexer),tr={yy:{}};for(var ha in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ha)&&(tr.yy[ha]=this.yy[ha]);Hn.setInput(ze,tr.yy),tr.yy.lexer=Hn,tr.yy.parser=this,typeof Hn.yylloc>"u"&&(Hn.yylloc={});var Zs=Hn.yylloc;Oe.push(Zs);var ns=Hn.options&&Hn.options.ranges;typeof tr.yy.parseError=="function"?this.parseError=tr.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Hi(){var yn;return yn=Ge.pop()||Hn.lex()||Xn,typeof yn!="number"&&(yn instanceof Array&&(Ge=yn,yn=Ge.pop()),yn=Xe.symbols_[yn]||yn),yn}for(var Js,Pc,Ga,ws,Oi={},Er,br,Dr,Vn;;){if(Pc=Lt[Lt.length-1],this.defaultActions[Pc]?Ga=this.defaultActions[Pc]:((Js===null||typeof Js>"u")&&(Js=Hi()),Ga=Ri[Pc]&&Ri[Pc][Js]),typeof Ga>"u"||!Ga.length||!Ga[0]){var qi="";Vn=[];for(Er in Ri[Pc])this.terminals_[Er]&&Er>Zn&&Vn.push("'"+this.terminals_[Er]+"'");Hn.showPosition?qi="Parse error on line "+(hi+1)+`: +`+Hn.showPosition()+` +Expecting `+Vn.join(", ")+", got '"+(this.terminals_[Js]||Js)+"'":qi="Parse error on line "+(hi+1)+": Unexpected "+(Js==Xn?"end of input":"'"+(this.terminals_[Js]||Js)+"'"),this.parseError(qi,{text:Hn.match,token:this.terminals_[Js]||Js,line:Hn.yylineno,loc:Zs,expected:Vn})}if(Ga[0]instanceof Array&&Ga.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Pc+", token: "+Js);switch(Ga[0]){case 1:Lt.push(Js),Bn.push(Hn.yytext),Oe.push(Hn.yylloc),Lt.push(Ga[1]),Js=null,Sr=Hn.yyleng,tn=Hn.yytext,hi=Hn.yylineno,Zs=Hn.yylloc;break;case 2:if(br=this.productions_[Ga[1]][1],Oi.$=Bn[Bn.length-br],Oi._$={first_line:Oe[Oe.length-(br||1)].first_line,last_line:Oe[Oe.length-1].last_line,first_column:Oe[Oe.length-(br||1)].first_column,last_column:Oe[Oe.length-1].last_column},ns&&(Oi._$.range=[Oe[Oe.length-(br||1)].range[0],Oe[Oe.length-1].range[1]]),ws=this.performAction.apply(Oi,[tn,Sr,hi,tr.yy,Ga[1],Bn,Oe].concat(ir)),typeof ws<"u")return ws;br&&(Lt=Lt.slice(0,-1*br*2),Bn=Bn.slice(0,-1*br),Oe=Oe.slice(0,-1*br)),Lt.push(this.productions_[Ga[1]][0]),Bn.push(Oi.$),Oe.push(Oi._$),Dr=Ri[Lt[Lt.length-2]][Lt[Lt.length-1]],Lt.push(Dr);break;case 3:return!0}}return!0}},Dt=function(){var Nt={EOF:1,parseError:function(Xe,Lt){if(this.yy.parser)this.yy.parser.parseError(Xe,Lt);else throw new Error(Xe)},setInput:function(ze,Xe){return this.yy=Xe||this.yy||{},this._input=ze,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ze=this._input[0];this.yytext+=ze,this.yyleng++,this.offset++,this.match+=ze,this.matched+=ze;var Xe=ze.match(/(?:\r\n?|\n).*/g);return Xe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ze},unput:function(ze){var Xe=ze.length,Lt=ze.split(/(?:\r\n?|\n)/g);this._input=ze+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Xe),this.offset-=Xe;var Ge=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Lt.length-1&&(this.yylineno-=Lt.length-1);var Bn=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Lt?(Lt.length===Ge.length?this.yylloc.first_column:0)+Ge[Ge.length-Lt.length].length-Lt[0].length:this.yylloc.first_column-Xe},this.options.ranges&&(this.yylloc.range=[Bn[0],Bn[0]+this.yyleng-Xe]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ze){this.unput(this.match.slice(ze))},pastInput:function(){var ze=this.matched.substr(0,this.matched.length-this.match.length);return(ze.length>20?"...":"")+ze.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ze=this.match;return ze.length<20&&(ze+=this._input.substr(0,20-ze.length)),(ze.substr(0,20)+(ze.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ze=this.pastInput(),Xe=new Array(ze.length+1).join("-");return ze+this.upcomingInput()+` +`+Xe+"^"},test_match:function(ze,Xe){var Lt,Ge,Bn;if(this.options.backtrack_lexer&&(Bn={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Bn.yylloc.range=this.yylloc.range.slice(0))),Ge=ze[0].match(/(?:\r\n?|\n).*/g),Ge&&(this.yylineno+=Ge.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ge?Ge[Ge.length-1].length-Ge[Ge.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ze[0].length},this.yytext+=ze[0],this.match+=ze[0],this.matches=ze,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ze[0].length),this.matched+=ze[0],Lt=this.performAction.call(this,this.yy,this,Xe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Lt)return Lt;if(this._backtrack){for(var Oe in Bn)this[Oe]=Bn[Oe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ze,Xe,Lt,Ge;this._more||(this.yytext="",this.match="");for(var Bn=this._currentRules(),Oe=0;OeXe[0].length)){if(Xe=Lt,Ge=Oe,this.options.backtrack_lexer){if(ze=this.test_match(Lt,Bn[Oe]),ze!==!1)return ze;if(this._backtrack){Xe=!1;continue}else return!1}else if(!this.options.flex)break}return Xe?(ze=this.test_match(Xe,Bn[Ge]),ze!==!1?ze:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Xe=this.next();return Xe||this.lex()},begin:function(Xe){this.conditionStack.push(Xe)},popState:function(){var Xe=this.conditionStack.length-1;return Xe>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Xe){return Xe=this.conditionStack.length-1-Math.abs(Xe||0),Xe>=0?this.conditionStack[Xe]:"INITIAL"},pushState:function(Xe){this.begin(Xe)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(Xe,Lt,Ge,Bn){switch(Ge){case 0:return this.begin("open_directive"),19;case 1:return 8;case 2:return 9;case 3:return 10;case 4:return 11;case 5:return this.begin("type_directive"),20;case 6:return this.popState(),this.begin("arg_directive"),17;case 7:return this.popState(),this.popState(),22;case 8:return 21;case 9:break;case 10:break;case 11:return this.begin("acc_title"),42;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),44;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:return 16;case 19:break;case 20:return 23;case 21:return 23;case 22:return this.begin("struct"),49;case 23:return"EDGE_STATE";case 24:return"EOF_IN_STRUCT";case 25:return"OPEN_IN_STRUCT";case 26:return this.popState(),51;case 27:break;case 28:return"MEMBER";case 29:return 52;case 30:return 77;case 31:return 70;case 32:return 71;case 33:return 73;case 34:return 58;case 35:return 60;case 36:return 53;case 37:return 54;case 38:this.begin("generic");break;case 39:this.popState();break;case 40:return"GENERICTYPE";case 41:this.begin("string");break;case 42:this.popState();break;case 43:return"STR";case 44:this.begin("bqstring");break;case 45:this.popState();break;case 46:return"BQUOTE_STR";case 47:this.begin("href");break;case 48:this.popState();break;case 49:return 76;case 50:this.begin("callback_name");break;case 51:this.popState();break;case 52:this.popState(),this.begin("callback_args");break;case 53:return 74;case 54:this.popState();break;case 55:return 75;case 56:return 72;case 57:return 72;case 58:return 72;case 59:return 72;case 60:return 64;case 61:return 64;case 62:return 66;case 63:return 66;case 64:return 65;case 65:return 63;case 66:return 67;case 67:return 68;case 68:return 69;case 69:return 35;case 70:return 48;case 71:return 89;case 72:return"DOT";case 73:return"PLUS";case 74:return 86;case 75:return"EQUALS";case 76:return"EQUALS";case 77:return 93;case 78:return 27;case 79:return 29;case 80:return"PUNCTUATION";case 81:return 92;case 82:return 91;case 83:return 88;case 84:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:\[\*\])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},callback_args:{rules:[54,55],inclusive:!1},callback_name:{rules:[51,52,53],inclusive:!1},href:{rules:[48,49],inclusive:!1},struct:{rules:[23,24,25,26,27,28],inclusive:!1},generic:{rules:[39,40],inclusive:!1},bqstring:{rules:[45,46],inclusive:!1},string:{rules:[42,43],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,29,30,31,32,33,34,35,36,37,38,41,44,47,50,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],inclusive:!0}}};return Nt}();kt.lexer=Dt;function vt(){this.yy={}}return vt.prototype=kt,kt.Parser=vt,new vt}();oge.parser=oge;const XRe=oge,cge="classId-";let uge=[],hf={},OK=[],QRe=0,IP=[];const M5=i=>Wa.sanitizeText(i,Tt()),HHt=function(i,a,f){rd.parseDirective(this,i,a,f)},hL=function(i){let a="",f=i;if(i.indexOf("~")>0){const p=i.split("~");f=M5(p[0]),a=M5(p[1])}return{className:f,type:a}},zHt=function(i,a){a&&(a=M5(a));const{className:f}=hL(i);hf[f].label=a},lge=function(i){const a=hL(i);hf[a.className]===void 0&&(hf[a.className]={id:a.className,type:a.type,label:a.className,cssClasses:[],methods:[],members:[],annotations:[],domId:cge+a.className+"-"+QRe},QRe++)},ZRe=function(i){if(i in hf)return hf[i].domId;throw new Error("Class not found: "+i)},GHt=function(){uge=[],hf={},OK=[],IP=[],IP.push(eFe),rp()},qHt=function(i){return hf[i]},VHt=function(){return hf},UHt=function(){return uge},WHt=function(){return OK},KHt=function(i){Fe.debug("Adding relation: "+JSON.stringify(i)),lge(i.id1),lge(i.id2),i.id1=hL(i.id1).className,i.id2=hL(i.id2).className,i.relationTitle1=Wa.sanitizeText(i.relationTitle1.trim(),Tt()),i.relationTitle2=Wa.sanitizeText(i.relationTitle2.trim(),Tt()),uge.push(i)},YHt=function(i,a){const f=hL(i).className;hf[f].annotations.push(a)},JRe=function(i,a){const f=hL(i).className,p=hf[f];if(typeof a=="string"){const w=a.trim();w.startsWith("<<")&&w.endsWith(">>")?p.annotations.push(M5(w.substring(2,w.length-2))):w.indexOf(")")>0?p.methods.push(M5(w)):w&&p.members.push(M5(w))}},XHt=function(i,a){Array.isArray(a)&&(a.reverse(),a.forEach(f=>JRe(i,f)))},QHt=function(i,a){const f={id:`note${OK.length}`,class:a,text:i};OK.push(f)},ZHt=function(i){return i.startsWith(":")&&(i=i.substring(1)),M5(i.trim())},hge=function(i,a){i.split(",").forEach(function(f){let p=f;f[0].match(/\d/)&&(p=cge+p),hf[p]!==void 0&&hf[p].cssClasses.push(a)})},JHt=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(hf[f].tooltip=M5(a))})},ezt=function(i){return hf[i].tooltip},tzt=function(i,a,f){const p=Tt();i.split(",").forEach(function(w){let y=w;w[0].match(/\d/)&&(y=cge+y),hf[y]!==void 0&&(hf[y].link=co.formatUrl(a,p),p.securityLevel==="sandbox"?hf[y].linkTarget="_top":typeof f=="string"?hf[y].linkTarget=M5(f):hf[y].linkTarget="_blank")}),hge(i,"clickable")},nzt=function(i,a,f){i.split(",").forEach(function(p){rzt(p,a,f),hf[p].haveCallback=!0}),hge(i,"clickable")},rzt=function(i,a,f){if(Tt().securityLevel!=="loose"||a===void 0)return;const w=i;if(hf[w]!==void 0){const y=ZRe(w);let b=[];if(typeof f=="string"){b=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let E=0;E")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),Cr(this).classed("hover",!1)})};IP.push(eFe);let tFe="TB";const NK={parseDirective:HHt,setAccTitle:ip,getAccTitle:L2,getAccDescription:D2,setAccDescription:M2,getConfig:()=>Tt().class,addClass:lge,bindFunctions:izt,clear:GHt,getClass:qHt,getClasses:VHt,getNotes:WHt,addAnnotation:YHt,addNote:QHt,getRelations:UHt,addRelation:KHt,getDirection:()=>tFe,setDirection:i=>{tFe=i},addMember:JRe,addMembers:XHt,cleanupLabel:ZHt,lineType:szt,relationType:azt,setClickEvent:nzt,setCssClass:hge,setLink:tzt,getTooltip:ezt,setTooltip:JHt,lookUpDomId:ZRe,setDiagramTitle:Uw,getDiagramTitle:Ww,setClassLabel:zHt},nFe=i=>`g.classGroup text { + fill: ${i.nodeBorder}; + fill: ${i.classText}; + stroke: none; + font-family: ${i.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${i.classText}; +} +.edgeLabel .label rect { + fill: ${i.mainBkg}; +} +.label text { + fill: ${i.classText}; +} +.edgeLabel .label span { + background: ${i.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.classGroup line { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${i.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${i.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`;let PK={};const BK=20,OP=function(i){const a=Object.entries(PK).find(f=>f[1].label===i);if(a)return a[0]},ozt=function(i){i.append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},czt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:XRe,db:NK,renderer:{draw:function(i,a,f,p){const w=Tt().class;PK={},Fe.info("Rendering diagram "+i);const y=Tt().securityLevel;let b;y==="sandbox"&&(b=Cr("#i"+a));const E=Cr(y==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=E.select(`[id='${a}']`);ozt(S);const N=new zf({multigraph:!0});N.setGraph({isMultiGraph:!0}),N.setDefaultEdgeLabel(function(){return{}});const B=p.db.getClasses(),R=Object.keys(B);for(const se of R){const ge=B[se],ye=_0e.drawClass(S,ge,w,p);PK[ye.id]=ye,N.setNode(ye.id,ye),Fe.info("Org height: "+ye.height)}p.db.getRelations().forEach(function(se){Fe.info("tjoho"+OP(se.id1)+OP(se.id2)+JSON.stringify(se)),N.setEdge(OP(se.id1),OP(se.id2),{relation:se},se.title||"DEFAULT")}),p.db.getNotes().forEach(function(se){Fe.debug(`Adding note: ${JSON.stringify(se)}`);const ge=_0e.drawNote(S,se,w,p);PK[ge.id]=ge,N.setNode(ge.id,ge),se.class&&se.class in B&&N.setEdge(se.id,OP(se.class),{relation:{id1:se.id,id2:se.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")}),tL(N),N.nodes().forEach(function(se){se!==void 0&&N.node(se)!==void 0&&(Fe.debug("Node "+se+": "+JSON.stringify(N.node(se))),E.select("#"+(p.db.lookUpDomId(se)||se)).attr("transform","translate("+(N.node(se).x-N.node(se).width/2)+","+(N.node(se).y-N.node(se).height/2)+" )"))}),N.edges().forEach(function(se){se!==void 0&&N.edge(se)!==void 0&&(Fe.debug("Edge "+se.v+" -> "+se.w+": "+JSON.stringify(N.edge(se))),_0e.drawEdge(S,N.edge(se),N.edge(se).relation,w,p))});const V=S.node().getBBox(),Q=V.width+BK*2,oe=V.height+BK*2;Vw(S,oe,Q,w.useMaxWidth);const ce=`${V.x-BK} ${V.y-BK} ${Q} ${oe}`;Fe.debug(`viewBox ${ce}`),S.attr("viewBox",ce)}},styles:nFe,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,NK.clear()}}},Symbol.toStringTag,{value:"Module"})),rFe=i=>Wa.sanitizeText(i,Tt());let fge={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const uzt=function(i,a,f,p){const w=Object.keys(i);Fe.info("keys:",w),Fe.info(i),w.forEach(function(y){var $,V;const b=i[y];let E="";b.cssClasses.length>0&&(E=E+" "+b.cssClasses.join(" "));const S={labelStyle:"",style:""},N=b.label??b.id,B=0,R="class_box",j={labelStyle:S.labelStyle,shape:R,labelText:rFe(N),classData:b,rx:B,ry:B,class:E,style:S.style,id:b.id,domId:b.domId,tooltip:p.db.getTooltip(b.id)||"",haveCallback:b.haveCallback,link:b.link,width:b.type==="group"?500:void 0,type:b.type,padding:(($=Tt().flowchart)==null?void 0:$.padding)??((V=Tt().class)==null?void 0:V.padding)};a.setNode(b.id,j),Fe.info("setNode",j)})},lzt=function(i,a,f,p){Fe.info(i),i.forEach(function(w,y){var Q,oe;const b=w,E="",S={labelStyle:"",style:""},N=b.text,B=0,R="note",j={labelStyle:S.labelStyle,shape:R,labelText:rFe(N),noteData:b,rx:B,ry:B,class:E,style:S.style,id:b.id,domId:b.id,tooltip:"",type:"note",padding:((Q=Tt().flowchart)==null?void 0:Q.padding)??((oe=Tt().class)==null?void 0:oe.padding)};if(a.setNode(b.id,j),Fe.info("setNode",j),!b.class||!(b.class in p))return;const $=f+y,V={id:`edgeNote${$}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:Ub(fge.curve,ng)};a.setEdge(b.id,b.class,V,$)})},hzt=function(i,a){const f=Tt().flowchart;let p=0;i.forEach(function(w){var b;p++;const y={classes:"relation",pattern:w.relation.lineType==1?"dashed":"solid",id:"id"+p,arrowhead:w.type==="arrow_open"?"none":"normal",startLabelRight:w.relationTitle1==="none"?"":w.relationTitle1,endLabelLeft:w.relationTitle2==="none"?"":w.relationTitle2,arrowTypeStart:iFe(w.relation.type1),arrowTypeEnd:iFe(w.relation.type2),style:"fill:none",labelStyle:"",curve:Ub(f==null?void 0:f.curve,ng)};if(Fe.info(y,w),w.style!==void 0){const E=Yw(w.style);y.style=E.style,y.labelStyle=E.labelStyle}w.text=w.title,w.text===void 0?w.style!==void 0&&(y.arrowheadStyle="fill: #333"):(y.arrowheadStyle="fill: #333",y.labelpos="c",((b=Tt().flowchart)==null?void 0:b.htmlLabels)??Tt().htmlLabels?(y.labelType="html",y.label=''+w.text+""):(y.labelType="text",y.label=w.text.replace(Wa.lineBreakRegex,` +`),w.style===void 0&&(y.style=y.style||"stroke: #333; stroke-width: 1.5px;fill:none"),y.labelStyle=y.labelStyle.replace("color:","fill:"))),a.setEdge(w.id1,w.id2,y,p)})},fzt=function(i){fge={...fge,...i}},dzt=async function(i,a,f,p){Fe.info("Drawing class - ",a);const w=Tt().flowchart??Tt().class,y=Tt().securityLevel;Fe.info("config:",w);const b=(w==null?void 0:w.nodeSpacing)??50,E=(w==null?void 0:w.rankSpacing)??50,S=new zf({multigraph:!0,compound:!0}).setGraph({rankdir:p.db.getDirection(),nodesep:b,ranksep:E,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),N=p.db.getClasses(),B=p.db.getRelations(),R=p.db.getNotes();Fe.info(B),uzt(N,S,a,p),hzt(B,S),lzt(R,S,B.length+1,N);let j;y==="sandbox"&&(j=Cr("#i"+a));const $=Cr(y==="sandbox"?j.nodes()[0].contentDocument.body:"body"),V=$.select(`[id="${a}"]`),Q=$.select("#"+a+" g");if(await C0e(Q,S,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",a),co.insertTitle(V,"classTitleText",(w==null?void 0:w.titleTopMargin)??5,p.db.getDiagramTitle()),YE(S,V,w==null?void 0:w.diagramPadding,w==null?void 0:w.useMaxWidth),!(w!=null&&w.htmlLabels)){const oe=y==="sandbox"?j.nodes()[0].contentDocument:document,ce=oe.querySelectorAll('[id="'+a+'"] .edgeLabel .label');for(const se of ce){const ge=se.getBBox(),ye=oe.createElementNS("http://www.w3.org/2000/svg","rect");ye.setAttribute("rx",0),ye.setAttribute("ry",0),ye.setAttribute("width",ge.width),ye.setAttribute("height",ge.height),se.insertBefore(ye,se.firstChild)}}};function iFe(i){let a;switch(i){case 0:a="aggregation";break;case 1:a="extension";break;case 2:a="composition";break;case 3:a="dependency";break;case 4:a="lollipop";break;default:a="none"}return a}const gzt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:XRe,db:NK,renderer:{setConf:fzt,draw:dzt},styles:nFe,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,NK.clear()}}},Symbol.toStringTag,{value:"Module"}));var dge=function(){var i=function(wt,jt,At,Bt){for(At=At||{},Bt=wt.length;Bt--;At[wt[Bt]]=jt);return At},a=[1,2],f=[1,3],p=[1,5],w=[1,7],y=[2,5],b=[1,15],E=[1,17],S=[1,21],N=[1,22],B=[1,23],R=[1,24],j=[1,37],$=[1,25],V=[1,26],Q=[1,27],oe=[1,28],ce=[1,29],se=[1,32],ge=[1,33],ye=[1,34],ke=[1,35],Ae=[1,36],de=[1,39],ve=[1,40],te=[1,41],xe=[1,42],De=[1,38],he=[1,45],Ie=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],ee=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],rt=[1,4,5,7,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],me=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],gt={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,classDefStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,class:42,CLASSENTITY_IDS:43,STYLECLASS:44,openDirective:45,typeDirective:46,closeDirective:47,":":48,argDirective:49,direction_tb:50,direction_bt:51,direction_rl:52,direction_lr:53,eol:54,";":55,EDGE_STATE:56,STYLE_SEPARATOR:57,left_of:58,right_of:59,open_directive:60,type_directive:61,arg_directive:62,close_directive:63,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"class",43:"CLASSENTITY_IDS",44:"STYLECLASS",48:":",50:"direction_tb",51:"direction_bt",52:"direction_rl",53:"direction_lr",55:";",56:"EDGE_STATE",57:"STYLE_SEPARATOR",58:"left_of",59:"right_of",60:"open_directive",61:"type_directive",62:"arg_directive",63:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[11,3],[11,3],[12,3],[6,3],[6,5],[32,1],[32,1],[32,1],[32,1],[54,1],[54,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1],[45,1],[46,1],[49,1],[47,1]],performAction:function(jt,At,Bt,cn,Nn,Ot,oi){var kt=Ot.length-1;switch(Nn){case 4:return cn.setRootDoc(Ot[kt]),Ot[kt];case 5:this.$=[];break;case 6:Ot[kt]!="nl"&&(Ot[kt-1].push(Ot[kt]),this.$=Ot[kt-1]);break;case 7:case 8:this.$=Ot[kt];break;case 9:this.$="nl";break;case 12:this.$=Ot[kt];break;case 13:const ze=Ot[kt-1];ze.description=cn.trimColon(Ot[kt]),this.$=ze;break;case 14:this.$={stmt:"relation",state1:Ot[kt-2],state2:Ot[kt]};break;case 15:const Xe=cn.trimColon(Ot[kt]);this.$={stmt:"relation",state1:Ot[kt-3],state2:Ot[kt-1],description:Xe};break;case 19:this.$={stmt:"state",id:Ot[kt-3],type:"default",description:"",doc:Ot[kt-1]};break;case 20:var Dt=Ot[kt],vt=Ot[kt-2].trim();if(Ot[kt].match(":")){var Nt=Ot[kt].split(":");Dt=Nt[0],vt=[vt,Nt[1]]}this.$={stmt:"state",id:Dt,type:"default",description:vt};break;case 21:this.$={stmt:"state",id:Ot[kt-3],type:"default",description:Ot[kt-5],doc:Ot[kt-1]};break;case 22:this.$={stmt:"state",id:Ot[kt],type:"fork"};break;case 23:this.$={stmt:"state",id:Ot[kt],type:"join"};break;case 24:this.$={stmt:"state",id:Ot[kt],type:"choice"};break;case 25:this.$={stmt:"state",id:cn.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:Ot[kt-1].trim(),note:{position:Ot[kt-2].trim(),text:Ot[kt].trim()}};break;case 30:this.$=Ot[kt].trim(),cn.setAccTitle(this.$);break;case 31:case 32:this.$=Ot[kt].trim(),cn.setAccDescription(this.$);break;case 33:case 34:this.$={stmt:"classDef",id:Ot[kt-1].trim(),classes:Ot[kt].trim()};break;case 35:this.$={stmt:"applyClass",id:Ot[kt-1].trim(),styleClass:Ot[kt].trim()};break;case 38:cn.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:cn.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:cn.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:cn.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:Ot[kt].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:Ot[kt-2].trim(),classes:[Ot[kt].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:Ot[kt-2].trim(),classes:[Ot[kt].trim()],type:"default",description:""};break;case 50:cn.parseDirective("%%{","open_directive");break;case 51:cn.parseDirective(Ot[kt],"type_directive");break;case 52:Ot[kt]=Ot[kt].trim().replace(/'/g,'"'),cn.parseDirective(Ot[kt],"arg_directive");break;case 53:cn.parseDirective("}%%","close_directive","state");break}},table:[{3:1,4:a,5:f,6:4,7:p,45:6,60:w},{1:[3]},{3:8,4:a,5:f,6:4,7:p,45:6,60:w},{3:9,4:a,5:f,6:4,7:p,45:6,60:w},{3:10,4:a,5:f,6:4,7:p,45:6,60:w},i([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],y,{8:11}),{46:12,61:[1,13]},{61:[2,50]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:b,5:E,6:30,9:14,10:16,11:18,12:19,13:20,16:S,17:N,19:B,22:R,24:j,25:$,26:V,27:Q,28:oe,29:ce,32:31,33:se,35:ge,37:ye,38:ke,42:Ae,45:6,50:de,51:ve,52:te,53:xe,56:De,60:w},{47:43,48:[1,44],63:he},i([48,63],[2,51]),i(Ie,[2,6]),{6:30,10:46,11:18,12:19,13:20,16:S,17:N,19:B,22:R,24:j,25:$,26:V,27:Q,28:oe,29:ce,32:31,33:se,35:ge,37:ye,38:ke,42:Ae,45:6,50:de,51:ve,52:te,53:xe,56:De,60:w},i(Ie,[2,8]),i(Ie,[2,9]),i(Ie,[2,10]),i(Ie,[2,11]),i(Ie,[2,12],{14:[1,47],15:[1,48]}),i(Ie,[2,16]),{18:[1,49]},i(Ie,[2,18],{20:[1,50]}),{23:[1,51]},i(Ie,[2,22]),i(Ie,[2,23]),i(Ie,[2,24]),i(Ie,[2,25]),{30:52,31:[1,53],58:[1,54],59:[1,55]},i(Ie,[2,28]),i(Ie,[2,29]),{34:[1,56]},{36:[1,57]},i(Ie,[2,32]),{39:[1,58],41:[1,59]},{43:[1,60]},i(ee,[2,44],{57:[1,61]}),i(ee,[2,45],{57:[1,62]}),i(Ie,[2,38]),i(Ie,[2,39]),i(Ie,[2,40]),i(Ie,[2,41]),i(rt,[2,36]),{49:63,62:[1,64]},i(rt,[2,53]),i(Ie,[2,7]),i(Ie,[2,13]),{13:65,24:j,56:De},i(Ie,[2,17]),i(me,y,{8:66}),{24:[1,67]},{24:[1,68]},{23:[1,69]},{24:[2,48]},{24:[2,49]},i(Ie,[2,30]),i(Ie,[2,31]),{40:[1,70]},{40:[1,71]},{44:[1,72]},{24:[1,73]},{24:[1,74]},{47:75,63:he},{63:[2,52]},i(Ie,[2,14],{14:[1,76]}),{4:b,5:E,6:30,9:14,10:16,11:18,12:19,13:20,16:S,17:N,19:B,21:[1,77],22:R,24:j,25:$,26:V,27:Q,28:oe,29:ce,32:31,33:se,35:ge,37:ye,38:ke,42:Ae,45:6,50:de,51:ve,52:te,53:xe,56:De,60:w},i(Ie,[2,20],{20:[1,78]}),{31:[1,79]},{24:[1,80]},i(Ie,[2,33]),i(Ie,[2,34]),i(Ie,[2,35]),i(ee,[2,46]),i(ee,[2,47]),i(rt,[2,37]),i(Ie,[2,15]),i(Ie,[2,19]),i(me,y,{8:81}),i(Ie,[2,26]),i(Ie,[2,27]),{4:b,5:E,6:30,9:14,10:16,11:18,12:19,13:20,16:S,17:N,19:B,21:[1,82],22:R,24:j,25:$,26:V,27:Q,28:oe,29:ce,32:31,33:se,35:ge,37:ye,38:ke,42:Ae,45:6,50:de,51:ve,52:te,53:xe,56:De,60:w},i(Ie,[2,21])],defaultActions:{7:[2,50],8:[2,1],9:[2,2],10:[2,3],54:[2,48],55:[2,49],64:[2,52]},parseError:function(jt,At){if(At.recoverable)this.trace(jt);else{var Bt=new Error(jt);throw Bt.hash=At,Bt}},parse:function(jt){var At=this,Bt=[0],cn=[],Nn=[null],Ot=[],oi=this.table,kt="",Dt=0,vt=0,Nt=2,ze=1,Xe=Ot.slice.call(arguments,1),Lt=Object.create(this.lexer),Ge={yy:{}};for(var Bn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Bn)&&(Ge.yy[Bn]=this.yy[Bn]);Lt.setInput(jt,Ge.yy),Ge.yy.lexer=Lt,Ge.yy.parser=this,typeof Lt.yylloc>"u"&&(Lt.yylloc={});var Oe=Lt.yylloc;Ot.push(Oe);var Ri=Lt.options&&Lt.options.ranges;typeof Ge.yy.parseError=="function"?this.parseError=Ge.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tn(){var Hi;return Hi=cn.pop()||Lt.lex()||ze,typeof Hi!="number"&&(Hi instanceof Array&&(cn=Hi,Hi=cn.pop()),Hi=At.symbols_[Hi]||Hi),Hi}for(var hi,Sr,Zn,Xn,ir={},Hn,tr,ha,Zs;;){if(Sr=Bt[Bt.length-1],this.defaultActions[Sr]?Zn=this.defaultActions[Sr]:((hi===null||typeof hi>"u")&&(hi=tn()),Zn=oi[Sr]&&oi[Sr][hi]),typeof Zn>"u"||!Zn.length||!Zn[0]){var ns="";Zs=[];for(Hn in oi[Sr])this.terminals_[Hn]&&Hn>Nt&&Zs.push("'"+this.terminals_[Hn]+"'");Lt.showPosition?ns="Parse error on line "+(Dt+1)+`: +`+Lt.showPosition()+` +Expecting `+Zs.join(", ")+", got '"+(this.terminals_[hi]||hi)+"'":ns="Parse error on line "+(Dt+1)+": Unexpected "+(hi==ze?"end of input":"'"+(this.terminals_[hi]||hi)+"'"),this.parseError(ns,{text:Lt.match,token:this.terminals_[hi]||hi,line:Lt.yylineno,loc:Oe,expected:Zs})}if(Zn[0]instanceof Array&&Zn.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Sr+", token: "+hi);switch(Zn[0]){case 1:Bt.push(hi),Nn.push(Lt.yytext),Ot.push(Lt.yylloc),Bt.push(Zn[1]),hi=null,vt=Lt.yyleng,kt=Lt.yytext,Dt=Lt.yylineno,Oe=Lt.yylloc;break;case 2:if(tr=this.productions_[Zn[1]][1],ir.$=Nn[Nn.length-tr],ir._$={first_line:Ot[Ot.length-(tr||1)].first_line,last_line:Ot[Ot.length-1].last_line,first_column:Ot[Ot.length-(tr||1)].first_column,last_column:Ot[Ot.length-1].last_column},Ri&&(ir._$.range=[Ot[Ot.length-(tr||1)].range[0],Ot[Ot.length-1].range[1]]),Xn=this.performAction.apply(ir,[kt,vt,Dt,Ge.yy,Zn[1],Nn,Ot].concat(Xe)),typeof Xn<"u")return Xn;tr&&(Bt=Bt.slice(0,-1*tr*2),Nn=Nn.slice(0,-1*tr),Ot=Ot.slice(0,-1*tr)),Bt.push(this.productions_[Zn[1]][0]),Nn.push(ir.$),Ot.push(ir._$),ha=oi[Bt[Bt.length-2]][Bt[Bt.length-1]],Bt.push(ha);break;case 3:return!0}}return!0}},pe=function(){var wt={EOF:1,parseError:function(At,Bt){if(this.yy.parser)this.yy.parser.parseError(At,Bt);else throw new Error(At)},setInput:function(jt,At){return this.yy=At||this.yy||{},this._input=jt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var jt=this._input[0];this.yytext+=jt,this.yyleng++,this.offset++,this.match+=jt,this.matched+=jt;var At=jt.match(/(?:\r\n?|\n).*/g);return At?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),jt},unput:function(jt){var At=jt.length,Bt=jt.split(/(?:\r\n?|\n)/g);this._input=jt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-At),this.offset-=At;var cn=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Bt.length-1&&(this.yylineno-=Bt.length-1);var Nn=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Bt?(Bt.length===cn.length?this.yylloc.first_column:0)+cn[cn.length-Bt.length].length-Bt[0].length:this.yylloc.first_column-At},this.options.ranges&&(this.yylloc.range=[Nn[0],Nn[0]+this.yyleng-At]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(jt){this.unput(this.match.slice(jt))},pastInput:function(){var jt=this.matched.substr(0,this.matched.length-this.match.length);return(jt.length>20?"...":"")+jt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var jt=this.match;return jt.length<20&&(jt+=this._input.substr(0,20-jt.length)),(jt.substr(0,20)+(jt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var jt=this.pastInput(),At=new Array(jt.length+1).join("-");return jt+this.upcomingInput()+` +`+At+"^"},test_match:function(jt,At){var Bt,cn,Nn;if(this.options.backtrack_lexer&&(Nn={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Nn.yylloc.range=this.yylloc.range.slice(0))),cn=jt[0].match(/(?:\r\n?|\n).*/g),cn&&(this.yylineno+=cn.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:cn?cn[cn.length-1].length-cn[cn.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+jt[0].length},this.yytext+=jt[0],this.match+=jt[0],this.matches=jt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(jt[0].length),this.matched+=jt[0],Bt=this.performAction.call(this,this.yy,this,At,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Bt)return Bt;if(this._backtrack){for(var Ot in Nn)this[Ot]=Nn[Ot];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var jt,At,Bt,cn;this._more||(this.yytext="",this.match="");for(var Nn=this._currentRules(),Ot=0;OtAt[0].length)){if(At=Bt,cn=Ot,this.options.backtrack_lexer){if(jt=this.test_match(Bt,Nn[Ot]),jt!==!1)return jt;if(this._backtrack){At=!1;continue}else return!1}else if(!this.options.flex)break}return At?(jt=this.test_match(At,Nn[cn]),jt!==!1?jt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var At=this.next();return At||this.lex()},begin:function(At){this.conditionStack.push(At)},popState:function(){var At=this.conditionStack.length-1;return At>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(At){return At=this.conditionStack.length-1-Math.abs(At||0),At>=0?this.conditionStack[At]:"INITIAL"},pushState:function(At){this.begin(At)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(At,Bt,cn,Nn){switch(cn){case 0:return 41;case 1:return 50;case 2:return 51;case 3:return 52;case 4:return 53;case 5:return this.begin("open_directive"),60;case 6:return this.begin("type_directive"),61;case 7:return this.popState(),this.begin("arg_directive"),48;case 8:return this.popState(),this.popState(),63;case 9:return 62;case 10:break;case 11:break;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:break;case 17:return this.pushState("SCALE"),17;case 18:return 18;case 19:this.popState();break;case 20:return this.begin("acc_title"),33;case 21:return this.popState(),"acc_title_value";case 22:return this.begin("acc_descr"),35;case 23:return this.popState(),"acc_descr_value";case 24:this.begin("acc_descr_multiline");break;case 25:this.popState();break;case 26:return"acc_descr_multiline_value";case 27:return this.pushState("CLASSDEF"),38;case 28:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 29:return this.popState(),this.pushState("CLASSDEFID"),39;case 30:return this.popState(),40;case 31:return this.pushState("CLASS"),42;case 32:return this.popState(),this.pushState("CLASS_STYLE"),43;case 33:return this.popState(),44;case 34:return this.pushState("SCALE"),17;case 35:return 18;case 36:this.popState();break;case 37:this.pushState("STATE");break;case 38:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),25;case 39:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),26;case 40:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-10).trim(),27;case 41:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),25;case 42:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),26;case 43:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-10).trim(),27;case 44:return 50;case 45:return 51;case 46:return 52;case 47:return 53;case 48:this.pushState("STATE_STRING");break;case 49:return this.pushState("STATE_ID"),"AS";case 50:return this.popState(),"ID";case 51:this.popState();break;case 52:return"STATE_DESCR";case 53:return 19;case 54:this.popState();break;case 55:return this.popState(),this.pushState("struct"),20;case 56:break;case 57:return this.popState(),21;case 58:break;case 59:return this.begin("NOTE"),29;case 60:return this.popState(),this.pushState("NOTE_ID"),58;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:this.popState(),this.pushState("FLOATING_NOTE");break;case 63:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 64:break;case 65:return"NOTE_TEXT";case 66:return this.popState(),"ID";case 67:return this.popState(),this.pushState("NOTE_TEXT"),24;case 68:return this.popState(),Bt.yytext=Bt.yytext.substr(2).trim(),31;case 69:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),31;case 70:return 7;case 71:return 7;case 72:return 16;case 73:return 56;case 74:return 24;case 75:return Bt.yytext=Bt.yytext.trim(),14;case 76:return 15;case 77:return 28;case 78:return 57;case 79:return 5;case 80:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[14,15],inclusive:!1},close_directive:{rules:[14,15],inclusive:!1},arg_directive:{rules:[8,9,14,15],inclusive:!1},type_directive:{rules:[7,8,14,15],inclusive:!1},open_directive:{rules:[6,14,15],inclusive:!1},struct:{rules:[14,15,27,31,37,44,45,46,47,56,57,58,59,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[66],inclusive:!1},FLOATING_NOTE:{rules:[63,64,65],inclusive:!1},NOTE_TEXT:{rules:[68,69],inclusive:!1},NOTE_ID:{rules:[67],inclusive:!1},NOTE:{rules:[60,61,62],inclusive:!1},CLASS_STYLE:{rules:[33],inclusive:!1},CLASS:{rules:[32],inclusive:!1},CLASSDEFID:{rules:[30],inclusive:!1},CLASSDEF:{rules:[28,29],inclusive:!1},acc_descr_multiline:{rules:[25,26],inclusive:!1},acc_descr:{rules:[23],inclusive:!1},acc_title:{rules:[21],inclusive:!1},SCALE:{rules:[18,19,35,36],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[50],inclusive:!1},STATE_STRING:{rules:[51,52],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[14,15,38,39,40,41,42,43,48,49,53,54,55],inclusive:!1},ID:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,10,11,12,13,15,16,17,20,22,24,27,31,34,37,55,59,70,71,72,73,74,75,76,78,79,80],inclusive:!0}}};return wt}();gt.lexer=pe;function Et(){this.yy={}}return Et.prototype=gt,gt.Parser=Et,new Et}();dge.parser=dge;const sFe=dge,pzt="LR",bzt="TB",RK="state",gge="relation",vzt="classDef",wzt="applyClass",NP="default",aFe="divider",pge="[*]",oFe="start",cFe=pge,uFe="end",lFe="color",hFe="fill",mzt="bgFill",yzt=",";function fFe(){return{}}let dFe=pzt,FK=[],PP=fFe();const gFe=()=>({relations:[],states:{},documents:{}});let jK={root:gFe()},x0=jK.root,BP=0,pFe=0;const kzt={LINE:0,DOTTED_LINE:1},xzt={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},$K=i=>JSON.parse(JSON.stringify(i)),Ezt=function(i,a,f){rd.parseDirective(this,i,a,f)},Tzt=i=>{Fe.info("Setting root doc",i),FK=i},_zt=()=>FK,HK=(i,a,f)=>{if(a.stmt===gge)HK(i,a.state1,!0),HK(i,a.state2,!1);else if(a.stmt===RK&&(a.id==="[*]"?(a.id=f?i.id+"_start":i.id+"_end",a.start=f):a.id=a.id.trim()),a.doc){const p=[];let w=[],y;for(y=0;y0&&w.length>0){const b={stmt:RK,id:IIe(),type:"divider",doc:$K(w)};p.push($K(b)),a.doc=p}a.doc.forEach(b=>HK(a,b,!0))}},Czt=()=>(HK({id:"root"},{id:"root",doc:FK},!0),{id:"root",doc:FK}),Szt=i=>{let a;i.doc?a=i.doc:a=i,Fe.info(a),bFe(!0),Fe.info("Extract",a),a.forEach(f=>{switch(f.stmt){case RK:p9(f.id.trim(),f.type,f.doc,f.description,f.note,f.classes,f.styles,f.textStyles);break;case gge:vFe(f.state1,f.state2,f.description);break;case vzt:wFe(f.id.trim(),f.classes);break;case wzt:mge(f.id.trim(),f.styleClass);break}})},p9=function(i,a=NP,f=null,p=null,w=null,y=null,b=null,E=null){const S=i==null?void 0:i.trim();x0.states[S]===void 0?(Fe.info("Adding state ",S,p),x0.states[S]={id:S,descriptions:[],type:a,doc:f,note:w,classes:[],styles:[],textStyles:[]}):(x0.states[S].doc||(x0.states[S].doc=f),x0.states[S].type||(x0.states[S].type=a)),p&&(Fe.info("Setting state description",S,p),typeof p=="string"&&wge(S,p.trim()),typeof p=="object"&&p.forEach(N=>wge(S,N.trim()))),w&&(x0.states[S].note=w,x0.states[S].note.text=Wa.sanitizeText(x0.states[S].note.text,Tt())),y&&(Fe.info("Setting state classes",S,y),(typeof y=="string"?[y]:y).forEach(B=>mge(S,B.trim()))),b&&(Fe.info("Setting state styles",S,b),(typeof b=="string"?[b]:b).forEach(B=>Rzt(S,B.trim()))),E&&(Fe.info("Setting state styles",S,b),(typeof E=="string"?[E]:E).forEach(B=>Fzt(S,B.trim())))},bFe=function(i){jK={root:gFe()},x0=jK.root,BP=0,PP=fFe(),i||rp()},RP=function(i){return x0.states[i]},Azt=function(){return x0.states},Lzt=function(){Fe.info("Documents = ",jK)},Mzt=function(){return x0.relations};function bge(i=""){let a=i;return i===pge&&(BP++,a=`${oFe}${BP}`),a}function vge(i="",a=NP){return i===pge?oFe:a}function Dzt(i=""){let a=i;return i===cFe&&(BP++,a=`${uFe}${BP}`),a}function Izt(i="",a=NP){return i===cFe?uFe:a}function Ozt(i,a,f){let p=bge(i.id.trim()),w=vge(i.id.trim(),i.type),y=bge(a.id.trim()),b=vge(a.id.trim(),a.type);p9(p,w,i.doc,i.description,i.note,i.classes,i.styles,i.textStyles),p9(y,b,a.doc,a.description,a.note,a.classes,a.styles,a.textStyles),x0.relations.push({id1:p,id2:y,relationTitle:Wa.sanitizeText(f,Tt())})}const vFe=function(i,a,f){if(typeof i=="object")Ozt(i,a,f);else{const p=bge(i.trim()),w=vge(i),y=Dzt(a.trim()),b=Izt(a);p9(p,w),p9(y,b),x0.relations.push({id1:p,id2:y,title:Wa.sanitizeText(f,Tt())})}},wge=function(i,a){const f=x0.states[i],p=a.startsWith(":")?a.replace(":","").trim():a;f.descriptions.push(Wa.sanitizeText(p,Tt()))},Nzt=function(i){return i.substring(0,1)===":"?i.substr(2).trim():i.trim()},Pzt=()=>(pFe++,"divider-id-"+pFe),wFe=function(i,a=""){PP[i]===void 0&&(PP[i]={id:i,styles:[],textStyles:[]});const f=PP[i];a!=null&&a.split(yzt).forEach(p=>{const w=p.replace(/([^;]*);/,"$1").trim();if(p.match(lFe)){const b=w.replace(hFe,mzt).replace(lFe,hFe);f.textStyles.push(b)}f.styles.push(w)})},Bzt=function(){return PP},mge=function(i,a){i.split(",").forEach(function(f){let p=RP(f);if(p===void 0){const w=f.trim();p9(w),p=RP(w)}p.classes.push(a)})},Rzt=function(i,a){const f=RP(i);f!==void 0&&f.textStyles.push(a)},Fzt=function(i,a){const f=RP(i);f!==void 0&&f.textStyles.push(a)},D5={parseDirective:Ezt,getConfig:()=>Tt().state,addState:p9,clear:bFe,getState:RP,getStates:Azt,getRelations:Mzt,getClasses:Bzt,getDirection:()=>dFe,addRelation:vFe,getDividerId:Pzt,setDirection:i=>{dFe=i},cleanupLabel:Nzt,lineType:kzt,relationType:xzt,logDocuments:Lzt,getRootDoc:_zt,setRootDoc:Tzt,getRootDocV2:Czt,extract:Szt,trimColon:i=>i&&i[0]===":"?i.substr(1).trim():i.trim(),getAccTitle:L2,setAccTitle:ip,getAccDescription:D2,setAccDescription:M2,addStyleClass:wFe,setCssClass:mge,addDescription:wge,setDiagramTitle:Uw,getDiagramTitle:Ww},mFe=i=>` +defs #statediagram-barbEnd { + fill: ${i.transitionColor}; + stroke: ${i.transitionColor}; + } +g.stateGroup text { + fill: ${i.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${i.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${i.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.stateGroup line { + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${i.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${i.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + + text { + fill: ${i.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${i.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel .label text { + fill: ${i.transitionLabelColor||i.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${i.transitionLabelColor||i.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${i.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node .fork-join { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node circle.state-end { + fill: ${i.innerEndBackground}; + stroke: ${i.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${i.compositeBackground||i.background}; + // stroke: ${i.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${i.stateBkg||i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${i.lineColor}; +} + +.statediagram-cluster rect { + fill: ${i.compositeTitleBackground}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${i.stateLabelColor}; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${i.stateBorder||i.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${i.compositeBackground||i.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${i.altBackground?i.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${i.altBackground?i.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${i.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${i.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${i.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${i.lineColor}; + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`,yge={},jzt=(i,a)=>{yge[i]=a},$zt=i=>yge[i],yFe=()=>Object.keys(yge),Hzt={get:$zt,set:jzt,keys:yFe,size:()=>yFe().length},zzt=i=>i.append("circle").attr("class","start-state").attr("r",Tt().state.sizeUnit).attr("cx",Tt().state.padding+Tt().state.sizeUnit).attr("cy",Tt().state.padding+Tt().state.sizeUnit),Gzt=i=>i.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",Tt().state.textHeight).attr("class","divider").attr("x2",Tt().state.textHeight*2).attr("y1",0).attr("y2",0),qzt=(i,a)=>{const f=i.append("text").attr("x",2*Tt().state.padding).attr("y",Tt().state.textHeight+2*Tt().state.padding).attr("font-size",Tt().state.fontSize).attr("class","state-title").text(a.id),p=f.node().getBBox();return i.insert("rect",":first-child").attr("x",Tt().state.padding).attr("y",Tt().state.padding).attr("width",p.width+2*Tt().state.padding).attr("height",p.height+2*Tt().state.padding).attr("rx",Tt().state.radius),f},Vzt=(i,a)=>{const f=function(j,$,V){const Q=j.append("tspan").attr("x",2*Tt().state.padding).text($);V||Q.attr("dy",Tt().state.textHeight)},w=i.append("text").attr("x",2*Tt().state.padding).attr("y",Tt().state.textHeight+1.3*Tt().state.padding).attr("font-size",Tt().state.fontSize).attr("class","state-title").text(a.descriptions[0]).node().getBBox(),y=w.height,b=i.append("text").attr("x",Tt().state.padding).attr("y",y+Tt().state.padding*.4+Tt().state.dividerMargin+Tt().state.textHeight).attr("class","state-description");let E=!0,S=!0;a.descriptions.forEach(function(j){E||(f(b,j,S),S=!1),E=!1});const N=i.append("line").attr("x1",Tt().state.padding).attr("y1",Tt().state.padding+y+Tt().state.dividerMargin/2).attr("y2",Tt().state.padding+y+Tt().state.dividerMargin/2).attr("class","descr-divider"),B=b.node().getBBox(),R=Math.max(B.width,w.width);return N.attr("x2",R+3*Tt().state.padding),i.insert("rect",":first-child").attr("x",Tt().state.padding).attr("y",Tt().state.padding).attr("width",R+2*Tt().state.padding).attr("height",B.height+y+2*Tt().state.padding).attr("rx",Tt().state.radius),i},Uzt=(i,a,f)=>{const p=Tt().state.padding,w=2*Tt().state.padding,y=i.node().getBBox(),b=y.width,E=y.x,S=i.append("text").attr("x",0).attr("y",Tt().state.titleShift).attr("font-size",Tt().state.fontSize).attr("class","state-title").text(a.id),B=S.node().getBBox().width+w;let R=Math.max(B,b);R===b&&(R=R+w);let j;const $=i.node().getBBox();a.doc,j=E-p,B>b&&(j=(b-R)/2+p),Math.abs(E-$.x)b&&(j=E-(B-b)/2);const V=1-Tt().state.textHeight;return i.insert("rect",":first-child").attr("x",j).attr("y",V).attr("class",f?"alt-composit":"composit").attr("width",R).attr("height",$.height+Tt().state.textHeight+Tt().state.titleShift+1).attr("rx","0"),S.attr("x",j+p),B<=b&&S.attr("x",E+(R-w)/2-B/2+p),i.insert("rect",":first-child").attr("x",j).attr("y",Tt().state.titleShift-Tt().state.textHeight-Tt().state.padding).attr("width",R).attr("height",Tt().state.textHeight*3).attr("rx",Tt().state.radius),i.insert("rect",":first-child").attr("x",j).attr("y",Tt().state.titleShift-Tt().state.textHeight-Tt().state.padding).attr("width",R).attr("height",$.height+3+2*Tt().state.textHeight).attr("rx",Tt().state.radius),i},Wzt=i=>(i.append("circle").attr("class","end-state-outer").attr("r",Tt().state.sizeUnit+Tt().state.miniPadding).attr("cx",Tt().state.padding+Tt().state.sizeUnit+Tt().state.miniPadding).attr("cy",Tt().state.padding+Tt().state.sizeUnit+Tt().state.miniPadding),i.append("circle").attr("class","end-state-inner").attr("r",Tt().state.sizeUnit).attr("cx",Tt().state.padding+Tt().state.sizeUnit+2).attr("cy",Tt().state.padding+Tt().state.sizeUnit+2)),Kzt=(i,a)=>{let f=Tt().state.forkWidth,p=Tt().state.forkHeight;if(a.parentId){let w=f;f=p,p=w}return i.append("rect").style("stroke","black").style("fill","black").attr("width",f).attr("height",p).attr("x",Tt().state.padding).attr("y",Tt().state.padding)},Yzt=(i,a,f,p)=>{let w=0;const y=p.append("text");y.style("text-anchor","start"),y.attr("class","noteText");let b=i.replace(/\r\n/g,"
");b=b.replace(/\n/g,"
");const E=b.split(Wa.lineBreakRegex);let S=1.25*Tt().state.noteMargin;for(const N of E){const B=N.trim();if(B.length>0){const R=y.append("tspan");if(R.text(B),S===0){const j=R.node().getBBox();S+=j.height}w+=S,R.attr("x",a+Tt().state.noteMargin),R.attr("y",f+w+1.25*Tt().state.noteMargin)}}return{textWidth:y.node().getBBox().width,textHeight:w}},Xzt=(i,a)=>{a.attr("class","state-note");const f=a.append("rect").attr("x",0).attr("y",Tt().state.padding),p=a.append("g"),{textWidth:w,textHeight:y}=Yzt(i,0,0,p);return f.attr("height",y+2*Tt().state.noteMargin),f.attr("width",w+Tt().state.noteMargin*2),f},kFe=function(i,a){const f=a.id,p={id:f,label:a.id,width:0,height:0},w=i.append("g").attr("id",f).attr("class","stateGroup");a.type==="start"&&zzt(w),a.type==="end"&&Wzt(w),(a.type==="fork"||a.type==="join")&&Kzt(w,a),a.type==="note"&&Xzt(a.note.text,w),a.type==="divider"&&Gzt(w),a.type==="default"&&a.descriptions.length===0&&qzt(w,a),a.type==="default"&&a.descriptions.length>0&&Vzt(w,a);const y=w.node().getBBox();return p.width=y.width+2*Tt().state.padding,p.height=y.height+2*Tt().state.padding,Hzt.set(f,p),p};let xFe=0;const Qzt=function(i,a,f){const p=function(S){switch(S){case D5.relationType.AGGREGATION:return"aggregation";case D5.relationType.EXTENSION:return"extension";case D5.relationType.COMPOSITION:return"composition";case D5.relationType.DEPENDENCY:return"dependency"}};a.points=a.points.filter(S=>!Number.isNaN(S.y));const w=a.points,y=WE().x(function(S){return S.x}).y(function(S){return S.y}).curve(SA),b=i.append("path").attr("d",y(w)).attr("id","edge"+xFe).attr("class","transition");let E="";if(Tt().state.arrowMarkerAbsolute&&(E=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,E=E.replace(/\(/g,"\\("),E=E.replace(/\)/g,"\\)")),b.attr("marker-end","url("+E+"#"+p(D5.relationType.DEPENDENCY)+"End)"),f.title!==void 0){const S=i.append("g").attr("class","stateLabel"),{x:N,y:B}=co.calcLabelPosition(a.points),R=Wa.getRows(f.title);let j=0;const $=[];let V=0,Q=0;for(let se=0;se<=R.length;se++){const ge=S.append("text").attr("text-anchor","middle").text(R[se]).attr("x",N).attr("y",B+j),ye=ge.node().getBBox();V=Math.max(V,ye.width),Q=Math.min(Q,ye.x),Fe.info(ye.x,N,B+j),j===0&&(j=ge.node().getBBox().height,Fe.info("Title height",j,B)),$.push(ge)}let oe=j*R.length;if(R.length>1){const se=(R.length-1)*j*.5;$.forEach((ge,ye)=>ge.attr("y",B+ye*j-se)),oe=j*R.length}const ce=S.node().getBBox();S.insert("rect",":first-child").attr("class","box").attr("x",N-V/2-Tt().state.padding/2).attr("y",B-oe/2-Tt().state.padding/2-3.5).attr("width",V+Tt().state.padding).attr("height",oe+Tt().state.padding),Fe.info(ce)}xFe++};let B2;const kge={},Zzt=function(){},Jzt=function(i){i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},eGt=function(i,a,f,p){B2=Tt().state;const w=Tt().securityLevel;let y;w==="sandbox"&&(y=Cr("#i"+a));const b=Cr(w==="sandbox"?y.nodes()[0].contentDocument.body:"body"),E=w==="sandbox"?y.nodes()[0].contentDocument:document;Fe.debug("Rendering diagram "+i);const S=b.select(`[id='${a}']`);Jzt(S),new zf({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel(function(){return{}});const B=p.db.getRootDoc();EFe(B,S,void 0,!1,b,E,p);const R=B2.padding,j=S.node().getBBox(),$=j.width+R*2,V=j.height+R*2,Q=$*1.75;Vw(S,V,Q,B2.useMaxWidth),S.attr("viewBox",`${j.x-B2.padding} ${j.y-B2.padding} `+$+" "+V)},tGt=i=>i?i.length*B2.fontSizeFactor:1,EFe=(i,a,f,p,w,y,b)=>{const E=new zf({compound:!0,multigraph:!0});let S,N=!0;for(S=0;S{const ye=ge.parentElement;let ke=0,Ae=0;ye&&(ye.parentElement&&(ke=ye.parentElement.getBBox().width),Ae=parseInt(ye.getAttribute("data-x-shift"),10),Number.isNaN(Ae)&&(Ae=0)),ge.setAttribute("x1",0-Ae+8),ge.setAttribute("x2",ke-Ae-8)})):Fe.debug("No Node "+ce+": "+JSON.stringify(E.node(ce)))});let Q=V.getBBox();E.edges().forEach(function(ce){ce!==void 0&&E.edge(ce)!==void 0&&(Fe.debug("Edge "+ce.v+" -> "+ce.w+": "+JSON.stringify(E.edge(ce))),Qzt(a,E.edge(ce),E.edge(ce).relation))}),Q=V.getBBox();const oe={id:f||"root",label:f||"root",width:0,height:0};return oe.width=Q.width+2*B2.padding,oe.height=Q.height+2*B2.padding,Fe.debug("Doc rendered",oe,E),oe},nGt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:sFe,db:D5,renderer:{setConf:Zzt,draw:eGt},styles:mFe,init:i=>{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,D5.clear()}}},Symbol.toStringTag,{value:"Module"})),zK="rect",xge="rectWithTitle",rGt="start",iGt="end",sGt="divider",aGt="roundedWithTitle",oGt="note",cGt="noteGroup",fL="statediagram",uGt=`${fL}-state`,TFe="transition",lGt="note",hGt=`${TFe} note-edge`,fGt=`${fL}-${lGt}`,dGt=`${fL}-cluster`,gGt=`${fL}-cluster-alt`,_Fe="parent",CFe="note",pGt="state",Ege="----",bGt=`${Ege}${CFe}`,SFe=`${Ege}${_Fe}`,AFe="fill:none",LFe="fill: #333",MFe="c",DFe="text",IFe="normal";let GK={},ux=0;const vGt=function(i){const a=Object.keys(i);for(const f of a)i[f]},wGt=function(i,a){Fe.trace("Extracting classes"),a.db.clear();try{return a.parser.parse(i),a.db.extract(a.db.getRootDocV2()),a.db.getClasses()}catch(f){return f}};function mGt(i){return i==null?"":i.classes?i.classes.join(" "):""}function Tge(i="",a=0,f="",p=Ege){const w=f!==null&&f.length>0?`${p}${f}`:"";return`${pGt}-${i}${w}-${a}`}const FP=(i,a,f,p,w,y)=>{const b=f.id,E=mGt(p[b]);if(b!=="root"){let S=zK;f.start===!0&&(S=rGt),f.start===!1&&(S=iGt),f.type!==NP&&(S=f.type),GK[b]||(GK[b]={id:b,shape:S,description:Wa.sanitizeText(b,Tt()),classes:`${E} ${uGt}`});const N=GK[b];f.description&&(Array.isArray(N.description)?(N.shape=xge,N.description.push(f.description)):N.description.length>0?(N.shape=xge,N.description===b?N.description=[f.description]:N.description=[N.description,f.description]):(N.shape=zK,N.description=f.description),N.description=Wa.sanitizeTextOrArray(N.description,Tt())),N.description.length===1&&N.shape===xge&&(N.shape=zK),!N.type&&f.doc&&(Fe.info("Setting cluster for ",b,_ge(f)),N.type="group",N.dir=_ge(f),N.shape=f.type===aFe?sGt:aGt,N.classes=N.classes+" "+dGt+" "+(y?gGt:""));const B={labelStyle:"",shape:N.shape,labelText:N.description,classes:N.classes,style:"",id:b,dir:N.dir,domId:Tge(b,ux),type:N.type,padding:15};if(B.centerLabel=!0,f.note){const R={labelStyle:"",shape:oGt,labelText:f.note.text,classes:fGt,style:"",id:b+bGt+"-"+ux,domId:Tge(b,ux,CFe),type:N.type,padding:15},j={labelStyle:"",shape:cGt,labelText:f.note.text,classes:N.classes,style:"",id:b+SFe,domId:Tge(b,ux,_Fe),type:"group",padding:0};ux++;const $=b+SFe;i.setNode($,j),i.setNode(R.id,R),i.setNode(b,B),i.setParent(b,$),i.setParent(R.id,$);let V=b,Q=R.id;f.note.position==="left of"&&(V=R.id,Q=b),i.setEdge(V,Q,{arrowhead:"none",arrowType:"",style:AFe,labelStyle:"",classes:hGt,arrowheadStyle:LFe,labelpos:MFe,labelType:DFe,thickness:IFe})}else i.setNode(b,B)}a&&a.id!=="root"&&(Fe.trace("Setting node ",b," to be child of its parent ",a.id),i.setParent(b,a.id)),f.doc&&(Fe.trace("Adding nodes children "),yGt(i,f,f.doc,p,w,!y))},yGt=(i,a,f,p,w,y)=>{Fe.trace("items",f),f.forEach(b=>{switch(b.stmt){case RK:FP(i,a,b,p,w,y);break;case NP:FP(i,a,b,p,w,y);break;case gge:{FP(i,a,b.state1,p,w,y),FP(i,a,b.state2,p,w,y);const E={id:"edge"+ux,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:AFe,labelStyle:"",label:Wa.sanitizeText(b.description,Tt()),arrowheadStyle:LFe,labelpos:MFe,labelType:DFe,thickness:IFe,classes:TFe};i.setEdge(b.state1.id,b.state2.id,E,ux),ux++}break}})},_ge=(i,a=bzt)=>{let f=a;if(i.doc)for(let p=0;p{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,D5.clear()}}},Symbol.toStringTag,{value:"Module"}));var Cge=function(){var i=function(Q,oe,ce,se){for(ce=ce||{},se=Q.length;se--;ce[Q[se]]=oe);return ce},a=[1,2],f=[1,5],p=[6,9,11,17,18,20,22,23,24,26],w=[1,15],y=[1,16],b=[1,17],E=[1,18],S=[1,19],N=[1,20],B=[1,24],R=[4,6,9,11,17,18,20,22,23,24,26],j={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,taskName:24,taskData:25,open_directive:26,type_directive:27,arg_directive:28,close_directive:29,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",24:"taskName",25:"taskData",26:"open_directive",27:"type_directive",28:"arg_directive",29:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(oe,ce,se,ge,ye,ke,Ae){var de=ke.length-1;switch(ye){case 1:return ke[de-1];case 3:this.$=[];break;case 4:ke[de-1].push(ke[de]),this.$=ke[de-1];break;case 5:case 6:this.$=ke[de];break;case 7:case 8:this.$=[];break;case 11:ge.setDiagramTitle(ke[de].substr(6)),this.$=ke[de].substr(6);break;case 12:this.$=ke[de].trim(),ge.setAccTitle(this.$);break;case 13:case 14:this.$=ke[de].trim(),ge.setAccDescription(this.$);break;case 15:ge.addSection(ke[de].substr(8)),this.$=ke[de].substr(8);break;case 16:ge.addTask(ke[de-1],ke[de]),this.$="task";break;case 18:ge.parseDirective("%%{","open_directive");break;case 19:ge.parseDirective(ke[de],"type_directive");break;case 20:ke[de]=ke[de].trim().replace(/'/g,'"'),ge.parseDirective(ke[de],"arg_directive");break;case 21:ge.parseDirective("}%%","close_directive","journey");break}},table:[{3:1,4:a,7:3,12:4,26:f},{1:[3]},i(p,[2,3],{5:6}),{3:7,4:a,7:3,12:4,26:f},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:w,18:y,20:b,22:E,23:S,24:N,26:f},{1:[2,2]},{14:22,15:[1,23],29:B},i([15,29],[2,19]),i(p,[2,8],{1:[2,1]}),i(p,[2,4]),{7:21,10:25,12:4,17:w,18:y,20:b,22:E,23:S,24:N,26:f},i(p,[2,6]),i(p,[2,7]),i(p,[2,11]),{19:[1,26]},{21:[1,27]},i(p,[2,14]),i(p,[2,15]),{25:[1,28]},i(p,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},i(p,[2,5]),i(p,[2,12]),i(p,[2,13]),i(p,[2,16]),i(R,[2,9]),{14:32,29:B},{29:[2,20]},{11:[1,33]},i(R,[2,10])],defaultActions:{5:[2,18],7:[2,2],24:[2,21],31:[2,20]},parseError:function(oe,ce){if(ce.recoverable)this.trace(oe);else{var se=new Error(oe);throw se.hash=ce,se}},parse:function(oe){var ce=this,se=[0],ge=[],ye=[null],ke=[],Ae=this.table,de="",ve=0,te=0,xe=2,De=1,he=ke.slice.call(arguments,1),Ie=Object.create(this.lexer),ee={yy:{}};for(var rt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,rt)&&(ee.yy[rt]=this.yy[rt]);Ie.setInput(oe,ee.yy),ee.yy.lexer=Ie,ee.yy.parser=this,typeof Ie.yylloc>"u"&&(Ie.yylloc={});var me=Ie.yylloc;ke.push(me);var gt=Ie.options&&Ie.options.ranges;typeof ee.yy.parseError=="function"?this.parseError=ee.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pe(){var Dt;return Dt=ge.pop()||Ie.lex()||De,typeof Dt!="number"&&(Dt instanceof Array&&(ge=Dt,Dt=ge.pop()),Dt=ce.symbols_[Dt]||Dt),Dt}for(var Et,wt,jt,At,Bt={},cn,Nn,Ot,oi;;){if(wt=se[se.length-1],this.defaultActions[wt]?jt=this.defaultActions[wt]:((Et===null||typeof Et>"u")&&(Et=pe()),jt=Ae[wt]&&Ae[wt][Et]),typeof jt>"u"||!jt.length||!jt[0]){var kt="";oi=[];for(cn in Ae[wt])this.terminals_[cn]&&cn>xe&&oi.push("'"+this.terminals_[cn]+"'");Ie.showPosition?kt="Parse error on line "+(ve+1)+`: +`+Ie.showPosition()+` +Expecting `+oi.join(", ")+", got '"+(this.terminals_[Et]||Et)+"'":kt="Parse error on line "+(ve+1)+": Unexpected "+(Et==De?"end of input":"'"+(this.terminals_[Et]||Et)+"'"),this.parseError(kt,{text:Ie.match,token:this.terminals_[Et]||Et,line:Ie.yylineno,loc:me,expected:oi})}if(jt[0]instanceof Array&&jt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+wt+", token: "+Et);switch(jt[0]){case 1:se.push(Et),ye.push(Ie.yytext),ke.push(Ie.yylloc),se.push(jt[1]),Et=null,te=Ie.yyleng,de=Ie.yytext,ve=Ie.yylineno,me=Ie.yylloc;break;case 2:if(Nn=this.productions_[jt[1]][1],Bt.$=ye[ye.length-Nn],Bt._$={first_line:ke[ke.length-(Nn||1)].first_line,last_line:ke[ke.length-1].last_line,first_column:ke[ke.length-(Nn||1)].first_column,last_column:ke[ke.length-1].last_column},gt&&(Bt._$.range=[ke[ke.length-(Nn||1)].range[0],ke[ke.length-1].range[1]]),At=this.performAction.apply(Bt,[de,te,ve,ee.yy,jt[1],ye,ke].concat(he)),typeof At<"u")return At;Nn&&(se=se.slice(0,-1*Nn*2),ye=ye.slice(0,-1*Nn),ke=ke.slice(0,-1*Nn)),se.push(this.productions_[jt[1]][0]),ye.push(Bt.$),ke.push(Bt._$),Ot=Ae[se[se.length-2]][se[se.length-1]],se.push(Ot);break;case 3:return!0}}return!0}},$=function(){var Q={EOF:1,parseError:function(ce,se){if(this.yy.parser)this.yy.parser.parseError(ce,se);else throw new Error(ce)},setInput:function(oe,ce){return this.yy=ce||this.yy||{},this._input=oe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var oe=this._input[0];this.yytext+=oe,this.yyleng++,this.offset++,this.match+=oe,this.matched+=oe;var ce=oe.match(/(?:\r\n?|\n).*/g);return ce?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),oe},unput:function(oe){var ce=oe.length,se=oe.split(/(?:\r\n?|\n)/g);this._input=oe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ce),this.offset-=ce;var ge=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),se.length-1&&(this.yylineno-=se.length-1);var ye=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:se?(se.length===ge.length?this.yylloc.first_column:0)+ge[ge.length-se.length].length-se[0].length:this.yylloc.first_column-ce},this.options.ranges&&(this.yylloc.range=[ye[0],ye[0]+this.yyleng-ce]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(oe){this.unput(this.match.slice(oe))},pastInput:function(){var oe=this.matched.substr(0,this.matched.length-this.match.length);return(oe.length>20?"...":"")+oe.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var oe=this.match;return oe.length<20&&(oe+=this._input.substr(0,20-oe.length)),(oe.substr(0,20)+(oe.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var oe=this.pastInput(),ce=new Array(oe.length+1).join("-");return oe+this.upcomingInput()+` +`+ce+"^"},test_match:function(oe,ce){var se,ge,ye;if(this.options.backtrack_lexer&&(ye={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ye.yylloc.range=this.yylloc.range.slice(0))),ge=oe[0].match(/(?:\r\n?|\n).*/g),ge&&(this.yylineno+=ge.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ge?ge[ge.length-1].length-ge[ge.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+oe[0].length},this.yytext+=oe[0],this.match+=oe[0],this.matches=oe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(oe[0].length),this.matched+=oe[0],se=this.performAction.call(this,this.yy,this,ce,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),se)return se;if(this._backtrack){for(var ke in ye)this[ke]=ye[ke];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var oe,ce,se,ge;this._more||(this.yytext="",this.match="");for(var ye=this._currentRules(),ke=0;kece[0].length)){if(ce=se,ge=ke,this.options.backtrack_lexer){if(oe=this.test_match(se,ye[ke]),oe!==!1)return oe;if(this._backtrack){ce=!1;continue}else return!1}else if(!this.options.flex)break}return ce?(oe=this.test_match(ce,ye[ge]),oe!==!1?oe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ce=this.next();return ce||this.lex()},begin:function(ce){this.conditionStack.push(ce)},popState:function(){var ce=this.conditionStack.length-1;return ce>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ce){return ce=this.conditionStack.length-1-Math.abs(ce||0),ce>=0?this.conditionStack[ce]:"INITIAL"},pushState:function(ce){this.begin(ce)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(ce,se,ge,ye){switch(ge){case 0:return this.begin("open_directive"),26;case 1:return this.begin("type_directive"),27;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),29;case 4:return 28;case 5:break;case 6:break;case 7:return 11;case 8:break;case 9:break;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 24;case 21:return 25;case 22:return 15;case 23:return 6;case 24:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],inclusive:!0}}};return Q}();j.lexer=$;function V(){this.yy={}}return V.prototype=j,j.Parser=V,new V}();Cge.parser=Cge;const xGt=Cge;let dL="";const Sge=[],jP=[],$P=[],EGt=function(i,a,f){rd.parseDirective(this,i,a,f)},TGt=function(){Sge.length=0,jP.length=0,dL="",$P.length=0,rp()},_Gt=function(i){dL=i,Sge.push(i)},CGt=function(){return Sge},SGt=function(){let i=OFe();const a=100;let f=0;for(;!i&&f{f.people&&i.push(...f.people)}),[...new Set(i)].sort()},LGt=function(i,a){const f=a.substr(1).split(":");let p=0,w=[];f.length===1?(p=Number(f[0]),w=[]):(p=Number(f[0]),w=f[1].split(","));const y=w.map(E=>E.trim()),b={section:dL,type:dL,people:y,task:i,score:p};$P.push(b)},MGt=function(i){const a={section:dL,type:dL,description:i,task:i,classes:[]};jP.push(a)},OFe=function(){const i=function(f){return $P[f].processed};let a=!0;for(const[f,p]of $P.entries())i(f),a=a&&p.processed;return a},NFe={parseDirective:EGt,getConfig:()=>Tt().journey,clear:TGt,setDiagramTitle:Uw,getDiagramTitle:Ww,setAccTitle:ip,getAccTitle:L2,setAccDescription:M2,getAccDescription:D2,addSection:_Gt,getSections:CGt,getTasks:SGt,addTask:LGt,addTaskOrg:MGt,getActors:function(){return AGt()}},DGt=i=>`.label { + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + color: ${i.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${i.textColor} + } + + .legend { + fill: ${i.textColor}; + } + + .label text { + fill: #333; + } + .label { + color: ${i.textColor} + } + + .face { + ${i.faceColor?`fill: ${i.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${i.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${i.fillType0?`fill: ${i.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${i.fillType0?`fill: ${i.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${i.fillType0?`fill: ${i.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${i.fillType0?`fill: ${i.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${i.fillType0?`fill: ${i.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${i.fillType0?`fill: ${i.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${i.fillType0?`fill: ${i.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${i.fillType0?`fill: ${i.fillType7}`:""}; + } + + .actor-0 { + ${i.actor0?`fill: ${i.actor0}`:""}; + } + .actor-1 { + ${i.actor1?`fill: ${i.actor1}`:""}; + } + .actor-2 { + ${i.actor2?`fill: ${i.actor2}`:""}; + } + .actor-3 { + ${i.actor3?`fill: ${i.actor3}`:""}; + } + .actor-4 { + ${i.actor4?`fill: ${i.actor4}`:""}; + } + .actor-5 { + ${i.actor5?`fill: ${i.actor5}`:""}; + } +`,qK=function(i,a){const f=i.append("rect");return f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.class!==void 0&&f.attr("class",a.class),f},IGt=function(i,a){const p=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function y(S){const N=CA().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",N).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(S){const N=CA().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",N).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(S){S.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?y(w):a.score<3?b(w):E(w),p},PFe=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},BFe=function(i,a){const f=a.text.replace(//gi," "),p=i.append("text");p.attr("x",a.x),p.attr("y",a.y),p.attr("class","legend"),p.style("text-anchor",a.anchor),a.class!==void 0&&p.attr("class",a.class);const w=p.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),p},OGt=function(i,a){function f(w,y,b,E,S){return w+","+y+" "+(w+b)+","+y+" "+(w+b)+","+(y+E-S)+" "+(w+b-S*1.2)+","+(y+E)+" "+w+","+(y+E)}const p=i.append("polygon");p.attr("points",f(a.x,a.y,50,20,7)),p.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,BFe(i,a)},NGt=function(i,a,f){const p=i.append("g"),w=Age();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width*a.taskCount+f.diagramMarginX*(a.taskCount-1),w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,qK(p,w),FFe(f)(a.text,p,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let RFe=-1;const PGt=function(i,a,f){const p=a.x+f.width/2,w=i.append("g");RFe++;const y=300+5*30;w.append("line").attr("id","task"+RFe).attr("x1",p).attr("y1",a.y).attr("x2",p).attr("y2",y).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),IGt(w,{cx:p,cy:300+(5-a.score)*30,score:a.score});const b=Age();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,qK(w,b);let E=a.x+14;a.people.forEach(S=>{const N=a.actors[S].color,B={cx:E,cy:a.y,r:7,fill:N,stroke:"#000",title:S,pos:a.actors[S].position};PFe(w,B),E+=10}),FFe(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},BGt=function(i,a){qK(i,{x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,class:"rect"}).lower()},RGt=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},Age=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},FFe=function(){function i(w,y,b,E,S,N,B,R){const j=y.append("text").attr("x",b+S/2).attr("y",E+N/2+5).style("font-color",R).style("text-anchor","middle").text(w);p(j,B)}function a(w,y,b,E,S,N,B,R,j){const{taskFontSize:$,taskFontFamily:V}=R,Q=w.split(//gi);for(let oe=0;oe{const w=I5[p].color,y={cx:20,cy:f,r:7,fill:w,stroke:"#000",pos:I5[p].position};HP.drawCircle(i,y);const b={x:40,y:f+7,fill:"#666",text:p,textMargin:a.boxTextMargin|5};HP.drawText(i,b),f+=20})}const VK=Tt().journey,b9=VK.leftMargin,$Gt=function(i,a,f,p){const w=Tt().journey;p.db.clear(),p.parser.parse(i+` +`);const y=Tt().securityLevel;let b;y==="sandbox"&&(b=Cr("#i"+a));const E=Cr(y==="sandbox"?b.nodes()[0].contentDocument.body:"body");Qb.init();const S=E.select("#"+a);HP.initGraphics(S);const N=p.db.getTasks(),B=p.db.getDiagramTitle(),R=p.db.getActors();for(const ce in I5)delete I5[ce];let j=0;R.forEach(ce=>{I5[ce]={color:w.actorColours[j%w.actorColours.length],position:j},j++}),jGt(S),Qb.insert(0,0,b9,Object.keys(I5).length*50),HGt(S,N,0);const $=Qb.getBounds();B&&S.append("text").text(B).attr("x",b9).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const V=$.stopy-$.starty+2*w.diagramMarginY,Q=b9+$.stopx+2*w.diagramMarginX;Vw(S,V,Q,w.useMaxWidth),S.append("line").attr("x1",b9).attr("y1",w.height*4).attr("x2",Q-b9-4).attr("y2",w.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const oe=B?70:0;S.attr("viewBox",`${$.startx} -25 ${Q} ${V+oe}`),S.attr("preserveAspectRatio","xMinYMin meet"),S.attr("height",V+oe+25)},Qb={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(i,a,f,p){i[a]===void 0?i[a]=f:i[a]=p(f,i[a])},updateBounds:function(i,a,f,p){const w=Tt().journey,y=this;let b=0;function E(S){return function(B){b++;const R=y.sequenceItems.length-b+1;y.updateVal(B,"starty",a-R*w.boxMargin,Math.min),y.updateVal(B,"stopy",p+R*w.boxMargin,Math.max),y.updateVal(Qb.data,"startx",i-R*w.boxMargin,Math.min),y.updateVal(Qb.data,"stopx",f+R*w.boxMargin,Math.max),S!=="activation"&&(y.updateVal(B,"startx",i-R*w.boxMargin,Math.min),y.updateVal(B,"stopx",f+R*w.boxMargin,Math.max),y.updateVal(Qb.data,"starty",a-R*w.boxMargin,Math.min),y.updateVal(Qb.data,"stopy",p+R*w.boxMargin,Math.max))}}this.sequenceItems.forEach(E())},insert:function(i,a,f,p){const w=Math.min(i,f),y=Math.max(i,f),b=Math.min(a,p),E=Math.max(a,p);this.updateVal(Qb.data,"startx",w,Math.min),this.updateVal(Qb.data,"starty",b,Math.min),this.updateVal(Qb.data,"stopx",y,Math.max),this.updateVal(Qb.data,"stopy",E,Math.max),this.updateBounds(w,b,y,E)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Lge=VK.sectionFills,jFe=VK.sectionColours,HGt=function(i,a,f){const p=Tt().journey;let w="";const y=p.height*2+p.diagramMarginY,b=f+y;let E=0,S="#CCC",N="black",B=0;for(const[R,j]of a.entries()){if(w!==j.section){S=Lge[E%Lge.length],B=E%Lge.length,N=jFe[E%jFe.length];let V=0;const Q=j.section;for(let ce=R;ce(I5[Q]&&(V[Q]=I5[Q]),V),{});j.x=R*p.taskMargin+R*p.width+b9,j.y=b,j.width=p.diagramMarginX,j.height=p.diagramMarginY,j.colour=N,j.fill=S,j.num=B,j.actors=$,HP.drawTask(i,j,p),Qb.insert(j.x,j.y,j.x+j.width+p.taskMargin,300+5*30)}},$Fe={setConf:FGt,draw:$Gt},zGt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:xGt,db:NFe,renderer:$Fe,styles:DGt,init:i=>{$Fe.setConf(i.journey),NFe.clear()}}},Symbol.toStringTag,{value:"Module"})),GGt=(i,a,f)=>{const{parentById:p}=f,w=new Set;let y=i;for(;y;){if(w.add(y),y===a)return y;y=p[y]}for(y=a;y;){if(w.has(y))return y;y=p[y]}return"root"};function UK(i){throw new Error('Could not dynamically require "'+i+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Mge={},qGt={get exports(){return Mge},set exports(i){Mge=i}};(function(i,a){(function(f){i.exports=f()})(function(){return function(){function f(p,w,y){function b(N,B){if(!w[N]){if(!p[N]){var R=typeof UK=="function"&&UK;if(!B&&R)return R(N,!0);if(E)return E(N,!0);var j=new Error("Cannot find module '"+N+"'");throw j.code="MODULE_NOT_FOUND",j}var $=w[N]={exports:{}};p[N][0].call($.exports,function(V){var Q=p[N][1][V];return b(Q||V)},$,$.exports,f,p,w,y)}return w[N].exports}for(var E=typeof UK=="function"&&UK,S=0;S0&&arguments[0]!==void 0?arguments[0]:{},j=R.defaultLayoutOptions,$=j===void 0?{}:j,V=R.algorithms,Q=V===void 0?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:V,oe=R.workerFactory,ce=R.workerUrl;if(b(this,N),this.defaultLayoutOptions=$,this.initialized=!1,typeof ce>"u"&&typeof oe>"u")throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var se=oe;typeof ce<"u"&&typeof oe>"u"&&(se=function(ke){return new Worker(ke)});var ge=se(ce);if(typeof ge.postMessage!="function")throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new S(ge),this.worker.postMessage({cmd:"register",algorithms:Q}).then(function(ye){return B.initialized=!0}).catch(console.err)}return y(N,[{key:"layout",value:function(R){var j=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},$=j.layoutOptions,V=$===void 0?this.defaultLayoutOptions:$,Q=j.logging,oe=Q===void 0?!1:Q,ce=j.measureExecutionTime,se=ce===void 0?!1:ce;return R?this.worker.postMessage({cmd:"layout",graph:R,layoutOptions:V,options:{logging:oe,measureExecutionTime:se}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),N}();w.default=E;var S=function(){function N(B){var R=this;if(b(this,N),B===void 0)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=B,this.worker.onmessage=function(j){setTimeout(function(){R.receive(R,j)},0)}}return y(N,[{key:"postMessage",value:function(R){var j=this.id||0;this.id=j+1,R.id=j;var $=this;return new Promise(function(V,Q){$.resolvers[j]=function(oe,ce){oe?($.convertGwtStyleError(oe),Q(oe)):V(ce)},$.worker.postMessage(R)})}},{key:"receive",value:function(R,j){var $=j.data,V=R.resolvers[$.id];V&&(delete R.resolvers[$.id],$.error?V($.error):V(null,$.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(R){if(R){var j=R.__java$exception;j&&(j.cause&&j.cause.backingJsObject&&(R.cause=j.cause.backingJsObject,this.convertGwtStyleError(R.cause)),delete R.__java$exception)}}}]),N}()},{}],2:[function(f,p,w){(function(y){(function(){var b;typeof window<"u"?b=window:typeof y<"u"?b=y:typeof self<"u"&&(b=self);var E;function S(){}function N(){}function B(){}function R(){}function j(){}function $(){}function V(){}function Q(){}function oe(){}function ce(){}function se(){}function ge(){}function ye(){}function ke(){}function Ae(){}function de(){}function ve(){}function te(){}function xe(){}function De(){}function he(){}function Ie(){}function ee(){}function rt(){}function me(){}function gt(){}function pe(){}function Et(){}function wt(){}function jt(){}function At(){}function Bt(){}function cn(){}function Nn(){}function Ot(){}function oi(){}function kt(){}function Dt(){}function vt(){}function Nt(){}function ze(){}function Xe(){}function Lt(){}function Ge(){}function Bn(){}function Oe(){}function Ri(){}function tn(){}function hi(){}function Sr(){}function Zn(){}function Xn(){}function ir(){}function Hn(){}function tr(){}function ha(){}function Zs(){}function ns(){}function Hi(){}function Js(){}function Pc(){}function Ga(){}function ws(){}function Oi(){}function Er(){}function br(){}function Dr(){}function Vn(){}function qi(){}function yn(){}function Bc(){}function jn(){}function Ms(){}function Pa(){}function Ta(){}function _a(){}function ka(){}function Qi(){}function ea(){}function Ca(){}function Sa(){}function Ka(){}function cg(){}function Gc(){}function Dh(){}function Es(){}function lp(){}function sd(){}function sh(){}function Ai(){}function nn(){}function Tr(){}function ai(){}function Ns(){}function mc(){}function yu(){}function Mo(){}function ku(){}function Ih(){}function qf(){}function lx(){}function ad(){}function b3(){}function bL(){}function im(){}function ug(){}function rs(){}function Ps(){}function Aa(){}function pi(){}function Rc(){}function _t(){}function hp(){}function Gt(){}function ff(){}function sm(){}function m9(){}function fp(){}function N5(){}function ah(){}function od(){}function P5(){}function B5(){}function y9(){}function vL(){}function v1(){}function dp(){}function cd(){}function am(){}function ev(){}function om(){}function yc(){}function hx(){}function Vo(){}function fx(){}function oh(){}function QK(){}function k9(){}function ZK(){}function GP(){}function Vf(){}function cm(){}function wL(){}function qP(){}function gp(){}function um(){}function JK(){}function R2(){}function eY(){}function tY(){}function R5(){}function x9(){}function VP(){}function dx(){}function nY(){}function gx(){}function rY(){}function iY(){}function sY(){}function aY(){}function oY(){}function cY(){}function uY(){}function lY(){}function hY(){}function fY(){}function dY(){}function mL(){}function gY(){}function pY(){}function E9(){}function UP(){}function F5(){}function bY(){}function vY(){}function wY(){}function mY(){}function yY(){}function T9(){}function yL(){}function WP(){}function v3(){}function w3(){}function kY(){}function df(){}function j5(){}function xY(){}function px(){}function zd(){}function EY(){}function TY(){}function _Y(){}function CY(){}function _9(){}function kL(){}function KP(){}function xL(){}function $5(){}function SY(){}function YP(){}function XP(){}function AY(){}function LY(){}function MY(){}function DY(){}function IY(){}function OY(){}function Gd(){}function tv(){}function NY(){}function QP(){}function ZP(){}function PY(){}function m3(){}function bx(){}function EL(){}function lm(){}function vx(){}function BY(){}function C9(){}function ud(){}function JP(){}function TL(){}function wx(){}function _L(){}function eB(){}function RY(){}function CL(){}function FY(){}function jY(){}function tB(){}function H5(){}function nB(){}function z5(){}function $Y(){}function SL(){}function HY(){}function zY(){}function GY(){}function qY(){}function rB(){}function VY(){}function UY(){}function WY(){}function iB(){}function KY(){}function YY(){}function XY(){}function sB(){}function QY(){}function ZY(){}function aB(){}function oB(){}function cB(){}function JY(){}function eX(){}function mx(){}function G5(){}function S9(){}function tX(){}function AL(){}function A9(){}function LL(){}function uB(){}function lB(){}function nX(){}function rX(){}function iX(){}function hB(){}function fB(){}function sX(){}function aX(){}function oX(){}function cX(){}function uX(){}function dB(){}function lX(){}function hX(){}function fX(){}function dX(){}function gB(){}function L9(){}function gX(){}function pX(){}function pB(){}function bX(){}function vX(){}function wX(){}function mX(){}function yX(){}function kX(){}function bB(){}function xX(){}function vB(){}function EX(){}function TX(){}function _X(){}function M9(){}function CX(){}function D9(){}function SX(){}function wB(){}function mB(){}function yB(){}function kB(){}function nv(){}function xB(){}function EB(){}function TB(){}function _B(){}function AX(){}function q5(){}function I9(){}function y3(){}function LX(){}function MX(){}function O9(){}function DX(){}function IX(){}function OX(){}function NX(){}function PX(){}function BX(){}function RX(){}function FX(){}function jX(){}function $X(){}function HX(){}function ML(){}function CB(){}function zX(){}function GX(){}function qX(){}function SB(){}function VX(){}function UX(){}function WX(){}function KX(){}function YX(){}function XX(){}function AB(){}function LB(){}function QX(){}function MB(){}function DB(){}function ZX(){}function JX(){}function eQ(){}function DL(){}function tQ(){}function yx(){}function nQ(){}function rQ(){}function iQ(){}function IB(){}function sQ(){}function aQ(){}function oQ(){}function cQ(){}function uQ(){}function lQ(){}function hQ(){}function fQ(){}function dQ(){}function gQ(){}function pQ(){}function bQ(){}function V5(){}function OB(){}function vQ(){}function wQ(){}function mQ(){}function NB(){}function yQ(){}function N9(){}function kQ(){}function xQ(){}function EQ(){}function TQ(){}function _Q(){}function CQ(){}function SQ(){}function AQ(){}function LQ(){}function MQ(){}function U5(){}function DQ(){}function IQ(){}function OQ(){}function NQ(){}function PQ(){}function BQ(){}function RQ(){}function FQ(){}function P9(){}function jQ(){}function $Q(){}function HQ(){}function zQ(){}function GQ(){}function qQ(){}function VQ(){}function UQ(){}function W5(){}function PB(){}function WQ(){}function IL(){}function KQ(){}function YQ(){}function XQ(){}function QQ(){}function ZQ(){}function JQ(){}function eZ(){}function BB(){}function tZ(){}function RB(){}function nZ(){}function FB(){}function jB(){}function $B(){}function rZ(){}function iZ(){}function B9(){}function OL(){}function R9(){}function sZ(){}function aZ(){}function NL(){}function oZ(){}function cZ(){}function HB(){}function uZ(){}function lZ(){}function hZ(){}function fZ(){}function dZ(){}function gZ(){}function pZ(){}function bZ(){}function vZ(){}function wZ(){}function lg(){}function mZ(){}function hm(){}function zB(){}function yZ(){}function kZ(){}function xZ(){}function EZ(){}function TZ(){}function _Z(){}function CZ(){}function SZ(){}function AZ(){}function Fc(){}function LZ(){}function F9(){}function lc(){}function iu(){}function Ki(){}function PL(){}function MZ(){}function DZ(){}function IZ(){}function K5(){}function fm(){}function Ht(){}function OZ(){}function NZ(){}function PZ(){}function BZ(){}function RZ(){}function GB(){}function FZ(){}function jZ(){}function BL(){}function $Z(){}function rl(){}function Hu(){}function HZ(){}function zZ(){}function GZ(){}function dm(){}function rv(){}function pp(){}function ld(){}function Y5(){}function j9(){}function kx(){}function qB(){}function qZ(){}function xx(){}function VB(){}function VZ(){}function $9(){}function X5(){}function Q5(){}function bp(){}function UB(){}function Ex(){}function WB(){}function KB(){}function Z5(){}function F2(){}function E0(){}function vp(){}function k3(){}function Tx(){}function H9(){}function YB(){}function UZ(){}function XB(){}function QB(){}function ZB(){}function _x(){}function JB(){}function eR(){}function WZ(){}function Cx(){}function Sx(){}function gm(){}function RL(){}function KZ(){}function YZ(){}function XZ(){}function QZ(){}function ZZ(){}function JZ(){}function eJ(){}function tJ(){}function tR(){}function nJ(){}function rJ(){}function iJ(){}function nR(){}function Ax(){}function z9(){}function rR(){}function sJ(){}function iR(){}function sR(){}function aJ(){}function G9(){}function pm(){}function aR(){}function oR(){}function oJ(){}function cJ(){}function q9(){}function cR(){}function uR(){}function kc(){}function uJ(){}function lR(){}function V9(){}function lJ(){}function hJ(){}function U9(){}function hR(){}function W9(){}function K9(){}function Uf(){}function FL(){}function jL(){}function J5(){}function fJ(){}function dJ(){}function gJ(){}function pJ(){}function bm(){}function fR(){}function e6(){}function w1(){}function dR(){}function gR(){}function pR(){}function bR(){}function vR(){}function wR(){}function Wf(){}function xu(){}function bJ(){}function vJ(){}function wJ(){}function Eu(){}function Y9(){}function mR(){}function yR(){}function t6(){}function mJ(){}function Lx(){}function yJ(){}function kR(){}function kJ(){}function xJ(){}function X9(){}function xR(){}function $L(){}function Q9(){}function EJ(){}function TJ(){}function HL(){}function Z9(){}function m1(){}function Mx(){}function _J(){}function Dx(){}function zL(){}function j2(){}function J9(){}function GL(){}function Kf(){}function eT(){}function y1(){}function k1(){}function CJ(){}function SJ(){}function x3(){}function Ix(){}function Ox(){}function tT(){}function AJ(){}function n6(){}function qL(){}function ER(){}function LJ(){}function nT(){kT()}function MJ(){Tie()}function TR(){K_()}function VL(){GH()}function DJ(){m4e()}function rT(){a1()}function IJ(){M3e()}function OJ(){ZD()}function NJ(){vM()}function PJ(){bM()}function BJ(){GM()}function _R(){AGe()}function RJ(){U6()}function FJ(){TF()}function jJ(){jZe()}function CR(){ett()}function $J(){vJe()}function HJ(){NXe()}function iT(){X8()}function zJ(){Xp()}function GJ(){ttt()}function qJ(){SQe()}function VJ(){f6e()}function UJ(){zit()}function WJ(){PXe()}function SR(){pt()}function KJ(){OXe()}function AR(){ntt()}function YJ(){snt()}function UL(){RXe()}function XJ(){xJe()}function LR(){LGe()}function QJ(){e5e()}function MR(){Jm()}function ZJ(){Ltt()}function DR(){nI()}function IR(){Jse()}function OR(){ase()}function WL(){nw()}function E3(){Xme()}function sT(){BXe()}function hd(){Xct()}function NR(){Q4e()}function Nx(){Vse()}function KL(){A$()}function JJ(){XH()}function wp(){bi()}function PR(){hH()}function BR(){i3e()}function RR(){pz()}function ch(){EWe()}function YL(){cie()}function FR(){F5e()}function Px(e){Sn(e)}function aT(e){this.a=e}function Bx(e){this.a=e}function jR(e){this.a=e}function r6(e){this.a=e}function iv(e){this.a=e}function Rx(e){this.a=e}function $R(e){this.a=e}function eee(e){this.a=e}function XL(e){this.a=e}function T3(e){this.a=e}function QL(e){this.a=e}function oT(e){this.a=e}function tee(e){this.a=e}function cT(e){this.a=e}function uT(e){this.a=e}function i6(e){this.a=e}function ZL(e){this.a=e}function JL(e){this.a=e}function nee(e){this.a=e}function ree(e){this.a=e}function iee(e){this.a=e}function HR(e){this.b=e}function see(e){this.c=e}function aee(e){this.a=e}function oee(e){this.a=e}function cee(e){this.a=e}function uee(e){this.a=e}function lee(e){this.a=e}function hee(e){this.a=e}function fee(e){this.a=e}function dee(e){this.a=e}function s6(e){this.a=e}function gee(e){this.a=e}function Fx(e){this.a=e}function Oh(e){this.a=e}function pee(e){this.a=e}function a6(e){this.a=e}function jx(e){this.a=e}function lT(e){this.a=e}function $x(e){this.a=e}function hg(){this.a=[]}function bee(e,t){e.a=t}function jge(e,t){e.a=t}function $ge(e,t){e.b=t}function Hge(e,t){e.b=t}function zge(e,t){e.b=t}function eM(e,t){e.j=t}function Gge(e,t){e.g=t}function qge(e,t){e.i=t}function vee(e,t){e.c=t}function x1(e,t){e.d=t}function wee(e,t){e.d=t}function Vge(e,t){e.c=t}function T0(e,t){e.k=t}function mee(e,t){e.c=t}function zR(e,t){e.c=t}function GR(e,t){e.a=t}function yee(e,t){e.a=t}function Uge(e,t){e.f=t}function Wge(e,t){e.a=t}function sv(e,t){e.b=t}function tM(e,t){e.d=t}function hT(e,t){e.i=t}function qR(e,t){e.o=t}function Kge(e,t){e.r=t}function Yge(e,t){e.a=t}function VR(e,t){e.b=t}function av(e,t){e.e=t}function kee(e,t){e.f=t}function fT(e,t){e.g=t}function o6(e,t){e.e=t}function Xge(e,t){e.f=t}function Hx(e,t){e.f=t}function xee(e,t){e.n=t}function fg(e,t){e.a=t}function Qge(e,t){e.a=t}function _3(e,t){e.c=t}function Eee(e,t){e.c=t}function Tee(e,t){e.d=t}function UR(e,t){e.e=t}function WR(e,t){e.g=t}function _ee(e,t){e.a=t}function zx(e,t){e.c=t}function dT(e,t){e.d=t}function Zge(e,t){e.e=t}function Cee(e,t){e.f=t}function See(e,t){e.j=t}function Aee(e,t){e.a=t}function Jge(e,t){e.b=t}function Ac(e,t){e.a=t}function KR(e){e.b=e.a}function Lee(e){e.c=e.d.d}function c6(e){this.d=e}function dg(e){this.a=e}function vm(e){this.a=e}function nM(e){this.a=e}function E1(e){this.a=e}function u6(e){this.a=e}function Mee(e){this.a=e}function YR(e){this.a=e}function C3(e){this.a=e}function rM(e){this.a=e}function wm(e){this.a=e}function XR(e){this.a=e}function T1(e){this.a=e}function m(e){this.a=e}function g(e){this.a=e}function k(e){this.b=e}function T(e){this.b=e}function A(e){this.b=e}function D(e){this.a=e}function I(e){this.a=e}function F(e){this.a=e}function H(e){this.c=e}function C(e){this.c=e}function G(e){this.c=e}function U(e){this.a=e}function Z(e){this.a=e}function ne(e){this.a=e}function ae(e){this.a=e}function ue(e){this.a=e}function _e(e){this.a=e}function be(e){this.a=e}function Se(e){this.a=e}function Le(e){this.a=e}function Be(e){this.a=e}function Ke(e){this.a=e}function qe(e){this.a=e}function Re(e){this.a=e}function Ze(e){this.a=e}function $e(e){this.a=e}function ot(e){this.a=e}function ut(e){this.a=e}function Je(e){this.a=e}function Ct(e){this.a=e}function lt(e){this.a=e}function un(e){this.a=e}function Rt(e){this.a=e}function $t(e){this.a=e}function bn(e){this.a=e}function Cn(e){this.a=e}function Kn(e){this.a=e}function kn(e){this.a=e}function Wn(e){this.a=e}function sr(e){this.a=e}function yr(e){this.a=e}function hr(e){this.a=e}function nr(e){this.a=e}function fn(e){this.a=e}function vr(e){this.a=e}function gr(e){this.a=e}function ni(e){this.a=e}function Ti(e){this.a=e}function ia(e){this.a=e}function Ba(e){this.a=e}function Li(e){this.a=e}function wi(e){this.a=e}function Ts(e){this.a=e}function Yi(e){this.a=e}function Di(e){this.a=e}function es(e){this.a=e}function eo(e){this.e=e}function sa(e){this.a=e}function Ks(e){this.a=e}function Ar(e){this.a=e}function We(e){this.a=e}function On(e){this.a=e}function Ir(e){this.a=e}function ar(e){this.a=e}function or(e){this.a=e}function qa(e){this.a=e}function qr(e){this.a=e}function is(e){this.a=e}function Uo(e){this.a=e}function qc(e){this.a=e}function uo(e){this.a=e}function Lc(e){this.a=e}function Ra(e){this.a=e}function lo(e){this.a=e}function Sl(e){this.a=e}function Yf(e){this.a=e}function mp(e){this.a=e}function yp(e){this.a=e}function Xf(e){this.a=e}function gg(e){this.a=e}function fd(e){this.a=e}function ov(e){this.a=e}function mm(e){this.a=e}function l6(e){this.a=e}function S3(e){this.a=e}function h6(e){this.a=e}function gT(e){this.a=e}function A3(e){this.a=e}function qd(e){this.a=e}function _1(e){this.a=e}function Vd(e){this.a=e}function pT(e){this.a=e}function $2(e){this.a=e}function QR(e){this.a=e}function Dee(e){this.a=e}function Iee(e){this.a=e}function Oee(e){this.a=e}function Nee(e){this.a=e}function Pee(e){this.a=e}function Bee(e){this.a=e}function Ree(e){this.a=e}function Gx(e){this.a=e}function iM(e){this.a=e}function bT(e){this.a=e}function ZR(e){this.a=e}function JR(e){this.a=e}function Fee(e){this.a=e}function kp(e){this.a=e}function sM(e){this.a=e}function eF(e){this.a=e}function qx(e){this.c=e}function xp(e){this.b=e}function jee(e){this.a=e}function wje(e){this.a=e}function mje(e){this.a=e}function yje(e){this.a=e}function kje(e){this.a=e}function xje(e){this.a=e}function Eje(e){this.a=e}function Tje(e){this.a=e}function _je(e){this.a=e}function Cje(e){this.a=e}function Sje(e){this.a=e}function Aje(e){this.a=e}function Lje(e){this.a=e}function Mje(e){this.a=e}function Dje(e){this.a=e}function Ije(e){this.a=e}function Oje(e){this.a=e}function Nje(e){this.a=e}function Pje(e){this.a=e}function Bje(e){this.a=e}function Rje(e){this.a=e}function Fje(e){this.a=e}function jje(e){this.a=e}function $je(e){this.a=e}function Ep(e){this.a=e}function f6(e){this.a=e}function Hje(e){this.a=e}function zje(e){this.a=e}function Gje(e){this.a=e}function qje(e){this.a=e}function Vje(e){this.a=e}function Uje(e){this.a=e}function Wje(e){this.a=e}function Kje(e){this.a=e}function Yje(e){this.a=e}function Xje(e){this.a=e}function Qje(e){this.a=e}function Zje(e){this.a=e}function Jje(e){this.a=e}function e$e(e){this.a=e}function t$e(e){this.a=e}function n$e(e){this.a=e}function tF(e){this.a=e}function r$e(e){this.a=e}function i$e(e){this.a=e}function s$e(e){this.a=e}function a$e(e){this.a=e}function o$e(e){this.a=e}function c$e(e){this.a=e}function u$e(e){this.a=e}function l$e(e){this.a=e}function h$e(e){this.a=e}function f$e(e){this.a=e}function d$e(e){this.a=e}function g$e(e){this.a=e}function p$e(e){this.a=e}function b$e(e){this.a=e}function v$e(e){this.a=e}function w$e(e){this.a=e}function m$e(e){this.a=e}function y$e(e){this.a=e}function k$e(e){this.a=e}function x$e(e){this.a=e}function E$e(e){this.a=e}function T$e(e){this.a=e}function _$e(e){this.a=e}function C$e(e){this.a=e}function S$e(e){this.a=e}function A$e(e){this.a=e}function L$e(e){this.a=e}function M$e(e){this.a=e}function epe(e){this.a=e}function Zi(e){this.b=e}function D$e(e){this.f=e}function tpe(e){this.a=e}function I$e(e){this.a=e}function O$e(e){this.a=e}function N$e(e){this.a=e}function P$e(e){this.a=e}function B$e(e){this.a=e}function R$e(e){this.a=e}function F$e(e){this.a=e}function j$e(e){this.a=e}function aM(e){this.a=e}function $$e(e){this.a=e}function H$e(e){this.b=e}function npe(e){this.c=e}function nF(e){this.e=e}function z$e(e){this.a=e}function rF(e){this.a=e}function iF(e){this.a=e}function $ee(e){this.a=e}function G$e(e){this.a=e}function q$e(e){this.d=e}function rpe(e){this.a=e}function ipe(e){this.a=e}function cv(e){this.e=e}function nVt(){this.a=0}function L3(){EVe(this)}function st(){Ute(this)}function Mr(){sl(this)}function Hee(){SYe(this)}function V$e(){}function uv(){this.c=FAe}function rVt(e,t){t.Wb(e)}function U$e(e,t){e.b+=t}function W$e(e){e.b=new ite}function J(e){return e.e}function iVt(e){return e.a}function sVt(e){return e.a}function aVt(e){return e.a}function oVt(e){return e.a}function cVt(e){return e.a}function uVt(){return null}function lVt(){return null}function hVt(){qpe(),xyn()}function fVt(e){e.b.tf(e.e)}function vT(e,t){e.b=t-e.b}function wT(e,t){e.a=t-e.a}function K$e(e,t){t.ad(e.a)}function dVt(e,t){Vs(t,e)}function gVt(e,t,n){e.Od(n,t)}function oM(e,t){e.e=t,t.b=e}function spe(e){wd(),this.a=e}function Y$e(e){wd(),this.a=e}function X$e(e){wd(),this.a=e}function ape(e){Rm(),this.a=e}function Q$e(e){k8(),mue.be(e)}function H2(){aUe.call(this)}function ope(){aUe.call(this)}function cpe(){H2.call(this)}function zee(){H2.call(this)}function Z$e(){H2.call(this)}function cM(){H2.call(this)}function zu(){H2.call(this)}function mT(){H2.call(this)}function Fr(){H2.call(this)}function uh(){H2.call(this)}function J$e(){H2.call(this)}function xc(){H2.call(this)}function eHe(){H2.call(this)}function tHe(){this.a=this}function sF(){this.Bb|=256}function nHe(){this.b=new iVe}function upe(){upe=pe,new Mr}function lpe(){cpe.call(this)}function rHe(e,t){e.length=t}function aF(e,t){it(e.a,t)}function pVt(e,t){k4e(e.c,t)}function bVt(e,t){Gs(e.b,t)}function vVt(e,t){RH(e.a,t)}function wVt(e,t){Oie(e.a,t)}function Vx(e,t){_i(e.e,t)}function d6(e){JH(e.c,e.b)}function mVt(e,t){e.kc().Nb(t)}function hpe(e){this.a=von(e)}function Ys(){this.a=new Mr}function iHe(){this.a=new Mr}function oF(){this.a=new st}function Gee(){this.a=new st}function fpe(){this.a=new st}function Nh(){this.a=new Bc}function z2(){this.a=new PZe}function dpe(){this.a=new m9}function gpe(){this.a=new yGe}function sHe(){this.a=new cQe}function ppe(){this.a=new TXe}function bpe(){this.a=new KUe}function aHe(){this.a=new st}function vpe(){this.a=new st}function oHe(){this.a=new st}function cHe(){this.a=new st}function uHe(){this.d=new st}function lHe(){this.a=new Ys}function hHe(){this.a=new Mr}function fHe(){this.b=new Mr}function dHe(){this.b=new st}function wpe(){this.e=new st}function gHe(){this.d=new st}function pHe(){this.a=new zJ}function bHe(){st.call(this)}function mpe(){oF.call(this)}function vHe(){bj.call(this)}function wHe(){vpe.call(this)}function qee(){yT.call(this)}function yT(){V$e.call(this)}function g6(){V$e.call(this)}function ype(){g6.call(this)}function mHe(){tXe.call(this)}function yHe(){tXe.call(this)}function kHe(){Spe.call(this)}function xHe(){Spe.call(this)}function EHe(){Spe.call(this)}function THe(){Ape.call(this)}function Gu(){as.call(this)}function kpe(){dm.call(this)}function xpe(){dm.call(this)}function _He(){HHe.call(this)}function CHe(){HHe.call(this)}function SHe(){Mr.call(this)}function AHe(){Mr.call(this)}function LHe(){Mr.call(this)}function MHe(){Ys.call(this)}function Vee(){Qet.call(this)}function DHe(){sF.call(this)}function Uee(){Z2e.call(this)}function Wee(){Z2e.call(this)}function Epe(){Mr.call(this)}function Kee(){Mr.call(this)}function IHe(){Mr.call(this)}function Tpe(){Ex.call(this)}function OHe(){Ex.call(this)}function NHe(){Tpe.call(this)}function PHe(){qL.call(this)}function BHe(e){ket.call(this,e)}function RHe(e){ket.call(this,e)}function _pe(e){XL.call(this,e)}function Cpe(e){lGe.call(this,e)}function yVt(e){Cpe.call(this,e)}function kVt(e){lGe.call(this,e)}function Ux(){this.a=new as}function Spe(){this.a=new Ys}function Ape(){this.a=new Mr}function FHe(){this.a=new st}function jHe(){this.j=new st}function Lpe(){this.a=new $B}function $He(){this.a=new Pze}function HHe(){this.a=new UB}function Yee(){Yee=pe,due=new sze}function Xee(){Xee=pe,fue=new ize}function kT(){kT=pe,hue=new N}function cF(){cF=pe,bue=new iUe}function xVt(e){Cpe.call(this,e)}function EVt(e){Cpe.call(this,e)}function zHe(e){Cre.call(this,e)}function GHe(e){Cre.call(this,e)}function qHe(e){bWe.call(this,e)}function Qee(e){Gfn.call(this,e)}function lv(e){Em.call(this,e)}function xT(e){yF.call(this,e)}function Mpe(e){yF.call(this,e)}function VHe(e){yF.call(this,e)}function tc(e){MKe.call(this,e)}function UHe(e){tc.call(this,e)}function p6(){$x.call(this,{})}function uF(e){a8(),this.a=e}function ET(e){e.b=null,e.c=0}function TVt(e,t){e.e=t,Yot(e,t)}function _Vt(e,t){e.a=t,L1n(e)}function Zee(e,t,n){e.a[t.g]=n}function CVt(e,t,n){Vln(n,e,t)}function SVt(e,t){ZKt(t.i,e.n)}function WHe(e,t){Jsn(e).td(t)}function AVt(e,t){return e*e/t}function KHe(e,t){return e.g-t.g}function LVt(e){return new lT(e)}function MVt(e){return new Bm(e)}function lF(e){tc.call(this,e)}function Do(e){tc.call(this,e)}function YHe(e){tc.call(this,e)}function Jee(e){MKe.call(this,e)}function ete(e){Kme(),this.a=e}function XHe(e){xWe(),this.a=e}function ym(e){Mne(),this.f=e}function tte(e){Mne(),this.f=e}function Wx(e){tc.call(this,e)}function Ln(e){tc.call(this,e)}function Wo(e){tc.call(this,e)}function QHe(e){tc.call(this,e)}function b6(e){tc.call(this,e)}function It(e){return Sn(e),e}function Ue(e){return Sn(e),e}function uM(e){return Sn(e),e}function Dpe(e){return Sn(e),e}function DVt(e){return Sn(e),e}function TT(e){return e.b==e.c}function km(e){return!!e&&e.b}function IVt(e){return!!e&&e.k}function OVt(e){return!!e&&e.j}function Al(e){Sn(e),this.a=e}function Ipe(e){return ab(e),e}function _T(e){qve(e,e.length)}function pg(e){tc.call(this,e)}function dd(e){tc.call(this,e)}function nte(e){tc.call(this,e)}function M3(e){tc.call(this,e)}function CT(e){tc.call(this,e)}function $r(e){tc.call(this,e)}function rte(e){bbe.call(this,e,0)}function ite(){Twe.call(this,12,3)}function Ope(){Ope=pe,N8e=new xe}function ZHe(){ZHe=pe,O8e=new S}function hF(){hF=pe,YC=new ye}function JHe(){JHe=pe,M0t=new Ae}function eze(){throw J(new Fr)}function Npe(){throw J(new Fr)}function tze(){throw J(new Fr)}function NVt(){throw J(new Fr)}function PVt(){throw J(new Fr)}function BVt(){throw J(new Fr)}function ste(){this.a=Hr(Nr(io))}function v6(e){wd(),this.a=Nr(e)}function nze(e,t){e.Td(t),t.Sd(e)}function RVt(e,t){e.a.ec().Mc(t)}function FVt(e,t,n){e.c.lf(t,n)}function Ppe(e){Do.call(this,e)}function gd(e){Ln.call(this,e)}function bg(){u6.call(this,"")}function ST(){u6.call(this,"")}function Tp(){u6.call(this,"")}function xm(){u6.call(this,"")}function Bpe(e){Do.call(this,e)}function Kx(e){T.call(this,e)}function ate(e){oj.call(this,e)}function rze(e){Kx.call(this,e)}function ize(){cT.call(this,null)}function sze(){cT.call(this,null)}function fF(){fF=pe,k8()}function aze(){aze=pe,$0t=whn()}function oze(e){return e.a?e.b:0}function jVt(e){return e.a?e.b:0}function $Vt(e,t){return e.a-t.a}function HVt(e,t){return e.a-t.a}function zVt(e,t){return e.a-t.a}function dF(e,t){return gme(e,t)}function re(e,t){return SXe(e,t)}function GVt(e,t){return t in e.a}function cze(e,t){return e.f=t,e}function qVt(e,t){return e.b=t,e}function uze(e,t){return e.c=t,e}function VVt(e,t){return e.g=t,e}function Rpe(e,t){return e.a=t,e}function Fpe(e,t){return e.f=t,e}function UVt(e,t){return e.k=t,e}function jpe(e,t){return e.a=t,e}function WVt(e,t){return e.e=t,e}function $pe(e,t){return e.e=t,e}function KVt(e,t){return e.f=t,e}function YVt(e,t){e.b=!0,e.d=t}function XVt(e,t){e.b=new Io(t)}function QVt(e,t,n){t.td(e.a[n])}function ZVt(e,t,n){t.we(e.a[n])}function JVt(e,t){return e.b-t.b}function eUt(e,t){return e.g-t.g}function tUt(e,t){return e.s-t.s}function nUt(e,t){return e?0:t-1}function lze(e,t){return e?0:t-1}function rUt(e,t){return e?t-1:0}function iUt(e,t){return t.Yf(e)}function hv(e,t){return e.b=t,e}function gF(e,t){return e.a=t,e}function fv(e,t){return e.c=t,e}function dv(e,t){return e.d=t,e}function gv(e,t){return e.e=t,e}function Hpe(e,t){return e.f=t,e}function AT(e,t){return e.a=t,e}function Yx(e,t){return e.b=t,e}function Xx(e,t){return e.c=t,e}function Wt(e,t){return e.c=t,e}function pn(e,t){return e.b=t,e}function Kt(e,t){return e.d=t,e}function Yt(e,t){return e.e=t,e}function sUt(e,t){return e.f=t,e}function Xt(e,t){return e.g=t,e}function Qt(e,t){return e.a=t,e}function Zt(e,t){return e.i=t,e}function Jt(e,t){return e.j=t,e}function hze(e,t){return e.k=t,e}function aUt(e,t){return e.j=t,e}function oUt(e,t){Xp(),rc(t,e)}function cUt(e,t,n){nZt(e.a,t,n)}function fze(e){LYe.call(this,e)}function zpe(e){LYe.call(this,e)}function pF(e){dne.call(this,e)}function dze(e){_on.call(this,e)}function _p(e){jv.call(this,e)}function gze(e){tre.call(this,e)}function pze(e){tre.call(this,e)}function bze(){W2e.call(this,"")}function Fa(){this.a=0,this.b=0}function vze(){this.b=0,this.a=0}function wze(e,t){e.b=0,Wm(e,t)}function uUt(e,t){e.c=t,e.b=!0}function mze(e,t){return e.c._b(t)}function Qf(e){return e.e&&e.e()}function ote(e){return e?e.d:null}function yze(e,t){return Knt(e.b,t)}function lUt(e){return e?e.g:null}function hUt(e){return e?e.i:null}function Cp(e){return S0(e),e.o}function pv(){pv=pe,F3t=Lln()}function kze(){kze=pe,la=Hhn()}function Qx(){Qx=pe,RAe=Dln()}function xze(){xze=pe,x4t=Mln()}function Gpe(){Gpe=pe,Sc=C1n()}function qpe(){qpe=pe,x2=F8()}function Eze(){throw J(new Fr)}function Tze(){throw J(new Fr)}function _ze(){throw J(new Fr)}function Cze(){throw J(new Fr)}function Sze(){throw J(new Fr)}function Aze(){throw J(new Fr)}function bF(e){this.a=new w6(e)}function Vpe(e){_lt(),Pyn(this,e)}function Sp(e){this.a=new Nne(e)}function D3(e,t){for(;e.ye(t););}function Upe(e,t){for(;e.sd(t););}function I3(e,t){return e.a+=t,e}function cte(e,t){return e.a+=t,e}function vg(e,t){return e.a+=t,e}function bv(e,t){return e.a+=t,e}function LT(e){return Fp(e),e.a}function vF(e){return e.b!=e.d.c}function Lze(e){return e.l|e.m<<22}function Wpe(e,t){return e.d[t.p]}function Mze(e,t){return ppn(e,t)}function Kpe(e,t,n){e.splice(t,n)}function Dze(e){e.c?bct(e):vct(e)}function wF(e){this.a=0,this.b=e}function Ize(){this.a=new fI(X_e)}function Oze(){this.b=new fI(B_e)}function Nze(){this.b=new fI(Fhe)}function Pze(){this.b=new fI(Fhe)}function Bze(){throw J(new Fr)}function Rze(){throw J(new Fr)}function Fze(){throw J(new Fr)}function jze(){throw J(new Fr)}function $ze(){throw J(new Fr)}function Hze(){throw J(new Fr)}function zze(){throw J(new Fr)}function Gze(){throw J(new Fr)}function qze(){throw J(new Fr)}function Vze(){throw J(new Fr)}function fUt(){throw J(new xc)}function dUt(){throw J(new xc)}function lM(e){this.a=new Uze(e)}function Uze(e){Tin(this,e,Thn())}function hM(e){return!e||dYe(e)}function fM(e){return J1[e]!=-1}function gUt(){BG!=0&&(BG=0),RG=-1}function Wze(){lue==null&&(lue=[])}function pUt(e,t){$se(He(e.a),t)}function bUt(e,t){$se(He(e.a),t)}function dM(e,t){H3.call(this,e,t)}function Zx(e,t){dM.call(this,e,t)}function Ype(e,t){this.b=e,this.c=t}function Kze(e,t){this.b=e,this.a=t}function Yze(e,t){this.a=e,this.b=t}function Xze(e,t){this.a=e,this.b=t}function Qze(e,t){this.a=e,this.b=t}function Zze(e,t){this.a=e,this.b=t}function Jze(e,t){this.a=e,this.b=t}function eGe(e,t){this.a=e,this.b=t}function tGe(e,t){this.a=e,this.b=t}function nGe(e,t){this.a=e,this.b=t}function rGe(e,t){this.b=e,this.a=t}function iGe(e,t){this.b=e,this.a=t}function sGe(e,t){this.b=e,this.a=t}function aGe(e,t){this.b=e,this.a=t}function Kr(e,t){this.f=e,this.g=t}function Jx(e,t){this.e=e,this.d=t}function vv(e,t){this.g=e,this.i=t}function ute(e,t){this.a=e,this.b=t}function oGe(e,t){this.a=e,this.f=t}function cGe(e,t){this.b=e,this.c=t}function vUt(e,t){this.a=e,this.b=t}function uGe(e,t){this.a=e,this.b=t}function lte(e,t){this.a=e,this.b=t}function lGe(e){sbe(e.dc()),this.c=e}function mF(e){this.b=u(Nr(e),83)}function hGe(e){this.a=u(Nr(e),83)}function Em(e){this.a=u(Nr(e),15)}function fGe(e){this.a=u(Nr(e),15)}function yF(e){this.b=u(Nr(e),47)}function kF(){this.q=new b.Date}function Ud(){Ud=pe,Y8e=new Et}function e8(){e8=pe,Y7=new rt}function MT(e){return e.f.c+e.g.c}function gM(e,t){return e.b.Hc(t)}function dGe(e,t){return e.b.Ic(t)}function gGe(e,t){return e.b.Qc(t)}function pGe(e,t){return e.b.Hc(t)}function bGe(e,t){return e.c.uc(t)}function _0(e,t){return e.a._b(t)}function vGe(e,t){return Ci(e.c,t)}function wGe(e,t){return Il(e.b,t)}function mGe(e,t){return e>t&&t0}function fte(e,t){return Mc(e,t)<0}function BT(e,t){return e.a.get(t)}function MUt(e,t){return t.split(e)}function FGe(e,t){return Il(e.e,t)}function r2e(e){return Sn(e),!1}function DF(e){mn.call(this,e,21)}function DUt(e,t){pXe.call(this,e,t)}function IF(e,t){Kr.call(this,e,t)}function dte(e,t){Kr.call(this,e,t)}function i2e(e){Wne(),bWe.call(this,e)}function s2e(e,t){mKe(e,e.length,t)}function mM(e,t){KKe(e,e.length,t)}function IUt(e,t,n){t.ud(e.a.Ge(n))}function OUt(e,t,n){t.we(e.a.Fe(n))}function NUt(e,t,n){t.td(e.a.Kb(n))}function PUt(e,t,n){e.Mb(n)&&t.td(n)}function RT(e,t,n){e.splice(t,0,n)}function BUt(e,t){return Vu(e.e,t)}function OF(e,t){this.d=e,this.e=t}function jGe(e,t){this.b=e,this.a=t}function $Ge(e,t){this.b=e,this.a=t}function a2e(e,t){this.b=e,this.a=t}function HGe(e,t){this.a=e,this.b=t}function zGe(e,t){this.a=e,this.b=t}function GGe(e,t){this.a=e,this.b=t}function qGe(e,t){this.a=e,this.b=t}function y6(e,t){this.a=e,this.b=t}function o2e(e,t){this.b=e,this.a=t}function c2e(e,t){this.b=e,this.a=t}function NF(e,t){Kr.call(this,e,t)}function PF(e,t){Kr.call(this,e,t)}function u2e(e,t){Kr.call(this,e,t)}function l2e(e,t){Kr.call(this,e,t)}function O3(e,t){Kr.call(this,e,t)}function gte(e,t){Kr.call(this,e,t)}function pte(e,t){Kr.call(this,e,t)}function bte(e,t){Kr.call(this,e,t)}function BF(e,t){Kr.call(this,e,t)}function h2e(e,t){Kr.call(this,e,t)}function vte(e,t){Kr.call(this,e,t)}function yM(e,t){Kr.call(this,e,t)}function RF(e,t){Kr.call(this,e,t)}function wte(e,t){Kr.call(this,e,t)}function FT(e,t){Kr.call(this,e,t)}function f2e(e,t){Kr.call(this,e,t)}function Cs(e,t){Kr.call(this,e,t)}function FF(e,t){Kr.call(this,e,t)}function VGe(e,t){this.a=e,this.b=t}function UGe(e,t){this.a=e,this.b=t}function WGe(e,t){this.a=e,this.b=t}function KGe(e,t){this.a=e,this.b=t}function YGe(e,t){this.a=e,this.b=t}function XGe(e,t){this.a=e,this.b=t}function QGe(e,t){this.a=e,this.b=t}function ZGe(e,t){this.a=e,this.b=t}function JGe(e,t){this.a=e,this.b=t}function d2e(e,t){this.b=e,this.a=t}function eqe(e,t){this.b=e,this.a=t}function tqe(e,t){this.b=e,this.a=t}function nqe(e,t){this.b=e,this.a=t}function r8(e,t){this.c=e,this.d=t}function rqe(e,t){this.e=e,this.d=t}function iqe(e,t){this.a=e,this.b=t}function sqe(e,t){this.b=t,this.c=e}function jF(e,t){Kr.call(this,e,t)}function kM(e,t){Kr.call(this,e,t)}function mte(e,t){Kr.call(this,e,t)}function jT(e,t){Kr.call(this,e,t)}function g2e(e,t){Kr.call(this,e,t)}function yte(e,t){Kr.call(this,e,t)}function kte(e,t){Kr.call(this,e,t)}function xM(e,t){Kr.call(this,e,t)}function p2e(e,t){Kr.call(this,e,t)}function xte(e,t){Kr.call(this,e,t)}function $T(e,t){Kr.call(this,e,t)}function b2e(e,t){Kr.call(this,e,t)}function HT(e,t){Kr.call(this,e,t)}function zT(e,t){Kr.call(this,e,t)}function _m(e,t){Kr.call(this,e,t)}function Ete(e,t){Kr.call(this,e,t)}function Tte(e,t){Kr.call(this,e,t)}function v2e(e,t){Kr.call(this,e,t)}function GT(e,t){Kr.call(this,e,t)}function _te(e,t){Kr.call(this,e,t)}function $F(e,t){Kr.call(this,e,t)}function EM(e,t){Kr.call(this,e,t)}function TM(e,t){Kr.call(this,e,t)}function k6(e,t){Kr.call(this,e,t)}function Cte(e,t){Kr.call(this,e,t)}function w2e(e,t){Kr.call(this,e,t)}function Ste(e,t){Kr.call(this,e,t)}function Ate(e,t){Kr.call(this,e,t)}function m2e(e,t){Kr.call(this,e,t)}function Lte(e,t){Kr.call(this,e,t)}function Mte(e,t){Kr.call(this,e,t)}function Dte(e,t){Kr.call(this,e,t)}function Ite(e,t){Kr.call(this,e,t)}function y2e(e,t){Kr.call(this,e,t)}function aqe(e,t){this.b=e,this.a=t}function oqe(e,t){this.a=e,this.b=t}function cqe(e,t){this.a=e,this.b=t}function uqe(e,t){this.a=e,this.b=t}function lqe(e,t){this.a=e,this.b=t}function k2e(e,t){Kr.call(this,e,t)}function x2e(e,t){Kr.call(this,e,t)}function hqe(e,t){this.b=e,this.d=t}function E2e(e,t){Kr.call(this,e,t)}function T2e(e,t){Kr.call(this,e,t)}function fqe(e,t){this.a=e,this.b=t}function dqe(e,t){this.a=e,this.b=t}function HF(e,t){Kr.call(this,e,t)}function qT(e,t){Kr.call(this,e,t)}function _2e(e,t){Kr.call(this,e,t)}function C2e(e,t){Kr.call(this,e,t)}function S2e(e,t){Kr.call(this,e,t)}function Ote(e,t){Kr.call(this,e,t)}function A2e(e,t){Kr.call(this,e,t)}function Nte(e,t){Kr.call(this,e,t)}function zF(e,t){Kr.call(this,e,t)}function Pte(e,t){Kr.call(this,e,t)}function Bte(e,t){Kr.call(this,e,t)}function _M(e,t){Kr.call(this,e,t)}function Rte(e,t){Kr.call(this,e,t)}function L2e(e,t){Kr.call(this,e,t)}function CM(e,t){Kr.call(this,e,t)}function M2e(e,t){Kr.call(this,e,t)}function RUt(e,t){return Vu(e.c,t)}function FUt(e,t){return Vu(t.b,e)}function jUt(e,t){return-e.b.Je(t)}function D2e(e,t){return Vu(e.g,t)}function SM(e,t){Kr.call(this,e,t)}function x6(e,t){Kr.call(this,e,t)}function gqe(e,t){this.a=e,this.b=t}function pqe(e,t){this.a=e,this.b=t}function Pt(e,t){this.a=e,this.b=t}function VT(e,t){Kr.call(this,e,t)}function UT(e,t){Kr.call(this,e,t)}function AM(e,t){Kr.call(this,e,t)}function Fte(e,t){Kr.call(this,e,t)}function GF(e,t){Kr.call(this,e,t)}function WT(e,t){Kr.call(this,e,t)}function jte(e,t){Kr.call(this,e,t)}function qF(e,t){Kr.call(this,e,t)}function N3(e,t){Kr.call(this,e,t)}function LM(e,t){Kr.call(this,e,t)}function KT(e,t){Kr.call(this,e,t)}function YT(e,t){Kr.call(this,e,t)}function MM(e,t){Kr.call(this,e,t)}function VF(e,t){Kr.call(this,e,t)}function P3(e,t){Kr.call(this,e,t)}function UF(e,t){Kr.call(this,e,t)}function bqe(e,t){this.a=e,this.b=t}function vqe(e,t){this.a=e,this.b=t}function wqe(e,t){this.a=e,this.b=t}function mqe(e,t){this.a=e,this.b=t}function yqe(e,t){this.a=e,this.b=t}function kqe(e,t){this.a=e,this.b=t}function xa(e,t){this.a=e,this.b=t}function WF(e,t){Kr.call(this,e,t)}function xqe(e,t){this.a=e,this.b=t}function Eqe(e,t){this.a=e,this.b=t}function Tqe(e,t){this.a=e,this.b=t}function _qe(e,t){this.a=e,this.b=t}function Cqe(e,t){this.a=e,this.b=t}function Sqe(e,t){this.a=e,this.b=t}function Aqe(e,t){this.b=e,this.a=t}function Lqe(e,t){this.b=e,this.a=t}function Mqe(e,t){this.b=e,this.a=t}function Dqe(e,t){this.b=e,this.a=t}function Iqe(e,t){this.a=e,this.b=t}function Oqe(e,t){this.a=e,this.b=t}function $Ut(e,t){bgn(e.a,u(t,56))}function Nqe(e,t){Arn(e.a,u(t,11))}function HUt(e,t){return h8(),t!=e}function Pqe(){return aze(),new $0t}function Bqe(){fre(),this.b=new Ys}function Rqe(){az(),this.a=new Ys}function Fqe(){Ewe(),Ive.call(this)}function E6(e,t){Kr.call(this,e,t)}function jqe(e,t){this.a=e,this.b=t}function $qe(e,t){this.a=e,this.b=t}function KF(e,t){this.a=e,this.b=t}function Hqe(e,t){this.a=e,this.b=t}function zqe(e,t){this.a=e,this.b=t}function Gqe(e,t){this.a=e,this.b=t}function qqe(e,t){this.d=e,this.b=t}function I2e(e,t){this.d=e,this.e=t}function Vqe(e,t){this.f=e,this.c=t}function DM(e,t){this.b=e,this.c=t}function O2e(e,t){this.i=e,this.g=t}function Uqe(e,t){this.e=e,this.a=t}function Wqe(e,t){this.a=e,this.b=t}function N2e(e,t){e.i=null,X$(e,t)}function zUt(e,t){e&&Si(oN,e,t)}function Kqe(e,t){return qie(e.a,t)}function YF(e){return qD(e.c,e.b)}function hc(e){return e?e.dd():null}function je(e){return e??null}function Cm(e){return typeof e===sk}function Sm(e){return typeof e===d6e}function fa(e){return typeof e===Mae}function Mp(e,t){return e.Hd().Xb(t)}function XF(e,t){return isn(e.Kc(),t)}function mv(e,t){return Mc(e,t)==0}function GUt(e,t){return Mc(e,t)>=0}function XT(e,t){return Mc(e,t)!=0}function qUt(e){return""+(Sn(e),e)}function IM(e,t){return e.substr(t)}function Yqe(e){return bl(e),e.d.gc()}function $te(e){return $dn(e,e.c),e}function QF(e){return u_(e==null),e}function QT(e,t){return e.a+=""+t,e}function To(e,t){return e.a+=""+t,e}function ZT(e,t){return e.a+=""+t,e}function Ec(e,t){return e.a+=""+t,e}function Yr(e,t){return e.a+=""+t,e}function P2e(e,t){return e.a+=""+t,e}function Xqe(e,t){ks(e,t,e.a,e.a.a)}function q2(e,t){ks(e,t,e.c.b,e.c)}function VUt(e,t,n){ost(t,Ose(e,n))}function UUt(e,t,n){ost(t,Ose(e,n))}function WUt(e,t){jrn(new rr(e),t)}function Qqe(e,t){e.q.setTime(Bv(t))}function Zqe(e,t){Hve.call(this,e,t)}function Jqe(e,t){Hve.call(this,e,t)}function Hte(e,t){Hve.call(this,e,t)}function eVe(e){sl(this),P_(this,e)}function B2e(e){return xn(e,0),null}function Zf(e){return e.a=0,e.b=0,e}function tVe(e,t){return e.a=t.g+1,e}function KUt(e,t){return e.j[t.p]==2}function R2e(e){return MZt(u(e,79))}function nVe(){nVe=pe,Ngt=Qr(Xie())}function rVe(){rVe=pe,Qpt=Qr(Hot())}function iVe(){this.b=new w6(qm(12))}function sVe(){this.b=0,this.a=!1}function aVe(){this.b=0,this.a=!1}function JT(e){this.a=e,nT.call(this)}function oVe(e){this.a=e,nT.call(this)}function dn(e,t){zs.call(this,e,t)}function zte(e,t){Im.call(this,e,t)}function B3(e,t){O2e.call(this,e,t)}function Gte(e,t){G8.call(this,e,t)}function cVe(e,t){OM.call(this,e,t)}function ui(e,t){LF(),Si(QV,e,t)}function qte(e,t){return jl(e.a,0,t)}function uVe(e,t){return e.a.a.a.cc(t)}function lVe(e,t){return je(e)===je(t)}function YUt(e,t){return Fs(e.a,t.a)}function XUt(e,t){return Tu(e.a,t.a)}function QUt(e,t){return VKe(e.a,t.a)}function pd(e,t){return e.indexOf(t)}function yv(e,t){return e==t?0:e?1:-1}function ZF(e){return e<10?"0"+e:""+e}function ZUt(e){return Nr(e),new JT(e)}function hVe(e){return fu(e.l,e.m,e.h)}function i8(e){return _s((Sn(e),e))}function JUt(e){return _s((Sn(e),e))}function fVe(e,t){return Tu(e.g,t.g)}function Ko(e){return typeof e===d6e}function eWt(e){return e==vw||e==_y}function tWt(e){return e==vw||e==Ty}function F2e(e){return Yo(e.b.b,e,0)}function dVe(e){this.a=Pqe(),this.b=e}function gVe(e){this.a=Pqe(),this.b=e}function nWt(e,t){return it(e.a,t),t}function rWt(e,t){return it(e.c,t),e}function pVe(e,t){return Vl(e.a,t),e}function iWt(e,t){return mf(),t.a+=e}function sWt(e,t){return mf(),t.a+=e}function aWt(e,t){return mf(),t.c+=e}function j2e(e,t){L8(e,0,e.length,t)}function C0(){be.call(this,new Z2)}function bVe(){Dj.call(this,0,0,0,0)}function T6(){fh.call(this,0,0,0,0)}function Io(e){this.a=e.a,this.b=e.b}function Dp(e){return e==Xh||e==Df}function s8(e){return e==X0||e==Y0}function vVe(e){return e==K4||e==W4}function R3(e){return e!=X1&&e!=w2}function Ll(e){return e.Lg()&&e.Mg()}function wVe(e){return Wj(u(e,118))}function JF(e){return Vl(new Xs,e)}function mVe(e,t){return new G8(t,e)}function oWt(e,t){return new G8(t,e)}function $2e(e,t,n){z$(e,t),G$(e,n)}function ej(e,t,n){zv(e,t),Hv(e,n)}function C1(e,t,n){Du(e,t),Iu(e,n)}function tj(e,t,n){O8(e,t),P8(e,n)}function nj(e,t,n){N8(e,t),B8(e,n)}function Vte(e,t){Y8(e,t),R8(e,e.D)}function H2e(e){Vqe.call(this,e,!0)}function yVe(e,t,n){Mbe.call(this,e,t,n)}function Ip(e){Qp(),csn.call(this,e)}function kVe(){IF.call(this,"Head",1)}function xVe(){IF.call(this,"Tail",3)}function Ute(e){e.c=Me(Yn,yt,1,0,5,1)}function EVe(e){e.a=Me(Yn,yt,1,8,5,1)}function TVe(e){Mu(e.xf(),new hr(e))}function F3(e){return e!=null?Xi(e):0}function cWt(e,t){return Vm(t,L1(e))}function uWt(e,t){return Vm(t,L1(e))}function lWt(e,t){return e[e.length]=t}function hWt(e,t){return e[e.length]=t}function z2e(e){return lQt(e.b.Kc(),e.a)}function fWt(e,t){return Y$(Vne(e.d),t)}function dWt(e,t){return Y$(Vne(e.g),t)}function gWt(e,t){return Y$(Vne(e.j),t)}function fo(e,t){zs.call(this,e.b,t)}function kv(e){Dj.call(this,e,e,e,e)}function G2e(e){return e.b&&dae(e),e.a}function q2e(e){return e.b&&dae(e),e.c}function pWt(e,t){V1||(e.b=t)}function Wte(e,t,n){return cs(e,t,n),n}function _Ve(e,t,n){cs(e.c[t.g],t.g,n)}function bWt(e,t,n){u(e.c,69).Xh(t,n)}function vWt(e,t,n){C1(n,n.i+e,n.j+t)}function wWt(e,t){Br(jc(e.a),jXe(t))}function mWt(e,t){Br(gl(e.a),$Xe(t))}function e_(e){yi(),cv.call(this,e)}function yWt(e){return e==null?0:Xi(e)}function CVe(){CVe=pe,vhe=new V_(ffe)}function jr(){jr=pe,new SVe,new st}function SVe(){new Mr,new Mr,new Mr}function V2e(){V2e=pe,upe(),P8e=new Mr}function S1(){S1=pe,b.Math.log(2)}function lh(){lh=pe,b0=(OGe(),q3t)}function kWt(){throw J(new pg(p0t))}function xWt(){throw J(new pg(p0t))}function EWt(){throw J(new pg(b0t))}function TWt(){throw J(new pg(b0t))}function AVe(e){this.a=e,uve.call(this,e)}function Kte(e){this.a=e,mF.call(this,e)}function Yte(e){this.a=e,mF.call(this,e)}function aa(e,t){Cne(e.c,e.c.length,t)}function nc(e){return e.at?1:0}function MVe(e,t){return Mc(e,t)>0?e:t}function fu(e,t,n){return{l:e,m:t,h:n}}function _Wt(e,t){e.a!=null&&Nqe(t,e.a)}function DVe(e){e.a=new wt,e.c=new wt}function rj(e){this.b=e,this.a=new st}function IVe(e){this.b=new ug,this.a=e}function W2e(e){jbe.call(this),this.a=e}function OVe(){IF.call(this,"Range",2)}function NVe(){H3e(),this.a=new fI(uEe)}function CWt(e,t){Nr(t),G3(e).Jc(new ce)}function SWt(e,t){return $l(),t.n.b+=e}function AWt(e,t,n){return Si(e.g,n,t)}function LWt(e,t,n){return Si(e.k,n,t)}function MWt(e,t){return Si(e.a,t.a,t)}function j3(e,t,n){return o3e(t,n,e.c)}function K2e(e){return new Pt(e.c,e.d)}function DWt(e){return new Pt(e.c,e.d)}function fc(e){return new Pt(e.a,e.b)}function PVe(e,t){return emn(e.a,t,null)}function IWt(e){Va(e,null),ba(e,null)}function BVe(e){gre(e,null),pre(e,null)}function RVe(){OM.call(this,null,null)}function FVe(){hj.call(this,null,null)}function Y2e(e){this.a=e,Mr.call(this)}function OWt(e){this.b=(hn(),new H(e))}function ij(e){e.j=Me(K8e,Qe,310,0,0,1)}function NWt(e,t,n){e.c.Vc(t,u(n,133))}function PWt(e,t,n){e.c.ji(t,u(n,133))}function jVe(e,t){_r(e),e.Gc(u(t,15))}function t_(e,t){return bwn(e.c,e.b,t)}function BWt(e,t){return new oUe(e.Kc(),t)}function Xte(e,t){return Psn(e.Kc(),t)!=-1}function X2e(e,t){return e.a.Bc(t)!=null}function sj(e){return e.Ob()?e.Pb():null}function $Ve(e){return jh(e,0,e.length)}function we(e,t){return e!=null&&ese(e,t)}function RWt(e,t){e.q.setHours(t),lC(e,t)}function HVe(e,t){e.c&&(yve(t),dXe(t))}function FWt(e,t,n){u(e.Kb(n),164).Nb(t)}function jWt(e,t,n){return Wwn(e,t,n),n}function zVe(e,t,n){e.a=t^1502,e.b=n^uoe}function Qte(e,t,n){return e.a[t.g][n.g]}function A1(e,t){return e.a[t.c.p][t.p]}function $Wt(e,t){return e.e[t.c.p][t.p]}function HWt(e,t){return e.c[t.c.p][t.p]}function zWt(e,t){return e.j[t.p]=Q0n(t)}function GWt(e,t){return Jwe(e.f,t.tg())}function qWt(e,t){return Jwe(e.b,t.tg())}function VWt(e,t){return e.a0?t*t/e:t*t*100}function bKt(e,t){return e>0?t/(e*e):t*100}function vKt(e,t,n){return it(t,drt(e,n))}function wKt(e,t,n){A$(),e.Xe(t)&&n.td(e)}function c8(e,t,n){var r;r=e.Zc(t),r.Rb(n)}function Lm(e,t,n){return e.a+=t,e.b+=n,e}function mKt(e,t,n){return e.a*=t,e.b*=n,e}function BM(e,t,n){return e.a-=t,e.b-=n,e}function ybe(e,t){return e.a=t.a,e.b=t.b,e}function gj(e){return e.a=-e.a,e.b=-e.b,e}function mUe(e){this.c=e,this.a=1,this.b=1}function yUe(e){this.c=e,Du(e,0),Iu(e,0)}function kUe(e){as.call(this),D_(this,e)}function xUe(e){Aae(),W$e(this),this.mf(e)}function EUe(e,t){PT(),OM.call(this,e,t)}function kbe(e,t){wg(),hj.call(this,e,t)}function TUe(e,t){wg(),hj.call(this,e,t)}function _Ue(e,t){wg(),kbe.call(this,e,t)}function Ml(e,t,n){Nl.call(this,e,t,n,2)}function ine(e,t){lh(),Mj.call(this,e,t)}function CUe(e,t){lh(),ine.call(this,e,t)}function xbe(e,t){lh(),ine.call(this,e,t)}function SUe(e,t){lh(),xbe.call(this,e,t)}function Ebe(e,t){lh(),Mj.call(this,e,t)}function AUe(e,t){lh(),Ebe.call(this,e,t)}function LUe(e,t){lh(),Mj.call(this,e,t)}function yKt(e,t){return e.c.Fc(u(t,133))}function Tbe(e,t,n){return wz(wD(e,t),n)}function kKt(e,t,n){return t.Qk(e.e,e.c,n)}function xKt(e,t,n){return t.Rk(e.e,e.c,n)}function sne(e,t){return Up(e.e,u(t,49))}function EKt(e,t,n){G_(gl(e.a),t,$Xe(n))}function TKt(e,t,n){G_(jc(e.a),t,jXe(n))}function _be(e,t){t.$modCount=e.$modCount}function a_(){a_=pe,MS=new Zi("root")}function u8(){u8=pe,uN=new _He,new CHe}function MUe(){this.a=new Nv,this.b=new Nv}function Cbe(){Qet.call(this),this.Bb|=so}function DUe(){Kr.call(this,"GROW_TREE",0)}function _Kt(e){return e==null?null:Gmn(e)}function CKt(e){return e==null?null:Qfn(e)}function SKt(e){return e==null?null:Qo(e)}function AKt(e){return e==null?null:Qo(e)}function S0(e){e.o==null&&_0n(e)}function Mt(e){return u_(e==null||Cm(e)),e}function ft(e){return u_(e==null||Sm(e)),e}function Hr(e){return u_(e==null||fa(e)),e}function Sbe(e){this.q=new b.Date(Bv(e))}function RM(e,t){this.c=e,Jx.call(this,e,t)}function pj(e,t){this.a=e,RM.call(this,e,t)}function LKt(e,t){this.d=e,Lee(this),this.b=t}function Abe(e,t){Bre.call(this,e),this.a=t}function Lbe(e,t){Bre.call(this,e),this.a=t}function MKt(e){n3e.call(this,0,0),this.f=e}function Mbe(e,t,n){C$.call(this,e,t,n,null)}function IUe(e,t,n){C$.call(this,e,t,n,null)}function DKt(e,t,n){return e.ue(t,n)<=0?n:t}function IKt(e,t,n){return e.ue(t,n)<=0?t:n}function OKt(e,t){return u(Fv(e.b,t),149)}function NKt(e,t){return u(Fv(e.c,t),229)}function ane(e){return u(St(e.a,e.b),287)}function OUe(e){return new Pt(e.c,e.d+e.a)}function NUe(e){return $l(),vVe(u(e,197))}function Mm(){Mm=pe,F7e=rn((Bl(),Hb))}function PKt(e,t){t.a?ypn(e,t):Zte(e.a,t.b)}function PUe(e,t){V1||it(e.a,t)}function BKt(e,t){return bM(),z8(t.d.i,e)}function RKt(e,t){return U6(),new jct(t,e)}function vd(e,t){return JM(t,O6e),e.f=t,e}function Dbe(e,t,n){return n=Kl(e,t,3,n),n}function Ibe(e,t,n){return n=Kl(e,t,6,n),n}function Obe(e,t,n){return n=Kl(e,t,9,n),n}function FM(e,t,n){++e.j,e.Ki(),Nre(e,t,n)}function BUe(e,t,n){++e.j,e.Hi(t,e.oi(t,n))}function RUe(e,t,n){var r;r=e.Zc(t),r.Rb(n)}function FUe(e,t,n){return W5e(e.c,e.b,t,n)}function Nbe(e,t){return(t&Ei)%e.d.length}function zs(e,t){Zi.call(this,e),this.a=t}function Pbe(e,t){npe.call(this,e),this.a=t}function one(e,t){npe.call(this,e),this.a=t}function jUe(e,t){this.c=e,jv.call(this,t)}function $Ue(e,t){this.a=e,H$e.call(this,t)}function jM(e,t){this.a=e,H$e.call(this,t)}function HUe(e){this.a=(ql(e,fy),new su(e))}function zUe(e){this.a=(ql(e,fy),new su(e))}function $M(e){return!e.a&&(e.a=new se),e.a}function GUe(e){return e>8?0:e+1}function FKt(e,t){return Mn(),e==t?0:e?1:-1}function Bbe(e,t,n){return M6(e,u(t,22),n)}function jKt(e,t,n){return e.apply(t,n)}function qUe(e,t,n){return e.a+=jh(t,0,n),e}function Rbe(e,t){var n;return n=e.e,e.e=t,n}function $Kt(e,t){var n;n=e[coe],n.call(e,t)}function HKt(e,t){var n;n=e[coe],n.call(e,t)}function Dm(e,t){e.a.Vc(e.b,t),++e.b,e.c=-1}function VUe(e){sl(e.e),e.d.b=e.d,e.d.a=e.d}function HM(e){e.b?HM(e.b):e.f.c.zc(e.e,e.d)}function zKt(e,t,n){G2(),bee(e,t.Ce(e.a,n))}function GKt(e,t){return ote(Lrt(e.a,t,!0))}function qKt(e,t){return ote(Mrt(e.a,t,!0))}function wf(e,t){return dF(new Array(t),e)}function cne(e){return String.fromCharCode(e)}function VKt(e){return e==null?null:e.message}function UUe(){this.a=new st,this.b=new st}function WUe(){this.a=new m9,this.b=new nHe}function KUe(){this.b=new Fa,this.c=new st}function Fbe(){this.d=new Fa,this.e=new Fa}function jbe(){this.n=new Fa,this.o=new Fa}function bj(){this.n=new g6,this.i=new T6}function YUe(){this.a=new FJ,this.b=new $X}function XUe(){this.a=new st,this.d=new st}function QUe(){this.b=new Ys,this.a=new Ys}function ZUe(){this.b=new Mr,this.a=new Mr}function JUe(){this.b=new Oze,this.a=new OQ}function eWe(){bj.call(this),this.a=new Fa}function o_(e){bsn.call(this,e,(M$(),_ue))}function $be(e,t,n,r){Dj.call(this,e,t,n,r)}function UKt(e,t,n){n!=null&&W$(t,hse(e,n))}function WKt(e,t,n){n!=null&&K$(t,hse(e,n))}function Hbe(e,t,n){return n=Kl(e,t,11,n),n}function Ni(e,t){return e.a+=t.a,e.b+=t.b,e}function da(e,t){return e.a-=t.a,e.b-=t.b,e}function KKt(e,t){return e.n.a=(Sn(t),t+10)}function YKt(e,t){return e.n.a=(Sn(t),t+10)}function XKt(e,t){return t==e||u7(rz(t),e)}function tWe(e,t){return Si(e.a,t,"")==null}function QKt(e,t){return bM(),!z8(t.d.i,e)}function ZKt(e,t){Dp(e.f)?p0n(e,t):Jhn(e,t)}function JKt(e,t){var n;return n=t.Hh(e.a),n}function Im(e,t){Do.call(this,$C+e+Eb+t)}function S6(e,t,n,r){at.call(this,e,t,n,r)}function zbe(e,t,n,r){at.call(this,e,t,n,r)}function nWe(e,t,n,r){zbe.call(this,e,t,n,r)}function rWe(e,t,n,r){Hj.call(this,e,t,n,r)}function une(e,t,n,r){Hj.call(this,e,t,n,r)}function Gbe(e,t,n,r){Hj.call(this,e,t,n,r)}function iWe(e,t,n,r){une.call(this,e,t,n,r)}function qbe(e,t,n,r){une.call(this,e,t,n,r)}function wn(e,t,n,r){Gbe.call(this,e,t,n,r)}function sWe(e,t,n,r){qbe.call(this,e,t,n,r)}function aWe(e,t,n,r){zve.call(this,e,t,n,r)}function oWe(e,t,n){this.a=e,bbe.call(this,t,n)}function cWe(e,t,n){this.c=t,this.b=n,this.a=e}function eYt(e,t,n){return e.d=u(t.Kb(n),164)}function Vbe(e,t){return e.Aj().Nh().Kh(e,t)}function Ube(e,t){return e.Aj().Nh().Ih(e,t)}function uWe(e,t){return Sn(e),je(e)===je(t)}function an(e,t){return Sn(e),je(e)===je(t)}function lne(e,t){return ote(Lrt(e.a,t,!1))}function hne(e,t){return ote(Mrt(e.a,t,!1))}function tYt(e,t){return e.b.sd(new zGe(e,t))}function nYt(e,t){return e.b.sd(new GGe(e,t))}function lWe(e,t){return e.b.sd(new qGe(e,t))}function Wbe(e,t,n){return e.lastIndexOf(t,n)}function rYt(e,t,n){return Fs(e[t.b],e[n.b])}function iYt(e,t){return Ye(t,(pt(),_O),e)}function sYt(e,t){return Tu(t.a.d.p,e.a.d.p)}function aYt(e,t){return Tu(e.a.d.p,t.a.d.p)}function oYt(e,t){return Fs(e.c-e.s,t.c-t.s)}function hWe(e){return e.c?Yo(e.c.a,e,0):-1}function cYt(e){return e<100?null:new _p(e)}function A6(e){return e==$b||e==p0||e==tu}function fWe(e,t){return we(t,15)&&yct(e.c,t)}function uYt(e,t){V1||t&&(e.d=t)}function fne(e,t){var n;return n=t,!!bye(e,n)}function Kbe(e,t){this.c=e,jne.call(this,e,t)}function dWe(e){this.c=e,Hte.call(this,Cz,0)}function gWe(e,t){gQt.call(this,e,e.length,t)}function lYt(e,t,n){return u(e.c,69).lk(t,n)}function vj(e,t,n){return u(e.c,69).mk(t,n)}function hYt(e,t,n){return kKt(e,u(t,332),n)}function Ybe(e,t,n){return xKt(e,u(t,332),n)}function fYt(e,t,n){return gst(e,u(t,332),n)}function pWe(e,t,n){return lfn(e,u(t,332),n)}function c_(e,t){return t==null?null:Ym(e.b,t)}function Xbe(e){return Sm(e)?(Sn(e),e):e.ke()}function wj(e){return!isNaN(e)&&!isFinite(e)}function bWe(e){wd(),this.a=(hn(),new Kx(e))}function zM(e){h8(),this.d=e,this.a=new L3}function hh(e,t,n){this.a=e,this.b=t,this.c=n}function vWe(e,t,n){this.a=e,this.b=t,this.c=n}function wWe(e,t,n){this.d=e,this.b=n,this.a=t}function dne(e){DVe(this),Rh(this),no(this,e)}function Uu(e){Ute(this),hve(this.c,0,e.Pc())}function mWe(e){Ol(e.a),bJe(e.c,e.b),e.b=null}function yWe(e){this.a=e,Ud(),Ou(Date.now())}function kWe(){kWe=pe,p7e=new S,qG=new S}function gne(){gne=pe,a7e=new jt,H0t=new At}function xWe(){xWe=pe,Y3t=Me(Yn,yt,1,0,5,1)}function EWe(){EWe=pe,d4t=Me(Yn,yt,1,0,5,1)}function Qbe(){Qbe=pe,g4t=Me(Yn,yt,1,0,5,1)}function wd(){wd=pe,new spe((hn(),hn(),bo))}function dYt(e){return M$(),Xr((SJe(),q0t),e)}function gYt(e){return F1(),Xr((UZe(),X0t),e)}function pYt(e){return LH(),Xr((JQe(),ngt),e)}function bYt(e){return P$(),Xr((eZe(),rgt),e)}function vYt(e){return uz(),Xr((ztt(),igt),e)}function wYt(e){return n1(),Xr((GZe(),ogt),e)}function mYt(e){return al(),Xr((qZe(),ugt),e)}function yYt(e){return Lu(),Xr((VZe(),hgt),e)}function kYt(e){return Tz(),Xr((nVe(),Ngt),e)}function xYt(e){return Vv(),Xr((LJe(),Bgt),e)}function EYt(e){return Z6(),Xr((MJe(),Fgt),e)}function TYt(e){return Y_(),Xr((DJe(),Hgt),e)}function _Yt(e){return EF(),Xr((DQe(),zgt),e)}function CYt(e){return B$(),Xr((tZe(),spt),e)}function SYt(e){return L_(),Xr((WZe(),Cpt),e)}function AYt(e){return ro(),Xr((oet(),Mpt),e)}function LYt(e){return V8(),Xr((AJe(),Ppt),e)}function MYt(e){return Uv(),Xr((KZe(),Hpt),e)}function Zbe(e,t){if(!e)throw J(new Ln(t))}function DYt(e){return zn(),Xr((Met(),Vpt),e)}function Jbe(e){Dj.call(this,e.d,e.c,e.a,e.b)}function pne(e){Dj.call(this,e.d,e.c,e.a,e.b)}function eve(e,t,n){this.b=e,this.c=t,this.a=n}function mj(e,t,n){this.b=e,this.a=t,this.c=n}function TWe(e,t,n){this.a=e,this.b=t,this.c=n}function tve(e,t,n){this.a=e,this.b=t,this.c=n}function _We(e,t,n){this.a=e,this.b=t,this.c=n}function nve(e,t,n){this.a=e,this.b=t,this.c=n}function CWe(e,t,n){this.b=e,this.a=t,this.c=n}function yj(e,t,n){this.e=t,this.b=e,this.d=n}function IYt(e,t,n){return G2(),e.a.Od(t,n),t}function bne(e){var t;return t=new jn,t.e=e,t}function rve(e){var t;return t=new uHe,t.b=e,t}function GM(){GM=pe,rq=new _Y,iq=new CY}function mf(){mf=pe,s2t=new pX,a2t=new pB}function OYt(e){return cH(),Xr((OJe(),e2t),e)}function NYt(e){return R1(),Xr((PJe(),u2t),e)}function PYt(e){return oz(),Xr((Dtt(),v2t),e)}function BYt(e){return ek(),Xr((Oet(),w2t),e)}function RYt(e){return S$(),Xr((oZe(),m2t),e)}function FYt(e){return V6(),Xr((YZe(),y2t),e)}function jYt(e){return c4(),Xr((net(),h2t),e)}function $Yt(e){return qv(),Xr((ZZe(),b2t),e)}function HYt(e){return V$(),Xr((XZe(),k2t),e)}function zYt(e){return db(),Xr((eet(),x2t),e)}function GYt(e){return ED(),Xr((rZe(),E2t),e)}function qYt(e){return sb(),Xr((QZe(),_2t),e)}function VYt(e){return QH(),Xr((Ret(),C2t),e)}function UYt(e){return pD(),Xr((iZe(),S2t),e)}function WYt(e){return tI(),Xr((Pet(),A2t),e)}function KYt(e){return h7(),Xr((Net(),L2t),e)}function YYt(e){return mo(),Xr((rnt(),M2t),e)}function XYt(e){return q8(),Xr((eJe(),D2t),e)}function QYt(e){return P0(),Xr((JZe(),O2t),e)}function ZYt(e){return b$(),Xr((cZe(),N2t),e)}function JYt(e){return mh(),Xr((ret(),P2t),e)}function eXt(e){return WH(),Xr((Bet(),Xvt),e)}function tXt(e){return j_(),Xr((tJe(),Qvt),e)}function nXt(e){return Zm(),Xr((BJe(),Zvt),e)}function rXt(e){return vo(),Xr((iJe(),iwt),e)}function iXt(e){return f4(),Xr((Mtt(),ewt),e)}function sXt(e){return R0(),Xr((rJe(),twt),e)}function aXt(e){return mD(),Xr((aZe(),nwt),e)}function oXt(e){return iH(),Xr((nJe(),swt),e)}function cXt(e){return X_(),Xr((tet(),Jvt),e)}function uXt(e){return uD(),Xr((sZe(),awt),e)}function lXt(e){return Q8(),Xr((aJe(),owt),e)}function hXt(e){return nH(),Xr((oJe(),cwt),e)}function fXt(e){return uH(),Xr((sJe(),uwt),e)}function dXt(e){return Gv(),Xr((cJe(),xwt),e)}function gXt(e){return S_(),Xr((lZe(),Swt),e)}function pXt(e){return yd(),Xr((hZe(),Nwt),e)}function bXt(e){return M1(),Xr((fZe(),Bwt),e)}function vXt(e){return Jf(),Xr((uZe(),Qwt),e)}function wXt(e){return Ov(),Xr((dZe(),imt),e)}function mXt(e){return a7(),Xr((IJe(),smt),e)}function yXt(e){return nC(),Xr((Fet(),omt),e)}function kXt(e){return c$(),Xr((bZe(),kmt),e)}function xXt(e){return J$(),Xr((pZe(),Smt),e)}function EXt(e){return f$(),Xr((gZe(),xmt),e)}function TXt(e){return yH(),Xr((uJe(),Lmt),e)}function _Xt(e){return L$(),Xr((vZe(),Mmt),e)}function CXt(e){return RD(),Xr((lJe(),Dmt),e)}function SXt(e){return jH(),Xr((NJe(),Umt),e)}function AXt(e){return rH(),Xr((fJe(),Wmt),e)}function LXt(e){return mH(),Xr((hJe(),Kmt),e)}function MXt(e){return v7(),Xr((aet(),gyt),e)}function DXt(e){return GD(),Xr((dJe(),pyt),e)}function IXt(e){return _F(),Xr((LQe(),byt),e)}function OXt(e){return CF(),Xr((AQe(),wyt),e)}function NXt(e){return lD(),Xr((mZe(),myt),e)}function PXt(e){return rI(),Xr((iet(),yyt),e)}function BXt(e){return OT(),Xr((MQe(),Byt),e)}function RXt(e){return OD(),Xr((wZe(),Ryt),e)}function FXt(e){return i1(),Xr((set(),Gyt),e)}function jXt(e){return Ng(),Xr((Itt(),Vyt),e)}function $Xt(e){return t0(),Xr((Iet(),Uyt),e)}function HXt(e){return ty(),Xr((Det(),Zyt),e)}function zXt(e){return po(),Xr((rVe(),Qpt),e)}function GXt(e){return j8(),Xr((nZe(),Xpt),e)}function qXt(e){return wo(),Xr((cet(),d3t),e)}function VXt(e){return P1(),Xr((pJe(),g3t),e)}function UXt(e){return $0(),Xr((jJe(),p3t),e)}function WXt(e){return YH(),Xr(($et(),b3t),e)}function KXt(e){return F0(),Xr((gJe(),w3t),e)}function YXt(e){return Ul(),Xr((FJe(),y3t),e)}function XXt(e){return sy(),Xr((Htt(),k3t),e)}function QXt(e){return n4(),Xr((uet(),x3t),e)}function ZXt(e){return wa(),Xr((_et(),E3t),e)}function JXt(e){return ol(),Xr((jet(),T3t),e)}function eQt(e){return Bl(),Xr((HJe(),M3t),e)}function tQt(e){return wl(),Xr((int(),D3t),e)}function nQt(e){return ht(),Xr((het(),_3t),e)}function rQt(e){return EH(),Xr(($Je(),I3t),e)}function iQt(e){return Pl(),Xr((RJe(),P3t),e)}function sQt(e){return g7(),Xr((Ott(),K3t),e)}function aQt(e,t){return Sn(e),e+(Sn(t),t)}function oQt(e,t){return Ud(),Br(He(e.a),t)}function cQt(e,t){return Ud(),Br(He(e.a),t)}function vne(e,t){this.c=e,this.a=t,this.b=t-e}function SWe(e,t,n){this.a=e,this.b=t,this.c=n}function ive(e,t,n){this.a=e,this.b=t,this.c=n}function sve(e,t,n){this.a=e,this.b=t,this.c=n}function AWe(e,t,n){this.a=e,this.b=t,this.c=n}function LWe(e,t,n){this.a=e,this.b=t,this.c=n}function yg(e,t,n){this.e=e,this.a=t,this.c=n}function MWe(e,t,n){lh(),vwe.call(this,e,t,n)}function wne(e,t,n){lh(),twe.call(this,e,t,n)}function ave(e,t,n){lh(),twe.call(this,e,t,n)}function ove(e,t,n){lh(),twe.call(this,e,t,n)}function DWe(e,t,n){lh(),wne.call(this,e,t,n)}function cve(e,t,n){lh(),wne.call(this,e,t,n)}function IWe(e,t,n){lh(),cve.call(this,e,t,n)}function OWe(e,t,n){lh(),ave.call(this,e,t,n)}function NWe(e,t,n){lh(),ove.call(this,e,t,n)}function qM(e,t){return Nr(e),Nr(t),new tGe(e,t)}function L6(e,t){return Nr(e),Nr(t),new WWe(e,t)}function uQt(e,t){return Nr(e),Nr(t),new KWe(e,t)}function lQt(e,t){return Nr(e),Nr(t),new rGe(e,t)}function u(e,t){return u_(e==null||ese(e,t)),e}function l8(e){var t;return t=new st,Wre(t,e),t}function hQt(e){var t;return t=new Ys,Wre(t,e),t}function PWe(e){var t;return t=new gpe,oie(t,e),t}function VM(e){var t;return t=new as,oie(t,e),t}function fQt(e){return!e.e&&(e.e=new st),e.e}function dQt(e){return!e.c&&(e.c=new gm),e.c}function it(e,t){return e.c[e.c.length]=t,!0}function BWe(e,t){this.c=e,this.b=t,this.a=!1}function uve(e){this.d=e,Lee(this),this.b=sZt(e.d)}function RWe(){this.a=";,;",this.b="",this.c=""}function gQt(e,t,n){FKe.call(this,t,n),this.a=e}function FWe(e,t,n){this.b=e,Zqe.call(this,t,n)}function lve(e,t,n){this.c=e,OF.call(this,t,n)}function hve(e,t,n){O4e(n,0,e,t,n.length,!1)}function Kd(e,t,n,r,s){e.b=t,e.c=n,e.d=r,e.a=s}function pQt(e,t){t&&(e.b=t,e.a=(Fp(t),t.a))}function fve(e,t,n,r,s){e.d=t,e.c=n,e.a=r,e.b=s}function dve(e){var t,n;t=e.b,n=e.c,e.b=n,e.c=t}function gve(e){var t,n;n=e.d,t=e.a,e.d=t,e.a=n}function pve(e){return Gp(kZt(Ko(e)?Fh(e):e))}function bQt(e,t){return Tu(eKe(e.d),eKe(t.d))}function vQt(e,t){return t==(ht(),Dn)?e.c:e.d}function h8(){h8=pe,N_e=(ht(),Dn),uV=$n}function jWe(){this.b=Ue(ft(xt((a1(),zue))))}function $We(e){return G2(),Me(Yn,yt,1,e,5,1)}function wQt(e){return new Pt(e.c+e.b,e.d+e.a)}function mQt(e,t){return TF(),Tu(e.d.p,t.d.p)}function mne(e){return Qn(e.b!=0),bh(e,e.a.a)}function yQt(e){return Qn(e.b!=0),bh(e,e.c.b)}function bve(e,t){if(!e)throw J(new YHe(t))}function kj(e,t){if(!e)throw J(new Ln(t))}function vve(e,t,n){r8.call(this,e,t),this.b=n}function UM(e,t,n){I2e.call(this,e,t),this.c=n}function HWe(e,t,n){met.call(this,t,n),this.d=e}function wve(e){Qbe(),Ex.call(this),this.th(e)}function zWe(e,t,n){this.a=e,B3.call(this,t,n)}function GWe(e,t,n){this.a=e,B3.call(this,t,n)}function xj(e,t,n){I2e.call(this,e,t),this.c=n}function qWe(){C8(),jZt.call(this,(Ap(),rf))}function VWe(e){return e!=null&&!$ie(e,KS,YS)}function kQt(e,t){return(nrt(e)<<4|nrt(t))&Ss}function xQt(e,t){return Uj(),cse(e,t),new wYe(e,t)}function V2(e,t){var n;e.n&&(n=t,it(e.f,n))}function f8(e,t,n){var r;r=new Bm(n),t1(e,t,r)}function EQt(e,t){var n;return n=e.c,Bme(e,t),n}function mve(e,t){return t<0?e.g=-1:e.g=t,e}function Ej(e,t){return oin(e),e.a*=t,e.b*=t,e}function UWe(e,t,n,r,s){e.c=t,e.d=n,e.b=r,e.a=s}function ci(e,t){return ks(e,t,e.c.b,e.c),!0}function yve(e){e.a.b=e.b,e.b.a=e.a,e.a=e.b=null}function yne(e){this.b=e,this.a=Cv(this.b.a).Ed()}function WWe(e,t){this.b=e,this.a=t,nT.call(this)}function KWe(e,t){this.a=e,this.b=t,nT.call(this)}function YWe(e,t){FKe.call(this,t,1040),this.a=e}function WM(e){return e==0||isNaN(e)?e:e<0?-1:1}function TQt(e){return P6(),n0(e)==us(Kp(e))}function _Qt(e){return P6(),Kp(e)==us(n0(e))}function _v(e,t){return eC(e,new r8(t.a,t.b))}function CQt(e){return!to(e)&&e.c.i.c==e.d.i.c}function Tj(e){var t;return t=e.n,e.a.b+t.d+t.a}function XWe(e){var t;return t=e.n,e.e.b+t.d+t.a}function kve(e){var t;return t=e.n,e.e.a+t.b+t.c}function QWe(e){return yi(),new Yd(0,e)}function SQt(e){return e.a?e.a:ere(e)}function u_(e){if(!e)throw J(new Wx(null))}function ZWe(){ZWe=pe,Cfe=(hn(),new D(tue))}function _j(){_j=pe,new w3e((Yee(),due),(Xee(),fue))}function JWe(){JWe=pe,G8e=Me(Za,Qe,19,256,0,1)}function kne(e,t,n,r){Wye.call(this,e,t,n,r,0,0)}function AQt(e,t,n){return Si(e.b,u(n.b,17),t)}function LQt(e,t,n){return Si(e.b,u(n.b,17),t)}function MQt(e,t){return it(e,new Pt(t.a,t.b))}function DQt(e,t){return e.c=t)throw J(new lpe)}function dZt(e,t,n){return cs(t,0,_ve(t[0],n[0])),t}function gZt(e,t,n){t.Ye(n,Ue(ft(er(e.b,n)))*e.a)}function RKe(e,t,n){return g4(),$8(e,t)&&$8(e,n)}function g_(e){return ol(),!e.Hc(Z0)&&!e.Hc(m2)}function jj(e){return new Pt(e.c+e.b/2,e.d+e.a/2)}function One(e,t){return t.kh()?Up(e.b,u(t,49)):t}function Hve(e,t){this.e=e,this.d=t&64?t|Ed:t}function FKe(e,t){this.c=0,this.d=e,this.b=t|64|Ed}function $j(e){this.b=new su(11),this.a=(q3(),e)}function Nne(e){this.b=null,this.a=(q3(),e||r7e)}function jKe(e){this.a=lit(e.a),this.b=new Uu(e.b)}function $Ke(e){this.b=e,_6.call(this,e),GVe(this)}function HKe(e){this.b=e,NM.call(this,e),qVe(this)}function Pm(e,t,n){this.a=e,S6.call(this,t,n,5,6)}function zve(e,t,n,r){this.b=e,Bs.call(this,t,n,r)}function oa(e,t,n,r,s){jre.call(this,e,t,n,r,s,-1)}function p_(e,t,n,r,s){dD.call(this,e,t,n,r,s,-1)}function at(e,t,n,r){Bs.call(this,e,t,n),this.b=r}function Hj(e,t,n,r){UM.call(this,e,t,n),this.b=r}function zKe(e){Vqe.call(this,e,!1),this.a=!1}function GKe(e,t){this.b=e,see.call(this,e.b),this.a=t}function qKe(e,t){Rm(),vUt.call(this,e,pH(new Al(t)))}function zj(e,t){return yi(),new nwe(e,t,0)}function Pne(e,t){return yi(),new nwe(6,e,t)}function pZt(e,t){return an(e.substr(0,t.length),t)}function Il(e,t){return fa(t)?rre(e,t):!!$o(e.f,t)}function La(e,t){for(Sn(t);e.Ob();)t.td(e.Pb())}function z3(e,t,n){Qp(),this.e=e,this.d=t,this.a=n}function kg(e,t,n,r){var s;s=e.i,s.i=t,s.a=n,s.b=r}function Gve(e){var t;for(t=e;t.f;)t=t.f;return t}function I6(e){var t;return t=F_(e),Qn(t!=null),t}function bZt(e){var t;return t=ton(e),Qn(t!=null),t}function g8(e,t){var n;return n=e.a.gc(),eme(t,n),n-t}function qve(e,t){var n;for(n=0;n0?b.Math.log(e/t):-100}function VKe(e,t){return Mc(e,t)<0?-1:Mc(e,t)>0?1:0}function Yve(e,t,n){return Fut(e,u(t,46),u(n,167))}function UKe(e,t){return u(jve(Cv(e.a)).Xb(t),42).cd()}function _Zt(e,t){return Krn(t,e.length),new YWe(e,t)}function jne(e,t){this.d=e,rr.call(this,e),this.e=t}function Sv(e){this.d=(Sn(e),e),this.a=0,this.c=Cz}function Xve(e,t){cv.call(this,1),this.a=e,this.b=t}function WKe(e,t){return e.c?WKe(e.c,t):it(e.b,t),e}function CZt(e,t,n){var r;return r=Gm(e,t),Ere(e,t,n),r}function Qve(e,t){var n;return n=e.slice(0,t),gme(n,e)}function KKe(e,t,n){var r;for(r=0;r=e.g}function Kne(e,t,n){var r;return r=sie(e,t,n),_5e(e,r)}function O6(e,t){var n;n=e.a.length,Gm(e,n),Ere(e,n,t)}function uYe(e,t){var n;n=console[e],n.call(console,t)}function lYe(e,t){var n;++e.j,n=e.Vi(),e.Ii(e.oi(n,t))}function FZt(e,t,n){u(t.b,65),Mu(t.a,new ive(e,n,t))}function twe(e,t,n){nF.call(this,t),this.a=e,this.b=n}function nwe(e,t,n){cv.call(this,e),this.a=t,this.b=n}function rwe(e,t,n){this.a=e,npe.call(this,t),this.b=n}function hYe(e,t,n){this.a=e,Owe.call(this,8,t,null,n)}function jZt(e){this.a=(Sn(Zr),Zr),this.b=e,new Epe}function fYe(e){this.c=e,this.b=this.c.a,this.a=this.c.e}function iwe(e){this.c=e,this.b=e.a.d.a,_be(e.a.e,this)}function Ol(e){Am(e.c!=-1),e.d.$c(e.c),e.b=e.c,e.c=-1}function w_(e){return b.Math.sqrt(e.a*e.a+e.b*e.b)}function Lv(e,t){return d8(t,e.a.c.length),St(e.a,t)}function md(e,t){return je(e)===je(t)||e!=null&&Ci(e,t)}function $Zt(e){return 0>=e?new Xpe:Cin(e-1)}function HZt(e){return Yy?rre(Yy,e):!1}function dYe(e){return e?e.dc():!e.Kc().Ob()}function Ya(e){return!e.a&&e.c?e.c.b:e.a}function zZt(e){return!e.a&&(e.a=new Bs(y2,e,4)),e.a}function Mv(e){return!e.d&&(e.d=new Bs(Eo,e,1)),e.d}function Sn(e){if(e==null)throw J(new mT);return e}function m_(e){e.c?e.c.He():(e.d=!0,Wgn(e))}function Fp(e){e.c?Fp(e.c):(ub(e),e.d=!0)}function gYe(e){cwe(e.a),e.b=Me(Yn,yt,1,e.b.length,5,1)}function GZt(e,t){return Tu(t.j.c.length,e.j.c.length)}function qZt(e,t){e.c<0||e.b.b=0?e.Bh(n):P4e(e,t)}function pYe(e){var t,n;return t=e.c.i.c,n=e.d.i.c,t==n}function UZt(e){if(e.p!=4)throw J(new zu);return e.e}function WZt(e){if(e.p!=3)throw J(new zu);return e.e}function KZt(e){if(e.p!=6)throw J(new zu);return e.f}function YZt(e){if(e.p!=6)throw J(new zu);return e.k}function XZt(e){if(e.p!=3)throw J(new zu);return e.j}function QZt(e){if(e.p!=4)throw J(new zu);return e.j}function swe(e){return!e.b&&(e.b=new rF(new Kee)),e.b}function Dv(e){return e.c==-2&&zx(e,pfn(e.g,e.b)),e.c}function v8(e,t){var n;return n=Gne("",e),n.n=t,n.i=1,n}function ZZt(e,t){Ane(u(t.b,65),e),Mu(t.a,new ni(e))}function JZt(e,t){Br((!e.a&&(e.a=new jM(e,e)),e.a),t)}function bYe(e,t){this.b=e,jne.call(this,e,t),GVe(this)}function vYe(e,t){this.b=e,Kbe.call(this,e,t),qVe(this)}function awe(e,t,n,r){vv.call(this,e,t),this.d=n,this.a=r}function Vj(e,t,n,r){vv.call(this,e,n),this.a=t,this.f=r}function wYe(e,t){OWt.call(this,Sin(Nr(e),Nr(t))),this.a=t}function mYe(){d4e.call(this,_b,(xze(),x4t)),kwn(this)}function yYe(){d4e.call(this,Uh,(Qx(),RAe)),Mvn(this)}function kYe(){Kr.call(this,"DELAUNAY_TRIANGULATION",0)}function eJt(e){return String.fromCharCode.apply(null,e)}function Si(e,t,n){return fa(t)?Oo(e,t,n):gu(e.f,t,n)}function owe(e){return hn(),e?e.ve():(q3(),q3(),s7e)}function tJt(e,t,n){return W6(),n.pg(e,u(t.cd(),146))}function xYe(e,t){return _j(),new w3e(new rUe(e),new nUe(t))}function nJt(e){return ql(e,Nae),R$(Ua(Ua(5,e),e/10|0))}function Uj(){Uj=pe,k0t=new Qee(ie(re(Cb,1),Sz,42,0,[]))}function EYe(e){return!e.d&&(e.d=new T(e.c.Cc())),e.d}function w8(e){return!e.a&&(e.a=new rze(e.c.vc())),e.a}function TYe(e){return!e.b&&(e.b=new Kx(e.c.ec())),e.b}function Qd(e,t){for(;t-- >0;)e=e<<1|(e<0?1:0);return e}function Vc(e,t){return je(e)===je(t)||e!=null&&Ci(e,t)}function rJt(e,t){return Mn(),u(t.b,19).ar&&++r,r}function L0(e){var t,n;return n=(t=new uv,t),I8(n,e),n}function Jne(e){var t,n;return n=(t=new uv,t),b4e(n,e),n}function wJt(e,t){var n;return n=er(e.f,t),Wme(t,n),null}function ere(e){var t;return t=Lin(e),t||null}function NYe(e){return!e.b&&(e.b=new at(ra,e,12,3)),e.b}function mJt(e){return e!=null&&gM(ZV,e.toLowerCase())}function yJt(e,t){return Fs(Wu(e)*Dl(e),Wu(t)*Dl(t))}function kJt(e,t){return Fs(Wu(e)*Dl(e),Wu(t)*Dl(t))}function xJt(e,t){return Fs(e.d.c+e.d.b/2,t.d.c+t.d.b/2)}function EJt(e,t){return Fs(e.g.c+e.g.b/2,t.g.c+t.g.b/2)}function PYe(e,t,n){n.a?Iu(e,t.b-e.f/2):Du(e,t.a-e.g/2)}function BYe(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function RYe(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function K2(e,t,n,r){this.e=e,this.a=t,this.c=n,this.d=r}function FYe(e,t,n,r){this.a=e,this.c=t,this.d=n,this.b=r}function jYe(e,t,n,r){lh(),DZe.call(this,t,n,r),this.a=e}function $Ye(e,t,n,r){lh(),DZe.call(this,t,n,r),this.a=e}function HYe(e,t){this.a=e,LKt.call(this,e,u(e.d,15).Zc(t))}function tre(e){this.f=e,this.c=this.f.e,e.f>0&&tst(this)}function zYe(e,t,n,r){this.b=e,this.c=r,Hte.call(this,t,n)}function GYe(e){return Qn(e.b=0&&an(e.substr(n,t.length),t)}function jp(e,t,n,r,s,o,h){return new _re(e.e,t,n,r,s,o,h)}function aXe(e,t,n,r,s,o){this.a=e,Zre.call(this,t,n,r,s,o)}function oXe(e,t,n,r,s,o){this.a=e,Zre.call(this,t,n,r,s,o)}function cXe(e,t){this.g=e,this.d=ie(re(h0,1),Bg,10,0,[t])}function xg(e,t){this.e=e,this.a=Yn,this.b=Oct(t),this.c=t}function uXe(e,t){bj.call(this),xme(this),this.a=e,this.c=t}function eD(e,t,n,r){cs(e.c[t.g],n.g,r),cs(e.c[n.g],t.g,r)}function are(e,t,n,r){cs(e.c[t.g],t.g,n),cs(e.b[t.g],t.g,r)}function VJt(){return uD(),ie(re(__e,1),tt,376,0,[dhe,DO])}function UJt(){return pD(),ie(re(v9e,1),tt,479,0,[b9e,Dq])}function WJt(){return ED(),ie(re(g9e,1),tt,419,0,[Lq,d9e])}function KJt(){return S$(),ie(re(a9e,1),tt,422,0,[s9e,gle])}function YJt(){return b$(),ie(re(M9e,1),tt,420,0,[Lle,L9e])}function XJt(){return mD(),ie(re(k_e,1),tt,421,0,[lhe,hhe])}function QJt(){return S_(),ie(re(Cwt,1),tt,523,0,[TS,ES])}function ZJt(){return Jf(),ie(re(Xwt,1),tt,520,0,[jy,d2])}function JJt(){return yd(),ie(re(Owt,1),tt,516,0,[Lw,Gg])}function een(){return M1(),ie(re(Pwt,1),tt,515,0,[Pb,K1])}function ten(){return Ov(),ie(re(rmt,1),tt,455,0,[g2,Y4])}function nen(){return f$(),ie(re(Y_e,1),tt,425,0,[Ahe,K_e])}function ren(){return c$(),ie(re(W_e,1),tt,480,0,[She,U_e])}function ien(){return J$(),ie(re(X_e,1),tt,495,0,[mV,yE])}function sen(){return L$(),ie(re(Z_e,1),tt,426,0,[Q_e,Ihe])}function aen(){return OD(),ie(re(tSe,1),tt,429,0,[AV,eSe])}function oen(){return lD(),ie(re(OCe,1),tt,430,0,[Hhe,CV])}function cen(){return LH(),ie(re(w7e,1),tt,428,0,[Aue,v7e])}function uen(){return P$(),ie(re(y7e,1),tt,427,0,[m7e,Lue])}function len(){return B$(),ie(re(K7e,1),tt,424,0,[$ue,ZG])}function hen(){return j8(),ie(re(Ypt,1),tt,511,0,[gO,Jue])}function r$(e,t,n,r){return n>=0?e.jh(t,n,r):e.Sg(null,n,r)}function ore(e){return e.b.b==0?e.a.$e():mne(e.b)}function fen(e){if(e.p!=5)throw J(new zu);return Or(e.f)}function den(e){if(e.p!=5)throw J(new zu);return Or(e.k)}function bwe(e){return je(e.a)===je((cie(),Efe))&&gwn(e),e.a}function lXe(e){this.a=u(Nr(e),271),this.b=(hn(),new ube(e))}function hXe(e,t){Yge(this,new Pt(e.a,e.b)),VR(this,VM(t))}function Ov(){Ov=pe,g2=new T2e(uk,0),Y4=new T2e(lk,1)}function yd(){yd=pe,Lw=new x2e(lk,0),Gg=new x2e(uk,1)}function Nv(){EVt.call(this,new w6(qm(12))),sbe(!0),this.a=2}function cre(e,t,n){yi(),cv.call(this,e),this.b=t,this.a=n}function vwe(e,t,n){lh(),nF.call(this,t),this.a=e,this.b=n}function fXe(e){bj.call(this),xme(this),this.a=e,this.c=!0}function dXe(e){var t;t=e.c.d.b,e.b=t,e.a=e.c.d,t.a=e.c.d.b=e}function i$(e){var t;yin(e.a),TVe(e.a),t=new nr(e.a),Uye(t)}function gen(e,t){Tct(e,!0),Mu(e.e.wf(),new eve(e,!0,t))}function s$(e,t){return UQe(t),vin(e,Me(Lr,Jr,25,t,15,1),t)}function pen(e,t){return P6(),e==us(n0(t))||e==us(Kp(t))}function Uc(e,t){return t==null?hc($o(e.f,null)):BT(e.g,t)}function ben(e){return e.b==0?null:(Qn(e.b!=0),bh(e,e.a.a))}function _s(e){return Math.max(Math.min(e,Ei),-2147483648)|0}function ven(e,t){var n=wue[e.charCodeAt(0)];return n??e}function a$(e,t){return Zj(e,"set1"),Zj(t,"set2"),new uGe(e,t)}function wen(e,t){var n;return n=fin(e.f,t),Ni(gj(n),e.f.d)}function k_(e,t){var n,r;return n=t,r=new Nt,flt(e,n,r),r.d}function ure(e,t,n,r){var s;s=new eWe,t.a[n.g]=s,M6(e.b,r,s)}function wwe(e,t,n){var r;r=e.Yg(t),r>=0?e.sh(r,n):o5e(e,t,n)}function V3(e,t,n){u$(),e&&Si(yfe,e,t),e&&Si(oN,e,n)}function gXe(e,t,n){this.i=new st,this.b=e,this.g=t,this.a=n}function o$(e,t,n){this.c=new st,this.e=e,this.f=t,this.b=n}function mwe(e,t,n){this.a=new st,this.e=e,this.f=t,this.c=n}function pXe(e,t){ij(this),this.f=t,this.g=e,Qj(this),this._d()}function tD(e,t){var n;n=e.q.getHours(),e.q.setDate(t),lC(e,n)}function bXe(e,t){var n;for(Nr(t),n=e.a;n;n=n.c)t.Od(n.g,n.i)}function vXe(e){var t;return t=new bF(qm(e.length)),lye(t,e),t}function men(e){function t(){}return t.prototype=e||{},new t}function yen(e,t){return Ktt(e,t)?(Uet(e),!0):!1}function M0(e,t){if(t==null)throw J(new mT);return vcn(e,t)}function ken(e){if(e.qe())return null;var t=e.n;return PG[t]}function nD(e){return e.Db>>16!=3?null:u(e.Cb,33)}function L1(e){return e.Db>>16!=9?null:u(e.Cb,33)}function wXe(e){return e.Db>>16!=6?null:u(e.Cb,79)}function mXe(e){return e.Db>>16!=7?null:u(e.Cb,235)}function yXe(e){return e.Db>>16!=7?null:u(e.Cb,160)}function us(e){return e.Db>>16!=11?null:u(e.Cb,33)}function kXe(e,t){var n;return n=e.Yg(t),n>=0?e.lh(n):Fse(e,t)}function xXe(e,t){var n;return n=new Tve(t),_st(n,e),new Uu(n)}function ywe(e){var t;return t=e.d,t=e.si(e.f),Br(e,t),t.Ob()}function EXe(e,t){return e.b+=t.b,e.c+=t.c,e.d+=t.d,e.a+=t.a,e}function lre(e,t){return b.Math.abs(e)0}function TXe(){this.a=new C0,this.e=new Ys,this.g=0,this.i=0}function _Xe(e){this.a=e,this.b=Me(Ewt,Qe,1944,e.e.length,0,2)}function hre(e,t,n){var r;r=gnt(e,t,n),e.b=new Z$(r.c.length)}function M1(){M1=pe,Pb=new k2e(voe,0),K1=new k2e("UP",1)}function c$(){c$=pe,She=new _2e(Hft,0),U_e=new _2e("FAN",1)}function u$(){u$=pe,yfe=new Mr,oN=new Mr,zUt(j0t,new $9)}function Een(e){if(e.p!=0)throw J(new zu);return XT(e.f,0)}function Ten(e){if(e.p!=0)throw J(new zu);return XT(e.k,0)}function CXe(e){return e.Db>>16!=3?null:u(e.Cb,147)}function x8(e){return e.Db>>16!=6?null:u(e.Cb,235)}function Fm(e){return e.Db>>16!=17?null:u(e.Cb,26)}function SXe(e,t){var n=e.a=e.a||[];return n[t]||(n[t]=e.le(t))}function _en(e,t){var n;return n=e.a.get(t),n??new Array}function Cen(e,t){var n;n=e.q.getHours(),e.q.setMonth(t),lC(e,n)}function Oo(e,t,n){return t==null?gu(e.f,null,n):Wv(e.g,t,n)}function x_(e,t,n,r,s,o){return new N0(e.e,t,e.aj(),n,r,s,o)}function rD(e,t,n){return e.a=jl(e.a,0,t)+(""+n)+IM(e.a,t),e}function Sen(e,t,n){return it(e.a,(Uj(),cse(t,n),new vv(t,n))),e}function kwe(e){return obe(e.c),e.e=e.a=e.c,e.c=e.c.c,++e.d,e.a.f}function AXe(e){return obe(e.e),e.c=e.a=e.e,e.e=e.e.e,--e.d,e.a.f}function ba(e,t){e.d&&Au(e.d.e,e),e.d=t,e.d&&it(e.d.e,e)}function Va(e,t){e.c&&Au(e.c.g,e),e.c=t,e.c&&it(e.c.g,e)}function No(e,t){e.c&&Au(e.c.a,e),e.c=t,e.c&&it(e.c.a,e)}function rc(e,t){e.i&&Au(e.i.j,e),e.i=t,e.i&&it(e.i.j,e)}function LXe(e,t,n){this.a=t,this.c=e,this.b=(Nr(n),new Uu(n))}function MXe(e,t,n){this.a=t,this.c=e,this.b=(Nr(n),new Uu(n))}function DXe(e,t){this.a=e,this.c=fc(this.a),this.b=new n$(t)}function Aen(e){var t;return ub(e),t=new Ys,Vi(e,new $t(t))}function jm(e,t){if(e<0||e>t)throw J(new Do(C6e+e+S6e+t))}function xwe(e,t){return kKe(e.a,t)?Uve(e,u(t,22).g,null):null}function Len(e){return Aie(),Mn(),u(e.a,81).d.e!=0}function IXe(){IXe=pe,T0t=Qr((cF(),ie(re(E0t,1),tt,538,0,[bue])))}function OXe(){OXe=pe,lwt=il(new Xs,(ro(),Go),(po(),pO))}function Ewe(){Ewe=pe,hwt=il(new Xs,(ro(),Go),(po(),pO))}function NXe(){NXe=pe,dwt=il(new Xs,(ro(),Go),(po(),pO))}function PXe(){PXe=pe,Awt=xi(new Xs,(ro(),Go),(po(),nS))}function $l(){$l=pe,Dwt=xi(new Xs,(ro(),Go),(po(),nS))}function BXe(){BXe=pe,Iwt=xi(new Xs,(ro(),Go),(po(),nS))}function fre(){fre=pe,Rwt=xi(new Xs,(ro(),Go),(po(),nS))}function RXe(){RXe=pe,Emt=il(new Xs,(a7(),CS),(nC(),whe))}function X2(e,t,n,r){this.c=e,this.d=r,gre(this,t),pre(this,n)}function R6(e){this.c=new as,this.b=e.b,this.d=e.c,this.a=e.a}function dre(e){this.a=b.Math.cos(e),this.b=b.Math.sin(e)}function gre(e,t){e.a&&Au(e.a.k,e),e.a=t,e.a&&it(e.a.k,e)}function pre(e,t){e.b&&Au(e.b.f,e),e.b=t,e.b&&it(e.b.f,e)}function FXe(e,t){FZt(e,e.b,e.c),u(e.b.b,65),t&&u(t.b,65).b}function Men(e,t){jye(e,t),we(e.Cb,88)&&iy(dl(u(e.Cb,88)),2)}function bre(e,t){we(e.Cb,88)&&iy(dl(u(e.Cb,88)),4),au(e,t)}function l$(e,t){we(e.Cb,179)&&(u(e.Cb,179).tb=null),au(e,t)}function Wc(e,t){return ho(),Ure(t)?new Cj(t,e):new DM(t,e)}function Den(e,t){var n,r;n=t.c,r=n!=null,r&&O6(e,new Bm(t.c))}function jXe(e){var t,n;return n=(Qx(),t=new uv,t),I8(n,e),n}function $Xe(e){var t,n;return n=(Qx(),t=new uv,t),I8(n,e),n}function HXe(e,t){var n;return n=new Bh(e),t.c[t.c.length]=n,n}function zXe(e,t){var n;return n=u(Ym(B6(e.a),t),14),n?n.gc():0}function GXe(e){var t;return ub(e),t=(q3(),q3(),i7e),j$(e,t)}function qXe(e){for(var t;;)if(t=e.Pb(),!e.Ob())return t}function Twe(e,t){kVt.call(this,new w6(qm(e))),ql(t,sht),this.a=t}function Zd(e,t,n){Jnt(t,n,e.gc()),this.c=e,this.a=t,this.b=n-t}function VXe(e,t,n){var r;Jnt(t,n,e.c.length),r=n-t,Kpe(e.c,t,r)}function Ien(e,t){zVe(e,Or(qs(Np(t,24),Mz)),Or(qs(t,Mz)))}function xn(e,t){if(e<0||e>=t)throw J(new Do(C6e+e+S6e+t))}function zr(e,t){if(e<0||e>=t)throw J(new Bpe(C6e+e+S6e+t))}function mn(e,t){this.b=(Sn(e),e),this.a=t&dy?t:t|64|Ed}function UXe(e){EVe(this),rHe(this.a,cye(b.Math.max(8,e))<<1)}function D1(e){return sc(ie(re(na,1),Qe,8,0,[e.i.n,e.n,e.a]))}function Oen(){return F1(),ie(re(yl,1),tt,132,0,[g7e,Ql,xy])}function Nen(){return n1(),ie(re(Ey,1),tt,232,0,[pc,lu,bc])}function Pen(){return al(),ie(re(cgt,1),tt,461,0,[Nd,a2,Af])}function Ben(){return Lu(),ie(re(lgt,1),tt,462,0,[u1,o2,Lf])}function Ren(){return Uv(),ie(re(fEe,1),tt,423,0,[N4,hEe,Xue])}function Fen(){return L_(),ie(re(cEe,1),tt,379,0,[que,Gue,Vue])}function jen(){return j_(),ie(re(h_e,1),tt,378,0,[ihe,l_e,iV])}function $en(){return V6(),ie(re(c9e,1),tt,314,0,[Ek,vO,o9e])}function Hen(){return V$(),ie(re(l9e,1),tt,337,0,[u9e,Aq,ple])}function zen(){return sb(),ie(re(T2t,1),tt,450,0,[wle,aE,F4])}function Gen(){return qv(),ie(re(sle,1),tt,361,0,[mw,u2,ww])}function qen(){return P0(),ie(re(I2t,1),tt,303,0,[mO,$4,Tk])}function Ven(){return q8(),ie(re(Ale,1),tt,292,0,[Cle,Sle,wO])}function Uen(){return vo(),ie(re(rwt,1),tt,452,0,[yS,ul,hu])}function Wen(){return R0(),ie(re(y_e,1),tt,339,0,[f2,m_e,uhe])}function Ken(){return iH(),ie(re(T_e,1),tt,375,0,[x_e,fhe,E_e])}function Yen(){return uH(),ie(re(D_e,1),tt,377,0,[bhe,wE,Fy])}function Xen(){return Q8(),ie(re(S_e,1),tt,336,0,[ghe,C_e,kS])}function Qen(){return nH(),ie(re(M_e,1),tt,338,0,[L_e,phe,A_e])}function Zen(){return Gv(),ie(re(kwt,1),tt,454,0,[IO,xS,cV])}function Jen(){return yH(),ie(re(Amt,1),tt,442,0,[Dhe,Lhe,Mhe])}function etn(){return RD(),ie(re(tCe,1),tt,380,0,[yV,J_e,eCe])}function ttn(){return mH(),ie(re(mCe,1),tt,381,0,[wCe,Rhe,vCe])}function ntn(){return rH(),ie(re(pCe,1),tt,293,0,[Bhe,gCe,dCe])}function rtn(){return GD(),ie(re(Fhe,1),tt,437,0,[EV,TV,_V])}function itn(){return F0(),ie(re(cAe,1),tt,334,0,[FV,Wg,jS])}function stn(){return P1(),ie(re(XSe,1),tt,272,0,[EE,zy,TE])}function atn(e,t){return S0n(e,t,we(t,99)&&(u(t,18).Bb&so)!=0)}function otn(e,t,n){var r;return r=dC(e,t,!1),r.b<=t&&r.a<=n}function WXe(e,t,n){var r;r=new TQ,r.b=t,r.a=n,++t.b,it(e.d,r)}function ctn(e,t){var n;return n=(Sn(e),e).g,mbe(!!n),Sn(t),n(t)}function _we(e,t){var n,r;return r=g8(e,t),n=e.a.Zc(r),new cGe(e,n)}function utn(e){return e.Db>>16!=6?null:u(Hse(e),235)}function ltn(e){if(e.p!=2)throw J(new zu);return Or(e.f)&Ss}function htn(e){if(e.p!=2)throw J(new zu);return Or(e.k)&Ss}function ftn(e){return e.a==(C8(),nU)&&_ee(e,G0n(e.g,e.b)),e.a}function F6(e){return e.d==(C8(),nU)&&dT(e,B2n(e.g,e.b)),e.d}function Y(e){return Qn(e.ar?1:0}function KXe(e,t){var n,r;return n=Hre(t),r=n,u(er(e.c,r),19).a}function YXe(e,t){var n;for(n=e+"";n.length0&&e.a[--e.d]==0;);e.a[e.d++]==0&&(e.e=0)}function gQe(e){return e.a?e.e.length==0?e.a.a:e.a.a+(""+e.e):e.c}function Etn(e){return!!e.a&&gl(e.a.a).i!=0&&!(e.b&&sse(e.b))}function Ttn(e){return!!e.u&&jc(e.u.a).i!=0&&!(e.n&&ise(e.n))}function pQe(e){return Ene(e.e.Hd().gc()*e.c.Hd().gc(),16,new r6(e))}function _tn(e,t){return VKe(Ou(e.q.getTime()),Ou(t.q.getTime()))}function kd(e){return u(j1(e,Me(Que,Ooe,17,e.c.length,0,1)),474)}function iD(e){return u(j1(e,Me(h0,Bg,10,e.c.length,0,1)),193)}function Ctn(e){return $l(),!to(e)&&!(!to(e)&&e.c.i.c==e.d.i.c)}function bQe(e,t,n){var r;r=(Nr(e),new Uu(e)),nln(new LXe(r,t,n))}function sD(e,t,n){var r;r=(Nr(e),new Uu(e)),rln(new MXe(r,t,n))}function vQe(e,t){var n;return n=1-t,e.a[n]=Q$(e.a[n],n),Q$(e,t)}function wQe(e,t){var n;e.e=new Lpe,n=oy(t),aa(n,e.c),dct(e,n,0)}function va(e,t,n,r){var s;s=new zB,s.a=t,s.b=n,s.c=r,ci(e.a,s)}function dt(e,t,n,r){var s;s=new zB,s.a=t,s.b=n,s.c=r,ci(e.b,s)}function kf(e){var t,n,r;return t=new ZKe,n=aae(t,e),hmn(t),r=n,r}function Dwe(){var e,t,n;return t=(n=(e=new uv,e),n),it(WAe,t),t}function d$(e){return e.j.c=Me(Yn,yt,1,0,5,1),cwe(e.c),aJt(e.a),e}function U3(e){return IT(),we(e.g,10)?u(e.g,10):null}function Stn(e){return G3(e).dc()?!1:(CWt(e,new de),!0)}function Atn(e){if(!("stack"in e))try{throw e}catch{}return e}function aD(e,t){if(e<0||e>=t)throw J(new Do(H1n(e,t)));return e}function mQe(e,t,n){if(e<0||tn)throw J(new Do(f1n(e,t,n)))}function yre(e,t){if(Gs(e.a,t),t.d)throw J(new tc(Sht));t.d=e}function kre(e,t){if(t.$modCount!=e.$modCount)throw J(new uh)}function yQe(e,t){return we(t,42)?lse(e.a,u(t,42)):!1}function kQe(e,t){return we(t,42)?lse(e.a,u(t,42)):!1}function xQe(e,t){return we(t,42)?lse(e.a,u(t,42)):!1}function Ltn(e,t){return e.a<=e.b?(t.ud(e.a++),!0):!1}function Bv(e){var t;return Ko(e)?(t=e,t==-0?0:t):Frn(e)}function g$(e){var t;return Fp(e),t=new kt,D3(e.a,new un(t)),t}function EQe(e){var t;return Fp(e),t=new oi,D3(e.a,new lt(t)),t}function Ea(e,t){this.a=e,c6.call(this,e),jm(t,e.gc()),this.b=t}function Iwe(e){this.e=e,this.b=this.e.a.entries(),this.a=new Array}function Mtn(e){return Ene(e.e.Hd().gc()*e.c.Hd().gc(),273,new jR(e))}function p$(e){return new su((ql(e,Nae),R$(Ua(Ua(5,e),e/10|0))))}function TQe(e){return u(j1(e,Me(Upt,ift,11,e.c.length,0,1)),1943)}function Dtn(e,t,n){return n.f.c.length>0?Yve(e.a,t,n):Yve(e.b,t,n)}function Itn(e,t,n){e.d&&Au(e.d.e,e),e.d=t,e.d&&Om(e.d.e,n,e)}function xre(e,t){_yn(t,e),gve(e.d),gve(u(K(e,(pt(),Qq)),207))}function T_(e,t){Tyn(t,e),dve(e.d),dve(u(K(e,(pt(),Qq)),207))}function Rv(e,t){var n,r;return n=M0(e,t),r=null,n&&(r=n.fe()),r}function E8(e,t){var n,r;return n=Gm(e,t),r=null,n&&(r=n.ie()),r}function __(e,t){var n,r;return n=M0(e,t),r=null,n&&(r=n.ie()),r}function D0(e,t){var n,r;return n=M0(e,t),r=null,n&&(r=E4e(n)),r}function Otn(e,t,n){var r;return r=i7(n),fz(e.g,r,t),fz(e.i,t,n),t}function Ntn(e,t,n){var r;r=ccn();try{return jKt(e,t,n)}finally{Vtn(r)}}function _Qe(e){var t;t=e.Wg(),this.a=we(t,69)?u(t,69).Zh():t.Kc()}function Xs(){jHe.call(this),this.j.c=Me(Yn,yt,1,0,5,1),this.a=-1}function Owe(e,t,n,r){this.d=e,this.n=t,this.g=n,this.o=r,this.p=-1}function CQe(e,t,n,r){this.e=r,this.d=null,this.c=e,this.a=t,this.b=n}function Nwe(e,t,n){this.d=new eF(this),this.e=e,this.i=t,this.f=n}function b$(){b$=pe,Lle=new v2e(D7,0),L9e=new v2e("TOP_LEFT",1)}function SQe(){SQe=pe,O_e=xYe(ct(1),ct(4)),I_e=xYe(ct(1),ct(2))}function AQe(){AQe=pe,wyt=Qr((CF(),ie(re(vyt,1),tt,551,0,[$he])))}function LQe(){LQe=pe,byt=Qr((_F(),ie(re(ICe,1),tt,482,0,[jhe])))}function MQe(){MQe=pe,Byt=Qr((OT(),ie(re(JCe,1),tt,530,0,[FO])))}function DQe(){DQe=pe,zgt=Qr((EF(),ie(re(H7e,1),tt,481,0,[Pue])))}function Ptn(){return Vv(),ie(re(Pgt,1),tt,406,0,[sO,iO,Oue,Nue])}function Btn(){return M$(),ie(re(GG,1),tt,297,0,[_ue,l7e,h7e,f7e])}function Rtn(){return Y_(),ie(re($gt,1),tt,394,0,[lO,KG,YG,hO])}function Ftn(){return Z6(),ie(re(Rgt,1),tt,323,0,[oO,aO,cO,uO])}function jtn(){return V8(),ie(re(Npt,1),tt,405,0,[vw,_y,Ty,O4])}function $tn(){return cH(),ie(re(Jpt,1),tt,360,0,[rle,kq,xq,bO])}function IQe(e,t,n,r){return we(n,54)?new wUe(e,t,n,r):new Fve(e,t,n,r)}function Htn(){return R1(),ie(re(c2t,1),tt,411,0,[xk,tE,nE,ile])}function ztn(e){var t;return e.j==(ht(),xr)&&(t=not(e),Vu(t,$n))}function Gtn(e,t){var n;n=t.a,Va(n,t.c.d),ba(n,t.d.d),Um(n.a,e.n)}function OQe(e,t){return u(Tv(Rj(u(Ii(e.k,t),15).Oc(),P4)),113)}function NQe(e,t){return u(Tv(Fj(u(Ii(e.k,t),15).Oc(),P4)),113)}function qtn(e){return new mn(Hin(u(e.a.dd(),14).gc(),e.a.cd()),16)}function T8(e){return we(e,14)?u(e,14).dc():!e.Kc().Ob()}function j6(e){return IT(),we(e.g,145)?u(e.g,145):null}function PQe(e){if(e.e.g!=e.b)throw J(new uh);return!!e.c&&e.d>0}function ri(e){return Qn(e.b!=e.d.c),e.c=e.b,e.b=e.b.a,++e.a,e.c.c}function Pwe(e,t){Sn(t),cs(e.a,e.c,t),e.c=e.c+1&e.a.length-1,Fit(e)}function $p(e,t){Sn(t),e.b=e.b-1&e.a.length-1,cs(e.a,e.b,t),Fit(e)}function BQe(e,t){var n;for(n=e.j.c.length;n0&&Hc(e.g,0,t,0,e.i),t}function $Qe(e,t){LF();var n;return n=u(er(QV,e),55),!n||n.wj(t)}function rnn(e){if(e.p!=1)throw J(new zu);return Or(e.f)<<24>>24}function inn(e){if(e.p!=1)throw J(new zu);return Or(e.k)<<24>>24}function snn(e){if(e.p!=7)throw J(new zu);return Or(e.k)<<16>>16}function ann(e){if(e.p!=7)throw J(new zu);return Or(e.f)<<16>>16}function I0(e){var t;for(t=0;e.Ob();)e.Pb(),t=Ua(t,1);return R$(t)}function HQe(e,t){var n;return n=new xm,e.xd(n),n.a+="..",t.yd(n),n.a}function onn(e,t,n){var r;r=u(er(e.g,n),57),it(e.a.c,new xa(t,r))}function cnn(e,t,n){return Ine(ft(hc($o(e.f,t))),ft(hc($o(e.f,n))))}function v$(e,t,n){return gz(e,t,n,we(t,99)&&(u(t,18).Bb&so)!=0)}function unn(e,t,n){return y7(e,t,n,we(t,99)&&(u(t,18).Bb&so)!=0)}function lnn(e,t,n){return O0n(e,t,n,we(t,99)&&(u(t,18).Bb&so)!=0)}function Fwe(e,t){return e==(zn(),Hs)&&t==Hs?4:e==Hs||t==Hs?8:32}function zQe(e,t){return je(t)===je(e)?"(this Map)":t==null?Pu:Qo(t)}function hnn(e,t){return u(t==null?hc($o(e.f,null)):BT(e.g,t),281)}function GQe(e,t,n){var r;return r=i7(n),Si(e.b,r,t),Si(e.c,t,n),t}function qQe(e,t){var n;for(n=t;n;)Lm(e,n.i,n.j),n=us(n);return e}function jwe(e,t){var n;return n=ZM(l8(new zre(e,t))),Aj(new zre(e,t)),n}function Jd(e,t){ho();var n;return n=u(e,66).Mj(),Vfn(n,t),n.Ok(t)}function fnn(e,t,n,r,s){var o;o=F0n(s,n,r),it(t,B1n(s,o)),Sfn(e,s,t)}function VQe(e,t,n){e.i=0,e.e=0,t!=n&&(wnt(e,t,n),vnt(e,t,n))}function $we(e,t){var n;n=e.q.getHours(),e.q.setFullYear(t+e2),lC(e,n)}function dnn(e,t,n){if(n){var r=n.ee();e.a[t]=r(n)}else delete e.a[t]}function Ere(e,t,n){if(n){var r=n.ee();n=r(n)}else n=void 0;e.a[t]=n}function UQe(e){if(e<0)throw J(new QHe("Negative array size: "+e))}function jc(e){return e.n||(dl(e),e.n=new _Ke(e,Eo,e),jo(e)),e.n}function C_(e){return Qn(e.a=0&&e.a[n]===t[n];n--);return n<0}function QQe(e,t){X8();var n;return n=e.j.g-t.j.g,n!=0?n:0}function ZQe(e,t){return Sn(t),e.a!=null?ZQt(t.Kb(e.a)):zG}function w$(e){var t;return e?new Tve(e):(t=new C0,oie(t,e),t)}function zl(e,t){var n;return t.b.Kb(qJe(e,t.c.Ee(),(n=new Cn(t),n)))}function m$(e){o4e(),zVe(this,Or(qs(Np(e,24),Mz)),Or(qs(e,Mz)))}function JQe(){JQe=pe,ngt=Qr((LH(),ie(re(w7e,1),tt,428,0,[Aue,v7e])))}function eZe(){eZe=pe,rgt=Qr((P$(),ie(re(y7e,1),tt,427,0,[m7e,Lue])))}function tZe(){tZe=pe,spt=Qr((B$(),ie(re(K7e,1),tt,424,0,[$ue,ZG])))}function nZe(){nZe=pe,Xpt=Qr((j8(),ie(re(Ypt,1),tt,511,0,[gO,Jue])))}function rZe(){rZe=pe,E2t=Qr((ED(),ie(re(g9e,1),tt,419,0,[Lq,d9e])))}function iZe(){iZe=pe,S2t=Qr((pD(),ie(re(v9e,1),tt,479,0,[b9e,Dq])))}function sZe(){sZe=pe,awt=Qr((uD(),ie(re(__e,1),tt,376,0,[dhe,DO])))}function aZe(){aZe=pe,nwt=Qr((mD(),ie(re(k_e,1),tt,421,0,[lhe,hhe])))}function oZe(){oZe=pe,m2t=Qr((S$(),ie(re(a9e,1),tt,422,0,[s9e,gle])))}function cZe(){cZe=pe,N2t=Qr((b$(),ie(re(M9e,1),tt,420,0,[Lle,L9e])))}function uZe(){uZe=pe,Qwt=Qr((Jf(),ie(re(Xwt,1),tt,520,0,[jy,d2])))}function lZe(){lZe=pe,Swt=Qr((S_(),ie(re(Cwt,1),tt,523,0,[TS,ES])))}function hZe(){hZe=pe,Nwt=Qr((yd(),ie(re(Owt,1),tt,516,0,[Lw,Gg])))}function fZe(){fZe=pe,Bwt=Qr((M1(),ie(re(Pwt,1),tt,515,0,[Pb,K1])))}function dZe(){dZe=pe,imt=Qr((Ov(),ie(re(rmt,1),tt,455,0,[g2,Y4])))}function gZe(){gZe=pe,xmt=Qr((f$(),ie(re(Y_e,1),tt,425,0,[Ahe,K_e])))}function pZe(){pZe=pe,Smt=Qr((J$(),ie(re(X_e,1),tt,495,0,[mV,yE])))}function bZe(){bZe=pe,kmt=Qr((c$(),ie(re(W_e,1),tt,480,0,[She,U_e])))}function vZe(){vZe=pe,Mmt=Qr((L$(),ie(re(Z_e,1),tt,426,0,[Q_e,Ihe])))}function wZe(){wZe=pe,Ryt=Qr((OD(),ie(re(tSe,1),tt,429,0,[AV,eSe])))}function mZe(){mZe=pe,myt=Qr((lD(),ie(re(OCe,1),tt,430,0,[Hhe,CV])))}function S_(){S_=pe,TS=new y2e("UPPER",0),ES=new y2e("LOWER",1)}function vnn(e,t){var n;n=new p6,Y2(n,"x",t.a),Y2(n,"y",t.b),O6(e,n)}function wnn(e,t){var n;n=new p6,Y2(n,"x",t.a),Y2(n,"y",t.b),O6(e,n)}function mnn(e,t){var n,r;r=!1;do n=unt(e,t),r=r|n;while(n);return r}function Gwe(e,t){var n,r;for(n=t,r=0;n>0;)r+=e.a[n],n-=n&-n;return r}function yZe(e,t){var n;for(n=t;n;)Lm(e,-n.i,-n.j),n=us(n);return e}function Da(e,t){var n,r;for(Sn(t),r=e.Kc();r.Ob();)n=r.Pb(),t.td(n)}function kZe(e,t){var n;return n=t.cd(),new vv(n,e.e.pc(n,u(t.dd(),14)))}function ks(e,t,n,r){var s;s=new wt,s.c=t,s.b=n,s.a=r,r.b=n.a=s,++e.b}function gh(e,t,n){var r;return r=(xn(t,e.c.length),e.c[t]),e.c[t]=n,r}function ynn(e,t,n){return u(t==null?gu(e.f,null,n):Wv(e.g,t,n),281)}function Sre(e){return e.c&&e.d?Cwe(e.c)+"->"+Cwe(e.d):"e_"+xv(e)}function _8(e,t){return(ub(e),LT(new vn(e,new dme(t,e.a)))).sd(X7)}function knn(){return ro(),ie(re(uEe,1),tt,356,0,[Pd,c2,bu,Zc,Go])}function xnn(){return ht(),ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn])}function Enn(e){return fF(),function(){return Ntn(e,this,arguments)}}function Tnn(){return Date.now?Date.now():new Date().getTime()}function to(e){return!e.c||!e.d?!1:!!e.c.i&&e.c.i==e.d.i}function xZe(e){if(!e.c.Sb())throw J(new xc);return e.a=!0,e.c.Ub()}function oD(e){e.i=0,mM(e.b,null),mM(e.c,null),e.a=null,e.e=null,++e.g}function qwe(e){DUt.call(this,e==null?Pu:Qo(e),we(e,78)?u(e,78):null)}function EZe(e){Xlt(),W$e(this),this.a=new as,vye(this,e),ci(this.a,e)}function TZe(){Ute(this),this.b=new Pt(gs,gs),this.a=new Pt(Ds,Ds)}function _Ze(e,t){this.c=0,this.b=t,Jqe.call(this,e,17493),this.a=this.c}function Are(e){y$(),!V1&&(this.c=e,this.e=!0,this.a=new st)}function y$(){y$=pe,V1=!0,U0t=!1,W0t=!1,Y0t=!1,K0t=!1}function Vwe(e,t){return we(t,149)?an(e.c,u(t,149).c):!1}function Uwe(e,t){var n;return n=0,e&&(n+=e.f.a/2),t&&(n+=t.f.a/2),n}function Lre(e,t){var n;return n=u(Fv(e.d,t),23),n||u(Fv(e.e,t),23)}function CZe(e){this.b=e,rr.call(this,e),this.a=u(_n(this.b.a,4),126)}function SZe(e){this.b=e,C6.call(this,e),this.a=u(_n(this.b.a,4),126)}function dl(e){return e.t||(e.t=new R$e(e),G_(new XHe(e),0,e.t)),e.t}function _nn(){return wo(),ie(re(RS,1),tt,103,0,[f0,Df,Xh,Y0,X0])}function Cnn(){return n4(),ie(re(HS,1),tt,249,0,[v2,ZO,uAe,$S,lAe])}function Snn(){return i1(),ie(re(Ug,1),tt,175,0,[Fn,ua,Fd,Bb,Vg])}function Ann(){return rI(),ie(re(RCe,1),tt,316,0,[NCe,zhe,BCe,Ghe,PCe])}function Lnn(){return X_(),ie(re(d_e,1),tt,315,0,[f_e,ohe,che,wS,mS])}function Mnn(){return db(),ie(re(f9e,1),tt,335,0,[ble,h9e,vle,sS,iS])}function Dnn(){return v7(),ie(re(dyt,1),tt,355,0,[X4,Nk,IS,DS,OS])}function Inn(){return c4(),ie(re(l2t,1),tt,363,0,[Tq,Cq,Sq,_q,Eq])}function Onn(){return mh(),ie(re(G9e,1),tt,163,0,[TO,lS,l2,hS,Ly])}function C8(){C8=pe;var e,t;tU=(Qx(),t=new sF,t),nU=(e=new Vee,e)}function AZe(e){var t;return e.c||(t=e.r,we(t,88)&&(e.c=u(t,26))),e.c}function Nnn(e){return e.e=3,e.d=e.Yb(),e.e!=2?(e.e=0,!0):!1}function Mre(e){var t,n,r;return t=e&ml,n=e>>22&ml,r=e<0?V0:0,fu(t,n,r)}function Pnn(e){var t,n,r,s;for(n=e,r=0,s=n.length;r0?Art(e,t):Xot(e,-t)}function Wwe(e,t){return t==0||e.e==0?e:t>0?Xot(e,t):Art(e,-t)}function Pr(e){if(Vr(e))return e.c=e.a,e.a.Pb();throw J(new xc)}function MZe(e){var t,n;return t=e.c.i,n=e.d.i,t.k==(zn(),Ls)&&n.k==Ls}function Dre(e){var t;return t=new Iv,Ho(t,e),Ye(t,(pt(),Fo),null),t}function Ire(e,t,n){var r;return r=e.Yg(t),r>=0?e._g(r,n,!0):tw(e,t,n)}function Kwe(e,t,n,r){var s;for(s=0;st)throw J(new Do(M4e(e,t,"index")));return e}function Ore(e,t,n,r){var s;return s=Me(Lr,Jr,25,t,15,1),Khn(s,e,t,n,r),s}function Rnn(e,t){var n;n=e.q.getHours()+(t/60|0),e.q.setMinutes(t),lC(e,n)}function Fnn(e,t){return b.Math.min(Hp(t.a,e.d.d.c),Hp(t.b,e.d.d.c))}function z6(e,t){return fa(t)?t==null?W4e(e.f,null):Vtt(e.g,t):W4e(e.f,t)}function N1(e){this.c=e,this.a=new C(this.c.a),this.b=new C(this.c.b)}function k$(){this.e=new st,this.c=new st,this.d=new st,this.b=new st}function PZe(){this.g=new fpe,this.b=new fpe,this.a=new st,this.k=new st}function BZe(e,t,n){this.a=e,this.c=t,this.d=n,it(t.e,this),it(n.b,this)}function RZe(e,t){Zqe.call(this,t.rd(),t.qd()&-6),Sn(e),this.a=e,this.b=t}function FZe(e,t){Jqe.call(this,t.rd(),t.qd()&-6),Sn(e),this.a=e,this.b=t}function tme(e,t){Hte.call(this,t.rd(),t.qd()&-6),Sn(e),this.a=e,this.b=t}function x$(e,t,n){this.a=e,this.b=t,this.c=n,it(e.t,this),it(t.i,this)}function E$(){this.b=new as,this.a=new as,this.b=new as,this.a=new as}function T$(){T$=pe,NS=new Zi("org.eclipse.elk.labels.labelManager")}function jZe(){jZe=pe,e9e=new zs("separateLayerConnections",(cH(),rle))}function Jf(){Jf=pe,jy=new E2e("REGULAR",0),d2=new E2e("CRITICAL",1)}function uD(){uD=pe,dhe=new m2e("STACKED",0),DO=new m2e("SEQUENCED",1)}function lD(){lD=pe,Hhe=new L2e("FIXED",0),CV=new L2e("CENTER_NODE",1)}function jnn(e,t){var n;return n=Gwn(e,t),e.b=new Z$(n.c.length),twn(e,n)}function $nn(e,t,n){var r;return++e.e,--e.f,r=u(e.d[t].$c(n),133),r.dd()}function $Ze(e){var t;return e.a||(t=e.r,we(t,148)&&(e.a=u(t,148))),e.a}function nme(e){if(e.a){if(e.e)return nme(e.e)}else return e;return null}function Hnn(e,t){return e.pt.p?-1:0}function _$(e,t){return Sn(t),e.c=0,"Initial capacity must not be negative")}function GZe(){GZe=pe,ogt=Qr((n1(),ie(re(Ey,1),tt,232,0,[pc,lu,bc])))}function qZe(){qZe=pe,ugt=Qr((al(),ie(re(cgt,1),tt,461,0,[Nd,a2,Af])))}function VZe(){VZe=pe,hgt=Qr((Lu(),ie(re(lgt,1),tt,462,0,[u1,o2,Lf])))}function UZe(){UZe=pe,X0t=Qr((F1(),ie(re(yl,1),tt,132,0,[g7e,Ql,xy])))}function WZe(){WZe=pe,Cpt=Qr((L_(),ie(re(cEe,1),tt,379,0,[que,Gue,Vue])))}function KZe(){KZe=pe,Hpt=Qr((Uv(),ie(re(fEe,1),tt,423,0,[N4,hEe,Xue])))}function YZe(){YZe=pe,y2t=Qr((V6(),ie(re(c9e,1),tt,314,0,[Ek,vO,o9e])))}function XZe(){XZe=pe,k2t=Qr((V$(),ie(re(l9e,1),tt,337,0,[u9e,Aq,ple])))}function QZe(){QZe=pe,_2t=Qr((sb(),ie(re(T2t,1),tt,450,0,[wle,aE,F4])))}function ZZe(){ZZe=pe,b2t=Qr((qv(),ie(re(sle,1),tt,361,0,[mw,u2,ww])))}function JZe(){JZe=pe,O2t=Qr((P0(),ie(re(I2t,1),tt,303,0,[mO,$4,Tk])))}function eJe(){eJe=pe,D2t=Qr((q8(),ie(re(Ale,1),tt,292,0,[Cle,Sle,wO])))}function tJe(){tJe=pe,Qvt=Qr((j_(),ie(re(h_e,1),tt,378,0,[ihe,l_e,iV])))}function nJe(){nJe=pe,swt=Qr((iH(),ie(re(T_e,1),tt,375,0,[x_e,fhe,E_e])))}function rJe(){rJe=pe,twt=Qr((R0(),ie(re(y_e,1),tt,339,0,[f2,m_e,uhe])))}function iJe(){iJe=pe,iwt=Qr((vo(),ie(re(rwt,1),tt,452,0,[yS,ul,hu])))}function sJe(){sJe=pe,uwt=Qr((uH(),ie(re(D_e,1),tt,377,0,[bhe,wE,Fy])))}function aJe(){aJe=pe,owt=Qr((Q8(),ie(re(S_e,1),tt,336,0,[ghe,C_e,kS])))}function oJe(){oJe=pe,cwt=Qr((nH(),ie(re(M_e,1),tt,338,0,[L_e,phe,A_e])))}function cJe(){cJe=pe,xwt=Qr((Gv(),ie(re(kwt,1),tt,454,0,[IO,xS,cV])))}function uJe(){uJe=pe,Lmt=Qr((yH(),ie(re(Amt,1),tt,442,0,[Dhe,Lhe,Mhe])))}function lJe(){lJe=pe,Dmt=Qr((RD(),ie(re(tCe,1),tt,380,0,[yV,J_e,eCe])))}function hJe(){hJe=pe,Kmt=Qr((mH(),ie(re(mCe,1),tt,381,0,[wCe,Rhe,vCe])))}function fJe(){fJe=pe,Wmt=Qr((rH(),ie(re(pCe,1),tt,293,0,[Bhe,gCe,dCe])))}function dJe(){dJe=pe,pyt=Qr((GD(),ie(re(Fhe,1),tt,437,0,[EV,TV,_V])))}function gJe(){gJe=pe,w3t=Qr((F0(),ie(re(cAe,1),tt,334,0,[FV,Wg,jS])))}function pJe(){pJe=pe,g3t=Qr((P1(),ie(re(XSe,1),tt,272,0,[EE,zy,TE])))}function Knn(){return wa(),ie(re(hAe,1),tt,98,0,[w2,X1,CE,$b,p0,tu])}function J2(e,t){return!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),qie(e.o,t)}function Ynn(e){return!e.g&&(e.g=new kx),!e.g.d&&(e.g.d=new N$e(e)),e.g.d}function Xnn(e){return!e.g&&(e.g=new kx),!e.g.a&&(e.g.a=new P$e(e)),e.g.a}function Qnn(e){return!e.g&&(e.g=new kx),!e.g.b&&(e.g.b=new O$e(e)),e.g.b}function hD(e){return!e.g&&(e.g=new kx),!e.g.c&&(e.g.c=new B$e(e)),e.g.c}function Znn(e,t,n){var r,s;for(s=new G8(t,e),r=0;rn||t=0?e._g(n,!0,!0):tw(e,t,!0)}function prn(e,t){return Fs(Ue(ft(K(e,(et(),Ew)))),Ue(ft(K(t,Ew))))}function xJe(){xJe=pe,Tmt=Qv(Qv(AF(new Xs,(a7(),_S)),(nC(),dV)),mhe)}function brn(e,t,n){var r;return r=gnt(e,t,n),e.b=new Z$(r.c.length),w5e(e,r)}function vrn(e){if(e.b<=0)throw J(new xc);return--e.b,e.a-=e.c.c,ct(e.a)}function wrn(e){var t;if(!e.a)throw J(new CYe);return t=e.a,e.a=us(e.a),t}function mrn(e){for(;!e.a;)if(!lWe(e.c,new Rt(e)))return!1;return!0}function q6(e){var t;return Nr(e),we(e,198)?(t=u(e,198),t):new iee(e)}function yrn(e){A$(),u(e.We((bi(),Hy)),174).Fc((ol(),JO)),e.Ye(cfe,null)}function A$(){A$=pe,$yt=new vZ,zyt=new wZ,Hyt=ian((bi(),cfe),$yt,p2,zyt)}function L$(){L$=pe,Q_e=new A2e("LEAF_NUMBER",0),Ihe=new A2e("NODE_SIZE",1)}function krn(e,t,n){e.a=t,e.c=n,e.b.a.$b(),Rh(e.d),e.e.a.c=Me(Yn,yt,1,0,5,1)}function $re(e){e.a=Me(Lr,Jr,25,e.b+1,15,1),e.c=Me(Lr,Jr,25,e.b,15,1),e.d=0}function xrn(e,t){e.a.ue(t.d,e.b)>0&&(it(e.c,new vve(t.c,t.d,e.d)),e.b=t.d)}function fme(e,t){if(e.g==null||t>=e.i)throw J(new zte(t,e.i));return e.g[t]}function EJe(e,t,n){if(K8(e,n),n!=null&&!e.wj(n))throw J(new zee);return n}function TJe(e){var t;if(e.Ek())for(t=e.i-1;t>=0;--t)Te(e,t);return Rwe(e)}function Ern(e){var t,n;if(!e.b)return null;for(n=e.b;t=n.a[0];)n=t;return n}function Trn(e,t){var n,r;return UQe(t),n=(r=e.slice(0,t),gme(r,e)),n.length=t,n}function L8(e,t,n,r){var s;r=(q3(),r||r7e),s=e.slice(t,n),D4e(s,e,t,n,-t,r)}function ph(e,t,n,r,s){return t<0?tw(e,n,r):u(n,66).Nj().Pj(e,e.yh(),t,r,s)}function _rn(e){return we(e,172)?""+u(e,172).a:e==null?null:Qo(e)}function Crn(e){return we(e,172)?""+u(e,172).a:e==null?null:Qo(e)}function _Je(e,t){if(t.a)throw J(new tc(Sht));Gs(e.a,t),t.a=e,!e.j&&(e.j=t)}function dme(e,t){Hte.call(this,t.rd(),t.qd()&-16449),Sn(e),this.a=e,this.c=t}function CJe(e,t){var n,r;return r=t/e.c.Hd().gc()|0,n=t%e.c.Hd().gc(),G6(e,r,n)}function al(){al=pe,Nd=new pte(uk,0),a2=new pte(D7,1),Af=new pte(lk,2)}function M$(){M$=pe,_ue=new IF("All",0),l7e=new kVe,h7e=new OVe,f7e=new xVe}function SJe(){SJe=pe,q0t=Qr((M$(),ie(re(GG,1),tt,297,0,[_ue,l7e,h7e,f7e])))}function AJe(){AJe=pe,Ppt=Qr((V8(),ie(re(Npt,1),tt,405,0,[vw,_y,Ty,O4])))}function LJe(){LJe=pe,Bgt=Qr((Vv(),ie(re(Pgt,1),tt,406,0,[sO,iO,Oue,Nue])))}function MJe(){MJe=pe,Fgt=Qr((Z6(),ie(re(Rgt,1),tt,323,0,[oO,aO,cO,uO])))}function DJe(){DJe=pe,Hgt=Qr((Y_(),ie(re($gt,1),tt,394,0,[lO,KG,YG,hO])))}function IJe(){IJe=pe,smt=Qr((a7(),ie(re(B_e,1),tt,393,0,[fV,_S,NO,CS])))}function OJe(){OJe=pe,e2t=Qr((cH(),ie(re(Jpt,1),tt,360,0,[rle,kq,xq,bO])))}function NJe(){NJe=pe,Umt=Qr((jH(),ie(re(fCe,1),tt,340,0,[Phe,lCe,hCe,uCe])))}function PJe(){PJe=pe,u2t=Qr((R1(),ie(re(c2t,1),tt,411,0,[xk,tE,nE,ile])))}function BJe(){BJe=pe,Zvt=Qr((Zm(),ie(re(ahe,1),tt,197,0,[sV,she,K4,W4])))}function RJe(){RJe=pe,P3t=Qr((Pl(),ie(re(N3t,1),tt,396,0,[nh,mAe,wAe,yAe])))}function FJe(){FJe=pe,y3t=Qr((Ul(),ie(re(m3t,1),tt,285,0,[QO,d0,b2,XO])))}function jJe(){jJe=pe,p3t=Qr(($0(),ie(re(ffe,1),tt,218,0,[hfe,YO,_E,jk])))}function $Je(){$Je=pe,I3t=Qr((EH(),ie(re(vAe,1),tt,311,0,[pfe,gAe,bAe,pAe])))}function HJe(){HJe=pe,M3t=Qr((Bl(),ie(re(qS,1),tt,374,0,[tN,Hb,eN,Gy])))}function zJe(){zJe=pe,pz(),tLe=gs,R4t=Ds,nLe=new C3(gs),F4t=new C3(Ds)}function pD(){pD=pe,b9e=new b2e(U0,0),Dq=new b2e("IMPROVE_STRAIGHTNESS",1)}function Srn(e,t){return h8(),it(e,new xa(t,ct(t.e.c.length+t.g.c.length)))}function Arn(e,t){return h8(),it(e,new xa(t,ct(t.e.c.length+t.g.c.length)))}function gme(e,t){return yD(t)!=10&&ie(pl(t),t.hm,t.__elementTypeId$,yD(t),e),e}function Au(e,t){var n;return n=Yo(e,t,0),n==-1?!1:(Eg(e,n),!0)}function GJe(e,t){var n;return n=u(z6(e.e,t),387),n?(yve(n),n.e):null}function M8(e){var t;return Ko(e)&&(t=0-e,!isNaN(t))?t:Gp(U8(e))}function Yo(e,t,n){for(;n=0?NH(e,n,!0,!0):tw(e,t,!0)}function mme(e,t){IT();var n,r;return n=j6(e),r=j6(t),!!n&&!!r&&!oit(n.k,r.k)}function Drn(e,t){Du(e,t==null||wj((Sn(t),t))||isNaN((Sn(t),t))?0:(Sn(t),t))}function Irn(e,t){Iu(e,t==null||wj((Sn(t),t))||isNaN((Sn(t),t))?0:(Sn(t),t))}function Orn(e,t){zv(e,t==null||wj((Sn(t),t))||isNaN((Sn(t),t))?0:(Sn(t),t))}function Nrn(e,t){Hv(e,t==null||wj((Sn(t),t))||isNaN((Sn(t),t))?0:(Sn(t),t))}function KJe(e){(this.q?this.q:(hn(),hn(),l0)).Ac(e.q?e.q:(hn(),hn(),l0))}function Prn(e,t){return we(t,99)&&u(t,18).Bb&so?new Gte(t,e):new G8(t,e)}function Brn(e,t){return we(t,99)&&u(t,18).Bb&so?new Gte(t,e):new G8(t,e)}function YJe(e,t){j7e=new rs,jgt=t,ZC=e,u(ZC.b,65),sme(ZC,j7e,null),qut(ZC)}function Vre(e,t,n){var r;return r=e.g[t],n_(e,t,e.oi(t,n)),e.gi(t,n,r),e.ci(),r}function N$(e,t){var n;return n=e.Xc(t),n>=0?(e.$c(n),!0):!1}function Ure(e){var t;return e.d!=e.r&&(t=$h(e),e.e=!!t&&t.Cj()==Idt,e.d=t),e.e}function Wre(e,t){var n;for(Nr(e),Nr(t),n=!1;t.Ob();)n=n|e.Fc(t.Pb());return n}function Fv(e,t){var n;return n=u(er(e.e,t),387),n?(HVe(e,n),n.e):null}function XJe(e){var t,n;return t=e/60|0,n=e%60,n==0?""+t:""+t+":"+(""+n)}function ic(e,t){var n,r;return ub(e),r=new tme(t,e.a),n=new dWe(r),new vn(e,n)}function Gm(e,t){var n=e.a[t],r=(fie(),yue)[typeof n];return r?r(n):Eye(typeof n)}function Rrn(e){switch(e.g){case 0:return Ei;case 1:return-1;default:return 0}}function Frn(e){return $3e(e,(D8(),F8e))<0?-eKt(U8(e)):e.l+e.m*ck+e.h*vb}function yD(e){return e.__elementTypeCategory$==null?10:e.__elementTypeCategory$}function Kre(e){var t;return t=e.b.c.length==0?null:St(e.b,0),t!=null&&iie(e,0),t}function QJe(e,t){for(;t[0]=0;)++t[0]}function kD(e,t){this.e=t,this.a=Utt(e),this.a<54?this.f=Bv(e):this.c=WD(e)}function ZJe(e,t,n,r){yi(),cv.call(this,26),this.c=e,this.a=t,this.d=n,this.b=r}function e0(e,t,n){var r,s;for(r=10,s=0;se.a[r]&&(r=n);return r}function qrn(e,t){var n;return n=Kv(e.e.c,t.e.c),n==0?Fs(e.e.d,t.e.d):n}function W3(e,t){return t.e==0||e.e==0?K7:(d7(),Yse(e,t))}function Vrn(e,t){if(!e)throw J(new Ln(Kgn("Enum constant undefined: %s",t)))}function M_(){M_=pe,Fpt=new ev,jpt=new cd,Bpt=new fx,Rpt=new oh,$pt=new QK}function P$(){P$=pe,m7e=new l2e("BY_SIZE",0),Lue=new l2e("BY_SIZE_AND_SHAPE",1)}function B$(){B$=pe,$ue=new h2e("EADES",0),ZG=new h2e("FRUCHTERMAN_REINGOLD",1)}function ED(){ED=pe,Lq=new p2e("READING_DIRECTION",0),d9e=new p2e("ROTATION",1)}function eet(){eet=pe,x2t=Qr((db(),ie(re(f9e,1),tt,335,0,[ble,h9e,vle,sS,iS])))}function tet(){tet=pe,Jvt=Qr((X_(),ie(re(d_e,1),tt,315,0,[f_e,ohe,che,wS,mS])))}function net(){net=pe,h2t=Qr((c4(),ie(re(l2t,1),tt,363,0,[Tq,Cq,Sq,_q,Eq])))}function ret(){ret=pe,P2t=Qr((mh(),ie(re(G9e,1),tt,163,0,[TO,lS,l2,hS,Ly])))}function iet(){iet=pe,yyt=Qr((rI(),ie(re(RCe,1),tt,316,0,[NCe,zhe,BCe,Ghe,PCe])))}function set(){set=pe,Gyt=Qr((i1(),ie(re(Ug,1),tt,175,0,[Fn,ua,Fd,Bb,Vg])))}function aet(){aet=pe,gyt=Qr((v7(),ie(re(dyt,1),tt,355,0,[X4,Nk,IS,DS,OS])))}function oet(){oet=pe,Mpt=Qr((ro(),ie(re(uEe,1),tt,356,0,[Pd,c2,bu,Zc,Go])))}function cet(){cet=pe,d3t=Qr((wo(),ie(re(RS,1),tt,103,0,[f0,Df,Xh,Y0,X0])))}function uet(){uet=pe,x3t=Qr((n4(),ie(re(HS,1),tt,249,0,[v2,ZO,uAe,$S,lAe])))}function het(){het=pe,_3t=Qr((ht(),ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn])))}function Yre(e,t){var n;return n=u(er(e.a,t),134),n||(n=new b3,Si(e.a,t,n)),n}function fet(e){var t;return t=u(K(e,(et(),yw)),305),t?t.a==e:!1}function det(e){var t;return t=u(K(e,(et(),yw)),305),t?t.i==e:!1}function get(e,t){return Sn(t),$ve(e),e.d.Ob()?(t.td(e.d.Pb()),!0):!1}function R$(e){return Mc(e,Ei)>0?Ei:Mc(e,$a)<0?$a:Or(e)}function qm(e){return e<3?(ql(e,uht),e+1):e=0&&t=-.01&&e.a<=z1&&(e.a=0),e.b>=-.01&&e.b<=z1&&(e.b=0),e}function bet(e,t){return t==(gne(),gne(),H0t)?e.toLocaleLowerCase():e.toLowerCase()}function kme(e){return(e.i&2?"interface ":e.i&1?"":"class ")+(S0(e),e.o)}function Bo(e){var t,n;n=(t=new Uee,t),Br((!e.q&&(e.q=new at(nf,e,11,10)),e.q),n)}function Urn(e,t){var n;return n=t>0?t-1:t,hze(aUt(zet(mve(new Ux,n),e.n),e.j),e.k)}function Wrn(e,t,n,r){var s;e.j=-1,q4e(e,T4e(e,t,n),(ho(),s=u(t,66).Mj(),s.Ok(r)))}function vet(e){this.g=e,this.f=new st,this.a=b.Math.min(this.g.c.c,this.g.d.c)}function wet(e){this.b=new st,this.a=new st,this.c=new st,this.d=new st,this.e=e}function met(e,t){this.a=new Mr,this.e=new Mr,this.b=(j_(),iV),this.c=e,this.b=t}function yet(e,t,n){bj.call(this),xme(this),this.a=e,this.c=n,this.b=t.d,this.f=t.e}function ket(e){this.d=e,this.c=e.c.vc().Kc(),this.b=null,this.a=null,this.e=(cF(),bue)}function jv(e){if(e<0)throw J(new Ln("Illegal Capacity: "+e));this.g=this.ri(e)}function Krn(e,t){if(0>e||e>t)throw J(new Ppe("fromIndex: 0, toIndex: "+e+E6e+t))}function Yrn(e){var t;if(e.a==e.b.a)throw J(new xc);return t=e.a,e.c=t,e.a=e.a.e,t}function F$(e){var t;Am(!!e.c),t=e.c.a,bh(e.d,e.c),e.b==e.c?e.b=t:--e.a,e.c=null}function j$(e,t){var n;return ub(e),n=new zYe(e,e.a.rd(),e.a.qd()|4,t),new vn(e,n)}function Xrn(e,t){var n,r;return n=u(Ym(e.d,t),14),n?(r=t,e.e.pc(r,n)):null}function $$(e,t){var n,r;for(r=e.Kc();r.Ob();)n=u(r.Pb(),70),Ye(n,(et(),Ak),t)}function Qrn(e){var t;return t=Ue(ft(K(e,(pt(),Hg)))),t<0&&(t=0,Ye(e,Hg,t)),t}function Zrn(e,t,n){var r;r=b.Math.max(0,e.b/2-.5),Z_(n,r,1),it(t,new UGe(n,r))}function Jrn(e,t,n){var r;return r=e.a.e[u(t.a,10).p]-e.a.e[u(n.a,10).p],_s(WM(r))}function xet(e,t,n,r,s,o){var h;h=Dre(r),Va(h,s),ba(h,o),sn(e.a,r,new mj(h,t,n.f))}function Eet(e,t){var n;if(n=dI(e.Tg(),t),!n)throw J(new Ln(i2+t+Oce));return n}function Vm(e,t){var n;for(n=e;us(n);)if(n=us(n),n==t)return!0;return!1}function ein(e,t){var n,r,s;for(r=t.a.cd(),n=u(t.a.dd(),14).gc(),s=0;s0&&(e.a/=t,e.b/=t),e}function Gl(e){var t;return e.w?e.w:(t=utn(e),t&&!t.kh()&&(e.w=t),t)}function cin(e){var t;return e==null?null:(t=u(e,190),ufn(t,t.length))}function Te(e,t){if(e.g==null||t>=e.i)throw J(new zte(t,e.i));return e.li(t,e.g[t])}function uin(e){var t,n;for(t=e.a.d.j,n=e.c.d.j;t!=n;)Tf(e.b,t),t=vH(t);Tf(e.b,t)}function lin(e){var t;for(t=0;t=14&&t<=16))),e}function Aet(e,t,n){var r=function(){return e.apply(r,arguments)};return t.apply(r,n),r}function Let(e,t,n){var r,s;r=t;do s=Ue(e.p[r.p])+n,e.p[r.p]=s,r=e.a[r.p];while(r!=t)}function I8(e,t){var n,r;r=e.a,n=qan(e,t,null),r!=t&&!e.e&&(n=E7(e,t,n)),n&&n.Fi()}function Eme(e,t){return S1(),Ef(Jp),b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)}function Tme(e,t){return S1(),Ef(Jp),b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)}function din(e,t){return Xp(),Tu(e.b.c.length-e.e.c.length,t.b.c.length-t.e.c.length)}function K3(e,t){return hUt(O_(e,t,Or(ja(s0,Qd(Or(ja(t==null?0:Xi(t),a0)),15)))))}function Met(){Met=pe,Vpt=Qr((zn(),ie(re(Zue,1),tt,267,0,[Hs,ca,Ls,Jc,Rl,U1])))}function Det(){Det=pe,Zyt=Qr((ty(),ie(re(Jhe,1),tt,291,0,[Zhe,qO,GO,Qhe,HO,zO])))}function Iet(){Iet=pe,Uyt=Qr((t0(),ie(re(aSe,1),tt,248,0,[Yhe,jO,$O,DV,LV,MV])))}function Oet(){Oet=pe,w2t=Qr((ek(),ie(re(sE,1),tt,227,0,[iE,rS,rE,Cy,R4,B4])))}function Net(){Net=pe,L2t=Qr((h7(),ie(re(A9e,1),tt,275,0,[aS,T9e,S9e,C9e,_9e,E9e])))}function Pet(){Pet=pe,A2t=Qr((tI(),ie(re(x9e,1),tt,274,0,[Iq,m9e,k9e,w9e,y9e,Tle])))}function Bet(){Bet=pe,Xvt=Qr((WH(),ie(re(u_e,1),tt,313,0,[rhe,o_e,nhe,a_e,c_e,rV])))}function Ret(){Ret=pe,C2t=Qr((QH(),ie(re(p9e,1),tt,276,0,[yle,mle,xle,kle,Ele,Mq])))}function Fet(){Fet=pe,omt=Qr((nC(),ie(re(amt,1),tt,327,0,[dV,mhe,khe,yhe,xhe,whe])))}function jet(){jet=pe,T3t=Qr((ol(),ie(re(jV,1),tt,273,0,[m2,Z0,JO,GS,zS,$k])))}function $et(){$et=pe,b3t=Qr((YH(),ie(re(nAe,1),tt,312,0,[dfe,JSe,tAe,QSe,eAe,ZSe])))}function gin(){return sy(),ie(re(xo,1),tt,93,0,[If,Q0,Of,Pf,g0,Zh,Jl,Nf,Qh])}function z$(e,t){var n;n=e.a,e.a=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,0,n,e.a))}function G$(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,1,n,e.b))}function O8(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,3,n,e.b))}function Hv(e,t){var n;n=e.f,e.f=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,3,n,e.f))}function zv(e,t){var n;n=e.g,e.g=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,4,n,e.g))}function Du(e,t){var n;n=e.i,e.i=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,5,n,e.i))}function Iu(e,t){var n;n=e.j,e.j=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,6,n,e.j))}function N8(e,t){var n;n=e.j,e.j=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,1,n,e.j))}function P8(e,t){var n;n=e.c,e.c=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,4,n,e.c))}function B8(e,t){var n;n=e.k,e.k=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,2,n,e.k))}function Qre(e,t){var n;n=e.d,e.d=t,e.Db&4&&!(e.Db&1)&&_i(e,new Tre(e,2,n,e.d))}function Cg(e,t){var n;n=e.s,e.s=t,e.Db&4&&!(e.Db&1)&&_i(e,new Tre(e,4,n,e.s))}function Wm(e,t){var n;n=e.t,e.t=t,e.Db&4&&!(e.Db&1)&&_i(e,new Tre(e,5,n,e.t))}function R8(e,t){var n;n=e.F,e.F=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,5,n,t))}function TD(e,t){var n;return n=u(er((LF(),QV),e),55),n?n.xj(t):Me(Yn,yt,1,t,5,1)}function B0(e,t){var n,r;return n=t in e.a,n&&(r=M0(e,t).he(),r)?r.a:null}function pin(e,t){var n,r,s;return n=(r=(pv(),s=new j9,s),t&&f5e(r,t),r),Ome(n,e),n}function Het(e,t,n){if(K8(e,n),!e.Bk()&&n!=null&&!e.wj(n))throw J(new zee);return n}function zet(e,t){return e.n=t,e.n?(e.f=new st,e.e=new st):(e.f=null,e.e=null),e}function Gr(e,t,n,r,s,o){var h;return h=Gne(e,t),qet(n,h),h.i=s?8:0,h.f=r,h.e=s,h.g=o,h}function _me(e,t,n,r,s){this.d=t,this.k=r,this.f=s,this.o=-1,this.p=1,this.c=e,this.a=n}function Cme(e,t,n,r,s){this.d=t,this.k=r,this.f=s,this.o=-1,this.p=2,this.c=e,this.a=n}function Sme(e,t,n,r,s){this.d=t,this.k=r,this.f=s,this.o=-1,this.p=6,this.c=e,this.a=n}function Ame(e,t,n,r,s){this.d=t,this.k=r,this.f=s,this.o=-1,this.p=7,this.c=e,this.a=n}function Lme(e,t,n,r,s){this.d=t,this.j=r,this.e=s,this.o=-1,this.p=4,this.c=e,this.a=n}function Get(e,t){var n,r,s,o;for(r=t,s=0,o=r.length;s=0),pcn(e.d,e.c)<0&&(e.a=e.a-1&e.d.a.length-1,e.b=e.d.c),e.c=-1}function Mme(e){return e.a<54?e.f<0?-1:e.f>0?1:0:(!e.c&&(e.c=FD(e.f)),e.c).e}function Ef(e){if(!(e>=0))throw J(new Ln("tolerance ("+e+") must be >= 0"));return e}function F8(){return Whe||(Whe=new Ict,J3(Whe,ie(re(I4,1),yt,130,0,[new wp]))),Whe}function vo(){vo=pe,yS=new Ste(EC,0),ul=new Ste("INPUT",1),hu=new Ste("OUTPUT",2)}function V$(){V$=pe,u9e=new kte("ARD",0),Aq=new kte("MSD",1),ple=new kte("MANUAL",2)}function Gv(){Gv=pe,IO=new Ite("BARYCENTER",0),xS=new Ite(bft,1),cV=new Ite(vft,2)}function _D(e,t){var n;if(n=e.gc(),t<0||t>n)throw J(new Im(t,n));return new Kbe(e,t)}function Wet(e,t){var n;return we(t,42)?e.c.Mc(t):(n=qie(e,t),CH(e,t),n)}function Co(e,t,n){return cb(e,t),au(e,n),Cg(e,0),Wm(e,1),Mg(e,!0),Lg(e,!0),e}function ql(e,t){if(e<0)throw J(new Ln(t+" cannot be negative but was: "+e));return e}function Ket(e,t){var n,r;for(n=0,r=e.gc();n0?u(St(n.a,r-1),10):null}function I_(e,t){var n;n=e.k,e.k=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,2,n,e.k))}function W$(e,t){var n;n=e.f,e.f=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,8,n,e.f))}function K$(e,t){var n;n=e.i,e.i=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,7,n,e.i))}function Ome(e,t){var n;n=e.a,e.a=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,8,n,e.a))}function Nme(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,0,n,e.b))}function Pme(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,0,n,e.b))}function Bme(e,t){var n;n=e.c,e.c=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,1,n,e.c))}function Rme(e,t){var n;n=e.c,e.c=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,1,n,e.c))}function Jre(e,t){var n;n=e.c,e.c=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,4,n,e.c))}function Fme(e,t){var n;n=e.d,e.d=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,1,n,e.d))}function eie(e,t){var n;n=e.D,e.D=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,2,n,e.D))}function tie(e,t){e.r>0&&e.c0&&e.g!=0&&tie(e.i,t/e.r*e.i.d))}function Tin(e,t,n){var r;e.b=t,e.a=n,r=(e.a&512)==512?new PHe:new qL,e.c=$pn(r,e.b,e.a)}function rtt(e,t){return G0(e.e,t)?(ho(),Ure(t)?new Cj(t,e):new DM(t,e)):new Wqe(t,e)}function Y$(e,t){return lUt(N_(e.a,t,Or(ja(s0,Qd(Or(ja(t==null?0:Xi(t),a0)),15)))))}function _in(e,t,n){return zm(e,new ot(t),new Zs,new ut(n),ie(re(yl,1),tt,132,0,[]))}function Cin(e){var t,n;return 0>e?new Xpe:(t=e+1,n=new _Ze(t,e),new Lbe(null,n))}function Sin(e,t){hn();var n;return n=new w6(1),fa(e)?Oo(n,e,t):gu(n.f,e,t),new H(n)}function Ain(e,t){var n,r;return n=e.o+e.p,r=t.o+t.p,nt?(t<<=1,t>0?t:wC):t}function nie(e){switch(abe(e.e!=3),e.e){case 2:return!1;case 0:return!0}return Nnn(e)}function stt(e,t){var n;return we(t,8)?(n=u(t,8),e.a==n.a&&e.b==n.b):!1}function rie(e,t,n){var r,s,o;return o=t>>5,s=t&31,r=qs(Nm(e.n[n][o],Or(A0(s,1))),3),r}function Min(e,t){var n,r;for(r=t.vc().Kc();r.Ob();)n=u(r.Pb(),42),qH(e,n.cd(),n.dd())}function Din(e,t){var n;n=new rs,u(t.b,65),u(t.b,65),u(t.b,65),Mu(t.a,new sve(e,n,t))}function jme(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,21,n,e.b))}function $me(e,t){var n;n=e.d,e.d=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,11,n,e.d))}function X$(e,t){var n;n=e.j,e.j=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,13,n,e.j))}function att(e,t,n){var r,s,o;for(o=e.a.length-1,s=e.b,r=0;r>>31;r!=0&&(e[n]=r)}function Hin(e,t){hn();var n,r;for(r=new st,n=0;n0&&(this.g=this.ri(this.i+(this.i/8|0)+1),e.Qc(this.g))}function ds(e,t){xj.call(this,b4t,e,t),this.b=this,this.a=pu(e.Tg(),gn(this.e.Tg(),this.c))}function P_(e,t){var n,r;for(Sn(t),r=t.vc().Kc();r.Ob();)n=u(r.Pb(),42),e.zc(n.cd(),n.dd())}function Qin(e,t,n){var r;for(r=n.Kc();r.Ob();)if(!v$(e,t,r.Pb()))return!1;return!0}function Zin(e,t,n,r,s){var o;return n&&(o=Ji(t.Tg(),e.c),s=n.gh(t,-1-(o==-1?r:o),null,s)),s}function Jin(e,t,n,r,s){var o;return n&&(o=Ji(t.Tg(),e.c),s=n.ih(t,-1-(o==-1?r:o),null,s)),s}function _tt(e){var t;if(e.b==-2){if(e.e==0)t=-1;else for(t=0;e.a[t]==0;t++);e.b=t}return e.b}function Ctt(e){switch(e.g){case 2:return ht(),Dn;case 4:return ht(),$n;default:return e}}function Stt(e){switch(e.g){case 1:return ht(),xr;case 3:return ht(),An;default:return e}}function esn(e){var t,n,r;return e.j==(ht(),An)&&(t=not(e),n=Vu(t,$n),r=Vu(t,Dn),r||r&&n)}function tsn(e){var t,n;return t=u(e.e&&e.e(),9),n=u(Qve(t,t.length),9),new hh(t,n,t.length)}function nsn(e,t){kr(t,pft,1),Uye(xUt(new nr((DT(),new Qne(e,!1,!1,new qP))))),ur(t)}function CD(e,t){return Mn(),fa(e)?Jwe(e,Hr(t)):Sm(e)?Ine(e,ft(t)):Cm(e)?aZt(e,Mt(t)):e.wd(t)}function Ume(e,t){t.q=e,e.d=b.Math.max(e.d,t.r),e.b+=t.d+(e.a.c.length==0?0:e.c),it(e.a,t)}function $8(e,t){var n,r,s,o;return s=e.c,n=e.c+e.b,o=e.d,r=e.d+e.a,t.a>s&&t.ao&&t.b1||e.Ob())return++e.a,e.g=0,t=e.i,e.Ob(),t;throw J(new xc)}function gsn(e){CVe();var t;return BGe(vhe,e)||(t=new CQ,t.a=e,Bbe(vhe,e,t)),u(_o(vhe,e),635)}function Fh(e){var t,n,r,s;return s=e,r=0,s<0&&(s+=vb,r=V0),n=_s(s/ck),t=_s(s-n*ck),fu(t,n,r)}function SD(e){var t,n,r;for(r=0,n=new m6(e.a);n.a>22),s=e.h+t.h+(r>>22),fu(n&ml,r&ml,s&V0)}function Wtt(e,t){var n,r,s;return n=e.l-t.l,r=e.m-t.m+(n>>22),s=e.h-t.h+(r>>22),fu(n&ml,r&ml,s&V0)}function DD(e){var t;return e<128?(t=(aKe(),z8e)[e],!t&&(t=z8e[e]=new YR(e)),t):new YR(e)}function ts(e){var t;return we(e,78)?e:(t=e&&e.__java$exception,t||(t=new Bnt(e),Q$e(t)),t)}function ID(e){if(we(e,186))return u(e,118);if(e)return null;throw J(new b6(z1t))}function Ktt(e,t){if(t==null)return!1;for(;e.a!=e.b;)if(Ci(t,gH(e)))return!0;return!1}function Zme(e){return e.a.Ob()?!0:e.a!=e.d?!1:(e.a=new Iwe(e.e.f),e.a.Ob())}function Rs(e,t){var n,r;return n=t.Pc(),r=n.length,r==0?!1:(hve(e.c,e.c.length,n),!0)}function Lsn(e,t,n){var r,s;for(s=t.vc().Kc();s.Ob();)r=u(s.Pb(),42),e.yc(r.cd(),r.dd(),n);return e}function Ytt(e,t){var n,r;for(r=new C(e.b);r.a=0,"Negative initial capacity"),kj(t>=0,"Non-positive load factor"),sl(this)}function die(e,t,n){return e>=128?!1:e<64?XT(qs(A0(1,e),n),0):XT(qs(A0(1,e-64),t),0)}function Fsn(e,t){return!e||!t||e==t?!1:Kv(e.b.c,t.b.c+t.b.b)<0&&Kv(t.b.c,e.b.c+e.b.b)<0}function ont(e){var t,n,r;return n=e.n,r=e.o,t=e.d,new fh(n.a-t.b,n.b-t.d,r.a+(t.b+t.c),r.b+(t.d+t.a))}function jsn(e){var t,n,r,s;for(n=e.a,r=0,s=n.length;rr)throw J(new Im(t,r));return e.hi()&&(n=xXe(e,n)),e.Vh(t,n)}function PD(e,t,n){return n==null?(!e.q&&(e.q=new Mr),z6(e.q,t)):(!e.q&&(e.q=new Mr),Si(e.q,t,n)),e}function Ye(e,t,n){return n==null?(!e.q&&(e.q=new Mr),z6(e.q,t)):(!e.q&&(e.q=new Mr),Si(e.q,t,n)),e}function cnt(e){var t,n;return n=new k$,Ho(n,e),Ye(n,(zp(),kk),e),t=new Mr,Gbn(e,n,t),pmn(e,n,t),n}function zsn(e){g4();var t,n,r;for(n=Me(na,Qe,8,2,0,1),r=0,t=0;t<2;t++)r+=.5,n[t]=Eun(r,e);return n}function unt(e,t){var n,r,s,o;for(n=!1,r=e.a[t].length,o=0;o>=1);return t}function hnt(e){var t,n;return n=uI(e.h),n==32?(t=uI(e.m),t==32?uI(e.l)+32:t+20-10):n-12}function F_(e){var t;return t=e.a[e.b],t==null?null:(cs(e.a,e.b,null),e.b=e.b+1&e.a.length-1,t)}function fnt(e){var t,n;return t=e.t-e.k[e.o.p]*e.d+e.j[e.o.p]>e.f,n=e.u+e.e[e.o.p]*e.d>e.f*e.s*e.d,t||n}function lH(e,t,n){var r,s;return r=new Rre(t,n),s=new Nt,e.b=rct(e,e.b,r,s),s.b||++e.c,e.b.b=!1,s.d}function dnt(e,t,n){var r,s,o,h;for(h=H_(t,n),o=0,s=h.Kc();s.Ob();)r=u(s.Pb(),11),Si(e.c,r,ct(o++))}function qp(e){var t,n;for(n=new C(e.a.b);n.an&&(n=e[t]);return n}function gnt(e,t,n){var r;return r=new st,p5e(e,t,r,(ht(),$n),!0,!1),p5e(e,n,r,Dn,!1,!1),r}function pie(e,t,n){var r,s,o,h;return o=null,h=t,s=Rv(h,"labels"),r=new Iqe(e,n),o=(o0n(r.a,r.b,s),s),o}function qsn(e,t,n,r){var s;return s=n5e(e,t,n,r),!s&&(s=Van(e,n,r),s&&!v4(e,t,s))?null:s}function Vsn(e,t,n,r){var s;return s=r5e(e,t,n,r),!s&&(s=Iie(e,n,r),s&&!v4(e,t,s))?null:s}function pnt(e,t){var n;for(n=0;n1||t>=0&&e.b<3)}function BD(e){var t,n,r;for(t=new Gu,r=ii(e,0);r.b!=r.d.c;)n=u(ri(r),8),c8(t,0,new Io(n));return t}function ab(e){var t,n;for(n=new C(e.a.b);n.ar?1:0}function vye(e,t){return jot(e,t)?(sn(e.b,u(K(t,(et(),Sy)),21),t),ci(e.a,t),!0):!1}function ran(e){var t,n;t=u(K(e,(et(),cl)),10),t&&(n=t.c,Au(n.a,t),n.a.c.length==0&&Au(Ya(t).b,n))}function knt(e){return V1?Me(V0t,Eht,572,0,0,1):u(j1(e.a,Me(V0t,Eht,572,e.a.c.length,0,1)),842)}function ian(e,t,n,r){return Uj(),new Qee(ie(re(Cb,1),Sz,42,0,[(cse(e,t),new vv(e,t)),(cse(n,r),new vv(n,r))]))}function Z3(e,t,n){var r,s;return s=(r=new Uee,r),Co(s,t,n),Br((!e.q&&(e.q=new at(nf,e,11,10)),e.q),s),s}function mie(e){var t,n,r,s;for(s=MUt(V3t,e),n=s.length,r=Me(mt,Qe,2,n,6,1),t=0;t=e.b.c.length||(wye(e,2*t+1),n=2*t+2,n=0&&e[r]===t[r];r--);return r<0?0:fte(qs(e[r],yo),qs(t[r],yo))?-1:1}function san(e,t){var n,r;for(r=ii(e,0);r.b!=r.d.c;)n=u(ri(r),214),n.e.length>0&&(t.td(n),n.i&&Jan(n))}function kie(e,t){var n,r;return r=u(_n(e.a,4),126),n=Me(kfe,Xce,415,t,0,1),r!=null&&Hc(r,0,n,0,r.length),n}function Ent(e,t){var n;return n=new Zse((e.f&256)!=0,e.i,e.a,e.d,(e.f&16)!=0,e.j,e.g,t),e.e!=null||(n.c=e),n}function aan(e,t){var n,r;for(r=e.Zb().Cc().Kc();r.Ob();)if(n=u(r.Pb(),14),n.Hc(t))return!0;return!1}function xie(e,t,n,r,s){var o,h;for(h=n;h<=s;h++)for(o=t;o<=r;o++)if(i4(e,o,h))return!0;return!1}function Tnt(e,t,n){var r,s,o,h;for(Sn(n),h=!1,o=e.Zc(t),s=n.Kc();s.Ob();)r=s.Pb(),o.Rb(r),h=!0;return h}function oan(e,t){var n;return e===t?!0:we(t,83)?(n=u(t,83),y4e(Cv(e),n.vc())):!1}function _nt(e,t,n){var r,s;for(s=n.Kc();s.Ob();)if(r=u(s.Pb(),42),e.re(t,r.dd()))return!0;return!1}function Cnt(e,t,n){return e.d[t.p][n.p]||(run(e,t,n),e.d[t.p][n.p]=!0,e.d[n.p][t.p]=!0),e.a[t.p][n.p]}function K8(e,t){if(!e.ai()&&t==null)throw J(new Ln("The 'no null' constraint is violated"));return t}function Y8(e,t){e.D==null&&e.B!=null&&(e.D=e.B,e.B=null),eie(e,t==null?null:(Sn(t),t)),e.C&&e.yk(null)}function can(e,t){var n;return!e||e==t||!ta(t,(et(),xw))?!1:(n=u(K(t,(et(),xw)),10),n!=e)}function Eie(e){switch(e.i){case 2:return!0;case 1:return!1;case-1:++e.c;default:return e.pl()}}function Snt(e){switch(e.i){case-2:return!0;case-1:return!1;case 1:--e.c;default:return e.ql()}}function Ant(e){pXe.call(this,"The given string does not match the expected format for individual spacings.",e)}function Pl(){Pl=pe,nh=new WF("ELK",0),mAe=new WF("JSON",1),wAe=new WF("DOT",2),yAe=new WF("SVG",3)}function RD(){RD=pe,yV=new Nte(U0,0),J_e=new Nte("RADIAL_COMPACTION",1),eCe=new Nte("WEDGE_COMPACTION",2)}function F1(){F1=pe,g7e=new dte("CONCURRENT",0),Ql=new dte("IDENTITY_FINISH",1),xy=new dte("UNORDERED",2)}function Tie(){Tie=pe,G7e=(EF(),Pue),z7e=new dn(F6e,G7e),Ggt=new Zi(j6e),qgt=new Zi($6e),Vgt=new Zi(H6e)}function X8(){X8=pe,n9e=new z5,r9e=new $Y,r2t=new SL,n2t=new HY,t2t=new zY,t9e=(Sn(t2t),new cn)}function Q8(){Q8=pe,ghe=new Lte("CONSERVATIVE",0),C_e=new Lte("CONSERVATIVE_SOFT",1),kS=new Lte("SLOPPY",2)}function hH(){hH=pe,oAe=new kv(15),v3t=new fo((bi(),Fb),oAe),FS=Rk,rAe=e3t,iAe=Rb,aAe=e5,sAe=NV}function _ie(e,t,n){var r,s,o;for(r=new as,o=ii(n,0);o.b!=o.d.c;)s=u(ri(o),8),ci(r,new Io(s));Tnt(e,t,r)}function uan(e){var t,n,r;for(t=0,r=Me(na,Qe,8,e.b,0,1),n=ii(e,0);n.b!=n.d.c;)r[t++]=u(ri(n),8);return r}function yye(e){var t;return t=(!e.a&&(e.a=new at(J0,e,9,5)),e.a),t.i!=0?SUt(u(Te(t,0),678)):null}function lan(e,t){var n;return n=Ua(e,t),fte(vre(e,t),0)|GUt(vre(e,n),0)?n:Ua(Cz,vre(Nm(n,63),1))}function han(e,t){var n;n=xt((zie(),nV))!=null&&t.wg()!=null?Ue(ft(t.wg()))/Ue(ft(xt(nV))):1,Si(e.b,t,n)}function fan(e,t){var n,r;return n=u(e.d.Bc(t),14),n?(r=e.e.hc(),r.Gc(n),e.e.d-=n.gc(),n.$b(),r):null}function kye(e,t){var n,r;if(r=e.c[t],r!=0)for(e.c[t]=0,e.d-=r,n=t+1;n0)return d8(t-1,e.a.c.length),Eg(e.a,t-1);throw J(new J$e)}function dan(e,t,n){if(t<0)throw J(new Do(Zft+t));tt)throw J(new Ln(Dz+e+Tht+t));if(e<0||t>n)throw J(new Ppe(Dz+e+_6e+t+E6e+n))}function Dnt(e){if(!e.a||!(e.a.i&8))throw J(new Wo("Enumeration class expected for layout option "+e.f))}function Km(e){var t;++e.j,e.i==0?e.g=null:e.iaG?e-n>aG:n-e>aG}function Sie(e,t){return!e||t&&!e.j||we(e,124)&&u(e,124).a.b==0?0:e.Re()}function dH(e,t){return!e||t&&!e.k||we(e,124)&&u(e,124).a.a==0?0:e.Se()}function FD(e){return Qp(),e<0?e!=-1?new b3e(-1,-e):Eue:e<=10?n7e[_s(e)]:new b3e(1,e)}function Eye(e){throw fie(),J(new UHe("Unexpected typeof result '"+e+"'; please report this bug to the GWT team"))}function Bnt(e){ZHe(),ij(this),Qj(this),this.e=e,Yot(this,e),this.g=e==null?Pu:Qo(e),this.a="",this.b=e,this.a=""}function Tye(){this.a=new aZ,this.f=new Hje(this),this.b=new zje(this),this.i=new Gje(this),this.e=new qje(this)}function Rnt(){xVt.call(this,new ome(qm(16))),ql(2,sht),this.b=2,this.a=new awe(null,null,0,null),oM(this.a,this.a)}function j_(){j_=pe,ihe=new _te("DUMMY_NODE_OVER",0),l_e=new _te("DUMMY_NODE_UNDER",1),iV=new _te("EQUAL",2)}function Aie(){Aie=pe,Wue=vXe(ie(re(RS,1),tt,103,0,[(wo(),Xh),Df])),Kue=vXe(ie(re(RS,1),tt,103,0,[X0,Y0]))}function Lie(e){return(ht(),Ru).Hc(e.j)?Ue(ft(K(e,(et(),hE)))):sc(ie(re(na,1),Qe,8,0,[e.i.n,e.n,e.a])).b}function wan(e){var t,n,r,s;for(r=e.b.a,n=r.a.ec().Kc();n.Ob();)t=u(n.Pb(),561),s=new Lot(t,e.e,e.f),it(e.g,s)}function cb(e,t){var n,r,s;r=e.nk(t,null),s=null,t&&(s=(Qx(),n=new uv,n),I8(s,e.r)),r=$1(e,s,r),r&&r.Fi()}function man(e,t){var n,r;for(r=vl(e.d,1)!=0,n=!0;n;)n=!1,n=t.c.Tf(t.e,r),n=n|gI(e,t,r,!1),r=!r;zme(e)}function _ye(e,t){var n,r,s;return r=!1,n=t.q.d,t.ds&&(ust(t.q,s),r=n!=t.q.d)),r}function Fnt(e,t){var n,r,s,o,h,d,v,x;return v=t.i,x=t.j,r=e.f,s=r.i,o=r.j,h=v-s,d=x-o,n=b.Math.sqrt(h*h+d*d),n}function Cye(e,t){var n,r;return r=SH(e),r||(n=(kae(),lat(t)),r=new q$e(n),Br(r.Vk(),e)),r}function jD(e,t){var n,r;return n=u(e.c.Bc(t),14),n?(r=e.hc(),r.Gc(n),e.d-=n.gc(),n.$b(),e.mc(r)):e.jc()}function jnt(e,t){var n;for(n=0;n=e.c.b:e.a<=e.c.b))throw J(new xc);return t=e.a,e.a+=e.c.c,++e.b,ct(t)}function xan(e){var t;return t=new vet(e),sD(e.a,$pt,new Al(ie(re(dO,1),yt,369,0,[t]))),t.d&&it(t.f,t.d),t.f}function Mie(e){var t;return t=new W2e(e.a),Ho(t,e),Ye(t,(et(),Mi),e),t.o.a=e.g,t.o.b=e.f,t.n.a=e.i,t.n.b=e.j,t}function Ean(e,t,n,r){var s,o;for(o=e.Kc();o.Ob();)s=u(o.Pb(),70),s.n.a=t.a+(r.a-s.o.a)/2,s.n.b=t.b,t.b+=s.o.b+n}function Tan(e,t,n){var r,s;for(s=t.a.a.ec().Kc();s.Ob();)if(r=u(s.Pb(),57),XYe(e,r,n))return!0;return!1}function _an(e){var t,n;for(n=new C(e.r);n.a=0?t:-t;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return t<0?1/s:s}function Lan(e,t){var n,r,s;for(s=1,n=e,r=t>=0?t:-t;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return t<0?1/s:s}function Unt(e){var t,n;if(e!=null)for(n=0;n0&&(n=u(St(e.a,e.a.c.length-1),570),vye(n,t))||it(e.a,new EZe(t))}function Nan(e){mf();var t,n;t=e.d.c-e.e.c,n=u(e.g,145),Mu(n.b,new pT(t)),Mu(n.c,new $2(t)),Da(n.i,new QR(t))}function Xnt(e){var t;return t=new Tp,t.a+="VerticalSegment ",Ec(t,e.e),t.a+=" ",Yr(t,rbe(new ste,new C(e.k))),t.a}function Pan(e){var t;return t=u(Fv(e.c.c,""),229),t||(t=new R6(Xx(Yx(new hm,""),"Other")),hb(e.c.c,"",t)),t}function $_(e){var t;return e.Db&64?_f(e):(t=new Ph(_f(e)),t.a+=" (name: ",To(t,e.zb),t.a+=")",t.a)}function Dye(e,t,n){var r,s;return s=e.sb,e.sb=t,e.Db&4&&!(e.Db&1)&&(r=new oa(e,1,4,s,t),n?n.Ei(r):n=r),n}function Die(e,t){var n,r,s;for(n=0,s=ac(e,t).Kc();s.Ob();)r=u(s.Pb(),11),n+=K(r,(et(),cl))!=null?1:0;return n}function e4(e,t,n){var r,s,o;for(r=0,o=ii(e,0);o.b!=o.d.c&&(s=Ue(ft(ri(o))),!(s>n));)s>=t&&++r;return r}function Ban(e,t,n){var r,s;return r=new N0(e.e,3,13,null,(s=t.c,s||(on(),Z1)),Dg(e,t),!1),n?n.Ei(r):n=r,n}function Ran(e,t,n){var r,s;return r=new N0(e.e,4,13,(s=t.c,s||(on(),Z1)),null,Dg(e,t),!1),n?n.Ei(r):n=r,n}function Iye(e,t,n){var r,s;return s=e.r,e.r=t,e.Db&4&&!(e.Db&1)&&(r=new oa(e,1,8,s,e.r),n?n.Ei(r):n=r),n}function Ag(e,t){var n,r;return n=u(t,676),r=n.vk(),!r&&n.wk(r=we(t,88)?new qqe(e,u(t,26)):new hQe(e,u(t,148))),r}function $D(e,t,n){var r;e.qi(e.i+1),r=e.oi(t,n),t!=e.i&&Hc(e.g,t,e.g,t+1,e.i-t),cs(e.g,t,r),++e.i,e.bi(t,n),e.ci()}function Fan(e,t){var n;return t.a&&(n=t.a.a.length,e.a?Yr(e.a,e.b):e.a=new Fl(e.d),dQe(e.a,t.a,t.d.length,n)),e}function jan(e,t){var n,r,s,o;if(t.vi(e.a),o=u(_n(e.a,8),1936),o!=null)for(n=o,r=0,s=n.length;rn)throw J(new Do(Dz+e+_6e+t+", size: "+n));if(e>t)throw J(new Ln(Dz+e+Tht+t))}function wh(e,t,n){if(t<0)P4e(e,n);else{if(!n.Ij())throw J(new Ln(i2+n.ne()+RC));u(n,66).Nj().Vj(e,e.yh(),t)}}function zan(e,t,n,r,s,o,h,d){var v;for(v=n;o=r||t=65&&e<=70?e-65+10:e>=97&&e<=102?e-97+10:e>=48&&e<=57?e-48:0}function rrt(e){var t;return e.Db&64?_f(e):(t=new Ph(_f(e)),t.a+=" (source: ",To(t,e.d),t.a+=")",t.a)}function qan(e,t,n){var r,s;return s=e.a,e.a=t,e.Db&4&&!(e.Db&1)&&(r=new oa(e,1,5,s,e.a),n?t4e(n,r):n=r),n}function Lg(e,t){var n;n=(e.Bb&256)!=0,t?e.Bb|=256:e.Bb&=-257,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,2,n,t))}function Nye(e,t){var n;n=(e.Bb&256)!=0,t?e.Bb|=256:e.Bb&=-257,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,8,n,t))}function bH(e,t){var n;n=(e.Bb&256)!=0,t?e.Bb|=256:e.Bb&=-257,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,8,n,t))}function Mg(e,t){var n;n=(e.Bb&512)!=0,t?e.Bb|=512:e.Bb&=-513,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,3,n,t))}function Pye(e,t){var n;n=(e.Bb&512)!=0,t?e.Bb|=512:e.Bb&=-513,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,9,n,t))}function z_(e,t){var n;return e.b==-1&&e.a&&(n=e.a.Gj(),e.b=n?e.c.Xg(e.a.aj(),n):Ji(e.c.Tg(),e.a)),e.c.Og(e.b,t)}function ct(e){var t,n;return e>-129&&e<128?(t=e+128,n=(JWe(),G8e)[t],!n&&(n=G8e[t]=new rM(e)),n):new rM(e)}function Z8(e){var t,n;return e>-129&&e<128?(t=e+128,n=(sKe(),W8e)[t],!n&&(n=W8e[t]=new XR(e)),n):new XR(e)}function Bye(e){var t,n;return t=e.k,t==(zn(),Ls)?(n=u(K(e,(et(),vc)),61),n==(ht(),An)||n==xr):!1}function Van(e,t,n){var r,s,o;return o=(s=p7(e.b,t),s),o&&(r=u(wz(wD(e,o),""),26),r)?n5e(e,r,t,n):null}function Iie(e,t,n){var r,s,o;return o=(s=p7(e.b,t),s),o&&(r=u(wz(wD(e,o),""),26),r)?r5e(e,r,t,n):null}function irt(e,t){var n,r;for(r=new rr(e);r.e!=r.i.gc();)if(n=u(pr(r),138),je(t)===je(n))return!0;return!1}function G_(e,t,n){var r;if(r=e.gc(),t>r)throw J(new Im(t,r));if(e.hi()&&e.Hc(n))throw J(new Ln(YI));e.Xh(t,n)}function Uan(e,t){var n;if(n=K3(e.i,t),n==null)throw J(new dd("Node did not exist in input."));return Wme(t,n),null}function Wan(e,t){var n;if(n=dI(e,t),we(n,322))return u(n,34);throw J(new Ln(i2+t+"' is not a valid attribute"))}function Kan(e,t,n){var r,s;for(s=we(t,99)&&u(t,18).Bb&so?new Gte(t,e):new G8(t,e),r=0;rt?1:e==t?e==0?Fs(1/e,1/t):0:isNaN(e)?isNaN(t)?0:1:-1}function ron(e,t){kr(t,"Sort end labels",1),ms(Vi(ic(new vn(null,new mn(e.b,16)),new UP),new F5),new bY),ur(t)}function q_(e,t,n){var r,s;return e.ej()?(s=e.fj(),r=jse(e,t,n),e.$i(e.Zi(7,ct(n),r,t,s)),r):jse(e,t,n)}function Oie(e,t){var n,r,s;e.d==null?(++e.e,--e.f):(s=t.cd(),n=t.Sh(),r=(n&Ei)%e.d.length,$nn(e,r,xot(e,r,n,s)))}function J8(e,t){var n;n=(e.Bb&Sf)!=0,t?e.Bb|=Sf:e.Bb&=-1025,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,10,n,t))}function e7(e,t){var n;n=(e.Bb&dy)!=0,t?e.Bb|=dy:e.Bb&=-4097,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,12,n,t))}function t7(e,t){var n;n=(e.Bb&Zu)!=0,t?e.Bb|=Zu:e.Bb&=-8193,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,15,n,t))}function n7(e,t){var n;n=(e.Bb&ky)!=0,t?e.Bb|=ky:e.Bb&=-2049,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,11,n,t))}function ion(e,t){var n;return n=Fs(e.b.c,t.b.c),n!=0||(n=Fs(e.a.a,t.a.a),n!=0)?n:Fs(e.a.b,t.a.b)}function son(e,t){var n;if(n=er(e.k,t),n==null)throw J(new dd("Port did not exist in input."));return Wme(t,n),null}function aon(e){var t,n;for(n=Sot(Gl(e)).Kc();n.Ob();)if(t=Hr(n.Pb()),uC(e,t))return gnn((NGe(),r4t),t);return null}function oon(e,t){var n,r,s,o,h;for(h=pu(e.e.Tg(),t),o=0,n=u(e.g,119),s=0;s>10)+II&Ss,t[1]=(e&1023)+56320&Ss,jh(t,0,t.length)}function wH(e){var t,n;return n=u(K(e,(pt(),Zl)),103),n==(wo(),f0)?(t=Ue(ft(K(e,Hq))),t>=1?Df:Y0):n}function lon(e){switch(u(K(e,(pt(),K0)),218).g){case 1:return new BX;case 3:return new HX;default:return new PX}}function ub(e){if(e.c)ub(e.c);else if(e.d)throw J(new Wo("Stream already terminated, can't be modified or used"))}function Bie(e){var t;return e.Db&64?_f(e):(t=new Ph(_f(e)),t.a+=" (identifier: ",To(t,e.k),t.a+=")",t.a)}function crt(e,t,n){var r,s;return r=(pv(),s=new pp,s),z$(r,t),G$(r,n),e&&Br((!e.a&&(e.a=new Bs(ef,e,5)),e.a),r),r}function Rie(e,t,n,r){var s,o;return Sn(r),Sn(n),s=e.xc(t),o=s==null?n:kGe(u(s,15),u(n,14)),o==null?e.Bc(t):e.zc(t,o),o}function rn(e){var t,n,r,s;return n=(t=u(Qf((r=e.gm,s=r.f,s==Wr?r:s)),9),new hh(t,u(wf(t,t.length),9),0)),Tf(n,e),n}function hon(e,t,n){var r,s;for(s=e.a.ec().Kc();s.Ob();)if(r=u(s.Pb(),10),MD(n,u(St(t,r.p),14)))return r;return null}function fon(e,t,n){var r;try{Usn(e,t,n)}catch(s){throw s=ts(s),we(s,597)?(r=s,J(new qwe(r))):J(s)}return t}function Wp(e,t){var n;return Ko(e)&&Ko(t)&&(n=e-t,DI>1,e.k=n-1>>1}function Fie(){o4e();var e,t,n;n=c3n+++Date.now(),e=_s(b.Math.floor(n*NI))&Mz,t=_s(n-e*x6e),this.a=e^1502,this.b=t^uoe}function j0(e){var t,n,r;for(t=new st,r=new C(e.j);r.a34028234663852886e22?gs:t<-34028234663852886e22?Ds:t}function urt(e){return e-=e>>1&1431655765,e=(e>>2&858993459)+(e&858993459),e=(e>>4)+e&252645135,e+=e>>8,e+=e>>16,e&63}function lrt(e){var t,n,r,s;for(t=new zUe(e.Hd().gc()),s=0,r=q6(e.Hd().Kc());r.Ob();)n=r.Pb(),Sen(t,n,ct(s++));return Zfn(t.a)}function won(e,t){var n,r,s;for(s=new Mr,r=t.vc().Kc();r.Ob();)n=u(r.Pb(),42),Si(s,n.cd(),usn(e,u(n.dd(),15)));return s}function zye(e,t){e.n.c.length==0&&it(e.n,new o$(e.s,e.t,e.i)),it(e.b,t),T3e(u(St(e.n,e.n.c.length-1),211),t),yut(e,t)}function t4(e){return(e.c!=e.b.b||e.i!=e.g.b)&&(e.a.c=Me(Yn,yt,1,0,5,1),Rs(e.a,e.b),Rs(e.a,e.g),e.c=e.b.b,e.i=e.g.b),e.a}function jie(e,t){var n,r,s;for(s=0,r=u(t.Kb(e),20).Kc();r.Ob();)n=u(r.Pb(),17),It(Mt(K(n,(et(),W1))))||++s;return s}function mon(e,t){var n,r,s;r=U3(t),s=Ue(ft(Qm(r,(pt(),Mf)))),n=b.Math.max(0,s/2-.5),Z_(t,n,1),it(e,new eqe(t,n))}function mh(){mh=pe,TO=new TM(U0,0),lS=new TM("FIRST",1),l2=new TM(wft,2),hS=new TM("LAST",3),Ly=new TM(mft,4)}function $0(){$0=pe,hfe=new GF(EC,0),YO=new GF("POLYLINE",1),_E=new GF("ORTHOGONAL",2),jk=new GF("SPLINES",3)}function mH(){mH=pe,wCe=new Bte("ASPECT_RATIO_DRIVEN",0),Rhe=new Bte("MAX_SCALE_DRIVEN",1),vCe=new Bte("AREA_DRIVEN",2)}function GD(){GD=pe,EV=new Rte("P1_STRUCTURE",0),TV=new Rte("P2_PROCESSING_ORDER",1),_V=new Rte("P3_EXECUTION",2)}function yH(){yH=pe,Dhe=new Ote("OVERLAP_REMOVAL",0),Lhe=new Ote("COMPACTION",1),Mhe=new Ote("GRAPH_SIZE_CALCULATION",2)}function Kv(e,t){return S1(),Ef(Jp),b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)?0:et?1:yv(isNaN(e),isNaN(t))}function hrt(e,t){var n,r;for(n=ii(e,0);n.b!=n.d.c;){if(r=uM(ft(ri(n))),r==t)return;if(r>t){mre(n);break}}YM(n,t)}function en(e,t){var n,r,s,o,h;if(n=t.f,hb(e.c.d,n,t),t.g!=null)for(s=t.g,o=0,h=s.length;ot&&r.ue(e[o-1],e[o])>0;--o)h=e[o],cs(e,o,e[o-1]),cs(e,o-1,h)}function yh(e,t,n,r){if(t<0)o5e(e,n,r);else{if(!n.Ij())throw J(new Ln(i2+n.ne()+RC));u(n,66).Nj().Tj(e,e.yh(),t,r)}}function kH(e,t){if(t==e.d)return e.e;if(t==e.e)return e.d;throw J(new Ln("Node "+t+" not part of edge "+e))}function kon(e,t){switch(t.g){case 2:return e.b;case 1:return e.c;case 4:return e.d;case 3:return e.a;default:return!1}}function frt(e,t){switch(t.g){case 2:return e.b;case 1:return e.c;case 4:return e.d;case 3:return e.a;default:return!1}}function Gye(e,t,n,r){switch(t){case 3:return e.f;case 4:return e.g;case 5:return e.i;case 6:return e.j}return Oye(e,t,n,r)}function xon(e){return e.k!=(zn(),Hs)?!1:_8(new vn(null,new Sv(new cr(fr(js(e).a.Kc(),new V)))),new TB)}function Eon(e){return e.e==null?e:(!e.c&&(e.c=new Zse((e.f&256)!=0,e.i,e.a,e.d,(e.f&16)!=0,e.j,e.g,null)),e.c)}function Ton(e,t){return e.h==MI&&e.m==0&&e.l==0?(t&&(s2=fu(0,0,0)),hVe((D8(),R8e))):(t&&(s2=fu(e.l,e.m,e.h)),fu(0,0,0))}function Qo(e){var t;return Array.isArray(e)&&e.im===gt?Cp(pl(e))+"@"+(t=Xi(e)>>>0,t.toString(16)):e.toString()}function V_(e){var t;this.a=(t=u(e.e&&e.e(),9),new hh(t,u(wf(t,t.length),9),0)),this.b=Me(Yn,yt,1,this.a.a.length,5,1)}function _on(e){var t,n,r;for(this.a=new C0,r=new C(e);r.a0&&(zr(t-1,e.length),e.charCodeAt(t-1)==58)&&!$ie(e,KS,YS))}function $ie(e,t,n){var r,s;for(r=0,s=e.length;r=s)return t.c+n;return t.c+t.b.gc()}function Mon(e,t){u8();var n,r,s,o;for(r=TJe(e),s=t,L8(r,0,r.length,s),n=0;n0&&(r+=s,++n);return n>1&&(r+=e.d*(n-1)),r}function Vye(e){var t,n,r;for(r=new bg,r.a+="[",t=0,n=e.gc();t0&&this.b>0&&Cve(this.c,this.b,this.a)}function Kye(e){zie(),this.c=O1(ie(re(C3n,1),yt,831,0,[Kvt])),this.b=new Mr,this.a=e,Si(this.b,nV,1),Mu(Yvt,new Jje(this))}function drt(e,t){var n;return e.d?Il(e.b,t)?u(er(e.b,t),51):(n=t.Kf(),Si(e.b,t,n),n):t.Kf()}function Yye(e,t){var n;return je(e)===je(t)?!0:we(t,91)?(n=u(t,91),e.e==n.e&&e.d==n.d&&bnn(e,n.a)):!1}function Y6(e){switch(ht(),e.g){case 4:return An;case 1:return $n;case 3:return xr;case 2:return Dn;default:return uc}}function Xye(e,t){switch(t){case 3:return e.f!=0;case 4:return e.g!=0;case 5:return e.i!=0;case 6:return e.j!=0}return Yme(e,t)}function Bon(e){switch(e.g){case 0:return new nZ;case 1:return new FB;default:throw J(new Ln(wce+(e.f!=null?e.f:""+e.g)))}}function grt(e){switch(e.g){case 0:return new RB;case 1:return new jB;default:throw J(new Ln(Noe+(e.f!=null?e.f:""+e.g)))}}function prt(e){switch(e.g){case 0:return new Ape;case 1:return new THe;default:throw J(new Ln(lG+(e.f!=null?e.f:""+e.g)))}}function Ron(e){switch(e.g){case 1:return new QQ;case 2:return new MUe;default:throw J(new Ln(wce+(e.f!=null?e.f:""+e.g)))}}function Fon(e){var t,n;if(e.b)return e.b;for(n=V1?null:e.d;n;){if(t=V1?null:n.b,t)return t;n=V1?null:n.d}return n8(),d7e}function jon(e){var t,n,r;return e.e==0?0:(t=e.d<<5,n=e.a[e.d-1],e.e<0&&(r=_tt(e),r==e.d-1&&(--n,n=n|0)),t-=uI(n),t)}function $on(e){var t,n,r;return e<$G.length?$G[e]:(n=e>>5,t=e&31,r=Me(Lr,Jr,25,n+1,15,1),r[n]=1<3;)s*=10,--o;e=(e+(s>>1))/s|0}return r.i=e,!0}function zon(e){return Aie(),Mn(),!!(frt(u(e.a,81).j,u(e.b,103))||u(e.a,81).d.e!=0&&frt(u(e.a,81).j,u(e.b,103)))}function Gon(e){A$(),u(e.We((bi(),p2)),174).Hc((wl(),zV))&&(u(e.We(Hy),174).Fc((ol(),$k)),u(e.We(p2),174).Mc(zV))}function vrt(e,t){var n,r;if(t){for(n=0;n=0;--r)for(t=n[r],s=0;s>1,this.k=t-1>>1}function Yon(e,t){kr(t,"End label post-processing",1),ms(Vi(ic(new vn(null,new mn(e.b,16)),new lY),new hY),new fY),ur(t)}function Xon(e,t,n){var r,s;return r=Ue(e.p[t.i.p])+Ue(e.d[t.i.p])+t.n.b+t.a.b,s=Ue(e.p[n.i.p])+Ue(e.d[n.i.p])+n.n.b+n.a.b,s-r}function Qon(e,t,n){var r,s;for(r=qs(n,yo),s=0;Mc(r,0)!=0&&s0&&(zr(0,t.length),t.charCodeAt(0)==43)?t.substr(1):t))}function Jon(e){var t;return e==null?null:new Ip((t=Xc(e,!0),t.length>0&&(zr(0,t.length),t.charCodeAt(0)==43)?t.substr(1):t))}function r3e(e,t){var n;return e.i>0&&(t.lengthe.i&&cs(t,e.i,null),t}function ou(e,t,n){var r,s,o;return e.ej()?(r=e.i,o=e.fj(),$D(e,r,t),s=e.Zi(3,null,t,r,o),n?n.Ei(s):n=s):$D(e,e.i,t),n}function ecn(e,t,n){var r,s;return r=new N0(e.e,4,10,(s=t.c,we(s,88)?u(s,26):(on(),sf)),null,Dg(e,t),!1),n?n.Ei(r):n=r,n}function tcn(e,t,n){var r,s;return r=new N0(e.e,3,10,null,(s=t.c,we(s,88)?u(s,26):(on(),sf)),Dg(e,t),!1),n?n.Ei(r):n=r,n}function yrt(e){Mm();var t;return t=new Io(u(e.e.We((bi(),e5)),8)),e.B.Hc((wl(),SE))&&(t.a<=0&&(t.a=20),t.b<=0&&(t.b=20)),t}function krt(e){Zm();var t;return(e.q?e.q:(hn(),hn(),l0))._b((pt(),_w))?t=u(K(e,_w),197):t=u(K(Ya(e),pS),197),t}function Qm(e,t){var n,r;return r=null,ta(e,(pt(),eV))&&(n=u(K(e,eV),94),n.Xe(t)&&(r=n.We(t))),r==null&&(r=K(Ya(e),t)),r}function xrt(e,t){var n,r,s;return we(t,42)?(n=u(t,42),r=n.cd(),s=Ym(e.Rc(),r),md(s,n.dd())&&(s!=null||e.Rc()._b(r))):!1}function qie(e,t){var n,r,s;return e.f>0?(e.qj(),r=t==null?0:Xi(t),s=(r&Ei)%e.d.length,n=xot(e,s,r,t),n!=-1):!1}function r1(e,t){var n,r,s;return e.f>0&&(e.qj(),r=t==null?0:Xi(t),s=(r&Ei)%e.d.length,n=H4e(e,s,r,t),n)?n.dd():null}function qD(e,t){var n,r,s,o;for(o=pu(e.e.Tg(),t),n=u(e.g,119),s=0;s1?I1(A0(t.a[1],32),qs(t.a[0],yo)):qs(t.a[0],yo),Bv(ja(t.e,n))))}function VD(e,t){var n;return Ko(e)&&Ko(t)&&(n=e%t,DI>5,t&=31,s=e.d+n+(t==0?0:1),r=Me(Lr,Jr,25,s,15,1),nfn(r,e.a,n,t),o=new z3(e.e,s,r),E_(o),o}function s3e(e,t,n){var r,s;r=u(Uc(ME,t),117),s=u(Uc(tA,t),117),n?(Oo(ME,e,r),Oo(tA,e,s)):(Oo(tA,e,r),Oo(ME,e,s))}function Lrt(e,t,n){var r,s,o;for(s=null,o=e.b;o;){if(r=e.a.ue(t,o.d),n&&r==0)return o;r>=0?o=o.a[1]:(s=o,o=o.a[0])}return s}function Mrt(e,t,n){var r,s,o;for(s=null,o=e.b;o;){if(r=e.a.ue(t,o.d),n&&r==0)return o;r<=0?o=o.a[0]:(s=o,o=o.a[1])}return s}function acn(e,t,n,r){var s,o,h;return s=!1,Hwn(e.f,n,r)&&(Dcn(e.f,e.a[t][n],e.a[t][r]),o=e.a[t],h=o[r],o[r]=o[n],o[n]=h,s=!0),s}function a3e(e,t,n,r,s){var o,h,d;for(h=s;t.b!=t.c;)o=u(I6(t),10),d=u(ac(o,r).Xb(0),11),e.d[d.p]=h++,n.c[n.c.length]=d;return h}function o3e(e,t,n){var r,s,o,h,d;return h=e.k,d=t.k,r=n[h.g][d.g],s=ft(Qm(e,r)),o=ft(Qm(t,r)),b.Math.max((Sn(s),s),(Sn(o),o))}function ocn(e,t,n){var r,s,o,h;for(r=n/e.c.length,s=0,h=new C(e);h.a2e3&&(S0t=e,RG=b.setTimeout(gUt,10))),BG++==0?(zrn((Ope(),N8e)),!0):!1}function ucn(e,t){var n,r,s;for(r=new cr(fr(js(e).a.Kc(),new V));Vr(r);)if(n=u(Pr(r),17),s=n.d.i,s.c==t)return!1;return!0}function c3e(e,t){var n,r;if(we(t,245)){r=u(t,245);try{return n=e.vd(r),n==0}catch(s){if(s=ts(s),!we(s,205))throw J(s)}}return!1}function lcn(){return Error.stackTraceLimit>0?(b.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):"stack"in new Error}function hcn(e,t){return S1(),S1(),Ef(Jp),(b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)?0:et?1:yv(isNaN(e),isNaN(t)))>0}function u3e(e,t){return S1(),S1(),Ef(Jp),(b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)?0:et?1:yv(isNaN(e),isNaN(t)))<0}function Ort(e,t){return S1(),S1(),Ef(Jp),(b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)?0:et?1:yv(isNaN(e),isNaN(t)))<=0}function Uie(e,t){for(var n=0;!t[n]||t[n]=="";)n++;for(var r=t[n++];nioe)return n.fh();if(r=n.Zg(),r||n==e)break}return r}function l3e(e){return u$(),we(e,156)?u(er(oN,j0t),288).vg(e):Il(oN,pl(e))?u(er(oN,pl(e)),288).vg(e):null}function dcn(e){if(AH(j7,e))return Mn(),U7;if(AH(Mce,e))return Mn(),Sb;throw J(new Ln("Expecting true or false"))}function gcn(e,t){if(t.c==e)return t.d;if(t.d==e)return t.c;throw J(new Ln("Input edge is not connected to the input port."))}function jrt(e,t){return e.e>t.e?1:e.et.d?e.e:e.d=48&&e<48+b.Math.min(10,10)?e-48:e>=97&&e<97?e-97+10:e>=65&&e<65?e-65+10:-1}function Hrt(e,t){var n;return je(t)===je(e)?!0:!we(t,21)||(n=u(t,21),n.gc()!=e.gc())?!1:e.Ic(n)}function pcn(e,t){var n,r,s,o;return r=e.a.length-1,n=t-e.b&r,o=e.c-t&r,s=e.c-e.b&r,pUe(n=o?(gan(e,t),-1):(pan(e,t),1)}function bcn(e,t){var n,r;for(n=(zr(t,e.length),e.charCodeAt(t)),r=t+1;rt.e?1:e.ft.f?1:Xi(e)-Xi(t)}function AH(e,t){return Sn(e),t==null?!1:an(e,t)?!0:e.length==t.length&&an(e.toLowerCase(),t.toLowerCase())}function _cn(e,t){var n,r,s,o;for(r=0,s=t.gc();r0&&Mc(e,128)<0?(t=Or(e)+128,n=(iKe(),q8e)[t],!n&&(n=q8e[t]=new wm(e)),n):new wm(e)}function Grt(e,t){var n,r;return n=t.Hh(e.a),n&&(r=Hr(r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),gi)),r!=null)?r:t.ne()}function Ccn(e,t){var n,r;return n=t.Hh(e.a),n&&(r=Hr(r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),gi)),r!=null)?r:t.ne()}function Scn(e,t){fre();var n,r;for(r=new cr(fr(j0(e).a.Kc(),new V));Vr(r);)if(n=u(Pr(r),17),n.d.i==t||n.c.i==t)return n;return null}function d3e(e,t,n){this.c=e,this.f=new st,this.e=new Fa,this.j=new xve,this.n=new xve,this.b=t,this.g=new fh(t.c,t.d,t.b,t.a),this.a=n}function Wie(e){var t,n,r,s;for(this.a=new C0,this.d=new Ys,this.e=0,n=e,r=0,s=n.length;r0):!1}function Urt(e){var t;je(Ft(e,(bi(),Q4)))===je((F0(),FV))&&(us(e)?(t=u(Ft(us(e),Q4),334),So(e,Q4,t)):So(e,Q4,jS))}function Dcn(e,t,n){var r,s;Ase(e.e,t,n,(ht(),Dn)),Ase(e.i,t,n,$n),e.a&&(s=u(K(t,(et(),Mi)),11),r=u(K(n,Mi),11),wre(e.g,s,r))}function Wrt(e,t,n){var r,s,o;r=t.c.p,o=t.p,e.b[r][o]=new cXe(e,t),n&&(e.a[r][o]=new qx(t),s=u(K(t,(et(),xw)),10),s&&sn(e.d,s,t))}function Krt(e,t){var n,r,s;if(it(QG,e),t.Fc(e),n=u(er(jue,e),21),n)for(s=n.Kc();s.Ob();)r=u(s.Pb(),33),Yo(QG,r,0)!=-1||Krt(r,t)}function Icn(e,t,n){var r;(U0t?(Fon(e),!0):W0t||Y0t?(n8(),!0):K0t&&(n8(),!1))&&(r=new yWe(t),r.b=n,Pfn(e,r))}function Kie(e,t){var n;n=!e.A.Hc((Bl(),Hb))||e.q==(wa(),tu),e.u.Hc((ol(),Z0))?n?eyn(e,t):Tlt(e,t):e.u.Hc(m2)&&(n?mmn(e,t):Flt(e,t))}function s7(e,t){var n,r;if(++e.j,t!=null&&(n=(r=e.a.Cb,we(r,97)?u(r,97).Jg():null),Sdn(t,n))){X6(e.a,4,n);return}X6(e.a,4,u(t,126))}function Yrt(e,t,n){return new fh(b.Math.min(e.a,t.a)-n/2,b.Math.min(e.b,t.b)-n/2,b.Math.abs(e.a-t.a)+n,b.Math.abs(e.b-t.b)+n)}function Ocn(e,t){var n,r;return n=Tu(e.a.c.p,t.a.c.p),n!=0?n:(r=Tu(e.a.d.i.p,t.a.d.i.p),r!=0?r:Tu(t.a.d.p,e.a.d.p))}function Ncn(e,t,n){var r,s,o,h;return o=t.j,h=n.j,o!=h?o.g-h.g:(r=e.f[t.p],s=e.f[n.p],r==0&&s==0?0:r==0?-1:s==0?1:Fs(r,s))}function Xrt(e,t,n){var r,s,o;if(!n[t.d])for(n[t.d]=!0,s=new C(t4(t));s.a=s)return s;for(t=t>0?t:0;tr&&cs(t,r,null),t}function Zrt(e,t){var n,r;for(r=e.a.length,t.lengthr&&cs(t,r,null),t}function hb(e,t,n){var r,s,o;return s=u(er(e.e,t),387),s?(o=Rbe(s,n),HVe(e,s),o):(r=new lve(e,t,n),Si(e.e,t,r),dXe(r),null)}function Rcn(e){var t;if(e==null)return null;if(t=D0n(Xc(e,!0)),t==null)throw J(new nte("Invalid hexBinary value: '"+e+"'"));return t}function WD(e){return Qp(),Mc(e,0)<0?Mc(e,-1)!=0?new Z3e(-1,M8(e)):Eue:Mc(e,10)<=0?n7e[Or(e)]:new Z3e(1,e)}function Xie(){return Tz(),ie(re(Ogt,1),tt,159,0,[Dgt,Mgt,Igt,xgt,kgt,Egt,Cgt,_gt,Tgt,Lgt,Agt,Sgt,mgt,wgt,ygt,bgt,pgt,vgt,dgt,fgt,ggt,Iue])}function Jrt(e){var t;this.d=new st,this.j=new Fa,this.g=new Fa,t=e.g.b,this.f=u(K(Ya(t),(pt(),Zl)),103),this.e=Ue(ft(DH(t,Ry)))}function eit(e){this.b=new st,this.e=new st,this.d=e,this.a=!LT(Vi(new vn(null,new Sv(new N1(e.b))),new Ke(new _B))).sd((G2(),X7))}function i1(){i1=pe,Fn=new SM("PARENTS",0),ua=new SM("NODES",1),Fd=new SM("EDGES",2),Bb=new SM("PORTS",3),Vg=new SM("LABELS",4)}function n4(){n4=pe,v2=new LM("DISTRIBUTED",0),ZO=new LM("JUSTIFIED",1),uAe=new LM("BEGIN",2),$S=new LM(D7,3),lAe=new LM("END",4)}function Fcn(e){var t;switch(t=e.yi(null),t){case 10:return 0;case 15:return 1;case 14:return 2;case 11:return 3;case 21:return 4}return-1}function Qie(e){switch(e.g){case 1:return wo(),X0;case 4:return wo(),Xh;case 2:return wo(),Df;case 3:return wo(),Y0}return wo(),f0}function jcn(e,t,n){var r;switch(r=n.q.getFullYear()-e2+e2,r<0&&(r=-r),t){case 1:e.a+=r;break;case 2:e0(e,r%100,2);break;default:e0(e,r,t)}}function ii(e,t){var n,r;if(jm(t,e.b),t>=e.b>>1)for(r=e.c,n=e.b;n>t;--n)r=r.b;else for(r=e.a.a,n=0;n=64&&t<128&&(s=I1(s,A0(1,t-64)));return s}function DH(e,t){var n,r;return r=null,ta(e,(bi(),Fk))&&(n=u(K(e,Fk),94),n.Xe(t)&&(r=n.We(t))),r==null&&Ya(e)&&(r=K(Ya(e),t)),r}function rit(e,t){var n,r,s;s=t.d.i,r=s.k,!(r==(zn(),Hs)||r==U1)&&(n=new cr(fr(js(s).a.Kc(),new V)),Vr(n)&&Si(e.k,t,u(Pr(n),17)))}function Zie(e,t){var n,r,s;return r=gn(e.Tg(),t),n=t-e.Ah(),n<0?(s=e.Yg(r),s>=0?e.lh(s):Fse(e,r)):n<0?Fse(e,r):u(r,66).Nj().Sj(e,e.yh(),n)}function xt(e){var t;if(we(e.a,4)){if(t=l3e(e.a),t==null)throw J(new Wo(e1t+e.b+"'. "+Jft+(S0(cN),cN.k)+qxe));return t}else return e.a}function zcn(e){var t;if(e==null)return null;if(t=cyn(Xc(e,!0)),t==null)throw J(new nte("Invalid base64Binary value: '"+e+"'"));return t}function pr(e){var t;try{return t=e.i.Xb(e.e),e.mj(),e.g=e.e++,t}catch(n){throw n=ts(n),we(n,73)?(e.mj(),J(new xc)):J(n)}}function Jie(e){var t;try{return t=e.c.ki(e.e),e.mj(),e.g=e.e++,t}catch(n){throw n=ts(n),we(n,73)?(e.mj(),J(new xc)):J(n)}}function K_(){K_=pe,U7e=(bi(),zSe),Rue=ySe,Ugt=Bk,V7e=Fb,Xgt=(GH(),T7e),Ygt=x7e,Qgt=C7e,Kgt=k7e,Wgt=(Tie(),z7e),Bue=Ggt,q7e=qgt,XG=Vgt}function IH(e){switch(Jpe(),this.c=new st,this.d=e,e.g){case 0:case 2:this.a=owe(lEe),this.b=gs;break;case 3:case 1:this.a=lEe,this.b=Ds}}function iit(e,t,n){var r,s;if(e.c)Du(e.c,e.c.i+t),Iu(e.c,e.c.j+n);else for(s=new C(e.b);s.a0&&(it(e.b,new BWe(t.a,n)),r=t.a.length,0r&&(t.a+=$Ve(Me(Sh,Td,25,-r,15,1))))}function sit(e,t){var n,r,s;for(n=e.o,s=u(u(Ii(e.r,t),21),84).Kc();s.Ob();)r=u(s.Pb(),111),r.e.a=Vun(r,n.a),r.e.b=n.b*Ue(ft(r.b.We(WG)))}function qcn(e,t){var n,r,s,o;return s=e.k,n=Ue(ft(K(e,(et(),Ew)))),o=t.k,r=Ue(ft(K(t,Ew))),o!=(zn(),Ls)?-1:s!=Ls?1:n==r?0:n=0?e.hh(t,n,r):(e.eh()&&(r=(s=e.Vg(),s>=0?e.Qg(r):e.eh().ih(e,-1-s,null,r))),e.Sg(t,n,r))}function p3e(e,t){switch(t){case 7:!e.e&&(e.e=new wn(ra,e,7,4)),_r(e.e);return;case 8:!e.d&&(e.d=new wn(ra,e,8,5)),_r(e.d);return}t3e(e,t)}function s1(e,t){var n;n=e.Zc(t);try{return n.Pb()}catch(r){throw r=ts(r),we(r,109)?J(new Do("Can't get element "+t)):J(r)}}function b3e(e,t){this.e=e,t=0&&(n.d=e.t);break;case 3:e.t>=0&&(n.a=e.t)}e.C&&(n.b=e.C.b,n.c=e.C.c)}function Z6(){Z6=pe,oO=new PF(Oz,0),aO=new PF(woe,1),cO=new PF(moe,2),uO=new PF(yoe,3),oO.a=!1,aO.a=!0,cO.a=!1,uO.a=!0}function Y_(){Y_=pe,lO=new NF(Oz,0),KG=new NF(woe,1),YG=new NF(moe,2),hO=new NF(yoe,3),lO.a=!1,KG.a=!0,YG.a=!1,hO.a=!0}function Ycn(e){var t;t=e.a;do t=u(Pr(new cr(fr(Xo(t).a.Kc(),new V))),17).c.i,t.k==(zn(),ca)&&e.b.Fc(t);while(t.k==(zn(),ca));e.b=nb(e.b)}function Xcn(e){var t,n,r;for(r=e.c.a,e.p=(Nr(r),new Uu(r)),n=new C(r);n.an.b)return!0}return!1}function ese(e,t){return fa(e)?!!y0t[t]:e.hm?!!e.hm[t]:Sm(e)?!!m0t[t]:Cm(e)?!!w0t[t]:!1}function So(e,t,n){return n==null?(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),CH(e.o,t)):(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),qH(e.o,t,n)),e}function eun(e,t,n,r){var s,o;o=t.Xe((bi(),J4))?u(t.We(J4),21):e.j,s=Gan(o),s!=(Tz(),Iue)&&(n&&!h3e(s)||k4e(I0n(e,s,r),t))}function NH(e,t,n,r){var s,o,h;return o=gn(e.Tg(),t),s=t-e.Ah(),s<0?(h=e.Yg(o),h>=0?e._g(h,n,!0):tw(e,o,n)):u(o,66).Nj().Pj(e,e.yh(),s,n,r)}function tun(e,t,n,r){var s,o,h;n.mh(t)&&(ho(),Ure(t)?(s=u(n.ah(t),153),_cn(e,s)):(o=(h=t,h?u(r,49).xh(h):null),o&&rVt(n.ah(t),o)))}function nun(e){switch(e.g){case 1:return Vv(),sO;case 3:return Vv(),iO;case 2:return Vv(),Nue;case 4:return Vv(),Oue;default:return null}}function v3e(e){switch(typeof e){case Mae:return Ig(e);case d6e:return _s(e);case sk:return Mn(),e?1231:1237;default:return e==null?0:xv(e)}}function run(e,t,n){if(e.e)switch(e.b){case 1:IJt(e.c,t,n);break;case 0:OJt(e.c,t,n)}else VQe(e.c,t,n);e.a[t.p][n.p]=e.c.i,e.a[n.p][t.p]=e.c.e}function lit(e){var t,n;if(e==null)return null;for(n=Me(h0,Qe,193,e.length,0,2),t=0;t=0)return s;if(e.Fk()){for(r=0;r=s)throw J(new Im(t,s));if(e.hi()&&(r=e.Xc(n),r>=0&&r!=t))throw J(new Ln(YI));return e.mi(t,n)}function w3e(e,t){if(this.a=u(Nr(e),245),this.b=u(Nr(t),245),e.vd(t)>0||e==(Xee(),fue)||t==(Yee(),due))throw J(new Ln("Invalid range: "+HQe(e,t)))}function hit(e){var t,n;for(this.b=new st,this.c=e,this.a=!1,n=new C(e.a);n.a0),(t&-t)==t)return _s(t*vl(e,31)*4656612873077393e-25);do n=vl(e,31),r=n%t;while(n-r+(t-1)<0);return _s(r)}function Ig(e){kWe();var t,n,r;return n=":"+e,r=qG[n],r!=null?_s((Sn(r),r)):(r=p7e[n],t=r==null?Ygn(e):_s((Sn(r),r)),TJt(),qG[n]=t,t)}function dit(e,t,n){kr(n,"Compound graph preprocessor",1),e.a=new Nv,mlt(e,t,null),Bvn(e,t),wgn(e),Ye(t,(et(),N9e),e.a),e.a=null,sl(e.b),ur(n)}function aun(e,t,n){switch(n.g){case 1:e.a=t.a/2,e.b=0;break;case 2:e.a=t.a,e.b=t.b/2;break;case 3:e.a=t.a/2,e.b=t.b;break;case 4:e.a=0,e.b=t.b/2}}function oun(e){var t,n,r;for(r=u(Ii(e.a,(c4(),Cq)),15).Kc();r.Ob();)n=u(r.Pb(),101),t=D3e(n),p8(e,n,t[0],(qv(),ww),0),p8(e,n,t[1],mw,1)}function cun(e){var t,n,r;for(r=u(Ii(e.a,(c4(),Sq)),15).Kc();r.Ob();)n=u(r.Pb(),101),t=D3e(n),p8(e,n,t[0],(qv(),ww),0),p8(e,n,t[1],mw,1)}function tse(e){switch(e.g){case 0:return null;case 1:return new dtt;case 2:return new Lpe;default:throw J(new Ln(wce+(e.f!=null?e.f:""+e.g)))}}function KD(e,t,n){var r,s;for(Msn(e,t-e.s,n-e.t),s=new C(e.n);s.a1&&(o=sun(e,t)),o}function nse(e){var t;return e.f&&e.f.kh()&&(t=u(e.f,49),e.f=u(Up(e,t),82),e.f!=t&&e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,9,8,t,e.f))),e.f}function rse(e){var t;return e.i&&e.i.kh()&&(t=u(e.i,49),e.i=u(Up(e,t),82),e.i!=t&&e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,9,7,t,e.i))),e.i}function go(e){var t;return e.b&&e.b.Db&64&&(t=e.b,e.b=u(Up(e,t),18),e.b!=t&&e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,9,21,t,e.b))),e.b}function RH(e,t){var n,r,s;e.d==null?(++e.e,++e.f):(r=t.Sh(),_gn(e,e.f+1),s=(r&Ei)%e.d.length,n=e.d[s],!n&&(n=e.d[s]=e.uj()),n.Fc(t),++e.f)}function k3e(e,t,n){var r;return t.Kj()?!1:t.Zj()!=-2?(r=t.zj(),r==null?n==null:Ci(r,n)):t.Hj()==e.e.Tg()&&n==null}function FH(){var e;ql(16,uht),e=itt(16),this.b=Me(pue,AI,317,e,0,1),this.c=Me(pue,AI,317,e,0,1),this.a=null,this.e=null,this.i=0,this.f=e-1,this.g=0}function H0(e){jbe.call(this),this.k=(zn(),Hs),this.j=(ql(6,fy),new su(6)),this.b=(ql(2,fy),new su(2)),this.d=new qee,this.f=new ype,this.a=e}function lun(e){var t,n;e.c.length<=1||(t=hct(e,(ht(),xr)),Jst(e,u(t.a,19).a,u(t.b,19).a),n=hct(e,Dn),Jst(e,u(n.a,19).a,u(n.b,19).a))}function X_(){X_=pe,f_e=new EM("SIMPLE",0),ohe=new EM(Boe,1),che=new EM("LINEAR_SEGMENTS",2),wS=new EM("BRANDES_KOEPF",3),mS=new EM(Pft,4)}function x3e(e,t,n){A6(u(K(t,(pt(),bs)),98))||(bme(e,t,Og(t,n)),bme(e,t,Og(t,(ht(),xr))),bme(e,t,Og(t,An)),hn(),aa(t.j,new sM(e)))}function git(e,t,n,r){var s,o,h;for(s=u(Ii(r?e.a:e.b,t),21),h=s.Kc();h.Ob();)if(o=u(h.Pb(),33),cz(e,n,o))return!0;return!1}function ise(e){var t,n;for(n=new rr(e);n.e!=n.i.gc();)if(t=u(pr(n),87),t.e||(!t.d&&(t.d=new Bs(Eo,t,1)),t.d).i!=0)return!0;return!1}function sse(e){var t,n;for(n=new rr(e);n.e!=n.i.gc();)if(t=u(pr(n),87),t.e||(!t.d&&(t.d=new Bs(Eo,t,1)),t.d).i!=0)return!0;return!1}function hun(e){var t,n,r;for(t=0,r=new C(e.c.a);r.a102?-1:e<=57?e-48:e<65?-1:e<=70?e-65+10:e<97?-1:e-97+10}function cse(e,t){if(e==null)throw J(new b6("null key in entry: null="+t));if(t==null)throw J(new b6("null value in entry: "+e+"=null"))}function fun(e,t){for(var n,r;e.Ob();)if(!t.Ob()||(n=e.Pb(),r=t.Pb(),!(je(n)===je(r)||n!=null&&Ci(n,r))))return!1;return!t.Ob()}function bit(e,t){var n;return n=ie(re(pa,1),Ao,25,15,[Sie(e.a[0],t),Sie(e.a[1],t),Sie(e.a[2],t)]),e.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function vit(e,t){var n;return n=ie(re(pa,1),Ao,25,15,[dH(e.a[0],t),dH(e.a[1],t),dH(e.a[2],t)]),e.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function db(){db=pe,ble=new xM("GREEDY",0),h9e=new xM(kft,1),vle=new xM(Boe,2),sS=new xM("MODEL_ORDER",3),iS=new xM("GREEDY_MODEL_ORDER",4)}function wit(e,t){var n,r,s;for(e.b[t.g]=1,r=ii(t.d,0);r.b!=r.d.c;)n=u(ri(r),188),s=n.c,e.b[s.g]==1?ci(e.a,n):e.b[s.g]==2?e.b[s.g]=1:wit(e,s)}function dun(e,t){var n,r,s;for(s=new su(t.gc()),r=t.Kc();r.Ob();)n=u(r.Pb(),286),n.c==n.f?f7(e,n,n.c):h1n(e,n)||(s.c[s.c.length]=n);return s}function gun(e,t,n){var r,s,o,h,d;for(d=e.r+t,e.r+=t,e.d+=n,r=n/e.n.c.length,s=0,h=new C(e.n);h.ao&&cs(t,o,null),t}function Aun(e,t){var n,r;if(r=e.gc(),t==null){for(n=0;n0&&(v+=s),x[_]=h,h+=d*(v+r)}function Cit(e){var t,n,r;for(r=e.f,e.n=Me(pa,Ao,25,r,15,1),e.d=Me(pa,Ao,25,r,15,1),t=0;t0?e.c:0),++s;e.b=r,e.d=o}function Pun(e,t){var n,r,s,o,h;for(r=0,s=0,n=0,h=new C(t);h.a0?e.g:0),++n;e.c=s,e.d=r}function Dit(e,t){var n;return n=ie(re(pa,1),Ao,25,15,[y3e(e,(n1(),pc),t),y3e(e,lu,t),y3e(e,bc,t)]),e.f&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function Bun(e,t,n){var r;try{hz(e,t+e.j,n+e.k,!1,!0)}catch(s){throw s=ts(s),we(s,73)?(r=s,J(new Do(r.g+Pz+t+io+n+")."))):J(s)}}function Run(e,t,n){var r;try{hz(e,t+e.j,n+e.k,!0,!1)}catch(s){throw s=ts(s),we(s,73)?(r=s,J(new Do(r.g+Pz+t+io+n+")."))):J(s)}}function Iit(e){var t;ta(e,(pt(),Tw))&&(t=u(K(e,Tw),21),t.Hc((sy(),If))?(t.Mc(If),t.Fc(Of)):t.Hc(Of)&&(t.Mc(Of),t.Fc(If)))}function Oit(e){var t;ta(e,(pt(),Tw))&&(t=u(K(e,Tw),21),t.Hc((sy(),Pf))?(t.Mc(Pf),t.Fc(Zh)):t.Hc(Zh)&&(t.Mc(Zh),t.Fc(Pf)))}function Fun(e,t,n){kr(n,"Self-Loop ordering",1),ms(Cu(Vi(Vi(ic(new vn(null,new mn(t.b,16)),new rB),new VY),new UY),new WY),new mm(e)),ur(n)}function XD(e,t,n,r){var s,o;for(s=t;s0&&(s.b+=t),s}function HH(e,t){var n,r,s;for(s=new Fa,r=e.Kc();r.Ob();)n=u(r.Pb(),37),cC(n,0,s.b),s.b+=n.f.b+t,s.a=b.Math.max(s.a,n.f.a);return s.a>0&&(s.a+=t),s}function Pit(e){var t,n,r;for(r=Ei,n=new C(e.a);n.a>16==6?e.Cb.ih(e,5,h1,t):(r=go(u(gn((n=u(_n(e,16),26),n||e.zh()),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Gun(e){k8();var t=e.e;if(t&&t.stack){var n=t.stack,r=t+` +`;return n.substring(0,r.length)==r&&(n=n.substring(r.length)),n.split(` +`)}return[]}function qun(e){var t;return t=(Zet(),I0t),t[e>>>28]|t[e>>24&15]<<4|t[e>>20&15]<<8|t[e>>16&15]<<12|t[e>>12&15]<<16|t[e>>8&15]<<20|t[e>>4&15]<<24|t[e&15]<<28}function Fit(e){var t,n,r;e.b==e.c&&(r=e.a.length,n=cye(b.Math.max(8,r))<<1,e.b!=0?(t=wf(e.a,n),att(e,t,r),e.a=t,e.b=0):rHe(e.a,n),e.c=r)}function Vun(e,t){var n;return n=e.b,n.Xe((bi(),kl))?n.Hf()==(ht(),Dn)?-n.rf().a-Ue(ft(n.We(kl))):t+Ue(ft(n.We(kl))):n.Hf()==(ht(),Dn)?-n.rf().a:t}function QD(e){var t;return e.b.c.length!=0&&u(St(e.b,0),70).a?u(St(e.b,0),70).a:(t=ere(e),t??""+(e.c?Yo(e.c.a,e,0):-1))}function zH(e){var t;return e.f.c.length!=0&&u(St(e.f,0),70).a?u(St(e.f,0),70).a:(t=ere(e),t??""+(e.i?Yo(e.i.j,e,0):-1))}function Uun(e,t){var n,r;if(t<0||t>=e.gc())return null;for(n=t;n0?e.c:0),s=b.Math.max(s,t.d),++r;e.e=o,e.b=s}function Kun(e){var t,n;if(!e.b)for(e.b=p$(u(e.f,118).Ag().i),n=new rr(u(e.f,118).Ag());n.e!=n.i.gc();)t=u(pr(n),137),it(e.b,new tte(t));return e.b}function Yun(e,t){var n,r,s;if(t.dc())return u8(),u8(),uN;for(n=new jUe(e,t.gc()),s=new rr(e);s.e!=s.i.gc();)r=pr(s),t.Hc(r)&&Br(n,r);return n}function L3e(e,t,n,r){return t==0?r?(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),e.o):(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),hD(e.o)):NH(e,t,n,r)}function bse(e){var t,n;if(e.rb)for(t=0,n=e.rb.i;t>22),s+=r>>22,s<0)?!1:(e.l=n&ml,e.m=r&ml,e.h=s&V0,!0)}function Jun(e,t,n,r,s,o,h){var d,v;return!(t.Ae()&&(v=e.a.ue(n,r),v<0||!s&&v==0)||t.Be()&&(d=e.a.ue(n,o),d>0||!h&&d==0))}function eln(e,t){X8();var n;if(n=e.j.g-t.j.g,n!=0)return 0;switch(e.j.g){case 2:return jie(t,r9e)-jie(e,r9e);case 4:return jie(e,n9e)-jie(t,n9e)}return 0}function tln(e){switch(e.g){case 0:return mle;case 1:return yle;case 2:return kle;case 3:return xle;case 4:return Mq;case 5:return Ele;default:return null}}function Ro(e,t,n){var r,s;return r=(s=new Wee,cb(s,t),au(s,n),Br((!e.c&&(e.c=new at(Iw,e,12,10)),e.c),s),s),Cg(r,0),Wm(r,1),Mg(r,!0),Lg(r,!0),r}function J6(e,t){var n,r;if(t>=e.i)throw J(new zte(t,e.i));return++e.j,n=e.g[t],r=e.i-t-1,r>0&&Hc(e.g,t+1,e.g,t,r),cs(e.g,--e.i,null),e.fi(t,n),e.ci(),n}function jit(e,t){var n,r;return e.Db>>16==17?e.Cb.ih(e,21,tf,t):(r=go(u(gn((n=u(_n(e,16),26),n||e.zh()),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function nln(e){var t,n,r,s;for(hn(),aa(e.c,e.a),s=new C(e.c);s.an.a.c.length))throw J(new Ln("index must be >= 0 and <= layer node count"));e.c&&Au(e.c.a,e),e.c=n,n&&Om(n.a,t,e)}function qit(e,t){var n,r,s;for(r=new cr(fr(j0(e).a.Kc(),new V));Vr(r);)return n=u(Pr(r),17),s=u(t.Kb(n),10),new Bx(Nr(s.n.b+s.o.b/2));return kT(),kT(),hue}function Vit(e,t){this.c=new Mr,this.a=e,this.b=t,this.d=u(K(e,(et(),G4)),304),je(K(e,(pt(),zTe)))===je((pD(),Dq))?this.e=new yHe:this.e=new mHe}function cln(e,t){var n,r,s,o;for(o=0,r=new C(e);r.a>16==6?e.Cb.ih(e,6,ra,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),qV)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function P3e(e,t){var n,r;return e.Db>>16==7?e.Cb.ih(e,1,iN,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),xAe)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function B3e(e,t){var n,r;return e.Db>>16==9?e.Cb.ih(e,9,hs,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),TAe)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Wit(e,t){var n,r;return e.Db>>16==5?e.Cb.ih(e,9,JV,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Yg)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function R3e(e,t){var n,r;return e.Db>>16==3?e.Cb.ih(e,0,aN,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Kg)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Kit(e,t){var n,r;return e.Db>>16==7?e.Cb.ih(e,6,h1,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Qg)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Yit(){this.a=new VB,this.g=new FH,this.j=new FH,this.b=new Mr,this.d=new FH,this.i=new FH,this.k=new Mr,this.c=new Mr,this.e=new Mr,this.f=new Mr}function fln(e,t,n){var r,s,o;for(n<0&&(n=0),o=e.i,s=n;sioe)return o7(e,r);if(r==e)return!0}}return!1}function gln(e){switch(uj(),e.q.g){case 5:Oat(e,(ht(),An)),Oat(e,xr);break;case 4:Aot(e,(ht(),An)),Aot(e,xr);break;default:Alt(e,(ht(),An)),Alt(e,xr)}}function pln(e){switch(uj(),e.q.g){case 5:Kat(e,(ht(),$n)),Kat(e,Dn);break;case 4:sit(e,(ht(),$n)),sit(e,Dn);break;default:Llt(e,(ht(),$n)),Llt(e,Dn)}}function bln(e){var t,n;t=u(K(e,(a1(),dpt)),19),t?(n=t.a,n==0?Ye(e,(zp(),tq),new Fie):Ye(e,(zp(),tq),new m$(n))):Ye(e,(zp(),tq),new m$(1))}function vln(e,t){var n;switch(n=e.i,t.g){case 1:return-(e.n.b+e.o.b);case 2:return e.n.a-n.o.a;case 3:return e.n.b-n.o.b;case 4:return-(e.n.a+e.o.a)}return 0}function wln(e,t){switch(e.g){case 0:return t==(mh(),l2)?kq:xq;case 1:return t==(mh(),l2)?kq:bO;case 2:return t==(mh(),l2)?bO:xq;default:return bO}}function JD(e,t){var n,r,s;for(Au(e.a,t),e.e-=t.r+(e.a.c.length==0?0:e.c),s=Exe,r=new C(e.a);r.a>16==3?e.Cb.ih(e,12,hs,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),kAe)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function j3e(e,t){var n,r;return e.Db>>16==11?e.Cb.ih(e,10,hs,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),EAe)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Xit(e,t){var n,r;return e.Db>>16==10?e.Cb.ih(e,11,tf,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Xg)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Qit(e,t){var n,r;return e.Db>>16==10?e.Cb.ih(e,12,nf,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Ky)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function $h(e){var t;return!(e.Bb&1)&&e.r&&e.r.kh()&&(t=u(e.r,49),e.r=u(Up(e,t),138),e.r!=t&&e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,9,8,t,e.r))),e.r}function wse(e,t,n){var r;return r=ie(re(pa,1),Ao,25,15,[l4e(e,(n1(),pc),t,n),l4e(e,lu,t,n),l4e(e,bc,t,n)]),e.f&&(r[0]=b.Math.max(r[0],r[2]),r[2]=r[0]),r}function mln(e,t){var n,r,s;if(s=dun(e,t),s.c.length!=0)for(aa(s,new PY),n=s.c.length,r=0;r>19,x=t.h>>19,v!=x?x-v:(s=e.h,d=t.h,s!=d?s-d:(r=e.m,h=t.m,r!=h?r-h:(n=e.l,o=t.l,n-o)))}function GH(){GH=pe,S7e=(uz(),Mue),C7e=new dn(A6e,S7e),_7e=(P$(),Lue),T7e=new dn(L6e,_7e),E7e=(LH(),Aue),x7e=new dn(M6e,E7e),k7e=new dn(D6e,(Mn(),!0))}function Z_(e,t,n){var r,s;r=t*n,we(e.g,145)?(s=j6(e),s.f.d?s.f.a||(e.d.a+=r+z1):(e.d.d-=r+z1,e.d.a+=r+z1)):we(e.g,10)&&(e.d.d-=r,e.d.a+=2*r)}function Zit(e,t,n){var r,s,o,h,d;for(s=e[n.g],d=new C(t.d);d.a0?e.g:0),++n;t.b=r,t.e=s}function Jit(e){var t,n,r;if(r=e.b,mGe(e.i,r.length)){for(n=r.length*2,e.b=Me(pue,AI,317,n,0,1),e.c=Me(pue,AI,317,n,0,1),e.f=n-1,e.i=0,t=e.a;t;t=t.c)aI(e,t,t);++e.g}}function Sln(e,t,n,r){var s,o,h,d;for(s=0;sh&&(d=h/r),s>o&&(v=o/s),bd(e,b.Math.min(d,v)),e}function Lln(){pz();var e,t;try{if(t=u(X3e((Ap(),rf),H7),2014),t)return t}catch(n){if(n=ts(n),we(n,102))e=n,Rve((jr(),e));else throw J(n)}return new Y5}function Mln(){zJe();var e,t;try{if(t=u(X3e((Ap(),rf),_b),2024),t)return t}catch(n){if(n=ts(n),we(n,102))e=n,Rve((jr(),e));else throw J(n)}return new bm}function Dln(){pz();var e,t;try{if(t=u(X3e((Ap(),rf),Uh),1941),t)return t}catch(n){if(n=ts(n),we(n,102))e=n,Rve((jr(),e));else throw J(n)}return new KZ}function Iln(e,t,n){var r,s;return s=e.e,e.e=t,e.Db&4&&!(e.Db&1)&&(r=new oa(e,1,4,s,t),n?n.Ei(r):n=r),s!=t&&(t?n=E7(e,nz(e,t),n):n=E7(e,e.a,n)),n}function est(){kF.call(this),this.e=-1,this.a=!1,this.p=$a,this.k=-1,this.c=-1,this.b=-1,this.g=!1,this.f=-1,this.j=-1,this.n=-1,this.i=-1,this.d=-1,this.o=$a}function Oln(e,t){var n,r,s;if(r=e.b.d.d,e.a||(r+=e.b.d.a),s=t.b.d.d,t.a||(s+=t.b.d.a),n=Fs(r,s),n==0){if(!e.a&&t.a)return-1;if(!t.a&&e.a)return 1}return n}function Nln(e,t){var n,r,s;if(r=e.b.b.d,e.a||(r+=e.b.b.a),s=t.b.b.d,t.a||(s+=t.b.b.a),n=Fs(r,s),n==0){if(!e.a&&t.a)return-1;if(!t.a&&e.a)return 1}return n}function Pln(e,t){var n,r,s;if(r=e.b.g.d,e.a||(r+=e.b.g.a),s=t.b.g.d,t.a||(s+=t.b.g.a),n=Fs(r,s),n==0){if(!e.a&&t.a)return-1;if(!t.a&&e.a)return 1}return n}function H3e(){H3e=pe,Spt=il(xi(xi(xi(new Xs,(ro(),Zc),(po(),zEe)),Zc,GEe),Go,qEe),Go,DEe),Lpt=xi(xi(new Xs,Zc,TEe),Zc,IEe),Apt=il(new Xs,Go,NEe)}function Bln(e){var t,n,r,s,o;for(t=u(K(e,(et(),uS)),83),o=e.n,r=t.Cc().Kc();r.Ob();)n=u(r.Pb(),306),s=n.i,s.c+=o.a,s.d+=o.b,n.c?bct(n):vct(n);Ye(e,uS,null)}function Rln(e,t,n){var r,s;switch(s=e.b,r=s.d,t.g){case 1:return-r.d-n;case 2:return s.o.a+r.c+n;case 3:return s.o.b+r.a+n;case 4:return-r.b-n;default:return-1}}function Fln(e){var t,n,r,s,o;if(r=0,s=O7,e.b)for(t=0;t<360;t++)n=t*.017453292519943295,D5e(e,e.d,0,0,_4,n),o=e.b.ig(e.d),o0&&(h=(o&Ei)%e.d.length,s=H4e(e,h,o,t),s)?(d=s.ed(n),d):(r=e.tj(o,t,n),e.c.Fc(r),null)}function q3e(e,t){var n,r,s,o;switch(Ag(e,t)._k()){case 3:case 2:{for(n=b4(t),s=0,o=n.i;s=0;r--)if(an(e[r].d,t)||an(e[r].d,n)){e.length>=r+1&&e.splice(0,r+1);break}return e}function eI(e,t){var n;return Ko(e)&&Ko(t)&&(n=e/t,DI0&&(e.b+=2,e.a+=r):(e.b+=1,e.a+=b.Math.min(r,s))}function ost(e,t){var n,r;if(r=!1,fa(t)&&(r=!0,O6(e,new Bm(Hr(t)))),r||we(t,236)&&(r=!0,O6(e,(n=Xbe(u(t,236)),new lT(n)))),!r)throw J(new Jee(s8e))}function nhn(e,t,n,r){var s,o,h;return s=new N0(e.e,1,10,(h=t.c,we(h,88)?u(h,26):(on(),sf)),(o=n.c,we(o,88)?u(o,26):(on(),sf)),Dg(e,t),!1),r?r.Ei(s):r=s,r}function W3e(e){var t,n;switch(u(K(Ya(e),(pt(),NTe)),420).g){case 0:return t=e.n,n=e.o,new Pt(t.a+n.a/2,t.b+n.b/2);case 1:return new Io(e.n);default:return null}}function tI(){tI=pe,Iq=new HT(U0,0),m9e=new HT("LEFTUP",1),k9e=new HT("RIGHTUP",2),w9e=new HT("LEFTDOWN",3),y9e=new HT("RIGHTDOWN",4),Tle=new HT("BALANCED",5)}function rhn(e,t,n){var r,s,o;if(r=Fs(e.a[t.p],e.a[n.p]),r==0){if(s=u(K(t,(et(),Sk)),15),o=u(K(n,Sk),15),s.Hc(n))return-1;if(o.Hc(t))return 1}return r}function ihn(e){switch(e.g){case 1:return new JQ;case 2:return new eZ;case 3:return new ZQ;case 0:return null;default:throw J(new Ln(wce+(e.f!=null?e.f:""+e.g)))}}function K3e(e,t,n){switch(t){case 1:!e.n&&(e.n=new at(Jo,e,1,7)),_r(e.n),!e.n&&(e.n=new at(Jo,e,1,7)),fs(e.n,u(n,14));return;case 2:I_(e,Hr(n));return}gye(e,t,n)}function Y3e(e,t,n){switch(t){case 3:Hv(e,Ue(ft(n)));return;case 4:zv(e,Ue(ft(n)));return;case 5:Du(e,Ue(ft(n)));return;case 6:Iu(e,Ue(ft(n)));return}K3e(e,t,n)}function VH(e,t,n){var r,s,o;o=(r=new Wee,r),s=$1(o,t,null),s&&s.Fi(),au(o,n),Br((!e.c&&(e.c=new at(Iw,e,12,10)),e.c),o),Cg(o,0),Wm(o,1),Mg(o,!0),Lg(o,!0)}function X3e(e,t){var n,r,s;return n=BT(e.g,t),we(n,235)?(s=u(n,235),s.Qh()==null,s.Nh()):we(n,498)?(r=u(n,1938),s=r.b,s):null}function shn(e,t,n,r){var s,o;return Nr(t),Nr(n),o=u(c_(e.d,t),19),WJe(!!o,"Row %s not in %s",t,e.e),s=u(c_(e.b,n),19),WJe(!!s,"Column %s not in %s",n,e.c),ent(e,o.a,s.a,r)}function cst(e,t,n,r,s,o,h){var d,v,x,_,L;if(_=s[o],x=o==h-1,d=x?r:0,L=Lit(d,_),r!=10&&ie(re(e,h-o),t[o],n[o],d,L),!x)for(++o,v=0;v<_;++v)L[v]=cst(e,t,n,r,s,o,h);return L}function J_(e){if(e.g==-1)throw J(new zu);e.mj();try{e.i.$c(e.g),e.f=e.i.j,e.g1||d==-1?(o=u(v,15),s.Wb(fcn(e,o))):s.Wb(aae(e,u(v,56)))))}function fhn(e,t,n,r){Wze();var s=lue;function o(){for(var h=0;hpce)return n;s>-1e-6&&++n}return n}function J3e(e,t){var n;t!=e.b?(n=null,e.b&&(n=r$(e.b,e,-4,n)),t&&(n=Q6(t,e,-4,n)),n=qnt(e,t,n),n&&n.Fi()):e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,3,t,t))}function hst(e,t){var n;t!=e.f?(n=null,e.f&&(n=r$(e.f,e,-1,n)),t&&(n=Q6(t,e,-1,n)),n=Vnt(e,t,n),n&&n.Fi()):e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,0,t,t))}function fst(e){var t,n,r;if(e==null)return null;if(n=u(e,15),n.dc())return"";for(r=new bg,t=n.Kc();t.Ob();)To(r,(Fi(),Hr(t.Pb()))),r.a+=" ";return qte(r,r.a.length-1)}function dst(e){var t,n,r;if(e==null)return null;if(n=u(e,15),n.dc())return"";for(r=new bg,t=n.Kc();t.Ob();)To(r,(Fi(),Hr(t.Pb()))),r.a+=" ";return qte(r,r.a.length-1)}function yhn(e,t,n){var r,s;return r=e.c[t.c.p][t.p],s=e.c[n.c.p][n.p],r.a!=null&&s.a!=null?Ine(r.a,s.a):r.a!=null?-1:s.a!=null?1:0}function khn(e,t){var n,r,s,o,h,d;if(t)for(o=t.a.length,n=new W2(o),d=(n.b-n.a)*n.c<0?(Lp(),C2):new Op(n);d.Ob();)h=u(d.Pb(),19),s=E8(t,h.a),r=new f$e(e),lJt(r.a,s)}function xhn(e,t){var n,r,s,o,h,d;if(t)for(o=t.a.length,n=new W2(o),d=(n.b-n.a)*n.c<0?(Lp(),C2):new Op(n);d.Ob();)h=u(d.Pb(),19),s=E8(t,h.a),r=new r$e(e),uJt(r.a,s)}function Ehn(e){var t;if(e!=null&&e.length>0&&Ma(e,e.length-1)==33)try{return t=lat(jl(e,0,e.length-1)),t.e==null}catch(n){if(n=ts(n),!we(n,32))throw J(n)}return!1}function gst(e,t,n){var r,s,o;return r=t.ak(),o=t.dd(),s=r.$j()?jp(e,3,r,null,o,y7(e,r,o,we(r,99)&&(u(r,18).Bb&so)!=0),!0):jp(e,1,r,r.zj(),o,-1,!0),n?n.Ei(s):n=s,n}function Thn(){var e,t,n;for(t=0,e=0;e<1;e++){if(n=V4e((zr(e,1),"X".charCodeAt(e))),n==0)throw J(new $r("Unknown Option: "+"X".substr(e)));t|=n}return t}function _hn(e,t,n){var r,s,o;switch(r=Ya(t),s=wH(r),o=new $c,rc(o,t),n.g){case 1:Vs(o,zD(Y6(s)));break;case 2:Vs(o,Y6(s))}return Ye(o,(pt(),Ny),ft(K(e,Ny))),o}function e4e(e){var t,n;return t=u(Pr(new cr(fr(Xo(e.a).a.Kc(),new V))),17),n=u(Pr(new cr(fr(js(e.a).a.Kc(),new V))),17),It(Mt(K(t,(et(),W1))))||It(Mt(K(n,W1)))}function c4(){c4=pe,Tq=new kM("ONE_SIDE",0),Cq=new kM("TWO_SIDES_CORNER",1),Sq=new kM("TWO_SIDES_OPPOSING",2),_q=new kM("THREE_SIDES",3),Eq=new kM("FOUR_SIDES",4)}function xse(e,t,n,r,s){var o,h;o=u(zl(Vi(t.Oc(),new IX),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),h=u(rb(e.b,n,r),15),s==0?h.Wc(0,o):h.Gc(o)}function Chn(e,t){var n,r,s,o,h;for(o=new C(t.a);o.a0&&$it(this,this.c-1,(ht(),$n)),this.c0&&e[0].length>0&&(this.c=It(Mt(K(Ya(e[0][0]),(et(),B9e))))),this.a=Me(vwt,Qe,2018,e.length,0,2),this.b=Me(wwt,Qe,2019,e.length,0,2),this.d=new Rnt}function Dhn(e){return e.c.length==0?!1:(xn(0,e.c.length),u(e.c[0],17)).c.i.k==(zn(),ca)?!0:_8(Cu(new vn(null,new mn(e,16)),new oQ),new cQ)}function Ihn(e,t,n){return kr(n,"Tree layout",1),d$(e.b),Xd(e.b,(a7(),fV),fV),Xd(e.b,_S,_S),Xd(e.b,NO,NO),Xd(e.b,CS,CS),e.a=mz(e.b,t),opn(e,t,Kc(n,1)),ur(n),t}function bst(e,t){var n,r,s,o,h,d,v;for(d=oy(t),o=t.f,v=t.g,h=b.Math.sqrt(o*o+v*v),s=0,r=new C(d);r.a=0?(n=eI(e,Lz),r=VD(e,Lz)):(t=Nm(e,1),n=eI(t,5e8),r=VD(t,5e8),r=Ua(A0(r,1),qs(e,1))),I1(A0(r,32),qs(n,yo))}function mst(e,t,n){var r,s;switch(r=(Qn(t.b!=0),u(bh(t,t.a.a),8)),n.g){case 0:r.b=0;break;case 2:r.b=e.f;break;case 3:r.a=0;break;default:r.a=e.g}return s=ii(t,0),YM(s,r),t}function yst(e,t,n,r){var s,o,h,d,v;switch(v=e.b,o=t.d,h=o.j,d=g3e(h,v.d[h.g],n),s=Ni(fc(o.n),o.a),o.j.g){case 1:case 3:d.a+=s.a;break;case 2:case 4:d.b+=s.b}ks(r,d,r.c.b,r.c)}function qhn(e,t,n){var r,s,o,h;for(h=Yo(e.e,t,0),o=new wpe,o.b=n,r=new Ea(e.e,h);r.b1;t>>=1)t&1&&(r=W3(r,n)),n.d==1?n=W3(n,n):n=new qrt(Jct(n.a,n.d,Me(Lr,Jr,25,n.d<<1,15,1)));return r=W3(r,n),r}function o4e(){o4e=pe;var e,t,n,r;for(c7e=Me(pa,Ao,25,25,15,1),u7e=Me(pa,Ao,25,33,15,1),r=152587890625e-16,t=32;t>=0;t--)u7e[t]=r,r*=.5;for(n=1,e=24;e>=0;e--)c7e[e]=n,n*=.5}function Xhn(e){var t,n;if(It(Mt(Ft(e,(pt(),Oy))))){for(n=new cr(fr(z0(e).a.Kc(),new V));Vr(n);)if(t=u(Pr(n),79),ew(t)&&It(Mt(Ft(t,Db))))return!0}return!1}function kst(e,t){var n,r,s;Gs(e.f,t)&&(t.b=e,r=t.c,Yo(e.j,r,0)!=-1||it(e.j,r),s=t.d,Yo(e.j,s,0)!=-1||it(e.j,s),n=t.a.b,n.c.length!=0&&(!e.i&&(e.i=new Jrt(e)),fsn(e.i,n)))}function Qhn(e){var t,n,r,s,o;return n=e.c.d,r=n.j,s=e.d.d,o=s.j,r==o?n.p=0&&an(e.substr(t,3),"GMT")||t>=0&&an(e.substr(t,3),"UTC"))&&(n[0]=t+3),N5e(e,n,r)}function Jhn(e,t){var n,r,s,o,h;for(o=e.g.a,h=e.g.b,r=new C(e.d);r.an;o--)e[o]|=t[o-n-1]>>>h,e[o-1]=t[o-n-1]<=e.f)break;o.c[o.c.length]=n}return o}function u4e(e){var t,n,r,s;for(t=null,s=new C(e.wf());s.a0&&Hc(e.g,t,e.g,t+r,d),h=n.Kc(),e.i+=r,s=0;so&&pZt(x,bet(n[d],a7e))&&(s=d,o=v);return s>=0&&(r[0]=t+o),s}function afn(e,t){var n;if(n=fVe(e.b.Hf(),t.b.Hf()),n!=0)return n;switch(e.b.Hf().g){case 1:case 2:return Tu(e.b.sf(),t.b.sf());case 3:case 4:return Tu(t.b.sf(),e.b.sf())}return 0}function ofn(e){var t,n,r;for(r=e.e.c.length,e.a=U2(Lr,[Qe,Jr],[48,25],15,[r,r],2),n=new C(e.c);n.a>4&15,o=e[r]&15,h[s++]=_Ae[n],h[s++]=_Ae[o];return jh(h,0,h.length)}function lfn(e,t,n){var r,s,o;return r=t.ak(),o=t.dd(),s=r.$j()?jp(e,4,r,o,null,y7(e,r,o,we(r,99)&&(u(r,18).Bb&so)!=0),!0):jp(e,r.Kj()?2:1,r,o,r.zj(),-1,!0),n?n.Ei(s):n=s,n}function Nu(e){var t,n;return e>=so?(t=II+(e-so>>10&1023)&Ss,n=56320+(e-so&1023)&Ss,String.fromCharCode(t)+(""+String.fromCharCode(n))):String.fromCharCode(e&Ss)}function hfn(e,t){Mm();var n,r,s,o;return s=u(u(Ii(e.r,t),21),84),s.gc()>=2?(r=u(s.Kc().Pb(),111),n=e.u.Hc((ol(),GS)),o=e.u.Hc($k),!r.a&&!n&&(s.gc()==2||o)):!1}function Tst(e,t,n,r,s){var o,h,d;for(o=oct(e,t,n,r,s),d=!1;!o;)ez(e,s,!0),d=!0,o=oct(e,t,n,r,s);d&&ez(e,s,!1),h=hie(s),h.c.length!=0&&(e.d&&e.d.lg(h),Tst(e,s,n,r,h))}function YH(){YH=pe,dfe=new WT(U0,0),JSe=new WT("DIRECTED",1),tAe=new WT("UNDIRECTED",2),QSe=new WT("ASSOCIATION",3),eAe=new WT("GENERALIZATION",4),ZSe=new WT("DEPENDENCY",5)}function ffn(e,t){var n;if(!L1(e))throw J(new Wo(m1t));switch(n=L1(e),t.g){case 1:return-(e.j+e.f);case 2:return e.i-n.g;case 3:return e.j-n.f;case 4:return-(e.i+e.g)}return 0}function l7(e,t){var n,r;for(Sn(t),r=e.b.c.length,it(e.b,t);r>0;){if(n=r,r=(r-1)/2|0,e.a.ue(St(e.b,r),t)<=0)return gh(e.b,n,t),!0;gh(e.b,n,St(e.b,r))}return gh(e.b,r,t),!0}function l4e(e,t,n,r){var s,o;if(s=0,n)s=dH(e.a[n.g][t.g],r);else for(o=0;o=d)}function h4e(e,t,n,r){var s;if(s=!1,fa(r)&&(s=!0,f8(t,n,Hr(r))),s||Cm(r)&&(s=!0,h4e(e,t,n,r)),s||we(r,236)&&(s=!0,Y2(t,n,u(r,236))),!s)throw J(new Jee(s8e))}function gfn(e,t){var n,r,s;if(n=t.Hh(e.a),n&&(s=r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),Vh),s!=null)){for(r=1;r<(Yu(),YAe).length;++r)if(an(YAe[r],s))return r}return 0}function pfn(e,t){var n,r,s;if(n=t.Hh(e.a),n&&(s=r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),Vh),s!=null)){for(r=1;r<(Yu(),XAe).length;++r)if(an(XAe[r],s))return r}return 0}function _st(e,t){var n,r,s,o;if(Sn(t),o=e.a.gc(),o0?1:0;o.a[s]!=n;)o=o.a[s],s=e.a.ue(n.d,o.d)>0?1:0;o.a[s]=r,r.b=n.b,r.a[0]=n.a[0],r.a[1]=n.a[1],n.a[0]=null,n.a[1]=null}function wfn(e){ol();var t,n;return t=Ui(Z0,ie(re(jV,1),tt,273,0,[m2])),!(SD(a$(t,e))>1||(n=Ui(GS,ie(re(jV,1),tt,273,0,[zS,$k])),SD(a$(n,e))>1))}function d4e(e,t){var n;n=Uc((Ap(),rf),e),we(n,498)?Oo(rf,e,new zqe(this,t)):Oo(rf,e,this),Lse(this,t),t==(Qx(),RAe)?(this.wb=u(this,1939),u(t,1941)):this.wb=(Rp(),En)}function mfn(e){var t,n,r;if(e==null)return null;for(t=null,n=0;n=Pg?"error":r>=900?"warn":r>=800?"info":"log"),uYe(n,e.a),e.b&&d5e(t,n,e.b,"Exception: ",!0))}function K(e,t){var n,r;return r=(!e.q&&(e.q=new Mr),er(e.q,t)),r??(n=t.wg(),we(n,4)&&(n==null?(!e.q&&(e.q=new Mr),z6(e.q,t)):(!e.q&&(e.q=new Mr),Si(e.q,t,n))),n)}function ro(){ro=pe,Pd=new yM("P1_CYCLE_BREAKING",0),c2=new yM("P2_LAYERING",1),bu=new yM("P3_NODE_ORDERING",2),Zc=new yM("P4_NODE_PLACEMENT",3),Go=new yM("P5_EDGE_ROUTING",4)}function Lst(e,t){var n,r,s,o,h;for(s=t==1?Kue:Wue,r=s.a.ec().Kc();r.Ob();)for(n=u(r.Pb(),103),h=u(Ii(e.f.c,n),21).Kc();h.Ob();)o=u(h.Pb(),46),Au(e.b.b,o.b),Au(e.b.a,u(o.b,81).d)}function yfn(e,t){M_();var n;if(e.c==t.c){if(e.b==t.b||Vin(e.b,t.b)){if(n=eWt(e.b)?1:-1,e.a&&!t.a)return n;if(!e.a&&t.a)return-n}return Tu(e.b.g,t.b.g)}else return Fs(e.c,t.c)}function kfn(e,t){var n;kr(t,"Hierarchical port position processing",1),n=e.b,n.c.length>0&&Kct((xn(0,n.c.length),u(n.c[0],29)),e),n.c.length>1&&Kct(u(St(n,n.c.length-1),29),e),ur(t)}function Mst(e,t){var n,r,s;if(p4e(e,t))return!0;for(r=new C(t);r.a=s||t<0)throw J(new Do(qce+t+Eb+s));if(n>=s||n<0)throw J(new Do(Vce+n+Eb+s));return t!=n?r=(o=e.Ti(n),e.Hi(t,o),o):r=e.Oi(n),r}function Ost(e){var t,n,r;if(r=e,e)for(t=0,n=e.Ug();n;n=n.Ug()){if(++t>ioe)return Ost(n);if(r=n,n==e)throw J(new Wo("There is a cycle in the containment hierarchy of "+e))}return r}function Yp(e){var t,n,r;for(r=new ib(io,"[","]"),n=e.Kc();n.Ob();)t=n.Pb(),O0(r,je(t)===je(e)?"(this Collection)":t==null?Pu:Qo(t));return r.a?r.e.length==0?r.a.a:r.a.a+(""+r.e):r.c}function p4e(e,t){var n,r;if(r=!1,t.gc()<2)return!1;for(n=0;nr&&(zr(t-1,e.length),e.charCodeAt(t-1)<=32);)--t;return r>0||t1&&(e.j.b+=e.e)):(e.j.a+=n.a,e.j.b=b.Math.max(e.j.b,n.b),e.d.c.length>1&&(e.j.a+=e.e))}function Xp(){Xp=pe,d2t=ie(re(ao,1),Dc,61,0,[(ht(),An),$n,xr]),f2t=ie(re(ao,1),Dc,61,0,[$n,xr,Dn]),g2t=ie(re(ao,1),Dc,61,0,[xr,Dn,An]),p2t=ie(re(ao,1),Dc,61,0,[Dn,An,$n])}function Efn(e,t,n,r){var s,o,h,d,v,x,_;if(h=e.c.d,d=e.d.d,h.j!=d.j)for(_=e.b,s=h.j,v=null;s!=d.j;)v=t==0?vH(s):Fye(s),o=g3e(s,_.d[s.g],n),x=g3e(v,_.d[v.g],n),ci(r,Ni(o,x)),s=v}function Tfn(e,t,n,r){var s,o,h,d,v;return h=Hit(e.a,t,n),d=u(h.a,19).a,o=u(h.b,19).a,r&&(v=u(K(t,(et(),cl)),10),s=u(K(n,cl),10),v&&s&&(VQe(e.b,v,s),d+=e.b.i,o+=e.b.e)),d>o}function Pst(e){var t,n,r,s,o,h,d,v,x;for(this.a=lit(e),this.b=new st,n=e,r=0,s=n.length;rane(e.d).c?(e.i+=e.g.c,Vie(e.d)):ane(e.d).c>ane(e.g).c?(e.e+=e.d.c,Vie(e.g)):(e.i+=lKe(e.g),e.e+=lKe(e.d),Vie(e.g),Vie(e.d))}function Sfn(e,t,n){var r,s,o,h;for(o=t.q,h=t.r,new X2((Jf(),d2),t,o,1),new X2(d2,o,h,1),s=new C(n);s.ad&&(v=d/r),s>o&&(x=o/s),h=b.Math.min(v,x),e.a+=h*(t.a-e.a),e.b+=h*(t.b-e.b)}function Dfn(e,t,n,r,s){var o,h;for(h=!1,o=u(St(n.b,0),33);Ubn(e,t,o,r,s)&&(h=!0,lhn(n,o),n.b.c.length!=0);)o=u(St(n.b,0),33);return n.b.c.length==0&&JD(n.j,n),h&&$H(t.q),h}function Ifn(e,t){g4();var n,r,s,o;if(t.b<2)return!1;for(o=ii(t,0),n=u(ri(o),8),r=n;o.b!=o.d.c;){if(s=u(ri(o),8),Kse(e,r,s))return!0;r=s}return!!Kse(e,r,n)}function v4e(e,t,n,r){var s,o;return n==0?(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),vj(e.o,t,r)):(o=u(gn((s=u(_n(e,16),26),s||e.zh()),n),66),o.Nj().Rj(e,du(e),n-Jn(e.zh()),t,r))}function Lse(e,t){var n;t!=e.sb?(n=null,e.sb&&(n=u(e.sb,49).ih(e,1,US,n)),t&&(n=u(t,49).gh(e,1,US,n)),n=Dye(e,t,n),n&&n.Fi()):e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,4,t,t))}function Ofn(e,t){var n,r,s,o;if(t)s=B0(t,"x"),n=new u$e(e),O8(n.a,(Sn(s),s)),o=B0(t,"y"),r=new l$e(e),P8(r.a,(Sn(o),o));else throw J(new dd("All edge sections need an end point."))}function Nfn(e,t){var n,r,s,o;if(t)s=B0(t,"x"),n=new a$e(e),N8(n.a,(Sn(s),s)),o=B0(t,"y"),r=new o$e(e),B8(r.a,(Sn(o),o));else throw J(new dd("All edge sections need a start point."))}function Pfn(e,t){var n,r,s,o,h,d,v;for(r=knt(e),o=0,d=r.length;o>22-t,s=e.h<>22-t):t<44?(n=0,r=e.l<>44-t):(n=0,r=0,s=e.l<e)throw J(new Ln("k must be smaller than n"));return t==0||t==e?1:e==0?0:V3e(e)/(V3e(t)*V3e(e-t))}function w4e(e,t){var n,r,s,o;for(n=new H2e(e);n.g==null&&!n.c?ywe(n):n.g==null||n.i!=0&&u(n.g[n.i-1],47).Ob();)if(o=u(tz(n),56),we(o,160))for(r=u(o,160),s=0;s>4],t[n*2+1]=iU[o&15];return jh(t,0,t.length)}function Zfn(e){Uj();var t,n,r;switch(r=e.c.length,r){case 0:return k0t;case 1:return t=u(_at(new C(e)),42),xQt(t.cd(),t.dd());default:return n=u(j1(e,Me(Cb,Sz,42,e.c.length,0,1)),165),new Qee(n)}}function Jfn(e){var t,n,r,s,o,h;for(t=new L3,n=new L3,$p(t,e),$p(n,e);n.b!=n.c;)for(s=u(I6(n),37),h=new C(s.a);h.a0&&bI(e,n,t),s):Pdn(e,t,n)}function Gst(e,t,n){var r,s,o,h;if(t.b!=0){for(r=new as,h=ii(t,0);h.b!=h.d.c;)o=u(ri(h),86),no(r,eye(o)),s=o.e,s.a=u(K(o,(Tc(),Che)),19).a,s.b=u(K(o,F_e),19).a;Gst(e,r,Kc(n,r.b/e.a|0))}}function qst(e,t){var n,r,s,o,h;if(e.e<=t||otn(e,e.g,t))return e.g;for(o=e.r,r=e.g,h=e.r,s=(o-r)/2+r;r+11&&(e.e.b+=e.a)):(e.e.a+=n.a,e.e.b=b.Math.max(e.e.b,n.b),e.d.c.length>1&&(e.e.a+=e.a))}function i1n(e){var t,n,r,s;switch(s=e.i,t=s.b,r=s.j,n=s.g,s.a.g){case 0:n.a=(e.g.b.o.a-r.a)/2;break;case 1:n.a=t.d.n.a+t.d.a.a;break;case 2:n.a=t.d.n.a+t.d.a.a-r.a;break;case 3:n.b=t.d.n.b+t.d.a.b}}function Vst(e,t,n,r,s){if(rr&&(e.a=r),e.bs&&(e.b=s),e}function s1n(e){if(we(e,149))return Ngn(u(e,149));if(we(e,229))return Don(u(e,229));if(we(e,23))return Ffn(u(e,23));throw J(new Ln(a8e+Yp(new Al(ie(re(Yn,1),yt,1,5,[e])))))}function a1n(e,t,n,r,s){var o,h,d;for(o=!0,h=0;h>>s|n[h+r+1]<>>s,++h}return o}function x4e(e,t,n,r){var s,o,h;if(t.k==(zn(),ca)){for(o=new cr(fr(Xo(t).a.Kc(),new V));Vr(o);)if(s=u(Pr(o),17),h=s.c.i.k,h==ca&&e.c.a[s.c.i.c.p]==r&&e.c.a[t.c.p]==n)return!0}return!1}function o1n(e,t){var n,r,s,o;return t&=63,n=e.h&V0,t<22?(o=n>>>t,s=e.m>>t|n<<22-t,r=e.l>>t|e.m<<22-t):t<44?(o=0,s=n>>>t-22,r=e.m>>t-22|e.h<<44-t):(o=0,s=0,r=n>>>t-44),fu(r&ml,s&ml,o&V0)}function Ust(e,t,n,r){var s;this.b=r,this.e=e==(Gv(),xS),s=t[n],this.d=U2(El,[Qe,c0],[177,25],16,[s.length,s.length],2),this.a=U2(Lr,[Qe,Jr],[48,25],15,[s.length,s.length],2),this.c=new i4e(t,n)}function c1n(e){var t,n,r;for(e.k=new Twe((ht(),ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn])).length,e.j.c.length),r=new C(e.j);r.a=n)return f7(e,t,r.p),!0;return!1}function Kst(e){var t;return e.Db&64?Mse(e):(t=new Fl(Yxe),!e.a||Yr(Yr((t.a+=' "',t),e.a),'"'),Yr(bv(Yr(bv(Yr(bv(Yr(bv((t.a+=" (",t),e.i),","),e.j)," | "),e.g),","),e.f),")"),t.a)}function Yst(e,t,n){var r,s,o,h,d;for(d=pu(e.e.Tg(),t),s=u(e.g,119),r=0,h=0;hn?M4e(e,n,"start index"):t<0||t>n?M4e(t,n,"end index"):oC("end index (%s) must not be less than start index (%s)",ie(re(Yn,1),yt,1,5,[ct(t),ct(e)]))}function Qst(e,t){var n,r,s,o;for(r=0,s=e.length;r0&&Zst(e,o,n));t.p=0}function Vt(e){var t;this.c=new as,this.f=e.e,this.e=e.d,this.i=e.g,this.d=e.c,this.b=e.b,this.k=e.j,this.a=e.a,e.i?this.j=e.i:this.j=(t=u(Qf(Ug),9),new hh(t,u(wf(t,t.length),9),0)),this.g=e.f}function g1n(e){var t,n,r,s;for(t=Bp(Yr(new Fl("Predicates."),"and"),40),n=!0,s=new c6(e);s.b0?d[h-1]:Me(h0,Bg,10,0,0,1),s=d[h],x=h=0?e.Bh(s):P4e(e,r);else throw J(new Ln(i2+r.ne()+RC));else throw J(new Ln(M1t+t+D1t));else wh(e,n,r)}function E4e(e){var t,n;if(n=null,t=!1,we(e,204)&&(t=!0,n=u(e,204).a),t||we(e,258)&&(t=!0,n=""+u(e,258).a),t||we(e,483)&&(t=!0,n=""+u(e,483).a),!t)throw J(new Jee(s8e));return n}function nat(e,t){var n,r;if(e.f){for(;t.Ob();)if(n=u(t.Pb(),72),r=n.ak(),we(r,99)&&u(r,18).Bb&_c&&(!e.e||r.Gj()!=AE||r.aj()!=0)&&n.dd()!=null)return t.Ub(),!0;return!1}else return t.Ob()}function rat(e,t){var n,r;if(e.f){for(;t.Sb();)if(n=u(t.Ub(),72),r=n.ak(),we(r,99)&&u(r,18).Bb&_c&&(!e.e||r.Gj()!=AE||r.aj()!=0)&&n.dd()!=null)return t.Pb(),!0;return!1}else return t.Sb()}function T4e(e,t,n){var r,s,o,h,d,v;for(v=pu(e.e.Tg(),t),r=0,d=e.i,s=u(e.g,119),h=0;h1&&(t.c[t.c.length]=o))}function w1n(e){var t,n,r,s;for(n=new as,no(n,e.o),r=new mpe;n.b!=0;)t=u(n.b==0?null:(Qn(n.b!=0),bh(n,n.a.a)),508),s=Blt(e,t,!0),s&&it(r.a,t);for(;r.a.c.length!=0;)t=u(Lnt(r),508),Blt(e,t,!1)}function Ng(){Ng=pe,rSe=new x6(EC,0),za=new x6("BOOLEAN",1),Cc=new x6("INT",2),kE=new x6("STRING",3),qo=new x6("DOUBLE",4),vs=new x6("ENUM",5),Pk=new x6("ENUMSET",6),Y1=new x6("OBJECT",7)}function tC(e,t){var n,r,s,o,h;r=b.Math.min(e.c,t.c),o=b.Math.min(e.d,t.d),s=b.Math.max(e.c+e.b,t.c+t.b),h=b.Math.max(e.d+e.a,t.d+t.a),s=(s/2|0))for(this.e=r?r.c:null,this.d=s;n++0;)kwe(this);this.b=t,this.a=null}function k1n(e,t){var n,r;t.a?qgn(e,t):(n=u(hne(e.b,t.b),57),n&&n==e.a[t.b.f]&&n.a&&n.a!=t.b.a&&n.c.Fc(t.b),r=u(lne(e.b,t.b),57),r&&e.a[r.f]==t.b&&r.a&&r.a!=t.b.a&&t.b.c.Fc(r),Zte(e.b,t.b))}function sat(e,t){var n,r;if(n=u(_o(e.b,t),124),u(u(Ii(e.r,t),21),84).dc()){n.n.b=0,n.n.c=0;return}n.n.b=e.C.b,n.n.c=e.C.c,e.A.Hc((Bl(),Hb))&&Lct(e,t),r=Qcn(e,t),Xse(e,t)==(n4(),v2)&&(r+=2*e.w),n.a.a=r}function aat(e,t){var n,r;if(n=u(_o(e.b,t),124),u(u(Ii(e.r,t),21),84).dc()){n.n.d=0,n.n.a=0;return}n.n.d=e.C.d,n.n.a=e.C.a,e.A.Hc((Bl(),Hb))&&Mct(e,t),r=Zcn(e,t),Xse(e,t)==(n4(),v2)&&(r+=2*e.w),n.a.b=r}function x1n(e,t){var n,r,s,o;for(o=new st,r=new C(t);r.an.a&&(r.Hc((ty(),HO))?s=(t.a-n.a)/2:r.Hc(zO)&&(s=t.a-n.a)),t.b>n.b&&(r.Hc((ty(),qO))?o=(t.b-n.b)/2:r.Hc(GO)&&(o=t.b-n.b)),f4e(e,s,o)}function gat(e,t,n,r,s,o,h,d,v,x,_,L,P){we(e.Cb,88)&&iy(dl(u(e.Cb,88)),4),au(e,n),e.f=h,e7(e,d),n7(e,v),J8(e,x),t7(e,_),Mg(e,L),r7(e,P),Lg(e,!0),Cg(e,s),e.ok(o),cb(e,t),r!=null&&(e.i=null,X$(e,r))}function pat(e){var t,n;if(e.f){for(;e.n>0;){if(t=u(e.k.Xb(e.n-1),72),n=t.ak(),we(n,99)&&u(n,18).Bb&_c&&(!e.e||n.Gj()!=AE||n.aj()!=0)&&t.dd()!=null)return!0;--e.n}return!1}else return e.n>0}function M4e(e,t,n){if(e<0)return oC(Jlt,ie(re(Yn,1),yt,1,5,[n,ct(e)]));if(t<0)throw J(new Ln(eht+t));return oC("%s (%s) must not be greater than size (%s)",ie(re(Yn,1),yt,1,5,[n,ct(e),ct(t)]))}function D4e(e,t,n,r,s,o){var h,d,v,x;if(h=r-n,h<7){yon(t,n,r,o);return}if(v=n+s,d=r+s,x=v+(d-v>>1),D4e(t,e,v,x,-s,o),D4e(t,e,x,d,-s,o),o.ue(e[x-1],e[x])<=0){for(;n=0?e.sh(o,n):o5e(e,s,n);else throw J(new Ln(i2+s.ne()+RC));else throw J(new Ln(M1t+t+D1t));else yh(e,r,s,n)}function bat(e){var t,n,r,s;if(n=u(e,49).qh(),n)try{if(r=null,t=p7((Ap(),rf),Zct(Eon(n))),t&&(s=t.rh(),s&&(r=s.Wk(DVt(n.e)))),r&&r!=e)return bat(r)}catch(o){if(o=ts(o),!we(o,60))throw J(o)}return e}function gu(e,t,n){var r,s,o,h;if(h=t==null?0:e.b.se(t),s=(r=e.a.get(h),r??new Array),s.length==0)e.a.set(h,s);else if(o=Int(e,t,s),o)return o.ed(n);return cs(s,s.length,new OF(t,n)),++e.c,t$(e.b),null}function vat(e,t){var n,r;return d$(e.a),Xd(e.a,(J$(),mV),mV),Xd(e.a,yE,yE),r=new Xs,xi(r,yE,(yH(),Dhe)),je(Ft(t,(Jm(),Nhe)))!==je((RD(),yV))&&xi(r,yE,Lhe),xi(r,yE,Mhe),pVe(e.a,r),n=mz(e.a,t),n}function wat(e){if(!e)return JHe(),M0t;var t=e.valueOf?e.valueOf():e;if(t!==e){var n=yue[typeof t];return n?n(t):Eye(typeof t)}else return e instanceof Array||e instanceof b.Array?new a6(e):new $x(e)}function mat(e,t,n){var r,s,o;switch(o=e.o,r=u(_o(e.p,n),244),s=r.i,s.b=cI(r),s.a=oI(r),s.b=b.Math.max(s.b,o.a),s.b>o.a&&!t&&(s.b=o.a),s.c=-(s.b-o.a)/2,n.g){case 1:s.d=-s.a;break;case 3:s.d=o.b}uae(r),lae(r)}function yat(e,t,n){var r,s,o;switch(o=e.o,r=u(_o(e.p,n),244),s=r.i,s.b=cI(r),s.a=oI(r),s.a=b.Math.max(s.a,o.b),s.a>o.b&&!t&&(s.a=o.b),s.d=-(s.a-o.b)/2,n.g){case 4:s.c=-s.b;break;case 2:s.c=o.a}uae(r),lae(r)}function R1n(e,t){var n,r,s,o,h;if(!t.dc()){if(s=u(t.Xb(0),128),t.gc()==1){Wot(e,s,s,1,0,t);return}for(n=1;n0)try{s=Wl(t,$a,Ei)}catch(o){throw o=ts(o),we(o,127)?(r=o,J(new D$(r))):J(o)}return n=(!e.a&&(e.a=new $ee(e)),e.a),s=0?u(Te(n,s),56):null}function H1n(e,t){if(e<0)return oC(Jlt,ie(re(Yn,1),yt,1,5,["index",ct(e)]));if(t<0)throw J(new Ln(eht+t));return oC("%s (%s) must be less than size (%s)",ie(re(Yn,1),yt,1,5,["index",ct(e),ct(t)]))}function z1n(e){var t,n,r,s,o;if(e==null)return Pu;for(o=new ib(io,"[","]"),n=e,r=0,s=n.length;r0)for(h=e.c.d,d=e.d.d,s=bd(da(new Pt(d.a,d.b),h),1/(r+1)),o=new Pt(h.a,h.b),n=new C(e.a);n.a=0?e._g(n,!0,!0):tw(e,s,!0),153)),u(r,215).ol(t);else throw J(new Ln(i2+t.ne()+RC))}function B4e(e){var t,n;return e>-0x800000000000&&e<0x800000000000?e==0?0:(t=e<0,t&&(e=-e),n=_s(b.Math.floor(b.Math.log(e)/.6931471805599453)),(!t||e!=b.Math.pow(2,n))&&++n,n):Utt(Ou(e))}function tdn(e){var t,n,r,s,o,h,d;for(o=new C0,n=new C(e);n.a2&&d.e.b+d.j.b<=2&&(s=d,r=h),o.a.zc(s,o),s.q=r);return o}function Aat(e,t){var n,r,s;return r=new H0(e),Ho(r,t),Ye(r,(et(),jq),t),Ye(r,(pt(),bs),(wa(),tu)),Ye(r,Bd,(t0(),MV)),T0(r,(zn(),Ls)),n=new $c,rc(n,r),Vs(n,(ht(),Dn)),s=new $c,rc(s,r),Vs(s,$n),r}function Lat(e){switch(e.g){case 0:return new ete((Gv(),IO));case 1:return new AR;case 2:return new ZJ;default:throw J(new Ln("No implementation is available for the crossing minimizer "+(e.f!=null?e.f:""+e.g)))}}function Mat(e,t){var n,r,s,o,h;for(e.c[t.p]=!0,it(e.a,t),h=new C(t.j);h.a=o)h.$b();else for(s=h.Kc(),r=0;r0?Npe():h<0&&Nat(e,t,-h),!0):!1}function oI(e){var t,n,r,s,o,h,d;if(d=0,e.b==0){for(h=bit(e,!0),t=0,r=h,s=0,o=r.length;s0&&(d+=n,++t);t>1&&(d+=e.c*(t-1))}else d=oze(ytt(Kj(Vi(Rne(e.a),new Ta),new _a)));return d>0?d+e.n.d+e.n.a:0}function cI(e){var t,n,r,s,o,h,d;if(d=0,e.b==0)d=oze(ytt(Kj(Vi(Rne(e.a),new Ms),new Pa)));else{for(h=vit(e,!0),t=0,r=h,s=0,o=r.length;s0&&(d+=n,++t);t>1&&(d+=e.c*(t-1))}return d>0?d+e.n.b+e.n.c:0}function udn(e,t){var n,r,s,o;for(o=u(_o(e.b,t),124),n=o.a,s=u(u(Ii(e.r,t),21),84).Kc();s.Ob();)r=u(s.Pb(),111),r.c&&(n.a=b.Math.max(n.a,kve(r.c)));if(n.a>0)switch(t.g){case 2:o.n.c=e.s;break;case 4:o.n.b=e.s}}function ldn(e,t){var n,r,s;return n=u(K(t,(a1(),Q7)),19).a-u(K(e,Q7),19).a,n==0?(r=da(fc(u(K(e,(zp(),fO)),8)),u(K(e,eS),8)),s=da(fc(u(K(t,fO),8)),u(K(t,eS),8)),Fs(r.a*r.b,s.a*s.b)):n}function hdn(e,t){var n,r,s;return n=u(K(t,(nw(),wV)),19).a-u(K(e,wV),19).a,n==0?(r=da(fc(u(K(e,(Tc(),PO)),8)),u(K(e,SS),8)),s=da(fc(u(K(t,PO),8)),u(K(t,SS),8)),Fs(r.a*r.b,s.a*s.b)):n}function Pat(e){var t,n;return n=new Tp,n.a+="e_",t=ysn(e),t!=null&&(n.a+=""+t),e.c&&e.d&&(Yr((n.a+=" ",n),zH(e.c)),Yr(Ec((n.a+="[",n),e.c.i),"]"),Yr((n.a+=Ioe,n),zH(e.d)),Yr(Ec((n.a+="[",n),e.d.i),"]")),n.a}function Bat(e){switch(e.g){case 0:return new UL;case 1:return new XJ;case 2:return new YJ;case 3:return new LR;default:throw J(new Ln("No implementation is available for the layout phase "+(e.f!=null?e.f:""+e.g)))}}function F4e(e,t,n,r,s){var o;switch(o=0,s.g){case 1:o=b.Math.max(0,t.b+e.b-(n.b+r));break;case 3:o=b.Math.max(0,-e.b-r);break;case 2:o=b.Math.max(0,-e.a-r);break;case 4:o=b.Math.max(0,t.a+e.a-(n.a+r))}return o}function fdn(e,t,n){var r,s,o,h,d;if(n)for(s=n.a.length,r=new W2(s),d=(r.b-r.a)*r.c<0?(Lp(),C2):new Op(r);d.Ob();)h=u(d.Pb(),19),o=E8(n,h.a),Jxe in o.a||zce in o.a?E2n(e,o,t):Lyn(e,o,t),XWt(u(er(e.b,i7(o)),79))}function j4e(e){var t,n;switch(e.b){case-1:return!0;case 0:return n=e.t,n>1||n==-1?(e.b=-1,!0):(t=$h(e),t&&(ho(),t.Cj()==Idt)?(e.b=-1,!0):(e.b=1,!1));default:case 1:return!1}}function ddn(e,t){var n,r,s,o,h;for(r=(!t.s&&(t.s=new at(ju,t,21,17)),t.s),o=null,s=0,h=r.i;s=0&&r=0?e._g(n,!0,!0):tw(e,s,!0),153)),u(r,215).ll(t);throw J(new Ln(i2+t.ne()+Oce))}function wdn(){t2e();var e;return v4t?u(p7((Ap(),rf),Uh),1939):(ui(Cb,new Uf),Jwn(),e=u(we(Uc((Ap(),rf),Uh),547)?Uc(rf,Uh):new yYe,547),v4t=!0,Yyn(e),e3n(e),Si((e2e(),BAe),e,new YZ),Oo(rf,Uh,e),e)}function mdn(e,t){var n,r,s,o;e.j=-1,Ll(e.e)?(n=e.i,o=e.i!=0,cD(e,t),r=new N0(e.e,3,e.c,null,t,n,o),s=t.Qk(e.e,e.c,null),s=gst(e,t,s),s?(s.Ei(r),s.Fi()):_i(e.e,r)):(cD(e,t),s=t.Qk(e.e,e.c,null),s&&s.Fi())}function ZH(e,t){var n,r,s;if(s=0,r=t[0],r>=e.length)return-1;for(n=(zr(r,e.length),e.charCodeAt(r));n>=48&&n<=57&&(s=s*10+(n-48),++r,!(r>=e.length));)n=(zr(r,e.length),e.charCodeAt(r));return r>t[0]?t[0]=r:s=-1,s}function ydn(e){var t,n,r,s,o;return s=u(e.a,19).a,o=u(e.b,19).a,n=s,r=o,t=b.Math.max(b.Math.abs(s),b.Math.abs(o)),s<=0&&s==o?(n=0,r=o-1):s==-t&&o!=t?(n=o,r=s,o>=0&&++n):(n=-o,r=s),new xa(ct(n),ct(r))}function kdn(e,t,n,r){var s,o,h,d,v,x;for(s=0;s=0&&x>=0&&v=e.i)throw J(new Do(qce+t+Eb+e.i));if(n>=e.i)throw J(new Do(Vce+n+Eb+e.i));return r=e.g[n],t!=n&&(t>16),t=r>>16&16,n=16-t,e=e>>t,r=e-256,t=r>>16&8,n+=t,e<<=t,r=e-dy,t=r>>16&4,n+=t,e<<=t,r=e-Ed,t=r>>16&2,n+=t,e<<=t,r=e>>14,t=r&~(r>>1),n+2-t)}function Edn(e){P6();var t,n,r,s;for(QG=new st,jue=new Mr,Fue=new st,t=(!e.a&&(e.a=new at(hs,e,10,11)),e.a),tyn(t),s=new rr(t);s.e!=s.i.gc();)r=u(pr(s),33),Yo(QG,r,0)==-1&&(n=new st,it(Fue,n),Krt(r,n));return Fue}function Tdn(e,t,n){var r,s,o,h;e.a=n.b.d,we(t,352)?(s=d4(u(t,79),!1,!1),o=iI(s),r=new Ba(e),Da(o,r),mI(o,s),t.We((bi(),Z4))!=null&&Da(u(t.We(Z4),74),r)):(h=u(t,470),h.Hg(h.Dg()+e.a.a),h.Ig(h.Eg()+e.a.b))}function Fat(e,t){var n,r,s,o,h,d,v,x;for(x=Ue(ft(K(t,(pt(),bS)))),v=e[0].n.a+e[0].o.a+e[0].d.c+x,d=1;d=0?n:(d=w_(da(new Pt(h.c+h.b/2,h.d+h.a/2),new Pt(o.c+o.b/2,o.d+o.a/2))),-(aut(o,h)-1)*d)}function Cdn(e,t,n){var r;ms(new vn(null,(!n.a&&(n.a=new at(os,n,6,6)),new mn(n.a,16))),new yqe(e,t)),ms(new vn(null,(!n.n&&(n.n=new at(Jo,n,1,7)),new mn(n.n,16))),new kqe(e,t)),r=u(Ft(n,(bi(),Z4)),74),r&&qme(r,e,t)}function tw(e,t,n){var r,s,o;if(o=v4((Yu(),Oa),e.Tg(),t),o)return ho(),u(o,66).Oj()||(o=F6(Po(Oa,o))),s=(r=e.Yg(o),u(r>=0?e._g(r,!0,!0):tw(e,o,!0),153)),u(s,215).hl(t,n);throw J(new Ln(i2+t.ne()+Oce))}function H4e(e,t,n,r){var s,o,h,d,v;if(s=e.d[t],s){if(o=s.g,v=s.i,r!=null){for(d=0;d=n&&(r=t,x=(v.c+v.a)/2,h=x-n,v.c<=x-n&&(s=new vne(v.c,h),Om(e,r++,s)),d=x+n,d<=v.a&&(o=new vne(d,v.a),jm(r,e.c.length),RT(e.c,r,o)))}function z4e(e){var t;if(!e.c&&e.g==null)e.d=e.si(e.f),Br(e,e.d),t=e.d;else{if(e.g==null)return!0;if(e.i==0)return!1;t=u(e.g[e.i-1],47)}return t==e.b&&null.km>=null.jm()?(tz(e),z4e(e)):t.Ob()}function Mdn(e,t,n){var r,s,o,h,d;if(d=n,!d&&(d=mve(new Ux,0)),kr(d,tft,1),alt(e.c,t),h=qwn(e.a,t),h.gc()==1)zut(u(h.Xb(0),37),d);else for(o=1/h.gc(),s=h.Kc();s.Ob();)r=u(s.Pb(),37),zut(r,Kc(d,o));FVt(e.a,h,t),qpn(t),ur(d)}function Hat(e){if(this.a=e,e.c.i.k==(zn(),Ls))this.c=e.c,this.d=u(K(e.c.i,(et(),vc)),61);else if(e.d.i.k==Ls)this.c=e.d,this.d=u(K(e.d.i,(et(),vc)),61);else throw J(new Ln("Edge "+e+" is not an external edge."))}function zat(e,t){var n,r,s;s=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,3,s,e.b)),t?t!=e&&(au(e,t.zb),Qre(e,t.d),n=(r=t.c,r??t.zb),Jre(e,n==null||an(n,t.zb)?null:n)):(au(e,null),Qre(e,0),Jre(e,null))}function Gat(e){var t,n;if(e.f){for(;e.n=h)throw J(new Im(t,h));return s=n[t],h==1?r=null:(r=Me(kfe,Xce,415,h-1,0,1),Hc(n,0,r,0,t),o=h-t-1,o>0&&Hc(n,t+1,r,t,o)),s7(e,r),fat(e,t,s),s}function nk(){nk=pe,Gk=u(Te(He((Gpe(),Sc).qb),6),34),zk=u(Te(He(Sc.qb),3),34),Sfe=u(Te(He(Sc.qb),4),34),Afe=u(Te(He(Sc.qb),5),18),UH(Gk),UH(zk),UH(Sfe),UH(Afe),k4t=new Al(ie(re(ju,1),L4,170,0,[Gk,zk]))}function Wat(e,t){var n;this.d=new yT,this.b=t,this.e=new Io(t.qf()),n=e.u.Hc((ol(),JO)),e.u.Hc(Z0)?e.D?this.a=n&&!t.If():this.a=!0:e.u.Hc(m2)?n?this.a=!(t.zf().Kc().Ob()||t.Bf().Kc().Ob()):this.a=!1:this.a=!1}function Kat(e,t){var n,r,s,o;for(n=e.o.a,o=u(u(Ii(e.r,t),21),84).Kc();o.Ob();)s=u(o.Pb(),111),s.e.a=(r=s.b,r.Xe((bi(),kl))?r.Hf()==(ht(),Dn)?-r.rf().a-Ue(ft(r.We(kl))):n+Ue(ft(r.We(kl))):r.Hf()==(ht(),Dn)?-r.rf().a:n)}function Yat(e,t){var n,r,s,o;n=u(K(e,(pt(),Zl)),103),o=u(Ft(t,gE),61),s=u(K(e,bs),98),s!=(wa(),X1)&&s!=w2?o==(ht(),uc)&&(o=$5e(t,n),o==uc&&(o=Y6(n))):(r=Hut(t),r>0?o=Y6(n):o=zD(Y6(n))),So(t,gE,o)}function Ndn(e,t){var n,r,s,o,h;for(h=e.j,t.a!=t.b&&aa(h,new q5),s=h.c.length/2|0,r=0;r0&&bI(e,n,t),o):r.a!=null?(bI(e,t,n),-1):s.a!=null?(bI(e,n,t),1):0}function Xat(e,t){var n,r,s,o;e.ej()?(n=e.Vi(),o=e.fj(),++e.j,e.Hi(n,e.oi(n,t)),r=e.Zi(3,null,t,n,o),e.bj()?(s=e.cj(t,null),s?(s.Ei(r),s.Fi()):e.$i(r)):e.$i(r)):(lYe(e,t),e.bj()&&(s=e.cj(t,null),s&&s.Fi()))}function JH(e,t){var n,r,s,o,h;for(h=pu(e.e.Tg(),t),s=new X5,n=u(e.g,119),o=e.i;--o>=0;)r=n[o],h.rl(r.ak())&&Br(s,r);!jlt(e,s)&&Ll(e.e)&&Vx(e,t.$j()?jp(e,6,t,(hn(),bo),null,-1,!1):jp(e,t.Kj()?2:1,t,null,null,-1,!1))}function d7(){d7=pe;var e,t;for(yk=Me(D4,Qe,91,32,0,1),QC=Me(D4,Qe,91,32,0,1),e=1,t=0;t<=18;t++)yk[t]=WD(e),QC[t]=WD(A0(e,t)),e=ja(e,5);for(;th)||t.q&&(r=t.C,h=r.c.c.a-r.o.a/2,s=r.n.a-n,s>h)))}function Rdn(e,t){var n;kr(t,"Partition preprocessing",1),n=u(zl(Vi(ic(Vi(new vn(null,new mn(e.a,16)),new jY),new tB),new H5),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),ms(n.Oc(),new nB),ur(t)}function Qat(e){fre();var t,n,r,s,o,h,d;for(n=new Z2,s=new C(e.e.b);s.a1?e.e*=Ue(e.a):e.f/=Ue(e.a),wan(e),Ecn(e),s2n(e),Ye(e.b,(K_(),XG),e.g)}function tot(e,t,n){var r,s,o,h,d,v;for(r=0,v=n,t||(r=n*(e.c.length-1),v*=-1),o=new C(e);o.a=0?(t||(t=new ST,r>0&&To(t,e.substr(0,r))),t.a+="\\",b8(t,n&Ss)):t&&b8(t,n&Ss);return t?t.a:e}function Udn(e){var t;if(!e.a)throw J(new Wo("IDataType class expected for layout option "+e.f));if(t=enn(e.a),t==null)throw J(new Wo("Couldn't create new instance of property '"+e.f+"'. "+Jft+(S0(cN),cN.k)+qxe));return u(t,414)}function Hse(e){var t,n,r,s,o;return o=e.eh(),o&&o.kh()&&(s=Up(e,o),s!=o)?(n=e.Vg(),r=(t=e.Vg(),t>=0?e.Qg(null):e.eh().ih(e,-1-t,null,null)),e.Rg(u(s,49),n),r&&r.Fi(),e.Lg()&&e.Mg()&&n>-1&&_i(e,new oa(e,9,n,o,s)),s):o}function aot(e){var t,n,r,s,o,h,d,v;for(h=0,o=e.f.e,r=0;r>5,s>=e.d)return e.e<0;if(n=e.a[s],t=1<<(t&31),e.e<0){if(r=_tt(e),s>16)),15).Xc(o),d0&&(!(Dp(e.a.c)&&t.n.d)&&!(s8(e.a.c)&&t.n.b)&&(t.g.d+=b.Math.max(0,r/2-.5)),!(Dp(e.a.c)&&t.n.a)&&!(s8(e.a.c)&&t.n.c)&&(t.g.a-=r-1))}function uot(e){var t,n,r,s,o;if(s=new st,o=nut(e,s),t=u(K(e,(et(),cl)),10),t)for(r=new C(t.j);r.a>t,o=e.m>>t|n<<22-t,s=e.l>>t|e.m<<22-t):t<44?(h=r?V0:0,o=n>>t-22,s=e.m>>t-22|n<<44-t):(h=r?V0:0,o=r?ml:0,s=n>>t-44),fu(s&ml,o&ml,h&V0)}function zse(e){var t,n,r,s,o,h;for(this.c=new st,this.d=e,r=gs,s=gs,t=Ds,n=Ds,h=ii(e,0);h.b!=h.d.c;)o=u(ri(h),8),r=b.Math.min(r,o.a),s=b.Math.min(s,o.b),t=b.Math.max(t,o.a),n=b.Math.max(n,o.b);this.a=new fh(r,s,t-r,n-s)}function fot(e,t){var n,r,s,o,h,d;for(o=new C(e.b);o.a0&&we(t,42)&&(e.a.qj(),x=u(t,42),v=x.cd(),o=v==null?0:Xi(v),h=Nbe(e.a,o),n=e.a.d[h],n)){for(r=u(n.g,367),_=n.i,d=0;d<_;++d)if(s=r[d],s.Sh()==o&&s.Fb(x))return dot(e,x),!0}return!1}function Jdn(e){var t,n,r,s;for(s=u(Ii(e.a,(c4(),_q)),15).Kc();s.Ob();)r=u(s.Pb(),101),n=(t=D6(r.k),t.Hc((ht(),An))?t.Hc($n)?t.Hc(xr)?t.Hc(Dn)?null:d2t:p2t:g2t:f2t),p8(e,r,n[0],(qv(),ww),0),p8(e,r,n[1],u2,1),p8(e,r,n[2],mw,1)}function e0n(e,t){var n,r;n=A2n(t),Cpn(e,t,n),wst(e.a,u(K(Ya(t.b),(et(),Lk)),230)),J2n(e),Shn(e,t),r=Me(Lr,Jr,25,t.b.j.c.length,15,1),Tae(e,t,(ht(),An),r,n),Tae(e,t,$n,r,n),Tae(e,t,xr,r,n),Tae(e,t,Dn,r,n),e.a=null,e.c=null,e.b=null}function Q4e(){Q4e=pe,yCe=(mH(),Rhe),eyt=new dn(Dxe,yCe),Zmt=new dn(Ixe,(Mn(),!0)),ct(-1),Ymt=new dn(Oxe,ct(-1)),ct(-1),Xmt=new dn(Nxe,ct(-1)),Jmt=new dn(Pxe,!1),tyt=new dn(Bxe,!0),Qmt=new dn(xce,!1),nyt=new dn(Rxe,-1)}function Z4e(e,t,n){switch(t){case 7:!e.e&&(e.e=new wn(ra,e,7,4)),_r(e.e),!e.e&&(e.e=new wn(ra,e,7,4)),fs(e.e,u(n,14));return;case 8:!e.d&&(e.d=new wn(ra,e,8,5)),_r(e.d),!e.d&&(e.d=new wn(ra,e,8,5)),fs(e.d,u(n,14));return}Y3e(e,t,n)}function J4e(e,t){var n,r,s,o,h;if(je(t)===je(e))return!0;if(!we(t,15)||(h=u(t,15),e.gc()!=h.gc()))return!1;for(o=h.Kc(),r=e.Kc();r.Ob();)if(n=r.Pb(),s=o.Pb(),!(je(n)===je(s)||n!=null&&Ci(n,s)))return!1;return!0}function t0n(e,t){var n,r,s,o;for(o=u(zl(ic(ic(new vn(null,new mn(t.b,16)),new kL),new KP),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),o.Jc(new xL),n=0,s=o.Kc();s.Ob();)r=u(s.Pb(),11),r.p==-1&&t5e(e,r,n++)}function got(e){switch(e.g){case 0:return new sT;case 1:return new WJ;case 2:return new UJ;case 3:return new Bqe;case 4:return new EKe;default:throw J(new Ln("No implementation is available for the node placer "+(e.f!=null?e.f:""+e.g)))}}function pot(e){switch(e.g){case 0:return new Ive;case 1:return new KJ;case 2:return new $J;case 3:return new HJ;case 4:return new Fqe;default:throw J(new Ln("No implementation is available for the cycle breaker "+(e.f!=null?e.f:""+e.g)))}}function e5e(){e5e=pe,Pmt=new dn(_xe,ct(0)),Bmt=new dn(Cxe,0),nCe=(RD(),yV),Omt=new dn(mce,nCe),ct(0),Imt=new dn(yce,ct(1)),iCe=(rH(),Bhe),Rmt=new dn(Sxe,iCe),sCe=(L$(),Ihe),Fmt=new dn(Axe,sCe),rCe=(jH(),Phe),Nmt=new dn(Lxe,rCe)}function n0n(e,t,n){var r;r=null,t&&(r=t.d),eC(e,new r8(t.n.a-r.b+n.a,t.n.b-r.d+n.b)),eC(e,new r8(t.n.a-r.b+n.a,t.n.b+t.o.b+r.a+n.b)),eC(e,new r8(t.n.a+t.o.a+r.c+n.a,t.n.b-r.d+n.b)),eC(e,new r8(t.n.a+t.o.a+r.c+n.a,t.n.b+t.o.b+r.a+n.b))}function t5e(e,t,n){var r,s,o;for(t.p=n,o=Pp(B1(ie(re(q1,1),yt,20,0,[new sa(t),new Ar(t)])));Vr(o);)r=u(Pr(o),11),r.p==-1&&t5e(e,r,n);if(t.i.k==(zn(),ca))for(s=new C(t.i.j);s.a=2)for(n=s.Kc(),t=ft(n.Pb());n.Ob();)o=t,t=ft(n.Pb()),r=b.Math.min(r,(Sn(t),t-(Sn(o),o)));return r}function r0n(e,t){var n,r,s,o,h;r=new as,ks(r,t,r.c.b,r.c);do for(n=(Qn(r.b!=0),u(bh(r,r.a.a),86)),e.b[n.g]=1,o=ii(n.d,0);o.b!=o.d.c;)s=u(ri(o),188),h=s.c,e.b[h.g]==1?ci(e.a,s):e.b[h.g]==2?e.b[h.g]=1:ks(r,h,r.c.b,r.c);while(r.b!=0)}function i0n(e,t){var n,r,s;if(je(t)===je(Nr(e)))return!0;if(!we(t,15)||(r=u(t,15),s=e.gc(),s!=r.gc()))return!1;if(we(r,54)){for(n=0;n0&&(s=n),h=new C(e.f.e);h.a0?(t-=1,n-=1):r>=0&&s<0?(t+=1,n+=1):r>0&&s>=0?(t-=1,n+=1):(t+=1,n-=1),new xa(ct(t),ct(n))}function x0n(e,t){return e.ct.c?1:e.bt.b?1:e.a!=t.a?Xi(e.a)-Xi(t.a):e.d==(S_(),TS)&&t.d==ES?-1:e.d==ES&&t.d==TS?1:0}function mot(e,t){var n,r,s,o,h;return o=t.a,o.c.i==t.b?h=o.d:h=o.c,o.c.i==t.b?r=o.c:r=o.d,s=Xon(e.a,h,r),s>0&&s0):s<0&&-s0):!1}function E0n(e,t,n,r){var s,o,h,d,v,x,_,L;for(s=(t-e.d)/e.c.c.length,o=0,e.a+=n,e.d=t,L=new C(e.c);L.a>24;return h}function _0n(e){if(e.pe()){var t=e.c;t.qe()?e.o="["+t.n:t.pe()?e.o="["+t.ne():e.o="[L"+t.ne()+";",e.b=t.me()+"[]",e.k=t.oe()+"[]";return}var n=e.j,r=e.d;r=r.split("/"),e.o=Uie(".",[n,Uie("$",r)]),e.b=Uie(".",[n,Uie(".",r)]),e.k=r[r.length-1]}function C0n(e,t){var n,r,s,o,h;for(h=null,o=new C(e.e.a);o.a=0;t-=2)for(n=0;n<=t;n+=2)(e.b[n]>e.b[n+2]||e.b[n]===e.b[n+2]&&e.b[n+1]>e.b[n+3])&&(r=e.b[n+2],e.b[n+2]=e.b[n],e.b[n]=r,r=e.b[n+3],e.b[n+3]=e.b[n+1],e.b[n+1]=r);e.c=!0}}function yot(e,t){var n,r,s,o,h,d,v,x;for(h=t==1?Kue:Wue,o=h.a.ec().Kc();o.Ob();)for(s=u(o.Pb(),103),v=u(Ii(e.f.c,s),21).Kc();v.Ob();)switch(d=u(v.Pb(),46),r=u(d.b,81),x=u(d.a,189),n=x.c,s.g){case 2:case 1:r.g.d+=n;break;case 4:case 3:r.g.c+=n}}function L0n(e,t){var n,r,s,o,h,d,v,x,_;for(x=-1,_=0,h=e,d=0,v=h.length;d0&&++_;++x}return _}function _f(e){var t,n;return n=new Fl(Cp(e.gm)),n.a+="@",Yr(n,(t=Xi(e)>>>0,t.toString(16))),e.kh()?(n.a+=" (eProxyURI: ",Ec(n,e.qh()),e.$g()&&(n.a+=" eClass: ",Ec(n,e.$g())),n.a+=")"):e.$g()&&(n.a+=" (eClass: ",Ec(n,e.$g()),n.a+=")"),n.a}function sC(e){var t,n,r,s;if(e.e)throw J(new Wo((S0(Sue),doe+Sue.k+goe)));for(e.d==(wo(),f0)&&kz(e,Xh),n=new C(e.a.a);n.a>24}return n}function I0n(e,t,n){var r,s,o;if(s=u(_o(e.i,t),306),!s)if(s=new yet(e.d,t,n),M6(e.i,t,s),h3e(t))KWt(e.a,t.c,t.b,s);else switch(o=m1n(t),r=u(_o(e.p,o),244),o.g){case 1:case 3:s.j=!0,Zee(r,t.b,s);break;case 4:case 2:s.k=!0,Zee(r,t.c,s)}return s}function O0n(e,t,n,r){var s,o,h,d,v,x;if(d=new X5,v=pu(e.e.Tg(),t),s=u(e.g,119),ho(),u(t,66).Oj())for(h=0;h=0)return s;for(o=1,d=new C(t.j);d.a0&&t.ue((xn(s-1,e.c.length),u(e.c[s-1],10)),o)>0;)gh(e,s,(xn(s-1,e.c.length),u(e.c[s-1],10))),--s;xn(s,e.c.length),e.c[s]=o}n.a=new Mr,n.b=new Mr}function N0n(e,t,n){var r,s,o,h,d,v,x,_;for(_=(r=u(t.e&&t.e(),9),new hh(r,u(wf(r,r.length),9),0)),v=cy(n,"[\\[\\]\\s,]+"),o=v,h=0,d=o.length;h0&&(!(Dp(e.a.c)&&t.n.d)&&!(s8(e.a.c)&&t.n.b)&&(t.g.d-=b.Math.max(0,r/2-.5)),!(Dp(e.a.c)&&t.n.a)&&!(s8(e.a.c)&&t.n.c)&&(t.g.a+=b.Math.max(0,r-1)))}function _ot(e,t,n){var r,s;if((e.c-e.b&e.a.length-1)==2)t==(ht(),An)||t==$n?($$(u(F_(e),15),(Ul(),d0)),$$(u(F_(e),15),b2)):($$(u(F_(e),15),(Ul(),b2)),$$(u(F_(e),15),d0));else for(s=new y_(e);s.a!=s.b;)r=u(gH(s),15),$$(r,n)}function B0n(e,t){var n,r,s,o,h,d,v;for(s=l8(new tpe(e)),d=new Ea(s,s.c.length),o=l8(new tpe(t)),v=new Ea(o,o.c.length),h=null;d.b>0&&v.b>0&&(n=(Qn(d.b>0),u(d.a.Xb(d.c=--d.b),33)),r=(Qn(v.b>0),u(v.a.Xb(v.c=--v.b),33)),n==r);)h=n;return h}function vl(e,t){var n,r,s,o,h,d;return o=e.a*uoe+e.b*1502,d=e.b*uoe+11,n=b.Math.floor(d*NI),o+=n,d-=n*x6e,o%=x6e,e.a=o,e.b=d,t<=24?b.Math.floor(e.a*c7e[t]):(s=e.a*(1<=2147483648&&(r-=soe),r)}function Cot(e,t,n){var r,s,o,h;KXe(e,t)>KXe(e,n)?(r=ac(n,(ht(),$n)),e.d=r.dc()?0:xne(u(r.Xb(0),11)),h=ac(t,Dn),e.b=h.dc()?0:xne(u(h.Xb(0),11))):(s=ac(n,(ht(),Dn)),e.d=s.dc()?0:xne(u(s.Xb(0),11)),o=ac(t,$n),e.b=o.dc()?0:xne(u(o.Xb(0),11)))}function Sot(e){var t,n,r,s,o,h,d;if(e&&(t=e.Hh(Uh),t&&(h=Hr(r1((!t.b&&(t.b=new Ml((on(),oo),wc,t)),t.b),"conversionDelegates")),h!=null))){for(d=new st,r=cy(h,"\\w+"),s=0,o=r.length;se.c));h++)s.a>=e.s&&(o<0&&(o=h),d=h);return v=(e.s+e.c)/2,o>=0&&(r=m2n(e,t,o,d),v=AUt((xn(r,t.c.length),u(t.c[r],329))),Ldn(t,r,n)),v}function Vse(){Vse=pe,ryt=new fo((bi(),Bk),1.3),xCe=xSe,LCe=new kv(15),lyt=new fo(Fb,LCe),fyt=new fo(jb,15),iyt=IV,oyt=Rb,cyt=e5,uyt=p2,ayt=J4,CCe=KO,hyt=Hy,ACe=(Q4e(),eyt),_Ce=Zmt,SCe=Jmt,MCe=tyt,ECe=Qmt,TCe=OV,syt=TSe,RO=Xmt,kCe=Ymt,DCe=nyt}function Rr(e,t,n){var r,s,o,h,d,v,x;for(h=(o=new KB,o),Fme(h,(Sn(t),t)),x=(!h.b&&(h.b=new Ml((on(),oo),wc,h)),h.b),v=1;v0&&fwn(this,s)}function i5e(e,t,n,r,s,o){var h,d,v;if(!s[t.b]){for(s[t.b]=!0,h=r,!h&&(h=new k$),it(h.e,t),v=o[t.b].Kc();v.Ob();)d=u(v.Pb(),282),!(d.d==n||d.c==n)&&(d.c!=t&&i5e(e,d.c,t,h,s,o),d.d!=t&&i5e(e,d.d,t,h,s,o),it(h.c,d),Rs(h.d,d.b));return h}return null}function j0n(e){var t,n,r,s,o,h,d;for(t=0,s=new C(e.e);s.a=2}function $0n(e,t){var n,r,s,o;for(kr(t,"Self-Loop pre-processing",1),r=new C(e.a);r.a1||(t=Ui(If,ie(re(xo,1),tt,93,0,[Q0,Of])),SD(a$(t,e))>1)||(r=Ui(Pf,ie(re(xo,1),tt,93,0,[g0,Zh])),SD(a$(r,e))>1))}function G0n(e,t){var n,r,s;return n=t.Hh(e.a),n&&(s=Hr(r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),"affiliation")),s!=null)?(r=cj(s,Nu(35)),r==-1?Iie(e,f_(e,Gl(t.Hj())),s):r==0?Iie(e,null,s.substr(1)):Iie(e,s.substr(0,r),s.substr(r+1))):null}function q0n(e){var t,n,r;try{return e==null?Pu:Qo(e)}catch(s){if(s=ts(s),we(s,102))return t=s,r=Cp(pl(e))+"@"+(n=(Ud(),v3e(e)>>>0),n.toString(16)),Icn(Dsn(),(n8(),"Exception during lenientFormat for "+r),t),"<"+r+" threw "+Cp(t.gm)+">";throw J(s)}}function Mot(e){switch(e.g){case 0:return new GJ;case 1:return new CR;case 2:return new MGe;case 3:return new DL;case 4:return new QUe;case 5:return new qJ;default:throw J(new Ln("No implementation is available for the layerer "+(e.f!=null?e.f:""+e.g)))}}function s5e(e,t,n){var r,s,o;for(o=new C(e.t);o.a0&&(r.b.n-=r.c,r.b.n<=0&&r.b.u>0&&ci(t,r.b));for(s=new C(e.i);s.a0&&(r.a.u-=r.c,r.a.u<=0&&r.a.n>0&&ci(n,r.a))}function tz(e){var t,n,r,s,o;if(e.g==null&&(e.d=e.si(e.f),Br(e,e.d),e.c))return o=e.f,o;if(t=u(e.g[e.i-1],47),s=t.Pb(),e.e=t,n=e.si(s),n.Ob())e.d=n,Br(e,n);else for(e.d=null;!t.Ob()&&(cs(e.g,--e.i,null),e.i!=0);)r=u(e.g[e.i-1],47),t=r;return s}function V0n(e,t){var n,r,s,o,h,d;if(r=t,s=r.ak(),G0(e.e,s)){if(s.hi()&&v$(e,s,r.dd()))return!1}else for(d=pu(e.e.Tg(),s),n=u(e.g,119),o=0;o1||n>1)return 2;return t+n==1?2:0}function Iot(e,t,n){var r,s,o,h,d;for(kr(n,"ELK Force",1),It(Mt(Ft(t,(a1(),Q7e))))||i$((r=new sr((Tm(),new ym(t))),r)),d=cnt(t),bln(d),Ysn(e,u(K(d,X7e),424)),h=kut(e.a,d),o=h.Kc();o.Ob();)s=u(o.Pb(),231),D2n(e.b,s,Kc(n,1/h.gc()));d=Nlt(h),Dlt(d),ur(n)}function Z0n(e,t){var n,r,s,o,h;if(kr(t,"Breaking Point Processor",1),wmn(e),It(Mt(K(e,(pt(),i_e))))){for(s=new C(e.b);s.a=0?e._g(r,!0,!0):tw(e,o,!0),153)),u(s,215).ml(t,n)}else throw J(new Ln(i2+t.ne()+RC))}function ngn(e,t){var n,r,s,o,h;for(n=new st,s=ic(new vn(null,new mn(e,16)),new $Q),o=ic(new vn(null,new mn(e,16)),new HQ),h=Lrn(qnn(Kj(Pgn(ie(re(h3n,1),yt,833,0,[s,o])),new zQ))),r=1;r=2*t&&it(n,new vne(h[r-1]+t,h[r]-t));return n}function rgn(e,t,n){kr(n,"Eades radial",1),n.n&&t&&yf(n,kf(t),(Pl(),nh)),e.d=u(Ft(t,(a_(),MS)),33),e.c=Ue(ft(Ft(t,(Jm(),xV)))),e.e=tse(u(Ft(t,BO),293)),e.a=Bon(u(Ft(t,cCe),426)),e.b=ihn(u(Ft(t,oCe),340)),Fln(e),n.n&&t&&yf(n,kf(t),(Pl(),nh))}function ign(e,t,n){var r,s,o,h,d,v,x,_;if(n)for(o=n.a.length,r=new W2(o),d=(r.b-r.a)*r.c<0?(Lp(),C2):new Op(r);d.Ob();)h=u(d.Pb(),19),s=E8(n,h.a),s&&(v=nnn(e,(x=(pv(),_=new xpe,_),t&&c5e(x,t),x),s),I_(v,D0(s,Id)),KH(s,v),I4e(s,v),pie(e,s,v))}function rz(e){var t,n,r,s,o,h;if(!e.j){if(h=new H9,t=XS,o=t.a.zc(e,t),o==null){for(r=new rr(jo(e));r.e!=r.i.gc();)n=u(pr(r),26),s=rz(n),fs(h,s),Br(h,n);t.a.Bc(e)!=null}Km(h),e.j=new B3((u(Te(He((Rp(),En).o),11),18),h.i),h.g),dl(e).b&=-33}return e.j}function sgn(e){var t,n,r,s;if(e==null)return null;if(r=Xc(e,!0),s=tO.length,an(r.substr(r.length-s,s),tO)){if(n=r.length,n==4){if(t=(zr(0,r.length),r.charCodeAt(0)),t==43)return nLe;if(t==45)return F4t}else if(n==3)return nLe}return new hpe(r)}function agn(e){var t,n,r;return n=e.l,n&n-1||(r=e.m,r&r-1)||(t=e.h,t&t-1)||t==0&&r==0&&n==0?-1:t==0&&r==0&&n!=0?Dme(n):t==0&&r!=0&&n==0?Dme(r)+22:t!=0&&r==0&&n==0?Dme(t)+44:-1}function ogn(e,t){var n,r,s,o,h;for(kr(t,"Edge joining",1),n=It(Mt(K(e,(pt(),Jle)))),s=new C(e.b);s.a1)for(s=new C(e.a);s.a0),o.a.Xb(o.c=--o.b),Dm(o,s),Qn(o.b3&&e0(e,0,t-3))}function hgn(e){var t,n,r,s;return je(K(e,(pt(),Iy)))===je((F0(),Wg))?!e.e&&je(K(e,_O))!==je((q8(),wO)):(r=u(K(e,Hle),292),s=It(Mt(K(e,zle)))||je(K(e,dS))===je((V6(),vO)),t=u(K(e,kTe),19).a,n=e.a.c.length,!s&&r!=(q8(),wO)&&(t==0||t>n))}function fgn(e){var t,n;for(n=0;n0);n++);if(n>0&&n0);t++);return t>0&&n>16!=6&&t){if(o7(e,t))throw J(new Ln(FC+Zat(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?N3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=Q6(t,e,6,r)),r=Ibe(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,6,t,t))}function c5e(e,t){var n,r;if(t!=e.Cb||e.Db>>16!=9&&t){if(o7(e,t))throw J(new Ln(FC+Nct(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?B3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=Q6(t,e,9,r)),r=Obe(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,9,t,t))}function Wse(e,t){var n,r;if(t!=e.Cb||e.Db>>16!=3&&t){if(o7(e,t))throw J(new Ln(FC+Out(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?F3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=Q6(t,e,12,r)),r=Dbe(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,3,t,t))}function b7(e){var t,n,r,s,o;if(r=$h(e),o=e.j,o==null&&r)return e.$j()?null:r.zj();if(we(r,148)){if(n=r.Aj(),n&&(s=n.Nh(),s!=e.i)){if(t=u(r,148),t.Ej())try{e.g=s.Kh(t,o)}catch(h){if(h=ts(h),we(h,78))e.g=null;else throw J(h)}e.i=s}return e.g}return null}function Pot(e){var t;return t=new st,it(t,new y6(new Pt(e.c,e.d),new Pt(e.c+e.b,e.d))),it(t,new y6(new Pt(e.c,e.d),new Pt(e.c,e.d+e.a))),it(t,new y6(new Pt(e.c+e.b,e.d+e.a),new Pt(e.c+e.b,e.d))),it(t,new y6(new Pt(e.c+e.b,e.d+e.a),new Pt(e.c,e.d+e.a))),t}function Bot(e,t,n,r){var s,o,h;if(h=U3e(t,n),r.c[r.c.length]=t,e.j[h.p]==-1||e.j[h.p]==2||e.a[t.p])return r;for(e.j[h.p]=-1,o=new cr(fr(j0(h).a.Kc(),new V));Vr(o);)if(s=u(Pr(o),17),!(!(!to(s)&&!(!to(s)&&s.c.i.c==s.d.i.c))||s==t))return Bot(e,s,h,r);return r}function dgn(e,t,n){var r,s,o;for(o=t.a.ec().Kc();o.Ob();)s=u(o.Pb(),79),r=u(er(e.b,s),266),!r&&(us(n0(s))==us(Kp(s))?Apn(e,s,n):n0(s)==us(Kp(s))?er(e.c,s)==null&&er(e.b,Kp(s))!=null&&plt(e,s,n,!1):er(e.d,s)==null&&er(e.b,n0(s))!=null&&plt(e,s,n,!0))}function ggn(e,t){var n,r,s,o,h,d,v;for(s=e.Kc();s.Ob();)for(r=u(s.Pb(),10),d=new $c,rc(d,r),Vs(d,(ht(),$n)),Ye(d,(et(),$q),(Mn(),!0)),h=t.Kc();h.Ob();)o=u(h.Pb(),10),v=new $c,rc(v,o),Vs(v,Dn),Ye(v,$q,!0),n=new Iv,Ye(n,$q,!0),Va(n,d),ba(n,v)}function pgn(e,t,n,r){var s,o,h,d;s=Drt(e,t,n),o=Drt(e,n,t),h=u(er(e.c,t),112),d=u(er(e.c,n),112),sr.b.g&&(o.c[o.c.length]=r);return o}function v7(){v7=pe,X4=new _M("CANDIDATE_POSITION_LAST_PLACED_RIGHT",0),Nk=new _M("CANDIDATE_POSITION_LAST_PLACED_BELOW",1),IS=new _M("CANDIDATE_POSITION_WHOLE_DRAWING_RIGHT",2),DS=new _M("CANDIDATE_POSITION_WHOLE_DRAWING_BELOW",3),OS=new _M("WHOLE_DRAWING",4)}function bgn(e,t){if(we(t,239))return Uan(e,u(t,33));if(we(t,186))return son(e,u(t,118));if(we(t,354))return wJt(e,u(t,137));if(we(t,352))return zbn(e,u(t,79));if(t)return null;throw J(new Ln(a8e+Yp(new Al(ie(re(Yn,1),yt,1,5,[t])))))}function vgn(e){var t,n,r,s,o,h,d;for(o=new as,s=new C(e.d.a);s.a1)for(t=Ev((n=new z2,++e.b,n),e.d),d=ii(o,0);d.b!=d.d.c;)h=u(ri(d),121),Cf(bf(pf(vf(gf(new Nh,1),0),t),h))}function u5e(e,t){var n,r;if(t!=e.Cb||e.Db>>16!=11&&t){if(o7(e,t))throw J(new Ln(FC+S5e(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?j3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=Q6(t,e,10,r)),r=Hbe(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,11,t,t))}function wgn(e){var t,n,r,s;for(r=new ob(new dg(e.b).a);r.b;)n=$v(r),s=u(n.cd(),11),t=u(n.dd(),10),Ye(t,(et(),Mi),s),Ye(s,cl,t),Ye(s,kO,(Mn(),!0)),Vs(s,u(K(t,vc),61)),K(t,vc),Ye(s.i,(pt(),bs),(wa(),CE)),u(K(Ya(s.i),eu),21).Fc((mo(),uE))}function mgn(e,t,n){var r,s,o,h,d,v;if(o=0,h=0,e.c)for(v=new C(e.d.i.j);v.ao.a?-1:s.av){for(_=e.d,e.d=Me(SAe,p8e,63,2*v+4,0,1),o=0;o=9223372036854776e3?(D8(),B8e):(s=!1,e<0&&(s=!0,e=-e),r=0,e>=vb&&(r=_s(e/vb),e-=r*vb),n=0,e>=ck&&(n=_s(e/ck),e-=n*ck),t=_s(e),o=fu(t,n,r),s&&gie(o),o)}function Lgn(e,t){var n,r,s,o;for(n=!t||!e.u.Hc((ol(),Z0)),o=0,s=new C(e.e.Cf());s.a=-t&&r==t?new xa(ct(n-1),ct(r)):new xa(ct(n),ct(r-1))}function Hot(){return po(),ie(re(m3n,1),tt,77,0,[MEe,SEe,tS,ele,YEe,uq,mq,eE,WEe,FEe,VEe,J7,KEe,PEe,XEe,kEe,dq,tle,oq,bq,ZEe,pq,xEe,UEe,JEe,vq,QEe,cq,IEe,GEe,zEe,yq,_Ee,aq,hq,TEe,Z7,$Ee,BEe,qEe,nS,AEe,CEe,HEe,REe,fq,wq,EEe,gq,jEe,lq,OEe,DEe,pO,sq,NEe,LEe])}function Ogn(e,t,n){e.d=0,e.b=0,t.k==(zn(),Jc)&&n.k==Jc&&u(K(t,(et(),Mi)),10)==u(K(n,Mi),10)&&(Hre(t).j==(ht(),An)?Cot(e,t,n):Cot(e,n,t)),t.k==Jc&&n.k==ca?Hre(t).j==(ht(),An)?e.d=1:e.b=1:n.k==Jc&&t.k==ca&&(Hre(n).j==(ht(),An)?e.b=1:e.d=1),yun(e,t,n)}function Ngn(e){var t,n,r,s,o,h,d,v,x,_,L;return L=c4e(e),t=e.a,v=t!=null,v&&f8(L,"category",e.a),s=hM(new vm(e.d)),h=!s,h&&(x=new hg,t1(L,"knownOptions",x),n=new S$e(x),Da(new vm(e.d),n)),o=hM(e.g),d=!o,d&&(_=new hg,t1(L,"supportedFeatures",_),r=new A$e(_),Da(e.g,r)),L}function Pgn(e){var t,n,r,s,o,h,d,v,x;for(r=!1,t=336,n=0,o=new HUe(e.length),d=e,v=0,x=d.length;v>16!=7&&t){if(o7(e,t))throw J(new Ln(FC+Kst(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?P3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=u(t,49).gh(e,1,iN,r)),r=Ove(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,7,t,t))}function zot(e,t){var n,r;if(t!=e.Cb||e.Db>>16!=3&&t){if(o7(e,t))throw J(new Ln(FC+rrt(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?R3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=u(t,49).gh(e,0,aN,r)),r=Nve(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,3,t,t))}function Yse(e,t){d7();var n,r,s,o,h,d,v,x,_;return t.d>e.d&&(d=e,e=t,t=d),t.d<63?_pn(e,t):(h=(e.d&-2)<<4,x=Wwe(e,h),_=Wwe(t,h),r=hae(e,$6(x,h)),s=hae(t,$6(_,h)),v=Yse(x,_),n=Yse(r,s),o=Yse(hae(x,r),hae(s,_)),o=mae(mae(o,v),n),o=$6(o,h),v=$6(v,h<<1),mae(mae(v,o),n))}function Rgn(e,t,n){var r,s,o,h,d;for(h=H_(e,n),d=Me(h0,Bg,10,t.length,0,1),r=0,o=h.Kc();o.Ob();)s=u(o.Pb(),11),It(Mt(K(s,(et(),kO))))&&(d[r++]=u(K(s,cl),10));if(r=0;o+=n?1:-1)h=h|t.c.Sf(v,o,n,r&&!It(Mt(K(t.j,(et(),kw))))&&!It(Mt(K(t.j,(et(),z4))))),h=h|t.q._f(v,o,n),h=h|Sct(e,v[o],n,r);return Gs(e.c,t),h}function sz(e,t,n){var r,s,o,h,d,v,x,_,L,P;for(_=TQe(e.j),L=0,P=_.length;L1&&(e.a=!0),JQt(u(n.b,65),Ni(fc(u(t.b,65).c),bd(da(fc(u(n.b,65).a),u(t.b,65).a),s))),FXe(e,t),Got(e,n)}function qot(e){var t,n,r,s,o,h,d;for(o=new C(e.a.a);o.a0&&o>0?h.p=t++:r>0?h.p=n++:o>0?h.p=s++:h.p=n++}hn(),aa(e.j,new _L)}function zgn(e){var t,n;n=null,t=u(St(e.g,0),17);do{if(n=t.d.i,ta(n,(et(),Yh)))return u(K(n,Yh),11).i;if(n.k!=(zn(),Hs)&&Vr(new cr(fr(js(n).a.Kc(),new V))))t=u(Pr(new cr(fr(js(n).a.Kc(),new V))),17);else if(n.k!=Hs)return null}while(n&&n.k!=(zn(),Hs));return n}function Ggn(e,t){var n,r,s,o,h,d,v,x,_;for(d=t.j,h=t.g,v=u(St(d,d.c.length-1),113),_=(xn(0,d.c.length),u(d.c[0],113)),x=gse(e,h,v,_),o=1;ox&&(v=n,_=s,x=r);t.a=_,t.c=v}function qgn(e,t){var n,r;if(r=KM(e.b,t.b),!r)throw J(new Wo("Invalid hitboxes for scanline constraint calculation."));(Qtt(t.b,u(qKt(e.b,t.b),57))||Qtt(t.b,u(GKt(e.b,t.b),57)))&&(Ud(),t.b+""),e.a[t.b.f]=u(hne(e.b,t.b),57),n=u(lne(e.b,t.b),57),n&&(e.a[n.f]=t.b)}function Cf(e){if(!e.a.d||!e.a.e)throw J(new Wo((S0(sgt),sgt.k+" must have a source and target "+(S0(R7e),R7e.k)+" specified.")));if(e.a.d==e.a.e)throw J(new Wo("Network simplex does not support self-loops: "+e.a+" "+e.a.d+" "+e.a.e));return lj(e.a.d.g,e.a),lj(e.a.e.b,e.a),e.a}function Vgn(e,t,n){var r,s,o,h,d,v,x;for(x=new Sp(new Cje(e)),h=ie(re(Upt,1),ift,11,0,[t,n]),d=0,v=h.length;dv-e.b&&dv-e.a&&d0&&++z;++P}return z}function tpn(e,t){var n,r,s,o,h;for(h=u(K(t,(nw(),q_e)),425),o=ii(t.b,0);o.b!=o.d.c;)if(s=u(ri(o),86),e.b[s.g]==0){switch(h.g){case 0:wit(e,s);break;case 1:r0n(e,s)}e.b[s.g]=2}for(r=ii(e.a,0);r.b!=r.d.c;)n=u(ri(r),188),Xm(n.b.d,n,!0),Xm(n.c.b,n,!0);Ye(t,(Tc(),R_e),e.a)}function pu(e,t){ho();var n,r,s,o;return t?t==(Fi(),B4t)||(t==T4t||t==zb||t==E4t)&&e!=eLe?new s6e(e,t):(r=u(t,677),n=r.pk(),n||(m8(Po((Yu(),Oa),t)),n=r.pk()),o=(!n.i&&(n.i=new Mr),n.i),s=u(hc($o(o.f,e)),1942),!s&&Si(o,e,s=new s6e(e,t)),s):y4t}function npn(e,t){var n,r,s,o,h,d,v,x,_;for(v=u(K(e,(et(),Mi)),11),x=sc(ie(re(na,1),Qe,8,0,[v.i.n,v.n,v.a])).a,_=e.i.n.b,n=kd(e.e),s=n,o=0,h=s.length;o0?o.a?(d=o.b.rf().a,n>d&&(s=(n-d)/2,o.d.b=s,o.d.c=s)):o.d.c=e.s+n:g_(e.u)&&(r=u4e(o.b),r.c<0&&(o.d.b=-r.c),r.c+r.b>o.b.rf().a&&(o.d.c=r.c+r.b-o.b.rf().a))}function apn(e,t){var n,r,s,o;for(kr(t,"Semi-Interactive Crossing Minimization Processor",1),n=!1,s=new C(e.b);s.a=0){if(t==n)return new xa(ct(-t-1),ct(-t-1));if(t==-n)return new xa(ct(-t),ct(n+1))}return b.Math.abs(t)>b.Math.abs(n)?t<0?new xa(ct(-t),ct(n)):new xa(ct(-t),ct(n+1)):new xa(ct(t+1),ct(n))}function upn(e){var t,n;n=u(K(e,(pt(),vu)),163),t=u(K(e,(et(),Lb)),303),n==(mh(),l2)?(Ye(e,vu,TO),Ye(e,Lb,(P0(),$4))):n==Ly?(Ye(e,vu,TO),Ye(e,Lb,(P0(),Tk))):t==(P0(),$4)?(Ye(e,vu,l2),Ye(e,Lb,mO)):t==Tk&&(Ye(e,vu,Ly),Ye(e,Lb,mO))}function az(){az=pe,OO=new SQ,Vwt=xi(new Xs,(ro(),bu),(po(),oq)),Kwt=il(xi(new Xs,bu,pq),Go,gq),Ywt=Qv(Qv(AF(il(xi(new Xs,Pd,mq),Go,wq),Zc),vq),yq),Uwt=il(xi(xi(xi(new Xs,c2,uq),Zc,hq),Zc,Z7),Go,lq),Wwt=il(xi(xi(new Xs,Zc,Z7),Zc,aq),Go,sq)}function aC(){aC=pe,Zwt=xi(il(new Xs,(ro(),Go),(po(),OEe)),bu,oq),nmt=Qv(Qv(AF(il(xi(new Xs,Pd,mq),Go,wq),Zc),vq),yq),Jwt=il(xi(xi(xi(new Xs,c2,uq),Zc,hq),Zc,Z7),Go,lq),tmt=xi(xi(new Xs,bu,pq),Go,gq),emt=il(xi(xi(new Xs,Zc,Z7),Zc,aq),Go,sq)}function lpn(e,t,n,r,s){var o,h;(!to(t)&&t.c.i.c==t.d.i.c||!stt(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])),n))&&!to(t)&&(t.c==s?c8(t.a,0,new Io(n)):ci(t.a,new Io(n)),r&&!_0(e.a,n)&&(h=u(K(t,(pt(),Fo)),74),h||(h=new Gu,Ye(t,Fo,h)),o=new Io(n),ks(h,o,h.c.b,h.c),Gs(e.a,o)))}function hpn(e){var t,n;for(n=new cr(fr(Xo(e).a.Kc(),new V));Vr(n);)if(t=u(Pr(n),17),t.c.i.k!=(zn(),Rl))throw J(new M3(Poe+QD(e)+"' has its layer constraint set to FIRST, but has at least one incoming edge that does not come from a FIRST_SEPARATE node. That must not happen."))}function fpn(e,t,n){var r,s,o,h,d,v,x;if(s=urt(e.Db&254),s==0)e.Eb=n;else{if(s==1)d=Me(Yn,yt,1,2,5,1),o=dse(e,t),o==0?(d[0]=n,d[1]=e.Eb):(d[0]=e.Eb,d[1]=n);else for(d=Me(Yn,yt,1,s+1,5,1),h=tb(e.Eb),r=2,v=0,x=0;r<=128;r<<=1)r==t?d[x++]=n:e.Db&r&&(d[x++]=h[v++]);e.Eb=d}e.Db|=t}function Uot(e,t,n){var r,s,o,h;for(this.b=new st,s=0,r=0,h=new C(e);h.a0&&(o=u(St(this.b,0),167),s+=o.o,r+=o.p),s*=2,r*=2,t>1?s=_s(b.Math.ceil(s*t)):r=_s(b.Math.ceil(r/t)),this.a=new n3e(s,r)}function Wot(e,t,n,r,s,o){var h,d,v,x,_,L,P,z,q,W,X,le;for(_=r,t.j&&t.o?(z=u(er(e.f,t.A),57),W=z.d.c+z.d.b,--_):W=t.a.c+t.a.b,L=s,n.q&&n.o?(z=u(er(e.f,n.C),57),x=z.d.c,++L):x=n.a.c,X=x-W,v=b.Math.max(2,L-_),d=X/v,q=W+d,P=_;P=0;h+=s?1:-1){for(d=t[h],v=r==(ht(),$n)?s?ac(d,r):nb(ac(d,r)):s?nb(ac(d,r)):ac(d,r),o&&(e.c[d.p]=v.gc()),L=v.Kc();L.Ob();)_=u(L.Pb(),11),e.d[_.p]=x++;Rs(n,v)}}function Kot(e,t,n){var r,s,o,h,d,v,x,_;for(o=Ue(ft(e.b.Kc().Pb())),x=Ue(ft(ksn(t.b))),r=bd(fc(e.a),x-n),s=bd(fc(t.a),n-o),_=Ni(r,s),bd(_,1/(x-o)),this.a=_,this.b=new st,d=!0,h=e.b.Kc(),h.Pb();h.Ob();)v=Ue(ft(h.Pb())),d&&v-n>pce&&(this.b.Fc(n),d=!1),this.b.Fc(v);d&&this.b.Fc(n)}function dpn(e){var t,n,r,s;if(T2n(e,e.n),e.d.c.length>0){for(_T(e.c);K4e(e,u(Y(new C(e.e.a)),121))>5,t&=31,r>=e.d)return e.e<0?(Qp(),Eue):(Qp(),K7);if(o=e.d-r,s=Me(Lr,Jr,25,o+1,15,1),a1n(s,o,e.a,r,t),e.e<0){for(n=0;n0&&e.a[n]<<32-t){for(n=0;n=0?!1:(n=v4((Yu(),Oa),s,t),n?(r=n.Zj(),(r>1||r==-1)&&Dv(Po(Oa,n))!=3):!0)):!1}function vpn(e,t,n,r){var s,o,h,d,v;return d=zo(u(Te((!t.b&&(t.b=new wn(mr,t,4,7)),t.b),0),82)),v=zo(u(Te((!t.c&&(t.c=new wn(mr,t,5,8)),t.c),0),82)),us(d)==us(v)||Vm(v,d)?null:(h=nD(t),h==n?r:(o=u(er(e.a,h),10),o&&(s=o.e,s)?s:null))}function wpn(e,t){var n;switch(n=u(K(e,(pt(),Wq)),276),kr(t,"Label side selection ("+n+")",1),n.g){case 0:fot(e,(Ul(),d0));break;case 1:fot(e,(Ul(),b2));break;case 2:Sut(e,(Ul(),d0));break;case 3:Sut(e,(Ul(),b2));break;case 4:cct(e,(Ul(),d0));break;case 5:cct(e,(Ul(),b2))}ur(t)}function b5e(e,t,n){var r,s,o,h,d,v;if(r=rUt(n,e.length),h=e[r],h[0].k==(zn(),Ls))for(o=lze(n,h.length),v=t.j,s=0;s0&&(n[0]+=e.d,h-=n[0]),n[2]>0&&(n[2]+=e.d,h-=n[2]),o=b.Math.max(0,h),n[1]=b.Math.max(n[1],h),Ywe(e,lu,s.c+r.b+n[0]-(n[1]-h)/2,n),t==lu&&(e.c.b=o,e.c.c=s.c+r.b+(o-h)/2)}function sct(){this.c=Me(pa,Ao,25,(ht(),ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn])).length,15,1),this.b=Me(pa,Ao,25,ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn]).length,15,1),this.a=Me(pa,Ao,25,ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn]).length,15,1),s2e(this.c,gs),s2e(this.b,Ds),s2e(this.a,Ds)}function Yc(e,t,n){var r,s,o,h;if(t<=n?(s=t,o=n):(s=n,o=t),r=0,e.b==null)e.b=Me(Lr,Jr,25,2,15,1),e.b[0]=s,e.b[1]=o,e.c=!0;else{if(r=e.b.length,e.b[r-1]+1==s){e.b[r-1]=o;return}h=Me(Lr,Jr,25,r+2,15,1),Hc(e.b,0,h,0,r),e.b=h,e.b[r-1]>=s&&(e.c=!1,e.a=!1),e.b[r++]=s,e.b[r]=o,e.c||l4(e)}}function Cpn(e,t,n){var r,s,o,h,d,v,x;for(x=t.d,e.a=new su(x.c.length),e.c=new Mr,d=new C(x);d.a=0?e._g(x,!1,!0):tw(e,n,!1),58));e:for(o=L.Kc();o.Ob();){for(s=u(o.Pb(),56),_=0;_1;)ay(s,s.i-1);return r}function Dpn(e,t){var n,r,s,o,h,d,v;for(kr(t,"Comment post-processing",1),o=new C(e.b);o.ae.d[h.p]&&(n+=Gwe(e.b,o),$p(e.a,ct(o)));for(;!TT(e.a);)yme(e.b,u(I6(e.a),19).a)}return n}function uct(e,t,n){var r,s,o,h;for(o=(!t.a&&(t.a=new at(hs,t,10,11)),t.a).i,s=new rr((!t.a&&(t.a=new at(hs,t,10,11)),t.a));s.e!=s.i.gc();)r=u(pr(s),33),(!r.a&&(r.a=new at(hs,r,10,11)),r.a).i==0||(o+=uct(e,r,!1));if(n)for(h=us(t);h;)o+=(!h.a&&(h.a=new at(hs,h,10,11)),h.a).i,h=us(h);return o}function ay(e,t){var n,r,s,o;return e.ej()?(r=null,s=e.fj(),e.ij()&&(r=e.kj(e.pi(t),null)),n=e.Zi(4,o=J6(e,t),null,t,s),e.bj()&&o!=null&&(r=e.dj(o,r)),r?(r.Ei(n),r.Fi()):e.$i(n),o):(o=J6(e,t),e.bj()&&o!=null&&(r=e.dj(o,null),r&&r.Fi()),o)}function Opn(e){var t,n,r,s,o,h,d,v,x,_;for(x=e.a,t=new Ys,v=0,r=new C(e.d);r.ad.d&&(_=d.d+d.a+x));n.c.d=_,t.a.zc(n,t),v=b.Math.max(v,n.c.d+n.c.a)}return v}function mo(){mo=pe,Oq=new _m("COMMENTS",0),Th=new _m("EXTERNAL_PORTS",1),oS=new _m("HYPEREDGES",2),Nq=new _m("HYPERNODES",3),uE=new _m("NON_FREE_PORTS",4),j4=new _m("NORTH_SOUTH_PORTS",5),cS=new _m(Eft,6),oE=new _m("CENTER_LABELS",7),cE=new _m("END_LABELS",8),Pq=new _m("PARTITIONS",9)}function oy(e){var t,n,r,s,o;for(s=new st,t=new l_((!e.a&&(e.a=new at(hs,e,10,11)),e.a)),r=new cr(fr(z0(e).a.Kc(),new V));Vr(r);)n=u(Pr(r),79),we(Te((!n.b&&(n.b=new wn(mr,n,4,7)),n.b),0),186)||(o=zo(u(Te((!n.c&&(n.c=new wn(mr,n,5,8)),n.c),0),82)),t.a._b(o)||(s.c[s.c.length]=o));return s}function Npn(e){var t,n,r,s,o,h;for(o=new Ys,t=new l_((!e.a&&(e.a=new at(hs,e,10,11)),e.a)),s=new cr(fr(z0(e).a.Kc(),new V));Vr(s);)r=u(Pr(s),79),we(Te((!r.b&&(r.b=new wn(mr,r,4,7)),r.b),0),186)||(h=zo(u(Te((!r.c&&(r.c=new wn(mr,r,5,8)),r.c),0),82)),t.a._b(h)||(n=o.a.zc(h,o),n==null));return o}function Ppn(e,t,n,r,s){return r<0?(r=u4(e,s,ie(re(mt,1),Qe,2,6,[Rae,Fae,jae,$ae,ak,Hae,zae,Gae,qae,Vae,Uae,Wae]),t),r<0&&(r=u4(e,s,ie(re(mt,1),Qe,2,6,["Jan","Feb","Mar","Apr",ak,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),t)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function Bpn(e,t,n,r,s){return r<0?(r=u4(e,s,ie(re(mt,1),Qe,2,6,[Rae,Fae,jae,$ae,ak,Hae,zae,Gae,qae,Vae,Uae,Wae]),t),r<0&&(r=u4(e,s,ie(re(mt,1),Qe,2,6,["Jan","Feb","Mar","Apr",ak,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),t)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function Rpn(e,t,n,r,s,o){var h,d,v,x;if(d=32,r<0){if(t[0]>=e.length||(d=Ma(e,t[0]),d!=43&&d!=45)||(++t[0],r=ZH(e,t),r<0))return!1;d==45&&(r=-r)}return d==32&&t[0]-n==2&&s.b==2&&(v=new kF,x=v.q.getFullYear()-e2+e2-80,h=x%100,o.a=r==h,r+=(x/100|0)*100+(r=x&&(v=r);v&&(_=b.Math.max(_,v.a.o.a)),_>P&&(L=x,P=_)}return L}function $pn(e,t,n){var r,s,o;if(e.e=n,e.d=0,e.b=0,e.f=1,e.i=t,(e.e&16)==16&&(e.i=C2n(e.i)),e.j=e.i.length,mi(e),o=Xv(e),e.d!=e.j)throw J(new $r(Ur((jr(),V1t))));if(e.g){for(r=0;rUft?aa(v,e.b):r<=Uft&&r>Wft?aa(v,e.d):r<=Wft&&r>Kft?aa(v,e.c):r<=Kft&&aa(v,e.a),o=dct(e,v,o);return s}function Qp(){Qp=pe;var e;for(jG=new Tg(1,1),Tue=new Tg(1,10),K7=new Tg(0,0),Eue=new Tg(-1,1),n7e=ie(re(D4,1),Qe,91,0,[K7,jG,new Tg(1,2),new Tg(1,3),new Tg(1,4),new Tg(1,5),new Tg(1,6),new Tg(1,7),new Tg(1,8),new Tg(1,9),Tue]),$G=Me(D4,Qe,91,32,0,1),e=0;e<$G.length;e++)$G[e]=WD(A0(1,e))}function zpn(e,t,n,r,s,o){var h,d,v,x;for(d=!LT(Vi(e.Oc(),new Ke(new NY))).sd((G2(),X7)),h=e,o==(wo(),X0)&&(h=we(h,152)?H6(u(h,152)):we(h,131)?u(h,131).a:we(h,54)?new lv(h):new Em(h)),x=h.Kc();x.Ob();)v=u(x.Pb(),70),v.n.a=t.a,d?v.n.b=t.b+(r.b-v.o.b)/2:s?v.n.b=t.b:v.n.b=t.b+r.b-v.o.b,t.a+=v.o.a+n}function gct(e,t,n,r){var s,o,h,d,v,x;for(s=(r.c+r.a)/2,Rh(t.j),ci(t.j,s),Rh(n.e),ci(n.e,s),x=new vze,d=new C(e.f);d.a1,d&&(r=new Pt(s,n.b),ci(t.a,r)),D_(t.a,ie(re(na,1),Qe,8,0,[P,L]))}function wct(e){wv(e,new gb(gv(hv(dv(fv(new lg,fG),"ELK Randomizer"),'Distributes the nodes randomly on the plane, leading to very obfuscating layouts. Can be useful to demonstrate the power of "real" layout algorithms.'),new $Z))),dt(e,fG,uw,fAe),dt(e,fG,py,15),dt(e,fG,Fz,ct(0)),dt(e,fG,fk,N7)}function m5e(){m5e=pe;var e,t,n,r,s,o;for(eA=Me(el,A4,25,255,15,1),iU=Me(Sh,Td,25,16,15,1),t=0;t<255;t++)eA[t]=-1;for(n=57;n>=48;n--)eA[n]=n-48<<24>>24;for(r=70;r>=65;r--)eA[r]=r-65+10<<24>>24;for(s=102;s>=97;s--)eA[s]=s-97+10<<24>>24;for(o=0;o<10;o++)iU[o]=48+o&Ss;for(e=10;e<=15;e++)iU[e]=65+e-10&Ss}function cz(e,t,n){var r,s,o,h,d,v,x,_;return d=t.i-e.g/2,v=n.i-e.g/2,x=t.j-e.g/2,_=n.j-e.g/2,o=t.g+e.g/2,h=n.g+e.g/2,r=t.f+e.g/2,s=n.f+e.g/2,d>19)return"-"+mct(U8(e));for(n=e,r="";!(n.l==0&&n.m==0&&n.h==0);){if(s=Mre(Lz),n=Q5e(n,s,!0),t=""+Lze(s2),!(n.l==0&&n.m==0&&n.h==0))for(o=9-t.length;o>0;o--)t="0"+t;r=t+r}return r}function Upn(){if(!Object.create||!Object.getOwnPropertyNames)return!1;var e="__proto__",t=Object.create(null);if(t[e]!==void 0)return!1;var n=Object.getOwnPropertyNames(t);return!(n.length!=0||(t[e]=42,t[e]!==42)||Object.getOwnPropertyNames(t).length==0)}function Wpn(e){var t,n,r,s,o,h,d;for(t=!1,n=0,s=new C(e.d.b);s.a=e.a||!a4e(t,n))return-1;if(T8(u(r.Kb(t),20)))return 1;for(s=0,h=u(r.Kb(t),20).Kc();h.Ob();)if(o=u(h.Pb(),17),v=o.c.i==t?o.d.i:o.c.i,d=k5e(e,v,n,r),d==-1||(s=b.Math.max(s,d),s>e.c-1))return-1;return s+1}function yct(e,t){var n,r,s,o,h,d;if(je(t)===je(e))return!0;if(!we(t,15)||(r=u(t,15),d=e.gc(),r.gc()!=d))return!1;if(h=r.Kc(),e.ni()){for(n=0;n0){if(e.qj(),t!=null){for(o=0;o>24;case 97:case 98:case 99:case 100:case 101:case 102:return e-97+10<<24>>24;case 65:case 66:case 67:case 68:case 69:case 70:return e-65+10<<24>>24;default:throw J(new gd("Invalid hexadecimal"))}}function Qpn(e,t,n){var r,s,o,h;for(kr(n,"Processor order nodes",2),e.a=Ue(ft(K(t,(nw(),V_e)))),s=new as,h=ii(t.b,0);h.b!=h.d.c;)o=u(ri(h),86),It(Mt(K(o,(Tc(),$y))))&&ks(s,o,s.c.b,s.c);r=(Qn(s.b!=0),u(s.a.a.c,86)),$ut(e,r),!n.b&&tie(n,1),C5e(e,r,0-Ue(ft(K(r,(Tc(),bV))))/2,0),!n.b&&tie(n,1),ur(n)}function uz(){uz=pe,P7e=new O3("SPIRAL",0),D7e=new O3("LINE_BY_LINE",1),I7e=new O3("MANHATTAN",2),M7e=new O3("JITTER",3),Mue=new O3("QUADRANTS_LINE_BY_LINE",4),N7e=new O3("QUADRANTS_MANHATTAN",5),O7e=new O3("QUADRANTS_JITTER",6),L7e=new O3("COMBINE_LINE_BY_LINE_MANHATTAN",7),A7e=new O3("COMBINE_JITTER_MANHATTAN",8)}function xct(e,t,n,r){var s,o,h,d,v,x;for(v=mse(e,n),x=mse(t,n),s=!1;v&&x&&(r||Wun(v,x,n));)h=mse(v,n),d=mse(x,n),bD(t),bD(e),o=v.c,Eae(v,!1),Eae(x,!1),n?(ey(t,x.p,o),t.p=x.p,ey(e,v.p+1,o),e.p=v.p):(ey(e,v.p,o),e.p=v.p,ey(t,x.p+1,o),t.p=x.p),No(v,null),No(x,null),v=h,x=d,s=!0;return s}function Zpn(e,t,n,r){var s,o,h,d,v;for(s=!1,o=!1,d=new C(r.j);d.a=t.length)throw J(new Do("Greedy SwitchDecider: Free layer not in graph."));this.c=t[e],this.e=new zM(r),sie(this.e,this.c,(ht(),Dn)),this.i=new zM(r),sie(this.i,this.c,$n),this.f=new wKe(this.c),this.a=!o&&s.i&&!s.s&&this.c[0].k==(zn(),Ls),this.a&&p1n(this,e,t.length)}function Tct(e,t){var n,r,s,o,h,d;o=!e.B.Hc((wl(),nN)),h=e.B.Hc(gfe),e.a=new mrt(h,o,e.c),e.n&&hwe(e.a.n,e.n),Zee(e.g,(n1(),lu),e.a),t||(r=new W_(1,o,e.c),r.n.a=e.k,M6(e.p,(ht(),An),r),s=new W_(1,o,e.c),s.n.d=e.k,M6(e.p,xr,s),d=new W_(0,o,e.c),d.n.c=e.k,M6(e.p,Dn,d),n=new W_(0,o,e.c),n.n.b=e.k,M6(e.p,$n,n))}function e2n(e){var t,n,r;switch(t=u(K(e.d,(pt(),K0)),218),t.g){case 2:n=Myn(e);break;case 3:n=(r=new st,ms(Vi(Cu(ic(ic(new vn(null,new mn(e.d.b,16)),new TX),new _X),new M9),new gX),new Nee(r)),r);break;default:throw J(new Wo("Compaction not supported for "+t+" edges."))}Zvn(e,n),Da(new vm(e.g),new Iee(e))}function t2n(e,t){var n;return n=new b3,t&&Ho(n,u(er(e.a,iN),94)),we(t,470)&&Ho(n,u(er(e.a,sN),94)),we(t,354)?(Ho(n,u(er(e.a,Jo),94)),n):(we(t,82)&&Ho(n,u(er(e.a,mr),94)),we(t,239)?(Ho(n,u(er(e.a,hs),94)),n):we(t,186)?(Ho(n,u(er(e.a,xl),94)),n):(we(t,352)&&Ho(n,u(er(e.a,ra),94)),n))}function a1(){a1=pe,Q7=new fo((bi(),BV),ct(1)),eq=new fo(jb,80),ppt=new fo(GSe,5),apt=new fo(Bk,N7),dpt=new fo(ufe,ct(1)),gpt=new fo(lfe,(Mn(),!0)),Z7e=new kv(50),hpt=new fo(Fb,Z7e),Y7e=OV,J7e=BS,opt=new fo(efe,!1),Q7e=KO,lpt=p2,upt=Rb,cpt=J4,fpt=Hy,X7e=(m4e(),Jgt),zue=rpt,JG=Zgt,Hue=ept,eEe=npt}function n2n(e){var t,n,r,s,o,h,d,v;for(v=new TZe,d=new C(e.a);d.a0&&t=0)return!1;if(t.p=n.b,it(n.e,t),s==(zn(),ca)||s==Jc){for(h=new C(t.j);h.a1||h==-1)&&(o|=16),s.Bb&_c&&(o|=64)),n.Bb&so&&(o|=ky),o|=Sf):we(t,457)?o|=512:(r=t.Bj(),r&&r.i&1&&(o|=256)),e.Bb&512&&(o|=128),o}function oC(e,t){var n,r,s,o,h;for(e=e==null?Pu:(Sn(e),e),s=0;se.d[d.p]&&(n+=Gwe(e.b,o),$p(e.a,ct(o)))):++h;for(n+=e.b.d*h;!TT(e.a);)yme(e.b,u(I6(e.a),19).a)}return n}function h2n(e,t){var n;return e.f==Cfe?(n=Dv(Po((Yu(),Oa),t)),e.e?n==4&&t!=(nk(),Gk)&&t!=(nk(),zk)&&t!=(nk(),Sfe)&&t!=(nk(),Afe):n==2):e.d&&(e.d.Hc(t)||e.d.Hc(F6(Po((Yu(),Oa),t)))||e.d.Hc(v4((Yu(),Oa),e.b,t)))?!0:e.f&&l5e((Yu(),e.f),QM(Po(Oa,t)))?(n=Dv(Po(Oa,t)),e.e?n==4:n==2):!1}function f2n(e,t,n,r){var s,o,h,d,v,x,_,L;return h=u(Ft(n,(bi(),Rk)),8),v=h.a,_=h.b+e,s=b.Math.atan2(_,v),s<0&&(s+=_4),s+=t,s>_4&&(s-=_4),d=u(Ft(r,Rk),8),x=d.a,L=d.b+e,o=b.Math.atan2(L,x),o<0&&(o+=_4),o+=t,o>_4&&(o-=_4),S1(),Ef(1e-10),b.Math.abs(s-o)<=1e-10||s==o||isNaN(s)&&isNaN(o)?0:so?1:yv(isNaN(s),isNaN(o))}function eae(e){var t,n,r,s,o,h,d;for(d=new Mr,r=new C(e.a.b);r.a=e.o)throw J(new lpe);d=t>>5,h=t&31,o=A0(1,Or(A0(h,1))),s?e.n[n][d]=I1(e.n[n][d],o):e.n[n][d]=qs(e.n[n][d],pve(o)),o=A0(o,1),r?e.n[n][d]=I1(e.n[n][d],o):e.n[n][d]=qs(e.n[n][d],pve(o))}catch(v){throw v=ts(v),we(v,320)?J(new Do(koe+e.o+"*"+e.p+xoe+t+io+n+Eoe)):J(v)}}function C5e(e,t,n,r){var s,o,h;t&&(o=Ue(ft(K(t,(Tc(),qg))))+r,h=n+Ue(ft(K(t,bV)))/2,Ye(t,Che,ct(Or(Ou(b.Math.round(o))))),Ye(t,F_e,ct(Or(Ou(b.Math.round(h))))),t.d.b==0||C5e(e,u(sj((s=ii(new Ep(t).a.d,0),new f6(s))),86),n+Ue(ft(K(t,bV)))+e.a,r+Ue(ft(K(t,mE)))),K(t,_he)!=null&&C5e(e,u(K(t,_he),86),n,r))}function g2n(e,t){var n,r,s,o,h,d,v,x,_,L,P;for(v=Ya(t.a),s=Ue(ft(K(v,(pt(),Nb))))*2,_=Ue(ft(K(v,U4))),x=b.Math.max(s,_),o=Me(pa,Ao,25,t.f-t.c+1,15,1),r=-x,n=0,d=t.b.Kc();d.Ob();)h=u(d.Pb(),10),r+=e.a[h.c.p]+x,o[n++]=r;for(r+=e.a[t.a.c.p]+x,o[n++]=r,P=new C(t.e);P.a0&&(r=(!e.n&&(e.n=new at(Jo,e,1,7)),u(Te(e.n,0),137)).a,!r||Yr(Yr((t.a+=' "',t),r),'"'))),Yr(bv(Yr(bv(Yr(bv(Yr(bv((t.a+=" (",t),e.i),","),e.j)," | "),e.g),","),e.f),")"),t.a)}function Nct(e){var t,n,r;return e.Db&64?Mse(e):(t=new Fl(Qxe),n=e.k,n?Yr(Yr((t.a+=' "',t),n),'"'):(!e.n&&(e.n=new at(Jo,e,1,7)),e.n.i>0&&(r=(!e.n&&(e.n=new at(Jo,e,1,7)),u(Te(e.n,0),137)).a,!r||Yr(Yr((t.a+=' "',t),r),'"'))),Yr(bv(Yr(bv(Yr(bv(Yr(bv((t.a+=" (",t),e.i),","),e.j)," | "),e.g),","),e.f),")"),t.a)}function nae(e,t){var n,r,s,o,h,d,v;if(t==null||t.length==0)return null;if(s=u(Uc(e.a,t),149),!s){for(r=(d=new E1(e.b).a.vc().Kc(),new T1(d));r.a.Ob();)if(n=(o=u(r.a.Pb(),42),u(o.dd(),149)),h=n.c,v=t.length,an(h.substr(h.length-v,v),t)&&(t.length==h.length||Ma(h,h.length-t.length-1)==46)){if(s)return null;s=n}s&&Oo(e.a,t,s)}return s}function v2n(e,t){var n,r,s,o;return n=new Dh,r=u(zl(Cu(new vn(null,new mn(e.f,16)),n),zm(new Ri,new tn,new tr,new ha,ie(re(yl,1),tt,132,0,[(F1(),xy),Ql]))),21),s=r.gc(),r=u(zl(Cu(new vn(null,new mn(t.f,16)),n),zm(new Ri,new tn,new tr,new ha,ie(re(yl,1),tt,132,0,[xy,Ql]))),21),o=r.gc(),ss.p?(Vs(o,xr),o.d&&(d=o.o.b,t=o.a.b,o.a.b=d-t)):o.j==xr&&s.p>e.p&&(Vs(o,An),o.d&&(d=o.o.b,t=o.a.b,o.a.b=-(d-t)));break}return s}function m2n(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q;if(o=n,n1,d&&(r=new Pt(s,n.b),ci(t.a,r)),D_(t.a,ie(re(na,1),Qe,8,0,[P,L]))}function rae(e,t,n){var r,s,o,h,d,v;if(t)if(n<=-1){if(r=gn(t.Tg(),-1-n),we(r,99))return u(r,18);for(h=u(t.ah(r),153),d=0,v=h.gc();d0){for(s=v.length;s>0&&v[s-1]=="";)--s;s=40,h&&Mbn(e),Nvn(e),dpn(e),n=srt(e),r=0;n&&r0&&ci(e.f,o)):(e.c[h]-=x+1,e.c[h]<=0&&e.a[h]>0&&ci(e.e,o))))}function V2n(e){var t,n,r,s,o,h,d,v,x;for(d=new Sp(u(Nr(new lp),62)),x=Ds,n=new C(e.d);n.a=0&&vn?t:n;x<=L;++x)x==n?d=r++:(o=s[x],_=q.rl(o.ak()),x==t&&(v=x==L&&!_?r-1:r),_&&++r);return P=u(q_(e,t,n),72),d!=v&&Vx(e,new dD(e.e,7,h,ct(d),z.dd(),v)),P}}else return u(jse(e,t,n),72);return u(q_(e,t,n),72)}function Y2n(e,t){var n,r,s,o,h,d,v;for(kr(t,"Port order processing",1),v=u(K(e,(pt(),YTe)),421),r=new C(e.b);r.a=0&&(d=Zun(e,h),!(d&&(x<22?v.l|=1<>>1,h.m=_>>>1|(L&1)<<21,h.l=P>>>1|(_&1)<<21,--x;return n&&gie(v),o&&(r?(s2=U8(e),s&&(s2=Wtt(s2,(D8(),R8e)))):s2=fu(e.l,e.m,e.h)),v}function Z2n(e,t){var n,r,s,o,h,d,v,x,_,L;for(x=e.e[t.c.p][t.p]+1,v=t.c.a.c.length+1,d=new C(e.a);d.a0&&(zr(0,e.length),e.charCodeAt(0)==45||(zr(0,e.length),e.charCodeAt(0)==43))?1:0,r=h;rn)throw J(new gd(cw+e+'"'));return d}function J2n(e){var t,n,r,s,o,h,d;for(h=new as,o=new C(e.a);o.a1)&&t==1&&u(e.a[e.b],10).k==(zn(),Rl)?ik(u(e.a[e.b],10),(Ul(),d0)):r&&(!n||(e.c-e.b&e.a.length-1)>1)&&t==1&&u(e.a[e.c-1&e.a.length-1],10).k==(zn(),Rl)?ik(u(e.a[e.c-1&e.a.length-1],10),(Ul(),b2)):(e.c-e.b&e.a.length-1)==2?(ik(u(F_(e),10),(Ul(),d0)),ik(u(F_(e),10),b2)):W0n(e,s),Hwe(e)}function nbn(e,t,n){var r,s,o,h,d;for(o=0,s=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));s.e!=s.i.gc();)r=u(pr(s),33),h="",(!r.n&&(r.n=new at(Jo,r,1,7)),r.n).i==0||(h=u(Te((!r.n&&(r.n=new at(Jo,r,1,7)),r.n),0),137).a),d=new vie(o++,t,h),Ho(d,r),Ye(d,(Tc(),LS),r),d.e.b=r.j+r.f/2,d.f.a=b.Math.max(r.g,1),d.e.a=r.i+r.g/2,d.f.b=b.Math.max(r.f,1),ci(t.b,d),gu(n.f,r,d)}function rbn(e){var t,n,r,s,o;r=u(K(e,(et(),Mi)),33),o=u(Ft(r,(pt(),Ib)),174).Hc((Bl(),Hb)),e.e||(s=u(K(e,eu),21),t=new Pt(e.f.a+e.d.b+e.d.c,e.f.b+e.d.d+e.d.a),s.Hc((mo(),Th))?(So(r,bs,(wa(),tu)),sw(r,t.a,t.b,!1,!0)):It(Mt(Ft(r,Yle)))||sw(r,t.a,t.b,!0,!0)),o?So(r,Ib,rn(Hb)):So(r,Ib,(n=u(Qf(qS),9),new hh(n,u(wf(n,n.length),9),0)))}function N5e(e,t,n){var r,s,o,h;if(t[0]>=e.length)return n.o=0,!0;switch(Ma(e,t[0])){case 43:s=1;break;case 45:s=-1;break;default:return n.o=0,!0}if(++t[0],o=t[0],h=ZH(e,t),h==0&&t[0]==o)return!1;if(t[0]=0&&d!=n&&(o=new oa(e,1,d,h,null),r?r.Ei(o):r=o),n>=0&&(o=new oa(e,1,n,d==n?h:null,t),r?r.Ei(o):r=o)),r}function Zct(e){var t,n,r;if(e.b==null){if(r=new bg,e.i!=null&&(To(r,e.i),r.a+=":"),e.f&256){for(e.f&256&&e.a!=null&&(mJt(e.i)||(r.a+="//"),To(r,e.a)),e.d!=null&&(r.a+="/",To(r,e.d)),e.f&16&&(r.a+="/"),t=0,n=e.j.length;tP?!1:(L=(v=dC(r,P,!1),v.a),_+d+L<=t.b&&(fD(n,o-n.s),n.c=!0,fD(r,o-n.s),KD(r,n.s,n.t+n.d+d),r.k=!0,Ume(n.q,r),z=!0,s&&(q$(t,r),r.j=t,e.c.length>h&&(JD((xn(h,e.c.length),u(e.c[h],200)),r),(xn(h,e.c.length),u(e.c[h],200)).a.c.length==0&&Eg(e,h)))),z)}function hbn(e,t){var n,r,s,o,h,d;if(kr(t,"Partition midprocessing",1),s=new Nv,ms(Vi(new vn(null,new mn(e.a,16)),new RY),new ov(s)),s.d!=0){for(d=u(zl(GXe((o=s.i,new vn(null,(o||(s.i=new H3(s,s.c))).Nc()))),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),r=d.Kc(),n=u(r.Pb(),19);r.Ob();)h=u(r.Pb(),19),ggn(u(Ii(s,n),21),u(Ii(s,h),21)),n=h;ur(t)}}function tut(e,t,n){var r,s,o,h,d,v,x,_;if(t.p==0){for(t.p=1,h=n,h||(s=new st,o=(r=u(Qf(ao),9),new hh(r,u(wf(r,r.length),9),0)),h=new xa(s,o)),u(h.a,15).Fc(t),t.k==(zn(),Ls)&&u(h.b,21).Fc(u(K(t,(et(),vc)),61)),v=new C(t.j);v.a0){if(s=u(e.Ab.g,1934),t==null){for(o=0;o1)for(r=new C(s);r.an.s&&dd&&(d=s,_.c=Me(Yn,yt,1,0,5,1)),s==d&&it(_,new xa(n.c.i,n)));hn(),aa(_,e.c),Om(e.b,v.p,_)}}function vbn(e,t){var n,r,s,o,h,d,v,x,_;for(h=new C(t.b);h.ad&&(d=s,_.c=Me(Yn,yt,1,0,5,1)),s==d&&it(_,new xa(n.d.i,n)));hn(),aa(_,e.c),Om(e.f,v.p,_)}}function rut(e){wv(e,new gb(gv(hv(dv(fv(new lg,fw),"ELK Box"),"Algorithm for packing of unconnected boxes, i.e. graphs without edges."),new MZ))),dt(e,fw,uw,hSe),dt(e,fw,py,15),dt(e,fw,FI,ct(0)),dt(e,fw,uG,xt(cSe)),dt(e,fw,E4,xt(Kyt)),dt(e,fw,dk,xt(Yyt)),dt(e,fw,fk,t1t),dt(e,fw,jI,xt(uSe)),dt(e,fw,gk,xt(lSe)),dt(e,fw,Vxe,xt(Xhe)),dt(e,fw,rG,xt(Wyt))}function iut(e,t){var n,r,s,o,h,d,v,x,_;if(s=e.i,h=s.o.a,o=s.o.b,h<=0&&o<=0)return ht(),uc;switch(x=e.n.a,_=e.n.b,d=e.o.a,n=e.o.b,t.g){case 2:case 1:if(x<0)return ht(),Dn;if(x+d>h)return ht(),$n;break;case 4:case 3:if(_<0)return ht(),An;if(_+n>o)return ht(),xr}return v=(x+d/2)/h,r=(_+n/2)/o,v+r<=1&&v-r<=0?(ht(),Dn):v+r>=1&&v-r>=0?(ht(),$n):r<.5?(ht(),An):(ht(),xr)}function wbn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W;for(n=!1,_=Ue(ft(K(t,(pt(),Aw)))),q=Jp*_,s=new C(t.b);s.av+q&&(W=L.g+P.g,P.a=(P.g*P.a+L.g*L.a)/W,P.g=W,L.f=P,n=!0)),o=d,L=P;return n}function sut(e,t,n,r,s,o,h){var d,v,x,_,L,P;for(P=new T6,x=t.Kc();x.Ob();)for(d=u(x.Pb(),839),L=new C(d.wf());L.a0?d.a?(x=d.b.rf().b,s>x&&(e.v||d.c.d.c.length==1?(h=(s-x)/2,d.d.d=h,d.d.a=h):(n=u(St(d.c.d,0),181).rf().b,r=(n-x)/2,d.d.d=b.Math.max(0,r),d.d.a=s-r-x))):d.d.a=e.t+s:g_(e.u)&&(o=u4e(d.b),o.d<0&&(d.d.d=-o.d),o.d+o.a>d.b.rf().b&&(d.d.a=o.d+o.a-d.b.rf().b))}function kbn(e,t){var n;switch(yD(e)){case 6:return fa(t);case 7:return Sm(t);case 8:return Cm(t);case 3:return Array.isArray(t)&&(n=yD(t),!(n>=14&&n<=16));case 11:return t!=null&&typeof t===Dae;case 12:return t!=null&&(typeof t===TI||typeof t==Dae);case 0:return ese(t,e.__elementTypeId$);case 2:return Fne(t)&&t.im!==gt;case 1:return Fne(t)&&t.im!==gt||ese(t,e.__elementTypeId$);default:return!0}}function aut(e,t){var n,r,s,o;return r=b.Math.min(b.Math.abs(e.c-(t.c+t.b)),b.Math.abs(e.c+e.b-t.c)),o=b.Math.min(b.Math.abs(e.d-(t.d+t.a)),b.Math.abs(e.d+e.a-t.d)),n=b.Math.abs(e.c+e.b/2-(t.c+t.b/2)),n>e.b/2+t.b/2||(s=b.Math.abs(e.d+e.a/2-(t.d+t.a/2)),s>e.a/2+t.a/2)?1:n==0&&s==0?0:n==0?o/s+1:s==0?r/n+1:b.Math.min(r/n,o/s)+1}function out(e,t){var n,r,s,o,h,d;return s=Mme(e),d=Mme(t),s==d?e.e==t.e&&e.a<54&&t.a<54?e.ft.f?1:0:(r=e.e-t.e,n=(e.d>0?e.d:b.Math.floor((e.a-1)*wht)+1)-(t.d>0?t.d:b.Math.floor((t.a-1)*wht)+1),n>r+1?s:n0&&(h=W3(h,Lut(r))),jrt(o,h))):s0&&e.d!=(L_(),Vue)&&(d+=h*(r.d.a+e.a[t.b][r.b]*(t.d.a-r.d.a)/n)),n>0&&e.d!=(L_(),Gue)&&(v+=h*(r.d.b+e.a[t.b][r.b]*(t.d.b-r.d.b)/n)));switch(e.d.g){case 1:return new Pt(d/o,t.d.b);case 2:return new Pt(t.d.a,v/o);default:return new Pt(d/o,v/o)}}function cut(e,t){X8();var n,r,s,o,h;if(h=u(K(e.i,(pt(),bs)),98),o=e.j.g-t.j.g,o!=0||!(h==(wa(),$b)||h==p0||h==tu))return 0;if(h==(wa(),$b)&&(n=u(K(e,zg),19),r=u(K(t,zg),19),n&&r&&(s=n.a-r.a,s!=0)))return s;switch(e.j.g){case 1:return Fs(e.n.a,t.n.a);case 2:return Fs(e.n.b,t.n.b);case 3:return Fs(t.n.a,e.n.a);case 4:return Fs(t.n.b,e.n.b);default:throw J(new Wo(eke))}}function uut(e){var t,n,r,s,o,h;for(n=(!e.a&&(e.a=new Bs(ef,e,5)),e.a).i+2,h=new su(n),it(h,new Pt(e.j,e.k)),ms(new vn(null,(!e.a&&(e.a=new Bs(ef,e,5)),new mn(e.a,16))),new t$e(h)),it(h,new Pt(e.b,e.c)),t=1;t0&&(ND(v,!1,(wo(),Xh)),ND(v,!0,Df)),Mu(t.g,new ZGe(e,n)),Si(e.g,t,n)}function hut(){hut=pe;var e;for(V8e=ie(re(Lr,1),Jr,25,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]),kue=Me(Lr,Jr,25,37,15,1),O0t=ie(re(Lr,1),Jr,25,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]),U8e=Me(S2,roe,25,37,14,1),e=2;e<=36;e++)kue[e]=_s(b.Math.pow(e,V8e[e])),U8e[e]=eI(Cz,kue[e])}function Ebn(e){var t;if((!e.a&&(e.a=new at(os,e,6,6)),e.a).i!=1)throw J(new Ln(y1t+(!e.a&&(e.a=new at(os,e,6,6)),e.a).i));return t=new Gu,ID(u(Te((!e.b&&(e.b=new wn(mr,e,4,7)),e.b),0),82))&&no(t,Wlt(e,ID(u(Te((!e.b&&(e.b=new wn(mr,e,4,7)),e.b),0),82)),!1)),ID(u(Te((!e.c&&(e.c=new wn(mr,e,5,8)),e.c),0),82))&&no(t,Wlt(e,ID(u(Te((!e.c&&(e.c=new wn(mr,e,5,8)),e.c),0),82)),!0)),t}function fut(e,t){var n,r,s,o,h;for(t.d?s=e.a.c==(yd(),Lw)?Xo(t.b):js(t.b):s=e.a.c==(yd(),Gg)?Xo(t.b):js(t.b),o=!1,r=new cr(fr(s.a.Kc(),new V));Vr(r);)if(n=u(Pr(r),17),h=It(e.a.f[e.a.g[t.b.p].p]),!(!h&&!to(n)&&n.c.i.c==n.d.i.c)&&!(It(e.a.n[e.a.g[t.b.p].p])||It(e.a.n[e.a.g[t.b.p].p]))&&(o=!0,_0(e.b,e.a.g[Oun(n,t.b).p])))return t.c=!0,t.a=n,t;return t.c=o,t.a=null,t}function Tbn(e,t,n,r,s){var o,h,d,v,x,_,L;for(hn(),aa(e,new FZ),d=new Ea(e,0),L=new st,o=0;d.bo*2?(_=new H$(L),x=Wu(h)/Dl(h),v=Sae(_,t,new g6,n,r,s,x),Ni(Zf(_.e),v),L.c=Me(Yn,yt,1,0,5,1),o=0,L.c[L.c.length]=_,L.c[L.c.length]=h,o=Wu(_)*Dl(_)+Wu(h)*Dl(h)):(L.c[L.c.length]=h,o+=Wu(h)*Dl(h));return L}function B5e(e,t,n){var r,s,o,h,d,v,x;if(r=n.gc(),r==0)return!1;if(e.ej())if(v=e.fj(),Qye(e,t,n),h=r==1?e.Zi(3,null,n.Kc().Pb(),t,v):e.Zi(5,null,n,t,v),e.bj()){for(d=r<100?null:new _p(r),o=t+r,s=t;s0){for(h=0;h>16==-15&&e.Cb.nh()&&Gre(new jre(e.Cb,9,13,n,e.c,Dg(gl(u(e.Cb,59)),e))):we(e.Cb,88)&&e.Db>>16==-23&&e.Cb.nh()&&(t=e.c,we(t,88)||(t=(on(),sf)),we(n,88)||(n=(on(),sf)),Gre(new jre(e.Cb,9,10,n,t,Dg(jc(u(e.Cb,26)),e)))))),e.c}function _bn(e,t){var n,r,s,o,h,d,v,x,_,L;for(kr(t,"Hypernodes processing",1),s=new C(e.b);s.an);return s}function gut(e,t){var n,r,s;r=vl(e.d,1)!=0,!It(Mt(K(t.j,(et(),kw))))&&!It(Mt(K(t.j,z4)))||je(K(t.j,(pt(),h2)))===je((R0(),f2))?t.c.Tf(t.e,r):r=It(Mt(K(t.j,kw))),gI(e,t,r,!0),It(Mt(K(t.j,z4)))&&Ye(t.j,z4,(Mn(),!1)),It(Mt(K(t.j,kw)))&&(Ye(t.j,kw,(Mn(),!1)),Ye(t.j,z4,!0)),n=Pse(e,t);do{if(zme(e),n==0)return 0;r=!r,s=n,gI(e,t,r,!1),n=Pse(e,t)}while(s>n);return s}function put(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q;if(t==n)return!0;if(t=U4e(e,t),n=U4e(e,n),r=ose(t),r){if(_=ose(n),_!=r)return _?(v=r.Dj(),q=_.Dj(),v==q&&v!=null):!1;if(h=(!t.d&&(t.d=new Bs(Eo,t,1)),t.d),o=h.i,P=(!n.d&&(n.d=new Bs(Eo,n,1)),n.d),o==P.i){for(x=0;x0,d=kH(t,o),dbe(n?d.b:d.g,t),t4(d).c.length==1&&ks(r,d,r.c.b,r.c),s=new xa(o,t),$p(e.o,s),Au(e.e.a,o))}function mut(e,t){var n,r,s,o,h,d,v;return r=b.Math.abs(jj(e.b).a-jj(t.b).a),d=b.Math.abs(jj(e.b).b-jj(t.b).b),s=0,v=0,n=1,h=1,r>e.b.b/2+t.b.b/2&&(s=b.Math.min(b.Math.abs(e.b.c-(t.b.c+t.b.b)),b.Math.abs(e.b.c+e.b.b-t.b.c)),n=1-s/r),d>e.b.a/2+t.b.a/2&&(v=b.Math.min(b.Math.abs(e.b.d-(t.b.d+t.b.a)),b.Math.abs(e.b.d+e.b.a-t.b.d)),h=1-v/d),o=b.Math.min(n,h),(1-o)*b.Math.sqrt(r*r+d*d)}function Dbn(e){var t,n,r,s;for(Cae(e,e.e,e.f,(Ov(),g2),!0,e.c,e.i),Cae(e,e.e,e.f,g2,!1,e.c,e.i),Cae(e,e.e,e.f,Y4,!0,e.c,e.i),Cae(e,e.e,e.f,Y4,!1,e.c,e.i),Obn(e,e.c,e.e,e.f,e.i),r=new Ea(e.i,0);r.b=65;n--)J1[n]=n-65<<24>>24;for(r=122;r>=97;r--)J1[r]=r-97+26<<24>>24;for(s=57;s>=48;s--)J1[s]=s-48+52<<24>>24;for(J1[43]=62,J1[47]=63,o=0;o<=25;o++)Zg[o]=65+o&Ss;for(h=26,v=0;h<=51;++h,v++)Zg[h]=97+v&Ss;for(e=52,d=0;e<=61;++e,d++)Zg[e]=48+d&Ss;Zg[62]=43,Zg[63]=47}function Ibn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z;if(e.dc())return new Fa;for(x=0,L=0,s=e.Kc();s.Ob();)r=u(s.Pb(),37),o=r.f,x=b.Math.max(x,o.a),L+=o.a*o.b;for(x=b.Math.max(x,b.Math.sqrt(L)*Ue(ft(K(u(e.Kc().Pb(),37),(pt(),Hq))))),P=0,z=0,v=0,n=t,d=e.Kc();d.Ob();)h=u(d.Pb(),37),_=h.f,P+_.a>x&&(P=0,z+=v+t,v=0),cC(h,P,z),n=b.Math.max(n,P+_.a),v=b.Math.max(v,_.b),P+=_.a+t;return new Pt(n+t,z+v+t)}function Obn(e,t,n,r,s){var o,h,d,v,x,_,L;for(h=new C(t);h.ao)return ht(),$n;break;case 4:case 3:if(v<0)return ht(),An;if(v+e.f>s)return ht(),xr}return h=(d+e.g/2)/o,n=(v+e.f/2)/s,h+n<=1&&h-n<=0?(ht(),Dn):h+n>=1&&h-n>=0?(ht(),$n):n<.5?(ht(),An):(ht(),xr)}function Nbn(e,t,n,r,s){var o,h;if(o=Ua(qs(t[0],yo),qs(r[0],yo)),e[0]=Or(o),o=Np(o,32),n>=s){for(h=1;h0&&(s.b[h++]=0,s.b[h++]=o.b[0]-1),t=1;t0&&(tM(v,v.d-s.d),s.c==(Jf(),d2)&&Wge(v,v.a-s.d),v.d<=0&&v.i>0&&ks(t,v,t.c.b,t.c)));for(o=new C(e.f);o.a0&&(hT(d,d.i-s.d),s.c==(Jf(),d2)&&sv(d,d.b-s.d),d.i<=0&&d.d>0&&ks(n,d,n.c.b,n.c)))}function Pbn(e,t,n){var r,s,o,h,d,v,x,_;for(kr(n,"Processor compute fanout",1),sl(e.b),sl(e.a),d=null,o=ii(t.b,0);!d&&o.b!=o.d.c;)x=u(ri(o),86),It(Mt(K(x,(Tc(),$y))))&&(d=x);for(v=new as,ks(v,d,v.c.b,v.c),Mlt(e,v),_=ii(t.b,0);_.b!=_.d.c;)x=u(ri(_),86),h=Hr(K(x,(Tc(),AS))),s=Uc(e.b,h)!=null?u(Uc(e.b,h),19).a:0,Ye(x,gV,ct(s)),r=1+(Uc(e.a,h)!=null?u(Uc(e.a,h),19).a:0),Ye(x,cmt,ct(r));ur(n)}function Bbn(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q;for(P=mhn(e,n),v=0;v0),r.a.Xb(r.c=--r.b),L>P+v&&Ol(r);for(h=new C(z);h.a0),r.a.Xb(r.c=--r.b)}}function Rbn(){yi();var e,t,n,r,s,o;if(Mfe)return Mfe;for(e=new Hl(4),ly(e,Zp(cue,!0)),bC(e,Zp("M",!0)),bC(e,Zp("C",!0)),o=new Hl(4),r=0;r<11;r++)Yc(o,r,r);return t=new Hl(4),ly(t,Zp("M",!0)),Yc(t,4448,4607),Yc(t,65438,65439),s=new e_(2),pb(s,e),pb(s,nA),n=new e_(2),n.$l(Ij(o,Zp("L",!0))),n.$l(t),n=new $m(3,n),n=new Xve(s,n),Mfe=n,Mfe}function Fbn(e){var t,n;if(t=Hr(Ft(e,(bi(),PS))),!Ptt(t,e)&&!J2(e,xE)&&((!e.a&&(e.a=new at(hs,e,10,11)),e.a).i!=0||It(Mt(Ft(e,UO)))))if(t==null||ny(t).length==0){if(!Ptt(qn,e))throw n=Yr(Yr(new Fl("Unable to load default layout algorithm "),qn)," for unconfigured node "),yz(e,n),J(new M3(n.a))}else throw n=Yr(Yr(new Fl("Layout algorithm '"),t),"' not found for "),yz(e,n),J(new M3(n.a))}function uae(e){var t,n,r,s,o,h,d,v,x,_,L,P,z;if(n=e.i,t=e.n,e.b==0)for(z=n.c+t.b,P=n.b-t.b-t.c,h=e.a,v=0,_=h.length;v<_;++v)s=h[v],Nj(s,z,P);else r=vit(e,!1),Nj(e.a[0],n.c+t.b,r[0]),Nj(e.a[2],n.c+n.b-t.c-r[2],r[2]),L=n.b-t.b-t.c,r[0]>0&&(L-=r[0]+e.c,r[0]+=e.c),r[2]>0&&(L-=r[2]+e.c),r[1]=b.Math.max(r[1],L),Nj(e.a[1],n.c+t.b+r[0]-(r[1]-L)/2,r[1]);for(o=e.a,d=0,x=o.length;d0?(e.n.c.length-1)*e.i:0,r=new C(e.n);r.a1)for(r=ii(s,0);r.b!=r.d.c;)for(n=u(ri(r),231),o=0,v=new C(n.e);v.a0&&(t[0]+=e.c,L-=t[0]),t[2]>0&&(L-=t[2]+e.c),t[1]=b.Math.max(t[1],L),Pj(e.a[1],r.d+n.d+t[0]-(t[1]-L)/2,t[1]);else for(q=r.d+n.d,z=r.a-n.d-n.a,h=e.a,v=0,_=h.length;v<_;++v)s=h[v],Pj(s,q,z);for(o=e.a,d=0,x=o.length;d=0&&o!=n))throw J(new Ln(YI));for(s=0,v=0;v0||Kv(s.b.d,e.b.d+e.b.a)==0&&r.b<0||Kv(s.b.d+s.b.a,e.b.d)==0&&r.b>0){d=0;break}}else d=b.Math.min(d,Eat(e,s,r));d=b.Math.min(d,Eut(e,o,d,r))}return d}function mI(e,t){var n,r,s,o,h,d,v;if(e.b<2)throw J(new Ln("The vector chain must contain at least a source and a target point."));for(s=(Qn(e.b!=0),u(e.a.a.c,8)),nj(t,s.a,s.b),v=new _6((!t.a&&(t.a=new Bs(ef,t,5)),t.a)),h=ii(e,1);h.aUe(A1(h.g,h.d[0]).a)?(Qn(v.b>0),v.a.Xb(v.c=--v.b),Dm(v,h),s=!0):d.e&&d.e.gc()>0&&(o=(!d.e&&(d.e=new st),d.e).Mc(t),x=(!d.e&&(d.e=new st),d.e).Mc(n),(o||x)&&((!d.e&&(d.e=new st),d.e).Fc(h),++h.c));s||(r.c[r.c.length]=h)}function Cut(e){var t,n,r;if(R3(u(K(e,(pt(),bs)),98)))for(n=new C(e.j);n.a>>0,"0"+t.toString(16)),r="\\x"+jl(n,n.length-2,n.length)):e>=so?(n=(t=e>>>0,"0"+t.toString(16)),r="\\v"+jl(n,n.length-6,n.length)):r=""+String.fromCharCode(e&Ss)}return r}function hae(e,t){var n,r,s,o,h,d,v,x,_,L;if(h=e.e,v=t.e,v==0)return e;if(h==0)return t.e==0?t:new z3(-t.e,t.d,t.a);if(o=e.d,d=t.d,o+d==2)return n=qs(e.a[0],yo),r=qs(t.a[0],yo),h<0&&(n=M8(n)),v<0&&(r=M8(r)),WD(Wp(n,r));if(s=o!=d?o>d?1:-1:mye(e.a,t.a,o),s==-1)L=-v,_=h==v?Ore(t.a,d,e.a,o):Pre(t.a,d,e.a,o);else if(L=h,h==v){if(s==0)return Qp(),K7;_=Ore(e.a,o,t.a,d)}else _=Pre(e.a,o,t.a,d);return x=new z3(L,_.length,_),E_(x),x}function G5e(e){var t,n,r,s,o,h;for(this.e=new st,this.a=new st,n=e.b-1;n<3;n++)c8(e,0,u(s1(e,0),8));if(e.b<4)throw J(new Ln("At (least dimension + 1) control points are necessary!"));for(this.b=3,this.d=!0,this.c=!1,M0n(this,e.b+this.b-1),h=new st,o=new C(this.e),t=0;t=t.o&&n.f<=t.f||t.a*.5<=n.f&&t.a*1.5>=n.f){if(h=u(St(t.n,t.n.c.length-1),211),h.e+h.d+n.g+s<=r&&(o=u(St(t.n,t.n.c.length-1),211),o.f-e.f+n.f<=e.b||e.a.c.length==1))return zye(t,n),!0;if(t.s+n.g<=r&&(t.t+t.d+n.f+s<=e.b||e.a.c.length==1))return it(t.b,n),d=u(St(t.n,t.n.c.length-1),211),it(t.n,new o$(t.s,d.f+d.a+t.i,t.i)),T3e(u(St(t.n,t.n.c.length-1),211),n),yut(t,n),!0}return!1}function Aut(e,t,n){var r,s,o,h;return e.ej()?(s=null,o=e.fj(),r=e.Zi(1,h=Vre(e,t,n),n,t,o),e.bj()&&!(e.ni()&&h!=null?Ci(h,n):je(h)===je(n))?(h!=null&&(s=e.dj(h,s)),s=e.cj(n,s),e.ij()&&(s=e.lj(h,n,s)),s?(s.Ei(r),s.Fi()):e.$i(r)):(e.ij()&&(s=e.lj(h,n,s)),s?(s.Ei(r),s.Fi()):e.$i(r)),h):(h=Vre(e,t,n),e.bj()&&!(e.ni()&&h!=null?Ci(h,n):je(h)===je(n))&&(s=null,h!=null&&(s=e.dj(h,null)),s=e.cj(n,s),s&&s.Fi()),h)}function lC(e,t){var n,r,s,o,h,d,v,x;t%=24,e.q.getHours()!=t&&(r=new b.Date(e.q.getTime()),r.setDate(r.getDate()+1),d=e.q.getTimezoneOffset()-r.getTimezoneOffset(),d>0&&(v=d/60|0,x=d%60,s=e.q.getDate(),n=e.q.getHours(),n+v>=24&&++s,o=new b.Date(e.q.getFullYear(),e.q.getMonth(),s,t+v,e.q.getMinutes()+x,e.q.getSeconds(),e.q.getMilliseconds()),e.q.setTime(o.getTime()))),h=e.q.getTime(),e.q.setTime(h+36e5),e.q.getHours()!=t&&e.q.setTime(h)}function Wbn(e,t){var n,r,s,o,h;if(kr(t,"Path-Like Graph Wrapping",1),e.b.c.length==0){ur(t);return}if(s=new X4e(e),h=(s.i==null&&(s.i=Gme(s,new AB)),Ue(s.i)*s.f),n=h/(s.i==null&&(s.i=Gme(s,new AB)),Ue(s.i)),s.b>n){ur(t);return}switch(u(K(e,(pt(),ehe)),337).g){case 2:o=new MB;break;case 0:o=new SB;break;default:o=new DB}if(r=o.Vf(e,s),!o.Wf())switch(u(K(e,tV),338).g){case 2:r=Tat(s,r);break;case 1:r=Est(s,r)}qvn(e,s,r),ur(t)}function Kbn(e,t){var n,r,s,o;if(Ien(e.d,e.e),e.c.a.$b(),Ue(ft(K(t.j,(pt(),qq))))!=0||Ue(ft(K(t.j,qq)))!=0)for(n=O7,je(K(t.j,h2))!==je((R0(),f2))&&Ye(t.j,(et(),kw),(Mn(),!0)),o=u(K(t.j,vS),19).a,s=0;ss&&++x,it(h,(xn(d+x,t.c.length),u(t.c[d+x],19))),v+=(xn(d+x,t.c.length),u(t.c[d+x],19)).a-r,++n;n1&&(v>Wu(d)*Dl(d)/2||h.b==0)&&(L=new H$(P),_=Wu(d)/Dl(d),x=Sae(L,t,new g6,n,r,s,_),Ni(Zf(L.e),x),d=L,z.c[z.c.length]=L,v=0,P.c=Me(Yn,yt,1,0,5,1)));return Rs(z,P),z}function Qbn(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W;if(n.mh(t)&&(_=(z=t,z?u(r,49).xh(z):null),_))if(W=n.bh(t,e.a),q=t.t,q>1||q==-1)if(L=u(W,69),P=u(_,69),L.dc())P.$b();else for(h=!!go(t),o=0,d=e.a?L.Kc():L.Zh();d.Ob();)x=u(d.Pb(),56),s=u(Fv(e,x),56),s?(h?(v=P.Xc(s),v==-1?P.Xh(o,s):o!=v&&P.ji(o,s)):P.Xh(o,s),++o):e.b&&!h&&(P.Xh(o,x),++o);else W==null?_.Wb(null):(s=Fv(e,W),s==null?e.b&&!go(t)&&_.Wb(W):_.Wb(s))}function Zbn(e,t){var n,r,s,o,h,d,v,x;for(n=new TY,s=new cr(fr(Xo(t).a.Kc(),new V));Vr(s);)if(r=u(Pr(s),17),!to(r)&&(d=r.c.i,a4e(d,iq))){if(x=k5e(e,d,iq,rq),x==-1)continue;n.b=b.Math.max(n.b,x),!n.a&&(n.a=new st),it(n.a,d)}for(h=new cr(fr(js(t).a.Kc(),new V));Vr(h);)if(o=u(Pr(h),17),!to(o)&&(v=o.d.i,a4e(v,rq))){if(x=k5e(e,v,rq,iq),x==-1)continue;n.d=b.Math.max(n.d,x),!n.c&&(n.c=new st),it(n.c,v)}return n}function Lut(e){d7();var t,n,r,s;if(t=_s(e),e1e6)throw J(new lF("power of ten too big"));if(e<=Ei)return $6(lI(yk[1],t),t);for(r=lI(yk[1],Ei),s=r,n=Ou(e-Ei),t=_s(e%Ei);Mc(n,Ei)>0;)s=W3(s,r),n=Wp(n,Ei);for(s=W3(s,lI(yk[1],t)),s=$6(s,Ei),n=Ou(e-Ei);Mc(n,Ei)>0;)s=$6(s,Ei),n=Wp(n,Ei);return s=$6(s,t),s}function Jbn(e,t){var n,r,s,o,h,d,v,x,_;for(kr(t,"Hierarchical port dummy size processing",1),v=new st,_=new st,r=Ue(ft(K(e,(pt(),V4)))),n=r*2,o=new C(e.b);o.ax&&r>x)_=d,x=Ue(t.p[d.p])+Ue(t.d[d.p])+d.o.b+d.d.a;else{s=!1,n.n&&V2(n,"bk node placement breaks on "+d+" which should have been after "+_);break}if(!s)break}return n.n&&V2(n,t+" is feasible: "+s),s}function ivn(e,t,n,r){var s,o,h,d,v,x,_;for(d=-1,_=new C(e);_.a<_.c.c.length;)x=u(Y(_),112),x.g=d--,s=Or(g$(Yj(Vi(new vn(null,new mn(x.f,16)),new AQ),new LQ)).d),o=Or(g$(Yj(Vi(new vn(null,new mn(x.k,16)),new MQ),new U5)).d),h=s,v=o,r||(h=Or(g$(Yj(new vn(null,new mn(x.f,16)),new DQ)).d),v=Or(g$(Yj(new vn(null,new mn(x.k,16)),new IQ)).d)),x.d=h,x.a=s,x.i=v,x.b=o,v==0?ks(n,x,n.c.b,n.c):h==0&&ks(t,x,t.c.b,t.c)}function svn(e,t,n,r){var s,o,h,d,v,x,_;if(n.d.i!=t.i){for(s=new H0(e),T0(s,(zn(),ca)),Ye(s,(et(),Mi),n),Ye(s,(pt(),bs),(wa(),tu)),r.c[r.c.length]=s,h=new $c,rc(h,s),Vs(h,(ht(),Dn)),d=new $c,rc(d,s),Vs(d,$n),_=n.d,ba(n,h),o=new Iv,Ho(o,n),Ye(o,Fo,null),Va(o,d),ba(o,_),x=new Ea(n.b,0);x.b=X&&e.e[v.p]>q*e.b||Ee>=n*X)&&(P.c[P.c.length]=d,d=new st,no(h,o),o.a.$b(),x-=_,z=b.Math.max(z,x*e.b+W),x+=Ee,Ce=Ee,Ee=0,_=0,W=0);return new xa(z,P)}function cvn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z;for(n=(x=new E1(e.c.b).a.vc().Kc(),new T1(x));n.a.Ob();)t=(d=u(n.a.Pb(),42),u(d.dd(),149)),s=t.a,s==null&&(s=""),r=NKt(e.c,s),!r&&s.length==0&&(r=Pan(e)),r&&!Xm(r.c,t,!1)&&ci(r.c,t);for(h=ii(e.a,0);h.b!=h.d.c;)o=u(ri(h),478),_=Lre(e.c,o.a),z=Lre(e.c,o.b),_&&z&&ci(_.c,new xa(z,o.c));for(Rh(e.a),P=ii(e.b,0);P.b!=P.d.c;)L=u(ri(P),478),t=OKt(e.c,L.a),v=Lre(e.c,L.b),t&&v&&EUt(t,v,L.c);Rh(e.b)}function uvn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z;o=new $x(e),h=new Yit,s=(oD(h.g),oD(h.j),sl(h.b),oD(h.d),oD(h.i),sl(h.k),sl(h.c),sl(h.e),z=Iat(h,o,null),kot(h,o),z),t&&(x=new $x(t),d=mvn(x),w4e(s,ie(re(nSe,1),yt,527,0,[d]))),P=!1,L=!1,n&&(x=new $x(n),bG in x.a&&(P=M0(x,bG).ge().a),q1t in x.a&&(L=M0(x,q1t).ge().a)),_=hze(zet(new Ux,P),L),n1n(new dZ,s,_),bG in o.a&&t1(o,bG,null),(P||L)&&(v=new p6,_ut(_,v,P,L),t1(o,bG,v)),r=new w$e(h),Xsn(new H2e(s),r)}function lvn(e,t,n){var r,s,o,h,d,v,x,_,L;for(h=new est,x=ie(re(Lr,1),Jr,25,15,[0]),s=-1,o=0,r=0,v=0;v0){if(s<0&&_.a&&(s=v,o=x[0],r=0),s>=0){if(d=_.b,v==s&&(d-=r++,d==0))return 0;if(!Ilt(t,x,_,d,h)){v=s-1,x[0]=o;continue}}else if(s=-1,!Ilt(t,x,_,0,h))return 0}else{if(s=-1,Ma(_.c,0)==32){if(L=x[0],QJe(t,x),x[0]>L)continue}else if(qJt(t,_.c,x[0])){x[0]+=_.c.length;continue}return 0}return qmn(h,n)?x[0]:0}function fC(e){var t,n,r,s,o,h,d,v;if(!e.f){if(v=new E0,d=new E0,t=XS,h=t.a.zc(e,t),h==null){for(o=new rr(jo(e));o.e!=o.i.gc();)s=u(pr(o),26),fs(v,fC(s));t.a.Bc(e)!=null,t.a.gc()==0}for(r=(!e.s&&(e.s=new at(ju,e,21,17)),new rr(e.s));r.e!=r.i.gc();)n=u(pr(r),170),we(n,99)&&Br(d,u(n,18));Km(d),e.r=new GWe(e,(u(Te(He((Rp(),En).o),6),18),d.i),d.g),fs(v,e.r),Km(v),e.f=new B3((u(Te(He(En.o),5),18),v.i),v.g),dl(e).b&=-3}return e.f}function hvn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q;for(h=e.o,r=Me(Lr,Jr,25,h,15,1),s=Me(Lr,Jr,25,h,15,1),n=e.p,t=Me(Lr,Jr,25,n,15,1),o=Me(Lr,Jr,25,n,15,1),x=0;x=0&&!i4(e,_,L);)--L;s[_]=L}for(z=0;z=0&&!i4(e,d,q);)--d;o[q]=d}for(v=0;vt[P]&&Pr[v]&&hz(e,v,P,!1,!0)}function q5e(e){var t,n,r,s,o,h,d,v;n=It(Mt(K(e,(a1(),opt)))),o=e.a.c.d,d=e.a.d.d,n?(h=bd(da(new Pt(d.a,d.b),o),.5),v=bd(fc(e.e),.5),t=da(Ni(new Pt(o.a,o.b),h),v),ybe(e.d,t)):(s=Ue(ft(K(e.a,ppt))),r=e.d,o.a>=d.a?o.b>=d.b?(r.a=d.a+(o.a-d.a)/2+s,r.b=d.b+(o.b-d.b)/2-s-e.e.b):(r.a=d.a+(o.a-d.a)/2+s,r.b=o.b+(d.b-o.b)/2+s):o.b>=d.b?(r.a=o.a+(d.a-o.a)/2+s,r.b=d.b+(o.b-d.b)/2+s):(r.a=o.a+(d.a-o.a)/2+s,r.b=o.b+(d.b-o.b)/2-s-e.e.b))}function Xc(e,t){var n,r,s,o,h,d,v;if(e==null)return null;if(o=e.length,o==0)return"";for(v=Me(Sh,Td,25,o,15,1),ame(0,o,e.length),ame(0,o,v.length),YKe(e,0,o,v,0),n=null,d=t,s=0,h=0;s0?jl(n.a,0,o-1):""):e.substr(0,o-1):n?n.a:e}function Iut(e){wv(e,new gb(gv(hv(dv(fv(new lg,yb),"ELK DisCo"),"Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out."),new pi))),dt(e,yb,_oe,xt(U7e)),dt(e,yb,Coe,xt(Rue)),dt(e,yb,fk,xt(Ugt)),dt(e,yb,uw,xt(V7e)),dt(e,yb,L6e,xt(Xgt)),dt(e,yb,M6e,xt(Ygt)),dt(e,yb,A6e,xt(Qgt)),dt(e,yb,D6e,xt(Kgt)),dt(e,yb,F6e,xt(Wgt)),dt(e,yb,j6e,xt(Bue)),dt(e,yb,$6e,xt(q7e)),dt(e,yb,H6e,xt(XG))}function V5e(e,t,n,r){var s,o,h,d,v,x,_,L,P;if(o=new H0(e),T0(o,(zn(),Jc)),Ye(o,(pt(),bs),(wa(),tu)),s=0,t){for(h=new $c,Ye(h,(et(),Mi),t),Ye(o,Mi,t.i),Vs(h,(ht(),Dn)),rc(h,o),P=kd(t.e),x=P,_=0,L=x.length;_0)if(n-=r.length-t,n>=0){for(s.a+="0.";n>Ab.length;n-=Ab.length)cKe(s,Ab);qUe(s,Ab,_s(n)),Yr(s,r.substr(t))}else n=t-n,Yr(s,jl(r,t,_s(n))),s.a+=".",Yr(s,IM(r,_s(n)));else{for(Yr(s,r.substr(t));n<-Ab.length;n+=Ab.length)cKe(s,Ab);qUe(s,Ab,_s(-n))}return s.a}function U5e(e,t,n,r){var s,o,h,d,v,x,_,L,P;return v=da(new Pt(n.a,n.b),e),x=v.a*t.b-v.b*t.a,_=t.a*r.b-t.b*r.a,L=(v.a*r.b-v.b*r.a)/_,P=x/_,_==0?x==0?(s=Ni(new Pt(n.a,n.b),bd(new Pt(r.a,r.b),.5)),o=Hp(e,s),h=Hp(Ni(new Pt(e.a,e.b),t),s),d=b.Math.sqrt(r.a*r.a+r.b*r.b)*.5,o=0&&L<=1&&P>=0&&P<=1?Ni(new Pt(e.a,e.b),bd(new Pt(t.a,t.b),L)):null}function dvn(e,t,n){var r,s,o,h,d;if(r=u(K(e,(pt(),$le)),21),n.a>t.a&&(r.Hc((ty(),HO))?e.c.a+=(n.a-t.a)/2:r.Hc(zO)&&(e.c.a+=n.a-t.a)),n.b>t.b&&(r.Hc((ty(),qO))?e.c.b+=(n.b-t.b)/2:r.Hc(GO)&&(e.c.b+=n.b-t.b)),u(K(e,(et(),eu)),21).Hc((mo(),Th))&&(n.a>t.a||n.b>t.b))for(d=new C(e.a);d.at.a&&(r.Hc((ty(),HO))?e.c.a+=(n.a-t.a)/2:r.Hc(zO)&&(e.c.a+=n.a-t.a)),n.b>t.b&&(r.Hc((ty(),qO))?e.c.b+=(n.b-t.b)/2:r.Hc(GO)&&(e.c.b+=n.b-t.b)),u(K(e,(et(),eu)),21).Hc((mo(),Th))&&(n.a>t.a||n.b>t.b))for(h=new C(e.a);h.at&&(s=0,o+=_.b+n,L.c[L.c.length]=_,_=new Lwe(o,n),r=new wie(0,_.f,_,n),q$(_,r),s=0),r.b.c.length==0||v.f>=r.o&&v.f<=r.f||r.a*.5<=v.f&&r.a*1.5>=v.f?zye(r,v):(h=new wie(r.s+r.r+n,_.f,_,n),q$(_,h),zye(h,v)),s=v.i+v.g;return L.c[L.c.length]=_,L}function b4(e){var t,n,r,s,o,h,d,v;if(!e.a){if(e.o=null,v=new F$e(e),t=new vp,n=XS,d=n.a.zc(e,n),d==null){for(h=new rr(jo(e));h.e!=h.i.gc();)o=u(pr(h),26),fs(v,b4(o));n.a.Bc(e)!=null,n.a.gc()==0}for(s=(!e.s&&(e.s=new at(ju,e,21,17)),new rr(e.s));s.e!=s.i.gc();)r=u(pr(s),170),we(r,322)&&Br(t,u(r,34));Km(t),e.k=new zWe(e,(u(Te(He((Rp(),En).o),7),18),t.i),t.g),fs(v,e.k),Km(v),e.a=new B3((u(Te(He(En.o),4),18),v.i),v.g),dl(e).b&=-2}return e.a}function vvn(e,t,n,r,s,o,h){var d,v,x,_,L,P;return L=!1,v=$ot(n.q,t.f+t.b-n.q.f),P=s-(n.q.e+v-h),P=(xn(o,e.c.length),u(e.c[o],200)).e,_=(d=dC(r,P,!1),d.a),_>t.b&&!x)?!1:((x||_<=t.b)&&(x&&_>t.b?(n.d=_,fD(n,qst(n,_))):(ust(n.q,v),n.c=!0),fD(r,s-(n.s+n.r)),KD(r,n.q.e+n.q.d,t.f),q$(t,r),e.c.length>o&&(JD((xn(o,e.c.length),u(e.c[o],200)),r),(xn(o,e.c.length),u(e.c[o],200)).a.c.length==0&&Eg(e,o)),L=!0),L)}function W5e(e,t,n,r){var s,o,h,d,v,x,_;if(_=pu(e.e.Tg(),t),s=0,o=u(e.g,119),v=null,ho(),u(t,66).Oj()){for(d=0;de.o.a&&(_=(v-e.o.a)/2,d.b=b.Math.max(d.b,_),d.c=b.Math.max(d.c,_))}}function mvn(e){var t,n,r,s,o,h,d,v;for(o=new uQe,rWt(o,(W6(),Fyt)),r=(s=aie(e,Me(mt,Qe,2,0,6,1)),new c6(new Al(new lte(e,s).b)));r.b0?e.i:0)>t&&v>0&&(o=0,h+=v+e.i,s=b.Math.max(s,P),r+=v+e.i,v=0,P=0,n&&(++L,it(e.n,new o$(e.s,h,e.i))),d=0),P+=x.g+(d>0?e.i:0),v=b.Math.max(v,x.f),n&&T3e(u(St(e.n,L),211),x),o+=x.g+(d>0?e.i:0),++d;return s=b.Math.max(s,P),r+=v,n&&(e.r=s,e.d=r,A3e(e.j)),new fh(e.s,e.t,s,r)}function Hc(e,t,n,r,s){Ud();var o,h,d,v,x,_,L,P,z;if(Wve(e,"src"),Wve(n,"dest"),P=pl(e),v=pl(n),bve((P.i&4)!=0,"srcType is not an array"),bve((v.i&4)!=0,"destType is not an array"),L=P.c,h=v.c,bve(L.i&1?L==h:(h.i&1)==0,"Array types don't match"),z=e.length,x=n.length,t<0||r<0||s<0||t+s>z||r+s>x)throw J(new cpe);if(!(L.i&1)&&P!=v)if(_=tb(e),o=tb(n),je(e)===je(n)&&tr;)cs(o,d,_[--t]);else for(d=r+s;r0&&O4e(e,t,n,r,s,!0)}function pae(){pae=pe,P0t=ie(re(Lr,1),Jr,25,15,[$a,1162261467,wC,1220703125,362797056,1977326743,wC,387420489,Lz,214358881,429981696,815730721,1475789056,170859375,268435456,410338673,612220032,893871739,128e7,1801088541,113379904,148035889,191102976,244140625,308915776,387420489,481890304,594823321,729e6,887503681,wC,1291467969,1544804416,1838265625,60466176]),B0t=ie(re(Lr,1),Jr,25,15,[-1,-1,31,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5])}function yvn(e){var t,n,r,s,o,h,d,v;for(s=new C(e.b);s.a=e.b.length?(o[s++]=h.b[r++],o[s++]=h.b[r++]):r>=h.b.length?(o[s++]=e.b[n++],o[s++]=e.b[n++]):h.b[r]0?e.i:0)),++t;for(Ion(e.n,v),e.d=n,e.r=r,e.g=0,e.f=0,e.e=0,e.o=gs,e.p=gs,o=new C(e.b);o.a0&&(s=(!e.n&&(e.n=new at(Jo,e,1,7)),u(Te(e.n,0),137)).a,!s||Yr(Yr((t.a+=' "',t),s),'"'))),n=(!e.b&&(e.b=new wn(mr,e,4,7)),!(e.b.i<=1&&(!e.c&&(e.c=new wn(mr,e,5,8)),e.c.i<=1))),n?t.a+=" [":t.a+=" ",Yr(t,rbe(new ste,new rr(e.b))),n&&(t.a+="]"),t.a+=Ioe,n&&(t.a+="["),Yr(t,rbe(new ste,new rr(e.c))),n&&(t.a+="]"),t.a)}function bae(e,t){var n,r,s,o,h,d,v;if(e.a){if(d=e.a.ne(),v=null,d!=null?t.a+=""+d:(h=e.a.Dj(),h!=null&&(o=pd(h,Nu(91)),o!=-1?(v=h.substr(o),t.a+=""+jl(h==null?Pu:(Sn(h),h),0,o)):t.a+=""+h)),e.d&&e.d.i!=0){for(s=!0,t.a+="<",r=new rr(e.d);r.e!=r.i.gc();)n=u(pr(r),87),s?s=!1:t.a+=io,bae(n,t);t.a+=">"}v!=null&&(t.a+=""+v)}else e.e?(d=e.e.zb,d!=null&&(t.a+=""+d)):(t.a+="?",e.b?(t.a+=" super ",bae(e.b,t)):e.f&&(t.a+=" extends ",bae(e.f,t)))}function Evn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In;for(Ve=e.c,nt=t.c,n=Yo(Ve.a,e,0),r=Yo(nt.a,t,0),Ee=u(Yv(e,(vo(),ul)).Kc().Pb(),11),Ut=u(Yv(e,hu).Kc().Pb(),11),Ne=u(Yv(t,ul).Kc().Pb(),11),In=u(Yv(t,hu).Kc().Pb(),11),le=kd(Ee.e),bt=kd(Ut.g),Ce=kd(Ne.e),zt=kd(In.g),ey(e,r,nt),h=Ce,_=0,q=h.length;__?new X2((Jf(),jy),n,t,x-_):x>0&&_>0&&(new X2((Jf(),jy),t,n,0),new X2(jy,n,t,0))),h)}function Put(e,t){var n,r,s,o,h,d;for(h=new ob(new dg(e.f.b).a);h.b;){if(o=$v(h),s=u(o.cd(),594),t==1){if(s.gf()!=(wo(),X0)&&s.gf()!=Y0)continue}else if(s.gf()!=(wo(),Xh)&&s.gf()!=Df)continue;switch(r=u(u(o.dd(),46).b,81),d=u(u(o.dd(),46).a,189),n=d.c,s.gf().g){case 2:r.g.c=e.e.a,r.g.b=b.Math.max(1,r.g.b+n);break;case 1:r.g.c=r.g.c+n,r.g.b=b.Math.max(1,r.g.b-n);break;case 4:r.g.d=e.e.b,r.g.a=b.Math.max(1,r.g.a+n);break;case 3:r.g.d=r.g.d+n,r.g.a=b.Math.max(1,r.g.a-n)}}}function Tvn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W;for(d=Me(Lr,Jr,25,t.b.c.length,15,1),x=Me(Zue,tt,267,t.b.c.length,0,1),v=Me(h0,Bg,10,t.b.c.length,0,1),L=e.a,P=0,z=L.length;P0&&v[r]&&(q=j3(e.b,v[r],s)),W=b.Math.max(W,s.c.c.b+q);for(o=new C(_.e);o.a1)throw J(new Ln(eO));v||(o=Jd(t,r.Kc().Pb()),h.Fc(o))}return iye(e,T4e(e,t,n),h)}function Svn(e,t){var n,r,s,o;for(lin(t.b.j),ms(Cu(new vn(null,new mn(t.d,16)),new FX),new jX),o=new C(t.d);o.ae.o.b||(n=ac(e,$n),d=t.d+t.a+(n.gc()-1)*h,d>e.o.b)))}function mae(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q;if(h=e.e,v=t.e,h==0)return t;if(v==0)return e;if(o=e.d,d=t.d,o+d==2)return n=qs(e.a[0],yo),r=qs(t.a[0],yo),h==v?(_=Ua(n,r),q=Or(_),z=Or(Nm(_,32)),z==0?new Tg(h,q):new z3(h,2,ie(re(Lr,1),Jr,25,15,[q,z]))):WD(h<0?Wp(r,n):Wp(n,r));if(h==v)P=h,L=o>=d?Pre(e.a,o,t.a,d):Pre(t.a,d,e.a,o);else{if(s=o!=d?o>d?1:-1:mye(e.a,t.a,o),s==0)return Qp(),K7;s==1?(P=h,L=Ore(e.a,o,t.a,d)):(P=v,L=Ore(t.a,d,e.a,o))}return x=new z3(P,L.length,L),E_(x),x}function yae(e,t,n,r,s,o,h){var d,v,x,_,L,P,z;return L=It(Mt(K(t,(pt(),HTe)))),P=null,o==(vo(),ul)&&r.c.i==n?P=r.c:o==hu&&r.d.i==n&&(P=r.d),x=h,!x||!L||P?(_=(ht(),uc),P?_=P.j:R3(u(K(n,bs),98))&&(_=o==ul?Dn:$n),v=Dvn(e,t,n,o,_,r),d=Dre((Ya(n),r)),o==ul?(Va(d,u(St(v.j,0),11)),ba(d,s)):(Va(d,s),ba(d,u(St(v.j,0),11))),x=new ert(r,d,v,u(K(v,(et(),Mi)),11),o,!P)):(it(x.e,r),z=b.Math.max(Ue(ft(K(x.d,Hg))),Ue(ft(K(r,Hg)))),Ye(x.d,Hg,z)),sn(e.a,r,new mj(x.d,t,o)),x}function wz(e,t){var n,r,s,o,h,d,v,x,_,L;if(_=null,e.d&&(_=u(Uc(e.d,t),138)),!_){if(o=e.a.Mh(),L=o.i,!e.d||MT(e.d)!=L){for(v=new Mr,e.d&&P_(v,e.d),x=v.f.c+v.g.c,d=x;d0?(z=(q-1)*n,d&&(z+=r),_&&(z+=r),z=e.b[s+1])s+=2;else if(n0)for(r=new Uu(u(Ii(e.a,o),21)),hn(),aa(r,new Di(t)),s=new Ea(o.b,0);s.bVe)?(v=2,h=Ei):v==0?(v=1,h=bt):(v=0,h=bt)):(z=bt>=h||h-bt0?1:yv(isNaN(r),isNaN(0)))>=0^(Ef(Md),(b.Math.abs(d)<=Md||d==0||isNaN(d)&&isNaN(0)?0:d<0?-1:d>0?1:yv(isNaN(d),isNaN(0)))>=0)?b.Math.max(d,r):(Ef(Md),(b.Math.abs(r)<=Md||r==0||isNaN(r)&&isNaN(0)?0:r<0?-1:r>0?1:yv(isNaN(r),isNaN(0)))>0?b.Math.sqrt(d*d+r*r):-b.Math.sqrt(d*d+r*r))}function pb(e,t){var n,r,s,o,h,d;if(t){if(!e.a&&(e.a=new oF),e.e==2){aF(e.a,t);return}if(t.e==1){for(s=0;s=so?To(n,Hye(r)):b8(n,r&Ss),h=new cre(10,null,0),wZt(e.a,h,d-1)):(n=(h.bm().length+o,new ST),To(n,h.bm())),t.e==0?(r=t._l(),r>=so?To(n,Hye(r)):b8(n,r&Ss)):To(n,t.bm()),u(h,521).b=n.a}}function Gut(e){var t,n,r,s,o;return e.g!=null?e.g:e.a<32?(e.g=nyn(Ou(e.f),_s(e.e)),e.g):(s=Lae((!e.c&&(e.c=FD(e.f)),e.c),0),e.e==0?s:(t=(!e.c&&(e.c=FD(e.f)),e.c).e<0?2:1,n=s.length,r=-e.e+n-t,o=new Tp,o.a+=""+s,e.e>0&&r>=-6?r>=0?rD(o,n-_s(e.e),String.fromCharCode(46)):(o.a=jl(o.a,0,t-1)+"0."+IM(o.a,t-1),rD(o,t+1,jh(Ab,0,-_s(r)-1))):(n-t>=1&&(rD(o,t,String.fromCharCode(46)),++n),rD(o,n,String.fromCharCode(69)),r>0&&rD(o,++n,String.fromCharCode(43)),rD(o,++n,""+d_(Ou(r)))),e.g=o.a,e.g))}function qvn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X;if(!n.dc()){for(d=0,P=0,r=n.Kc(),q=u(r.Pb(),19).a;d1&&(v=x.mg(v,e.a,d));return v.c.length==1?u(St(v,v.c.length-1),220):v.c.length==2?Ovn((xn(0,v.c.length),u(v.c[0],220)),(xn(1,v.c.length),u(v.c[1],220)),h,o):null}function qut(e){var t,n,r,s,o,h;for(Mu(e.a,new bL),n=new C(e.a);n.a=b.Math.abs(r.b)?(r.b=0,o.d+o.a>h.d&&o.dh.c&&o.c0){if(t=new O2e(e.i,e.g),n=e.i,o=n<100?null:new _p(n),e.ij())for(r=0;r0){for(d=e.g,x=e.i,A_(e),o=x<100?null:new _p(x),r=0;r>13|(e.m&15)<<9,s=e.m>>4&8191,o=e.m>>17|(e.h&255)<<5,h=(e.h&1048320)>>8,d=t.l&8191,v=t.l>>13|(t.m&15)<<9,x=t.m>>4&8191,_=t.m>>17|(t.h&255)<<5,L=(t.h&1048320)>>8,zt=n*d,Ut=r*d,In=s*d,Rn=o*d,dr=h*d,v!=0&&(Ut+=n*v,In+=r*v,Rn+=s*v,dr+=o*v),x!=0&&(In+=n*x,Rn+=r*x,dr+=s*x),_!=0&&(Rn+=n*_,dr+=r*_),L!=0&&(dr+=n*L),z=zt&ml,q=(Ut&511)<<13,P=z+q,X=zt>>22,le=Ut>>9,Ce=(In&262143)<<4,Ee=(Rn&31)<<17,W=X+le+Ce+Ee,Ve=In>>18,nt=Rn>>5,bt=(dr&4095)<<8,Ne=Ve+nt+bt,W+=P>>22,P&=ml,Ne+=W>>22,W&=ml,Ne&=V0,fu(P,W,Ne)}function Vut(e){var t,n,r,s,o,h,d;if(d=u(St(e.j,0),11),d.g.c.length!=0&&d.e.c.length!=0)throw J(new Wo("Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges."));if(d.g.c.length!=0){for(o=gs,n=new C(d.g);n.a4)if(e.wj(t)){if(e.rk()){if(s=u(t,49),r=s.Ug(),v=r==e.e&&(e.Dk()?s.Og(s.Vg(),e.zk())==e.Ak():-1-s.Vg()==e.aj()),e.Ek()&&!v&&!r&&s.Zg()){for(o=0;o0&&(x=e.n.a/o);break;case 2:case 4:s=e.i.o.b,s>0&&(x=e.n.b/s)}Ye(e,(et(),Ew),x)}if(v=e.o,h=e.a,r)h.a=r.a,h.b=r.b,e.d=!0;else if(t!=X1&&t!=w2&&d!=uc)switch(d.g){case 1:h.a=v.a/2;break;case 2:h.a=v.a,h.b=v.b/2;break;case 3:h.a=v.a/2,h.b=v.b;break;case 4:h.b=v.b/2}else h.a=v.a/2,h.b=v.b/2}function pC(e){var t,n,r,s,o,h,d,v,x,_;if(e.ej())if(_=e.Vi(),v=e.fj(),_>0)if(t=new Vme(e.Gi()),n=_,o=n<100?null:new _p(n),FM(e,n,t.g),s=n==1?e.Zi(4,Te(t,0),null,0,v):e.Zi(6,t,null,-1,v),e.bj()){for(r=new rr(t);r.e!=r.i.gc();)o=e.dj(pr(r),o);o?(o.Ei(s),o.Fi()):e.$i(s)}else o?(o.Ei(s),o.Fi()):e.$i(s);else FM(e,e.Vi(),e.Wi()),e.$i(e.Zi(6,(hn(),bo),null,-1,v));else if(e.bj())if(_=e.Vi(),_>0){for(d=e.Wi(),x=_,FM(e,_,d),o=x<100?null:new _p(x),r=0;re.d[h.p]&&(n+=Gwe(e.b,o)*u(v.b,19).a,$p(e.a,ct(o)));for(;!TT(e.a);)yme(e.b,u(I6(e.a),19).a)}return n}function nwn(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X;for(L=new Io(u(Ft(e,(XH(),lSe)),8)),L.a=b.Math.max(L.a-n.b-n.c,0),L.b=b.Math.max(L.b-n.d-n.a,0),s=ft(Ft(e,oSe)),(s==null||(Sn(s),s<=0))&&(s=1.3),d=new st,q=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));q.e!=q.i.gc();)z=u(pr(q),33),h=new yUe(z),d.c[d.c.length]=h;switch(P=u(Ft(e,Xhe),311),P.g){case 3:X=Tbn(d,t,L.a,L.b,(x=r,Sn(s),x));break;case 1:X=Xbn(d,t,L.a,L.b,(_=r,Sn(s),_));break;default:X=swn(d,t,L.a,L.b,(v=r,Sn(s),v))}o=new H$(X),W=Sae(o,t,n,L.a,L.b,r,(Sn(s),s)),sw(e,W.a,W.b,!1,!0)}function rwn(e,t){var n,r,s,o;n=t.b,o=new Uu(n.j),s=0,r=n.j,r.c=Me(Yn,yt,1,0,5,1),Av(u(rb(e.b,(ht(),An),(qv(),mw)),15),n),s=XD(o,s,new SX,r),Av(u(rb(e.b,An,u2),15),n),s=XD(o,s,new D9,r),Av(u(rb(e.b,An,ww),15),n),Av(u(rb(e.b,$n,mw),15),n),Av(u(rb(e.b,$n,u2),15),n),s=XD(o,s,new wB,r),Av(u(rb(e.b,$n,ww),15),n),Av(u(rb(e.b,xr,mw),15),n),s=XD(o,s,new mB,r),Av(u(rb(e.b,xr,u2),15),n),s=XD(o,s,new yB,r),Av(u(rb(e.b,xr,ww),15),n),Av(u(rb(e.b,Dn,mw),15),n),s=XD(o,s,new MX,r),Av(u(rb(e.b,Dn,u2),15),n),Av(u(rb(e.b,Dn,ww),15),n)}function iwn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W;for(kr(t,"Layer size calculation",1),_=gs,x=Ds,s=!1,d=new C(e.b);d.a.5?le-=h*2*(q-.5):q<.5&&(le+=o*2*(.5-q)),s=d.d.b,leX.a-W-_&&(le=X.a-W-_),d.n.a=t+le}}function swn(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X;for(d=Me(pa,Ao,25,e.c.length,15,1),P=new $j(new GB),I3e(P,e),x=0,W=new st;P.b.c.length!=0;)if(h=u(P.b.c.length==0?null:St(P.b,0),157),x>1&&Wu(h)*Dl(h)/2>d[0]){for(o=0;od[o];)++o;q=new Zd(W,0,o+1),L=new H$(q),_=Wu(h)/Dl(h),v=Sae(L,t,new g6,n,r,s,_),Ni(Zf(L.e),v),S8(l7(P,L)),z=new Zd(W,o+1,W.c.length),I3e(P,z),W.c=Me(Yn,yt,1,0,5,1),x=0,mKe(d,d.length,0)}else X=P.b.c.length==0?null:St(P.b,0),X!=null&&iie(P,0),x>0&&(d[x]=d[x-1]),d[x]+=Wu(h)*Dl(h),++x,W.c[W.c.length]=h;return W}function awn(e){var t,n,r,s,o;if(r=u(K(e,(pt(),vu)),163),r==(mh(),l2)){for(n=new cr(fr(Xo(e).a.Kc(),new V));Vr(n);)if(t=u(Pr(n),17),!MZe(t))throw J(new M3(Poe+QD(e)+"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges."))}else if(r==Ly){for(o=new cr(fr(js(e).a.Kc(),new V));Vr(o);)if(s=u(Pr(o),17),!MZe(s))throw J(new M3(Poe+QD(e)+"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. LAST_SEPARATE nodes must not have outgoing edges."))}}function own(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q;for(kr(t,"Label dummy removal",1),r=Ue(ft(K(e,(pt(),Ok)))),s=Ue(ft(K(e,Ry))),x=u(K(e,Zl),103),v=new C(e.b);v.a0&&Zst(e,d,L);for(s=new C(L);s.a>19&&(t=U8(t),v=!v),h=agn(t),o=!1,s=!1,r=!1,e.h==MI&&e.m==0&&e.l==0)if(s=!0,o=!0,h==-1)e=hVe((D8(),B8e)),r=!0,v=!v;else return d=Y4e(e,h),v&&gie(d),n&&(s2=fu(0,0,0)),d;else e.h>>19&&(o=!0,e=U8(e),r=!0,v=!v);return h!=-1?Wsn(e,h,v,o,n):$3e(e,t)<0?(n&&(o?s2=U8(e):s2=fu(e.l,e.m,e.h)),fu(0,0,0)):Q2n(r?e:fu(e.l,e.m,e.h),t,v,o,s,n)}function mz(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q;if(e.e&&e.c.ct.f||t.g>e.f)){for(n=0,r=0,h=e.w.a.ec().Kc();h.Ob();)s=u(h.Pb(),11),Cie(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&++n;for(d=e.r.a.ec().Kc();d.Ob();)s=u(d.Pb(),11),Cie(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&--n;for(v=t.w.a.ec().Kc();v.Ob();)s=u(v.Pb(),11),Cie(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&++r;for(o=t.r.a.ec().Kc();o.Ob();)s=u(o.Pb(),11),Cie(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&--r;n=0)return s=bon(e,t.substr(1,h-1)),_=t.substr(h+1,v-(h+1)),hyn(e,_,s)}else{if(n=-1,H8e==null&&(H8e=new RegExp("\\d")),H8e.test(String.fromCharCode(d))&&(n=Wbe(t,Nu(46),v-1),n>=0)){r=u(Ire(e,Eet(e,t.substr(1,n-1)),!1),58),x=0;try{x=Wl(t.substr(n+1),$a,Ei)}catch(P){throw P=ts(P),we(P,127)?(o=P,J(new D$(o))):J(P)}if(x=0)return n;switch(Dv(Po(e,n))){case 2:{if(an("",Ag(e,n.Hj()).ne())){if(v=QM(Po(e,n)),d=m8(Po(e,n)),_=n5e(e,t,v,d),_)return _;for(s=L5e(e,t),h=0,L=s.gc();h1)throw J(new Ln(eO));for(_=pu(e.e.Tg(),t),r=u(e.g,119),h=0;h1,x=new N1(P.b);nc(x.a)||nc(x.b);)v=u(nc(x.a)?Y(x.a):Y(x.b),17),L=v.c==P?v.d:v.c,b.Math.abs(sc(ie(re(na,1),Qe,8,0,[L.i.n,L.n,L.a])).b-h.b)>1&&lpn(e,v,h,o,P)}}function mwn(e){var t,n,r,s,o,h;if(s=new Ea(e.e,0),r=new Ea(e.a,0),e.d)for(n=0;npce;){for(o=t,h=0;b.Math.abs(t-o)0),s.a.Xb(s.c=--s.b),Bbn(e,e.b-h,o,r,s),Qn(s.b0),r.a.Xb(r.c=--r.b)}if(!e.d)for(n=0;n0?(e.f[_.p]=z/(_.e.c.length+_.g.c.length),e.c=b.Math.min(e.c,e.f[_.p]),e.b=b.Math.max(e.b,e.f[_.p])):d&&(e.f[_.p]=z)}}function kwn(e){e.b=null,e.bb=null,e.fb=null,e.qb=null,e.a=null,e.c=null,e.d=null,e.e=null,e.f=null,e.n=null,e.M=null,e.L=null,e.Q=null,e.R=null,e.K=null,e.db=null,e.eb=null,e.g=null,e.i=null,e.j=null,e.k=null,e.gb=null,e.o=null,e.p=null,e.q=null,e.r=null,e.$=null,e.ib=null,e.S=null,e.T=null,e.t=null,e.s=null,e.u=null,e.v=null,e.w=null,e.B=null,e.A=null,e.C=null,e.D=null,e.F=null,e.G=null,e.H=null,e.I=null,e.J=null,e.P=null,e.Z=null,e.U=null,e.V=null,e.W=null,e.X=null,e.Y=null,e._=null,e.ab=null,e.cb=null,e.hb=null,e.nb=null,e.lb=null,e.mb=null,e.ob=null,e.pb=null,e.jb=null,e.kb=null,e.N=!1,e.O=!1}function xwn(e,t,n){var r,s,o,h;for(kr(n,"Graph transformation ("+e.a+")",1),h=Pv(t.a),o=new C(t.b);o.a0&&(e.a=v+(z-1)*o,t.c.b+=e.a,t.f.b+=e.a)),q.a.gc()!=0&&(P=new Hne(1,o),z=t6e(P,t,q,W,t.f.b+v-t.c.b),z>0&&(t.f.b+=v+(z-1)*o))}function x7(e,t){var n,r,s,o;o=e.F,t==null?(e.F=null,Y8(e,null)):(e.F=(Sn(t),t),r=pd(t,Nu(60)),r!=-1?(s=t.substr(0,r),pd(t,Nu(46))==-1&&!an(s,sk)&&!an(s,HC)&&!an(s,mG)&&!an(s,zC)&&!an(s,GC)&&!an(s,qC)&&!an(s,VC)&&!an(s,UC)&&(s=Odt),n=cj(t,Nu(62)),n!=-1&&(s+=""+t.substr(n+1)),Y8(e,s)):(s=t,pd(t,Nu(46))==-1&&(r=pd(t,Nu(91)),r!=-1&&(s=t.substr(0,r)),!an(s,sk)&&!an(s,HC)&&!an(s,mG)&&!an(s,zC)&&!an(s,GC)&&!an(s,qC)&&!an(s,VC)&&!an(s,UC)?(s=Odt,r!=-1&&(s+=""+t.substr(r))):s=t),Y8(e,s),s==t&&(e.F=e.D))),e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,5,o,t))}function Twn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;if(W=t.b.c.length,!(W<3)){for(z=Me(Lr,Jr,25,W,15,1),L=0,_=new C(t.b);_.a<_.c.c.length;)x=u(Y(_),29),z[L++]=x.a.c.length;for(P=new Ea(t.b,2),r=1;rh)&&Gs(e.b,u(X.b,17));++d}o=h}}}function Z5e(e,t){var n;if(t==null||an(t,Pu)||t.length==0&&e.k!=(Ng(),Pk))return null;switch(e.k.g){case 1:return AH(t,j7)?(Mn(),U7):AH(t,Mce)?(Mn(),Sb):null;case 2:try{return ct(Wl(t,$a,Ei))}catch(r){if(r=ts(r),we(r,127))return null;throw J(r)}case 4:try{return ry(t)}catch(r){if(r=ts(r),we(r,127))return null;throw J(r)}case 3:return t;case 5:return Dnt(e),Rat(e,t);case 6:return Dnt(e),N0n(e,e.a,t);case 7:try{return n=Udn(e),n.Jf(t),n}catch(r){if(r=ts(r),we(r,32))return null;throw J(r)}default:throw J(new Wo("Invalid type set for this layout option."))}}function _wn(e){M_();var t,n,r,s,o,h,d;for(d=new aHe,n=new C(e);n.a=d.b.c)&&(d.b=t),(!d.c||t.c<=d.c.c)&&(d.d=d.c,d.c=t),(!d.e||t.d>=d.e.d)&&(d.e=t),(!d.f||t.d<=d.f.d)&&(d.f=t);return r=new IH((V8(),vw)),sD(e,jpt,new Al(ie(re(dO,1),yt,369,0,[r]))),h=new IH(_y),sD(e,Fpt,new Al(ie(re(dO,1),yt,369,0,[h]))),s=new IH(Ty),sD(e,Rpt,new Al(ie(re(dO,1),yt,369,0,[s]))),o=new IH(O4),sD(e,Bpt,new Al(ie(re(dO,1),yt,369,0,[o]))),Use(r.c,vw),Use(s.c,Ty),Use(o.c,O4),Use(h.c,_y),d.a.c=Me(Yn,yt,1,0,5,1),Rs(d.a,r.c),Rs(d.a,nb(s.c)),Rs(d.a,o.c),Rs(d.a,nb(h.c)),d}function J5e(e){var t;switch(e.d){case 1:{if(e.hj())return e.o!=-2;break}case 2:{if(e.hj())return e.o==-2;break}case 3:case 5:case 4:case 6:case 7:return e.o>-2;default:return!1}switch(t=e.gj(),e.p){case 0:return t!=null&&It(Mt(t))!=XT(e.k,0);case 1:return t!=null&&u(t,217).a!=Or(e.k)<<24>>24;case 2:return t!=null&&u(t,172).a!=(Or(e.k)&Ss);case 6:return t!=null&&XT(u(t,162).a,e.k);case 5:return t!=null&&u(t,19).a!=Or(e.k);case 7:return t!=null&&u(t,184).a!=Or(e.k)<<16>>16;case 3:return t!=null&&Ue(ft(t))!=e.j;case 4:return t!=null&&u(t,155).a!=e.j;default:return t==null?e.n!=null:!Ci(t,e.n)}}function xI(e,t,n){var r,s,o,h;return e.Fk()&&e.Ek()&&(h=One(e,u(n,56)),je(h)!==je(n))?(e.Oi(t),e.Ui(t,EJe(e,t,h)),e.rk()&&(o=(s=u(n,49),e.Dk()?e.Bk()?s.ih(e.b,go(u(gn(Su(e.b),e.aj()),18)).n,u(gn(Su(e.b),e.aj()).Yj(),26).Bj(),null):s.ih(e.b,Ji(s.Tg(),go(u(gn(Su(e.b),e.aj()),18))),null,null):s.ih(e.b,-1-e.aj(),null,null)),!u(h,49).eh()&&(o=(r=u(h,49),e.Dk()?e.Bk()?r.gh(e.b,go(u(gn(Su(e.b),e.aj()),18)).n,u(gn(Su(e.b),e.aj()).Yj(),26).Bj(),o):r.gh(e.b,Ji(r.Tg(),go(u(gn(Su(e.b),e.aj()),18))),null,o):r.gh(e.b,-1-e.aj(),null,o))),o&&o.Fi()),Ll(e.b)&&e.$i(e.Zi(9,n,h,t,!1)),h):n}function Yut(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;for(_=Ue(ft(K(e,(pt(),Sw)))),r=Ue(ft(K(e,ZTe))),P=new rl,Ye(P,Sw,_+r),x=t,le=x.d,W=x.c.i,Ce=x.d.i,X=F2e(W.c),Ee=F2e(Ce.c),s=new st,L=X;L<=Ee;L++)d=new H0(e),T0(d,(zn(),ca)),Ye(d,(et(),Mi),x),Ye(d,bs,(wa(),tu)),Ye(d,eV,P),z=u(St(e.b,L),29),L==X?ey(d,z.a.c.length-n,z):No(d,z),Ne=Ue(ft(K(x,Hg))),Ne<0&&(Ne=0,Ye(x,Hg,Ne)),d.o.b=Ne,q=b.Math.floor(Ne/2),h=new $c,Vs(h,(ht(),Dn)),rc(h,d),h.n.b=q,v=new $c,Vs(v,$n),rc(v,d),v.n.b=q,ba(x,h),o=new Iv,Ho(o,x),Ye(o,Fo,null),Va(o,v),ba(o,le),Aln(d,x,o),s.c[s.c.length]=o,x=o;return s}function Eae(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;for(v=u(Og(e,(ht(),Dn)).Kc().Pb(),11).e,z=u(Og(e,$n).Kc().Pb(),11).g,d=v.c.length,Ee=D1(u(St(e.j,0),11));d-- >0;){for(W=(xn(0,v.c.length),u(v.c[0],17)),s=(xn(0,z.c.length),u(z.c[0],17)),Ce=s.d.e,o=Yo(Ce,s,0),Itn(W,s.d,o),Va(s,null),ba(s,null),q=W.a,t&&ci(q,new Io(Ee)),r=ii(s.a,0);r.b!=r.d.c;)n=u(ri(r),8),ci(q,new Io(n));for(le=W.b,P=new C(s.b);P.a0&&(h=b.Math.max(h,Ett(e.C.b+r.d.b,s))),_=r,L=s,P=o;e.C&&e.C.c>0&&(z=P+e.C.c,x&&(z+=_.d.c),h=b.Math.max(h,(S1(),Ef(z1),b.Math.abs(L-1)<=z1||L==1||isNaN(L)&&isNaN(1)?0:z/(1-L)))),n.n.b=0,n.a.a=h}function Qut(e,t){var n,r,s,o,h,d,v,x,_,L,P,z;if(n=u(_o(e.b,t),124),v=u(u(Ii(e.r,t),21),84),v.dc()){n.n.d=0,n.n.a=0;return}for(x=e.u.Hc((ol(),Z0)),h=0,e.A.Hc((Bl(),Hb))&&Mct(e,t),d=v.Kc(),_=null,P=0,L=0;d.Ob();)r=u(d.Pb(),111),o=Ue(ft(r.b.We((uj(),WG)))),s=r.b.rf().b,_?(z=L+_.d.a+e.w+r.d.d,h=b.Math.max(h,(S1(),Ef(z1),b.Math.abs(P-o)<=z1||P==o||isNaN(P)&&isNaN(o)?0:z/(o-P)))):e.C&&e.C.d>0&&(h=b.Math.max(h,Ett(e.C.d+r.d.d,o))),_=r,P=o,L=s;e.C&&e.C.a>0&&(z=L+e.C.a,x&&(z+=_.d.a),h=b.Math.max(h,(S1(),Ef(z1),b.Math.abs(P-1)<=z1||P==1||isNaN(P)&&isNaN(1)?0:z/(1-P)))),n.n.d=0,n.a.b=h}function Zut(e,t,n){var r,s,o,h,d,v;for(this.g=e,d=t.d.length,v=n.d.length,this.d=Me(h0,Bg,10,d+v,0,1),h=0;h0?Xre(this,this.f/this.a):A1(t.g,t.d[0]).a!=null&&A1(n.g,n.d[0]).a!=null?Xre(this,(Ue(A1(t.g,t.d[0]).a)+Ue(A1(n.g,n.d[0]).a))/2):A1(t.g,t.d[0]).a!=null?Xre(this,A1(t.g,t.d[0]).a):A1(n.g,n.d[0]).a!=null&&Xre(this,A1(n.g,n.d[0]).a)}function Cwn(e,t){var n,r,s,o,h,d,v,x,_,L;for(e.a=new iYe(tsn(RS)),r=new C(t.a);r.a=1&&(X-h>0&&L>=0?(v.n.a+=W,v.n.b+=o*h):X-h<0&&_>=0&&(v.n.a+=W*X,v.n.b+=o));e.o.a=t.a,e.o.b=t.b,Ye(e,(pt(),Ib),(Bl(),r=u(Qf(qS),9),new hh(r,u(wf(r,r.length),9),0)))}function Mwn(e,t,n,r,s,o){var h;if(!(t==null||!$ie(t,OAe,NAe)))throw J(new Ln("invalid scheme: "+t));if(!e&&!(n!=null&&pd(n,Nu(35))==-1&&n.length>0&&(zr(0,n.length),n.charCodeAt(0)!=47)))throw J(new Ln("invalid opaquePart: "+n));if(e&&!(t!=null&&gM(ZV,t.toLowerCase()))&&!(n==null||!$ie(n,KS,YS)))throw J(new Ln(ydt+n));if(e&&t!=null&&gM(ZV,t.toLowerCase())&&!Ehn(n))throw J(new Ln(ydt+n));if(!Son(r))throw J(new Ln("invalid device: "+r));if(!yan(s))throw h=s==null?"invalid segments: null":"invalid segment: "+ban(s),J(new Ln(h));if(!(o==null||pd(o,Nu(35))==-1))throw J(new Ln("invalid query: "+o))}function Dwn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le;for(kr(t,"Calculate Graph Size",1),t.n&&e&&yf(t,kf(e),(Pl(),nh)),d=O7,v=O7,o=Exe,h=Exe,L=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));L.e!=L.i.gc();)x=u(pr(L),33),q=x.i,W=x.j,le=x.g,r=x.f,s=u(Ft(x,(bi(),WO)),142),d=b.Math.min(d,q-s.b),v=b.Math.min(v,W-s.d),o=b.Math.max(o,q+le+s.c),h=b.Math.max(h,W+r+s.a);for(z=u(Ft(e,(bi(),Fb)),116),P=new Pt(d-z.b,v-z.d),_=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));_.e!=_.i.gc();)x=u(pr(_),33),Du(x,x.i-P.a),Iu(x,x.j-P.b);X=o-d+(z.b+z.c),n=h-v+(z.d+z.a),zv(e,X),Hv(e,n),t.n&&e&&yf(t,kf(e),(Pl(),nh))}function tlt(e){var t,n,r,s,o,h,d,v,x,_;for(r=new st,h=new C(e.e.a);h.a0){OH(e,n,0),n.a+=String.fromCharCode(r),s=bcn(t,o),OH(e,n,s),o+=s-1;continue}r==39?o+11)for(W=Me(Lr,Jr,25,e.b.b.c.length,15,1),L=0,x=new C(e.b.b);x.a=d&&s<=v)d<=s&&o<=v?(n[_++]=s,n[_++]=o,r+=2):d<=s?(n[_++]=s,n[_++]=v,e.b[r]=v+1,h+=2):o<=v?(n[_++]=d,n[_++]=o,r+=2):(n[_++]=d,n[_++]=v,e.b[r]=v+1);else if(vJp)&&d<10);$pe(e.c,new dp),nlt(e),yZt(e.c),Awn(e.f)}function Pwn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X;if(It(Mt(K(n,(pt(),Oy)))))for(d=new C(n.j);d.a=2){for(v=ii(n,0),h=u(ri(v),8),d=u(ri(v),8);d.a0&&ND(x,!0,(wo(),Df)),d.k==(zn(),Ls)&&SYe(x),Si(e.f,d,t)}}function jwn(e,t,n){var r,s,o,h,d,v,x,_,L,P;switch(kr(n,"Node promotion heuristic",1),e.g=t,Vmn(e),e.q=u(K(t,(pt(),Wle)),260),_=u(K(e.g,FTe),19).a,o=new JP,e.q.g){case 2:case 1:k7(e,o);break;case 3:for(e.q=(f4(),oV),k7(e,o),v=0,d=new C(e.a);d.ae.j&&(e.q=LO,k7(e,o));break;case 4:for(e.q=(f4(),oV),k7(e,o),x=0,s=new C(e.b);s.ae.k&&(e.q=MO,k7(e,o));break;case 6:P=_s(b.Math.ceil(e.f.length*_/100)),k7(e,new yp(P));break;case 5:L=_s(b.Math.ceil(e.d*_/100)),k7(e,new Xf(L));break;default:k7(e,o)}Ipn(e,t),ur(n)}function ilt(e,t,n){var r,s,o,h;this.j=e,this.e=r4e(e),this.o=this.j.e,this.i=!!this.o,this.p=this.i?u(St(n,Ya(this.o).p),214):null,s=u(K(e,(et(),eu)),21),this.g=s.Hc((mo(),Th)),this.b=new st,this.d=new Crt(this.e),h=u(K(this.j,Lk),230),this.q=vsn(t,h,this.e),this.k=new _Xe(this),o=O1(ie(re(o2t,1),yt,225,0,[this,this.d,this.k,this.q])),t==(Gv(),IO)&&!It(Mt(K(e,(pt(),My))))?(r=new s4e(this.e),o.c[o.c.length]=r,this.c=new Nwe(r,h,u(this.q,402))):t==IO&&It(Mt(K(e,(pt(),My))))?(r=new s4e(this.e),o.c[o.c.length]=r,this.c=new utt(r,h,u(this.q,402))):this.c=new sqe(t,this),it(o,this.c),jut(o,this.e),this.s=kyn(this.k)}function $wn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;for(L=u(sj((h=ii(new Ep(t).a.d,0),new f6(h))),86),q=L?u(K(L,(Tc(),The)),86):null,s=1;L&&q;){for(v=0,Ne=0,n=L,r=q,d=0;d=e.i?(++e.i,it(e.a,ct(1)),it(e.b,_)):(r=e.c[t.p][1],gh(e.a,x,ct(u(St(e.a,x),19).a+1-r)),gh(e.b,x,Ue(ft(St(e.b,x)))+_-r*e.e)),(e.q==(f4(),LO)&&(u(St(e.a,x),19).a>e.j||u(St(e.a,x-1),19).a>e.j)||e.q==MO&&(Ue(ft(St(e.b,x)))>e.k||Ue(ft(St(e.b,x-1)))>e.k))&&(v=!1),h=new cr(fr(Xo(t).a.Kc(),new V));Vr(h);)o=u(Pr(h),17),d=o.c.i,e.f[d.p]==x&&(L=slt(e,d),s=s+u(L.a,19).a,v=v&&It(Mt(L.b)));return e.f[t.p]=x,s=s+e.c[t.p][0],new xa(ct(s),(Mn(),!!v))}function t6e(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le;for(L=new Mr,h=new st,Sat(e,n,e.d.fg(),h,L),Sat(e,r,e.d.gg(),h,L),e.b=.2*(W=bot(ic(new vn(null,new mn(h,16)),new GQ)),X=bot(ic(new vn(null,new mn(h,16)),new qQ)),b.Math.min(W,X)),o=0,d=0;d=2&&(le=Fot(h,!0,P),!e.e&&(e.e=new $je(e)),wcn(e.e,le,h,e.b)),wst(h,P),nmn(h),z=-1,_=new C(h);_.a<_.c.c.length;)x=u(Y(_),112),!(b.Math.abs(x.s-x.c)d)}function zwn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W;for(n=u(K(e,(pt(),bs)),98),h=e.f,o=e.d,d=h.a+o.b+o.c,v=0-o.d-e.c.b,_=h.b+o.d+o.a-e.c.b,x=new st,L=new st,s=new C(t);s.a0),u(_.a.Xb(_.c=--_.b),17));o!=r&&_.b>0;)e.a[o.p]=!0,e.a[r.p]=!0,o=(Qn(_.b>0),u(_.a.Xb(_.c=--_.b),17));_.b>0&&Ol(_)}}function ult(e,t,n){var r,s,o,h,d,v,x,_,L;if(e.a!=t.Aj())throw J(new Ln($7+t.ne()+dw));if(r=Ag((Yu(),Oa),t).$k(),r)return r.Aj().Nh().Ih(r,n);if(h=Ag(Oa,t).al(),h){if(n==null)return null;if(d=u(n,15),d.dc())return"";for(L=new bg,o=d.Kc();o.Ob();)s=o.Pb(),To(L,h.Aj().Nh().Ih(h,s)),L.a+=" ";return qte(L,L.a.length-1)}if(_=Ag(Oa,t).bl(),!_.dc()){for(x=_.Kc();x.Ob();)if(v=u(x.Pb(),148),v.wj(n))try{if(L=v.Aj().Nh().Ih(v,n),L!=null)return L}catch(P){if(P=ts(P),!we(P,102))throw J(P)}throw J(new Ln("Invalid value: '"+n+"' for datatype :"+t.ne()))}return u(t,834).Fj(),n==null?null:we(n,172)?""+u(n,172).a:pl(n)==FG?PVe(WS[0],u(n,199)):Qo(n)}function Kwn(e){var t,n,r,s,o,h,d,v,x,_;for(x=new as,d=new as,o=new C(e);o.a-1){for(s=ii(d,0);s.b!=s.d.c;)r=u(ri(s),128),r.v=h;for(;d.b!=0;)for(r=u(vse(d,0),128),n=new C(r.i);n.a0&&(n+=v.n.a+v.o.a/2,++L),q=new C(v.j);q.a0&&(n/=L),le=Me(pa,Ao,25,r.a.c.length,15,1),d=0,x=new C(r.a);x.a=d&&s<=v)d<=s&&o<=v?r+=2:d<=s?(e.b[r]=v+1,h+=2):o<=v?(n[_++]=s,n[_++]=d-1,r+=2):(n[_++]=s,n[_++]=d-1,e.b[r]=v+1,h+=2);else if(v0?s-=864e5:s+=864e5,v=new Sbe(Ua(Ou(t.q.getTime()),s))),_=new xm,x=e.a.length,o=0;o=97&&r<=122||r>=65&&r<=90){for(h=o+1;h=x)throw J(new Ln("Missing trailing '"));h+10&&n.c==0&&(!t&&(t=new st),t.c[t.c.length]=n);if(t)for(;t.c.length!=0;){if(n=u(Eg(t,0),233),n.b&&n.b.c.length>0){for(o=(!n.b&&(n.b=new st),new C(n.b));o.aYo(e,n,0))return new xa(s,n)}else if(Ue(A1(s.g,s.d[0]).a)>Ue(A1(n.g,n.d[0]).a))return new xa(s,n)}for(d=(!n.e&&(n.e=new st),n.e).Kc();d.Ob();)h=u(d.Pb(),233),v=(!h.b&&(h.b=new st),h.b),jm(0,v.c.length),RT(v.c,0,n),h.c==v.c.length&&(t.c[t.c.length]=h)}return null}function glt(e,t){var n,r,s,o,h,d,v,x,_;if(e==null)return Pu;if(v=t.a.zc(e,t),v!=null)return"[...]";for(n=new ib(io,"[","]"),s=e,o=0,h=s.length;o=14&&_<=16))?t.a._b(r)?(n.a?Yr(n.a,n.b):n.a=new Fl(n.d),ZT(n.a,"[...]")):(d=tb(r),x=new l_(t),O0(n,glt(d,x))):we(r,177)?O0(n,V1n(u(r,177))):we(r,190)?O0(n,Nhn(u(r,190))):we(r,195)?O0(n,qfn(u(r,195))):we(r,2012)?O0(n,Phn(u(r,2012))):we(r,48)?O0(n,q1n(u(r,48))):we(r,364)?O0(n,idn(u(r,364))):we(r,832)?O0(n,G1n(u(r,832))):we(r,104)&&O0(n,z1n(u(r,104))):O0(n,r==null?Pu:Qo(r));return n.a?n.e.length==0?n.a.a:n.a.a+(""+n.e):n.c}function plt(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;for(d=d4(t,!1,!1),le=iI(d),r&&(le=BD(le)),Ee=Ue(ft(Ft(t,(K_(),Rue)))),X=(Qn(le.b!=0),u(le.a.a.c,8)),L=u(s1(le,1),8),le.b>2?(_=new st,Rs(_,new Zd(le,1,le.b)),o=Klt(_,Ee+e.a),Ce=new zse(o),Ho(Ce,t),n.c[n.c.length]=Ce):r?Ce=u(er(e.b,n0(t)),266):Ce=u(er(e.b,Kp(t)),266),v=n0(t),r&&(v=Kp(t)),h=l1n(X,v),x=Ee+e.a,h.a?(x+=b.Math.abs(X.b-L.b),W=new Pt(L.a,(L.b+X.b)/2)):(x+=b.Math.abs(X.a-L.a),W=new Pt((L.a+X.a)/2,L.b)),r?Si(e.d,t,new C3e(Ce,h,W,x)):Si(e.c,t,new C3e(Ce,h,W,x)),Si(e.b,t,Ce),q=(!t.n&&(t.n=new at(Jo,t,1,7)),t.n),z=new rr(q);z.e!=z.i.gc();)P=u(pr(z),137),s=pI(e,P,!0,0,0),n.c[n.c.length]=s}function nmn(e){var t,n,r,s,o,h,d,v,x,_;for(x=new st,d=new st,h=new C(e);h.a-1){for(o=new C(d);o.a0)&&(qR(v,b.Math.min(v.o,s.o-1)),hT(v,v.i-1),v.i==0&&(d.c[d.c.length]=v))}}function E7(e,t,n){var r,s,o,h,d,v,x;if(x=e.c,!t&&(t=FAe),e.c=t,e.Db&4&&!(e.Db&1)&&(v=new oa(e,1,2,x,e.c),n?n.Ei(v):n=v),x!=t){if(we(e.Cb,284))e.Db>>16==-10?n=u(e.Cb,284).nk(t,n):e.Db>>16==-15&&(!t&&(t=(on(),Z1)),!x&&(x=(on(),Z1)),e.Cb.nh()&&(v=new N0(e.Cb,1,13,x,t,Dg(gl(u(e.Cb,59)),e),!1),n?n.Ei(v):n=v));else if(we(e.Cb,88))e.Db>>16==-23&&(we(t,88)||(t=(on(),sf)),we(x,88)||(x=(on(),sf)),e.Cb.nh()&&(v=new N0(e.Cb,1,10,x,t,Dg(jc(u(e.Cb,26)),e),!1),n?n.Ei(v):n=v));else if(we(e.Cb,444))for(d=u(e.Cb,836),h=(!d.b&&(d.b=new rF(new Kee)),d.b),o=(r=new ob(new dg(h.a).a),new iF(r));o.a.b;)s=u($v(o.a).cd(),87),n=E7(s,nz(s,d),n)}return n}function rmn(e,t){var n,r,s,o,h,d,v,x,_,L,P;for(h=It(Mt(Ft(e,(pt(),Oy)))),P=u(Ft(e,Py),21),v=!1,x=!1,L=new rr((!e.c&&(e.c=new at(xl,e,9,9)),e.c));L.e!=L.i.gc()&&(!v||!x);){for(o=u(pr(L),118),d=0,s=Pp(B1(ie(re(q1,1),yt,20,0,[(!o.d&&(o.d=new wn(ra,o,8,5)),o.d),(!o.e&&(o.e=new wn(ra,o,7,4)),o.e)])));Vr(s)&&(r=u(Pr(s),79),_=h&&ew(r)&&It(Mt(Ft(r,Db))),n=Uut((!r.b&&(r.b=new wn(mr,r,4,7)),r.b),o)?e==us(zo(u(Te((!r.c&&(r.c=new wn(mr,r,5,8)),r.c),0),82))):e==us(zo(u(Te((!r.b&&(r.b=new wn(mr,r,4,7)),r.b),0),82))),!((_||n)&&(++d,d>1))););(d>0||P.Hc((ol(),Z0))&&(!o.n&&(o.n=new at(Jo,o,1,7)),o.n).i>0)&&(v=!0),d>1&&(x=!0)}v&&t.Fc((mo(),Th)),x&&t.Fc((mo(),oS))}function blt(e){var t,n,r,s,o,h,d,v,x,_,L,P;if(P=u(Ft(e,(bi(),Rb)),21),P.dc())return null;if(d=0,h=0,P.Hc((Bl(),tN))){for(_=u(Ft(e,BS),98),r=2,n=2,s=2,o=2,t=us(e)?u(Ft(us(e),Mw),103):u(Ft(e,Mw),103),x=new rr((!e.c&&(e.c=new at(xl,e,9,9)),e.c));x.e!=x.i.gc();)if(v=u(pr(x),118),L=u(Ft(v,t5),61),L==(ht(),uc)&&(L=$5e(v,t),So(v,t5,L)),_==(wa(),tu))switch(L.g){case 1:r=b.Math.max(r,v.i+v.g);break;case 2:n=b.Math.max(n,v.j+v.f);break;case 3:s=b.Math.max(s,v.i+v.g);break;case 4:o=b.Math.max(o,v.j+v.f)}else switch(L.g){case 1:r+=v.g+2;break;case 2:n+=v.f+2;break;case 3:s+=v.g+2;break;case 4:o+=v.f+2}d=b.Math.max(r,s),h=b.Math.max(n,o)}return sw(e,d,h,!0,!0)}function Tae(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;for(Ce=u(zl(j$(Vi(new vn(null,new mn(t.d,16)),new Gx(n)),new iM(n)),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),L=Ei,_=$a,v=new C(t.b.j);v.a0,x?x&&(P=le.p,h?++P:--P,L=u(St(le.c.a,P),10),r=ont(L),z=!(Kse(r,nt,n[0])||RKe(r,nt,n[0]))):z=!0),q=!1,Ve=t.D.i,Ve&&Ve.c&&d.e&&(_=h&&Ve.p>0||!h&&Ve.p0&&(t.a+=io),yz(u(pr(d),160),t);for(t.a+=Ioe,v=new _6((!r.c&&(r.c=new wn(mr,r,5,8)),r.c));v.e!=v.i.gc();)v.e>0&&(t.a+=io),yz(u(pr(v),160),t);t.a+=")"}}function umn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z;if(o=u(K(e,(et(),Mi)),79),!!o){for(r=e.a,s=new Io(n),Ni(s,Jln(e)),z8(e.d.i,e.c.i)?(P=e.c,L=sc(ie(re(na,1),Qe,8,0,[P.n,P.a])),da(L,n)):L=D1(e.c),ks(r,L,r.a,r.a.a),z=D1(e.d),K(e,Rle)!=null&&Ni(z,u(K(e,Rle),8)),ks(r,z,r.c.b,r.c),Um(r,s),h=d4(o,!0,!0),W$(h,u(Te((!o.b&&(o.b=new wn(mr,o,4,7)),o.b),0),82)),K$(h,u(Te((!o.c&&(o.c=new wn(mr,o,5,8)),o.c),0),82)),mI(r,h),_=new C(e.b);_.a<_.c.c.length;)x=u(Y(_),70),d=u(K(x,Mi),137),zv(d,x.o.a),Hv(d,x.o.b),C1(d,x.n.a+s.a,x.n.b+s.b),So(d,(U6(),nle),Mt(K(x,nle)));v=u(K(e,(pt(),Fo)),74),v?(Um(v,s),So(o,Fo,v)):So(o,Fo,null),t==($0(),jk)?So(o,K0,jk):So(o,K0,null)}}function lmn(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce;for(z=t.c.length,P=0,L=new C(e.b);L.a=0){for(v=null,d=new Ea(_.a,x+1);d.bh?1:yv(isNaN(0),isNaN(h)))<0&&(Ef(Md),(b.Math.abs(h-1)<=Md||h==1||isNaN(h)&&isNaN(1)?0:h<1?-1:h>1?1:yv(isNaN(h),isNaN(1)))<0)&&(Ef(Md),(b.Math.abs(0-d)<=Md||d==0||isNaN(0)&&isNaN(d)?0:0d?1:yv(isNaN(0),isNaN(d)))<0)&&(Ef(Md),(b.Math.abs(d-1)<=Md||d==1||isNaN(d)&&isNaN(1)?0:d<1?-1:d>1?1:yv(isNaN(d),isNaN(1)))<0)),o)}function hmn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt;for(L=new iwe(new Se(e));L.b!=L.c.a.d;)for(_=mJe(L),d=u(_.d,56),t=u(_.e,56),h=d.Tg(),W=0,Ne=(h.i==null&&xd(h),h.i).length;W=0&&W=x.c.c.length?_=Fwe((zn(),Hs),ca):_=Fwe((zn(),ca),ca),_*=2,o=n.a.g,n.a.g=b.Math.max(o,o+(_-o)),h=n.b.g,n.b.g=b.Math.max(h,h+(_-h)),s=t}}function gmn(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve;for(Ve=PWe(e),_=new st,d=e.c.length,L=d-1,P=d+1;Ve.a.c!=0;){for(;n.b!=0;)Ee=(Qn(n.b!=0),u(bh(n,n.a.a),112)),k_(Ve.a,Ee)!=null,Ee.g=L--,H5e(Ee,t,n,r);for(;t.b!=0;)Ne=(Qn(t.b!=0),u(bh(t,t.a.a),112)),k_(Ve.a,Ne)!=null,Ne.g=P++,H5e(Ne,t,n,r);for(x=$a,le=(h=new o_(new i_(new m(Ve.a).a).b),new g(h));wM(le.a.a);){if(X=(o=dj(le.a),u(o.cd(),112)),!r&&X.b>0&&X.a<=0){_.c=Me(Yn,yt,1,0,5,1),_.c[_.c.length]=X;break}W=X.i-X.d,W>=x&&(W>x&&(_.c=Me(Yn,yt,1,0,5,1),x=W),_.c[_.c.length]=X)}_.c.length!=0&&(v=u(St(_,BH(s,_.c.length)),112),k_(Ve.a,v)!=null,v.g=P++,H5e(v,t,n,r),_.c=Me(Yn,yt,1,0,5,1))}for(Ce=e.c.length+1,q=new C(e);q.a0&&(P.d+=_.n.d,P.d+=_.d),P.a>0&&(P.a+=_.n.a,P.a+=_.d),P.b>0&&(P.b+=_.n.b,P.b+=_.d),P.c>0&&(P.c+=_.n.c,P.c+=_.d),P}function wlt(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q;for(P=n.d,L=n.c,o=new Pt(n.f.a+n.d.b+n.d.c,n.f.b+n.d.d+n.d.a),h=o.b,x=new C(e.a);x.a0&&(e.c[t.c.p][t.p].d+=vl(e.i,24)*NI*.07000000029802322-.03500000014901161,e.c[t.c.p][t.p].a=e.c[t.c.p][t.p].d/e.c[t.c.p][t.p].b)}}function xmn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;for(q=new C(e);q.ar.d,r.d=b.Math.max(r.d,t),d&&n&&(r.d=b.Math.max(r.d,r.a),r.a=r.d+s);break;case 3:n=t>r.a,r.a=b.Math.max(r.a,t),d&&n&&(r.a=b.Math.max(r.a,r.d),r.d=r.a+s);break;case 2:n=t>r.c,r.c=b.Math.max(r.c,t),d&&n&&(r.c=b.Math.max(r.b,r.c),r.b=r.c+s);break;case 4:n=t>r.b,r.b=b.Math.max(r.b,t),d&&n&&(r.b=b.Math.max(r.b,r.c),r.c=r.b+s)}}}function Cmn(e){var t,n,r,s,o,h,d,v,x,_,L;for(x=new C(e);x.a0||_.j==Dn&&_.e.c.length-_.g.c.length<0)){t=!1;break}for(s=new C(_.g);s.a=x&&Ve>=X&&(P+=q.n.b+W.n.b+W.a.b-Ne,++d));if(n)for(h=new C(Ce.e);h.a=x&&Ve>=X&&(P+=q.n.b+W.n.b+W.a.b-Ne,++d))}d>0&&(nt+=P/d,++z)}z>0?(t.a=s*nt/z,t.g=z):(t.a=0,t.g=0)}function Amn(e,t){var n,r,s,o,h,d,v,x,_,L,P;for(s=new C(e.a.b);s.aDs||t.o==Pb&&_0&&Du(le,Ne*nt),Ve>0&&Iu(le,Ve*bt);for(B_(e.b,new sm),t=new st,d=new ob(new dg(e.c).a);d.b;)h=$v(d),r=u(h.cd(),79),n=u(h.dd(),395).a,s=d4(r,!1,!1),L=mst(n0(r),iI(s),n),mI(L,s),Ee=Dst(r),Ee&&Yo(t,Ee,0)==-1&&(t.c[t.c.length]=Ee,PYe(Ee,(Qn(L.b!=0),u(L.a.a.c,8)),n));for(X=new ob(new dg(e.d).a);X.b;)W=$v(X),r=u(W.cd(),79),n=u(W.dd(),395).a,s=d4(r,!1,!1),L=mst(Kp(r),BD(iI(s)),n),L=BD(L),mI(L,s),Ee=Ist(r),Ee&&Yo(t,Ee,0)==-1&&(t.c[t.c.length]=Ee,PYe(Ee,(Qn(L.b!=0),u(L.c.b.c,8)),n))}function klt(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt;if(n.c.length!=0){for(z=new st,P=new C(n);P.a1)for(z=new Y5e(q,Ee,r),Da(Ee,new fqe(e,z)),h.c[h.c.length]=z,L=Ee.a.ec().Kc();L.Ob();)_=u(L.Pb(),46),Au(o,_.b);if(d.a.gc()>1)for(z=new Y5e(q,d,r),Da(d,new dqe(e,z)),h.c[h.c.length]=z,L=d.a.ec().Kc();L.Ob();)_=u(L.Pb(),46),Au(o,_.b)}}function Elt(e){wv(e,new gb(gF(gv(hv(dv(fv(new lg,Dd),"ELK Radial"),'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new tZ),Dd))),dt(e,Dd,iG,xt(qmt)),dt(e,Dd,py,xt(Vmt)),dt(e,Dd,E4,xt($mt)),dt(e,Dd,gk,xt(Hmt)),dt(e,Dd,dk,xt(zmt)),dt(e,Dd,P7,xt(jmt)),dt(e,Dd,CC,xt(aCe)),dt(e,Dd,B7,xt(Gmt)),dt(e,Dd,yce,xt(Ohe)),dt(e,Dd,mce,xt(Nhe)),dt(e,Dd,Lxe,xt(oCe)),dt(e,Dd,_xe,xt(kV)),dt(e,Dd,Cxe,xt(xV)),dt(e,Dd,Sxe,xt(BO)),dt(e,Dd,Axe,xt(cCe))}function i6e(e){var t;if(this.r=hJt(new ka,new Qi),this.b=new V_(u(Nr(ao),290)),this.p=new V_(u(Nr(ao),290)),this.i=new V_(u(Nr(Ogt),290)),this.e=e,this.o=new Io(e.rf()),this.D=e.Df()||It(Mt(e.We((bi(),UO)))),this.A=u(e.We((bi(),Rb)),21),this.B=u(e.We(p2),21),this.q=u(e.We(BS),98),this.u=u(e.We(Hy),21),!wfn(this.u))throw J(new M3("Invalid port label placement: "+this.u));if(this.v=It(Mt(e.We($Se))),this.j=u(e.We(J4),21),!z0n(this.j))throw J(new M3("Invalid node label placement: "+this.j));this.n=u(Q_(e,SSe),116),this.k=Ue(ft(Q_(e,RV))),this.d=Ue(ft(Q_(e,qSe))),this.w=Ue(ft(Q_(e,YSe))),this.s=Ue(ft(Q_(e,VSe))),this.t=Ue(ft(Q_(e,USe))),this.C=u(Q_(e,WSe),142),this.c=2*this.d,t=!this.B.Hc((wl(),nN)),this.f=new W_(0,t,0),this.g=new W_(1,t,0),Zee(this.f,(n1(),lu),this.g)}function Rmn(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In;for(Ee=0,q=0,z=0,P=1,Ce=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));Ce.e!=Ce.i.gc();)X=u(pr(Ce),33),P+=I0(new cr(fr(z0(X).a.Kc(),new V))),zt=X.g,q=b.Math.max(q,zt),L=X.f,z=b.Math.max(z,L),Ee+=zt*L;for(W=(!e.a&&(e.a=new at(hs,e,10,11)),e.a).i,h=Ee+2*r*r*P*W,o=b.Math.sqrt(h),v=b.Math.max(o*n,q),d=b.Math.max(o/n,z),le=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));le.e!=le.i.gc();)X=u(pr(le),33),Ut=s.b+(vl(t,26)*mC+vl(t,27)*yC)*(v-X.g),In=s.b+(vl(t,26)*mC+vl(t,27)*yC)*(d-X.f),Du(X,Ut),Iu(X,In);for(bt=v+(s.b+s.c),nt=d+(s.d+s.a),Ve=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));Ve.e!=Ve.i.gc();)for(Ne=u(pr(Ve),33),_=new cr(fr(z0(Ne).a.Kc(),new V));Vr(_);)x=u(Pr(_),79),iC(x)||Fyn(x,t,bt,nt);bt+=s.b+s.c,nt+=s.d+s.a,sw(e,bt,nt,!1,!0)}function xz(e){var t,n,r,s,o,h,d,v,x,_,L;if(e==null)throw J(new gd(Pu));if(x=e,o=e.length,v=!1,o>0&&(t=(zr(0,e.length),e.charCodeAt(0)),(t==45||t==43)&&(e=e.substr(1),--o,v=t==45)),o==0)throw J(new gd(cw+x+'"'));for(;e.length>0&&(zr(0,e.length),e.charCodeAt(0)==48);)e=e.substr(1),--o;if(o>(hut(),O0t)[10])throw J(new gd(cw+x+'"'));for(s=0;s0&&(L=-parseInt(e.substr(0,r),10),e=e.substr(r),o-=r,n=!1);o>=h;){if(r=parseInt(e.substr(0,h),10),e=e.substr(h),o-=h,n)n=!1;else{if(Mc(L,d)<0)throw J(new gd(cw+x+'"'));L=ja(L,_)}L=Wp(L,r)}if(Mc(L,0)>0)throw J(new gd(cw+x+'"'));if(!v&&(L=M8(L),Mc(L,0)<0))throw J(new gd(cw+x+'"'));return L}function s6e(e,t){ZWe();var n,r,s,o,h,d,v;if(this.a=new Y2e(this),this.b=e,this.c=t,this.f=Bne(Po((Yu(),Oa),t)),this.f.dc())if((d=q3e(Oa,e))==t)for(this.e=!0,this.d=new st,this.f=new xx,this.f.Fc(_b),u(wz(wD(Oa,Gl(e)),""),26)==e&&this.f.Fc(f_(Oa,Gl(e))),s=iae(Oa,e).Kc();s.Ob();)switch(r=u(s.Pb(),170),Dv(Po(Oa,r))){case 4:{this.d.Fc(r);break}case 5:{this.f.Gc(Bne(Po(Oa,r)));break}}else if(ho(),u(t,66).Oj())for(this.e=!0,this.f=null,this.d=new st,h=0,v=(e.i==null&&xd(e),e.i).length;h=0&&h0&&(u(_o(e.b,t),124).a.b=n)}function Fmn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le;for(kr(t,"Comment pre-processing",1),n=0,v=new C(e.a);v.a0&&(v=(zr(0,t.length),t.charCodeAt(0)),v!=64)){if(v==37&&(L=t.lastIndexOf("%"),x=!1,L!=0&&(L==P-1||(x=(zr(L+1,t.length),t.charCodeAt(L+1)==46))))){if(h=t.substr(1,L-1),Ee=an("%",h)?null:o6e(h),r=0,x)try{r=Wl(t.substr(L+2),$a,Ei)}catch(Ne){throw Ne=ts(Ne),we(Ne,127)?(d=Ne,J(new D$(d))):J(Ne)}for(X=Hme(e.Wg());X.Ob();)if(q=aH(X),we(q,510)&&(s=u(q,590),Ce=s.d,(Ee==null?Ce==null:an(Ee,Ce))&&r--==0))return s;return null}if(_=t.lastIndexOf("."),z=_==-1?t:t.substr(0,_),n=0,_!=-1)try{n=Wl(t.substr(_+1),$a,Ei)}catch(Ne){if(Ne=ts(Ne),we(Ne,127))z=t;else throw J(Ne)}for(z=an("%",z)?null:o6e(z),W=Hme(e.Wg());W.Ob();)if(q=aH(W),we(q,191)&&(o=u(q,191),le=o.ne(),(z==null?le==null:an(z,le))&&n--==0))return o;return null}return Kut(e,t)}function Hmn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn;for(nt=new st,q=new C(e.b);q.a=t.length)return{done:!0};var s=t[r++];return{value:[s,n.get(s)],done:!1}}}},Upn()||(e.prototype.createObject=function(){return{}},e.prototype.get=function(t){return this.obj[":"+t]},e.prototype.set=function(t,n){this.obj[":"+t]=n},e.prototype[coe]=function(t){delete this.obj[":"+t]},e.prototype.keys=function(){var t=[];for(var n in this.obj)n.charCodeAt(0)==58&&t.push(n.substring(1));return t}),e}function Gmn(e){j5e();var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;if(e==null)return null;if(L=e.length*8,L==0)return"";for(d=L%24,z=L/24|0,P=d!=0?z+1:z,o=null,o=Me(Sh,Td,25,P*4,15,1),x=0,_=0,t=0,n=0,r=0,h=0,s=0,v=0;v>24,x=(t&3)<<24>>24,q=t&-128?(t>>2^192)<<24>>24:t>>2<<24>>24,W=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,X=r&-128?(r>>6^252)<<24>>24:r>>6<<24>>24,o[h++]=Zg[q],o[h++]=Zg[W|x<<4],o[h++]=Zg[_<<2|X],o[h++]=Zg[r&63];return d==8?(t=e[s],x=(t&3)<<24>>24,q=t&-128?(t>>2^192)<<24>>24:t>>2<<24>>24,o[h++]=Zg[q],o[h++]=Zg[x<<4],o[h++]=61,o[h++]=61):d==16&&(t=e[s],n=e[s+1],_=(n&15)<<24>>24,x=(t&3)<<24>>24,q=t&-128?(t>>2^192)<<24>>24:t>>2<<24>>24,W=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,o[h++]=Zg[q],o[h++]=Zg[W|x<<4],o[h++]=Zg[_<<2],o[h++]=61),jh(o,0,o.length)}function qmn(e,t){var n,r,s,o,h,d,v;if(e.e==0&&e.p>0&&(e.p=-(e.p-1)),e.p>$a&&$we(t,e.p-e2),h=t.q.getDate(),tD(t,1),e.k>=0&&Cen(t,e.k),e.c>=0?tD(t,e.c):e.k>=0?(v=new oye(t.q.getFullYear()-e2,t.q.getMonth(),35),r=35-v.q.getDate(),tD(t,b.Math.min(r,h))):tD(t,h),e.f<0&&(e.f=t.q.getHours()),e.b>0&&e.f<12&&(e.f+=12),RWt(t,e.f==24&&e.g?0:e.f),e.j>=0&&Rnn(t,e.j),e.n>=0&&trn(t,e.n),e.i>=0&&Qqe(t,Ua(ja(eI(Ou(t.q.getTime()),Pg),Pg),e.i)),e.a&&(s=new kF,$we(s,s.q.getFullYear()-e2-80),fte(Ou(t.q.getTime()),Ou(s.q.getTime()))&&$we(t,s.q.getFullYear()-e2+100)),e.d>=0){if(e.c==-1)n=(7+e.d-t.q.getDay())%7,n>3&&(n-=7),d=t.q.getMonth(),tD(t,t.q.getDate()+n),t.q.getMonth()!=d&&tD(t,t.q.getDate()+(n>0?-7:7));else if(t.q.getDay()!=e.d)return!1}return e.o>$a&&(o=t.q.getTimezoneOffset(),Qqe(t,Ua(Ou(t.q.getTime()),(e.o-o)*60*Pg))),!0}function Clt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;if(s=K(t,(et(),Mi)),!!we(s,239)){for(q=u(s,33),W=t.e,P=new Io(t.c),o=t.d,P.a+=o.b,P.b+=o.d,Ne=u(Ft(q,(pt(),Jq)),174),Vu(Ne,(wl(),$V))&&(z=u(Ft(q,qTe),116),jge(z,o.a),wee(z,o.d),$ge(z,o.b),Vge(z,o.c)),n=new st,_=new C(t.a);_.a<_.c.c.length;)for(v=u(Y(_),10),we(K(v,Mi),239)?Xmn(v,P):we(K(v,Mi),186)&&!W&&(r=u(K(v,Mi),118),Ce=vut(t,v,r.g,r.f),C1(r,Ce.a,Ce.b)),le=new C(v.j);le.a0&&it(e.p,_),it(e.o,_);t-=r,z=v+t,x+=t*e.e,gh(e.a,d,ct(z)),gh(e.b,d,x),e.j=b.Math.max(e.j,z),e.k=b.Math.max(e.k,x),e.d+=t,t+=W}}function ht(){ht=pe;var e;uc=new MM(EC,0),An=new MM(Oz,1),$n=new MM(woe,2),xr=new MM(moe,3),Dn=new MM(yoe,4),Q1=(hn(),new Kx((e=u(Qf(ao),9),new hh(e,u(wf(e,e.length),9),0)))),Bf=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[]))),_h=Sg(Ui($n,ie(re(ao,1),Dc,61,0,[]))),eh=Sg(Ui(xr,ie(re(ao,1),Dc,61,0,[]))),Jh=Sg(Ui(Dn,ie(re(ao,1),Dc,61,0,[]))),Ru=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[xr]))),wu=Sg(Ui($n,ie(re(ao,1),Dc,61,0,[Dn]))),Rf=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[Dn]))),ll=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[$n]))),th=Sg(Ui(xr,ie(re(ao,1),Dc,61,0,[Dn]))),Ch=Sg(Ui($n,ie(re(ao,1),Dc,61,0,[xr]))),hl=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[$n,Dn]))),Bu=Sg(Ui($n,ie(re(ao,1),Dc,61,0,[xr,Dn]))),Fu=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[xr,Dn]))),Ju=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[$n,xr]))),nu=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[$n,xr,Dn])))}function Mlt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;if(t.b!=0){for(z=new as,d=null,q=null,r=_s(b.Math.floor(b.Math.log(t.b)*b.Math.LOG10E)+1),v=0,Ee=ii(t,0);Ee.b!=Ee.d.c;)for(le=u(ri(Ee),86),je(q)!==je(K(le,(Tc(),AS)))&&(q=Hr(K(le,AS)),v=0),q!=null?d=q+YXe(v++,r):d=YXe(v++,r),Ye(le,AS,d),X=(s=ii(new Ep(le).a.d,0),new f6(s));vF(X.a);)W=u(ri(X.a),188).c,ks(z,W,z.c.b,z.c),Ye(W,AS,d);for(P=new Mr,h=0;h=v){Qn(le.b>0),le.a.Xb(le.c=--le.b);break}else W.a>x&&(s?(Rs(s.b,W.b),s.a=b.Math.max(s.a,W.a),Ol(le)):(it(W.b,L),W.c=b.Math.min(W.c,x),W.a=b.Math.max(W.a,v),s=W));s||(s=new dHe,s.c=x,s.a=v,Dm(le,s),it(s.b,L))}for(d=t.b,_=0,X=new C(r);X.ad?1:0:(e.b&&(e.b._b(o)&&(s=u(e.b.xc(o),19).a),e.b._b(v)&&(d=u(e.b.xc(v),19).a)),sd?1:0)):t.e.c.length!=0&&n.g.c.length!=0?1:-1}function Kmn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt;for(kr(t,yft,1),W=new st,nt=new st,x=new C(e.b);x.a0&&(Ee-=z),X5e(h,Ee),_=0,P=new C(h.a);P.a0),d.a.Xb(d.c=--d.b)),v=.4*r*_,!o&&d.bt.d.c){if(z=e.c[t.a.d],X=e.c[L.a.d],z==X)continue;Cf(bf(pf(vf(gf(new Nh,1),100),z),X))}}}}}function o6e(e){kae();var t,n,r,s,o,h,d,v;if(e==null)return null;if(s=pd(e,Nu(37)),s<0)return e;for(v=new Fl(e.substr(0,s)),t=Me(el,A4,25,4,15,1),d=0,r=0,h=e.length;ss+2&&die((zr(s+1,e.length),e.charCodeAt(s+1)),DAe,IAe)&&die((zr(s+2,e.length),e.charCodeAt(s+2)),DAe,IAe))if(n=kQt((zr(s+1,e.length),e.charCodeAt(s+1)),(zr(s+2,e.length),e.charCodeAt(s+2))),s+=2,r>0?(n&192)==128?t[d++]=n<<24>>24:r=0:n>=128&&((n&224)==192?(t[d++]=n<<24>>24,r=2):(n&240)==224?(t[d++]=n<<24>>24,r=3):(n&248)==240&&(t[d++]=n<<24>>24,r=4)),r>0){if(d==r){switch(d){case 2:{Bp(v,((t[0]&31)<<6|t[1]&63)&Ss);break}case 3:{Bp(v,((t[0]&15)<<12|(t[1]&63)<<6|t[2]&63)&Ss);break}}d=0,r=0}}else{for(o=0;o0){if(h+r>e.length)return!1;d=ZH(e.substr(0,h+r),t)}else d=ZH(e,t);switch(o){case 71:return d=u4(e,h,ie(re(mt,1),Qe,2,6,[fht,dht]),t),s.e=d,!0;case 77:return Ppn(e,t,s,d,h);case 76:return Bpn(e,t,s,d,h);case 69:return S1n(e,t,h,s);case 99:return A1n(e,t,h,s);case 97:return d=u4(e,h,ie(re(mt,1),Qe,2,6,["AM","PM"]),t),s.b=d,!0;case 121:return Rpn(e,t,h,d,n,s);case 100:return d<=0?!1:(s.c=d,!0);case 83:return d<0?!1:Hon(d,h,t[0],s);case 104:d==12&&(d=0);case 75:case 72:return d<0?!1:(s.f=d,s.g=!1,!0);case 107:return d<0?!1:(s.f=d,s.g=!0,!0);case 109:return d<0?!1:(s.j=d,!0);case 115:return d<0?!1:(s.n=d,!0);case 90:if(hnt&&(q.c=nt-q.b),it(h.d,new Lne(q,Rye(h,q))),Ce=t==An?b.Math.max(Ce,W.b+x.b.rf().b):b.Math.min(Ce,W.b));for(Ce+=t==An?e.t:-e.t,Ee=Jye((h.e=Ce,h)),Ee>0&&(u(_o(e.b,t),124).a.b=Ee),_=P.Kc();_.Ob();)x=u(_.Pb(),111),!(!x.c||x.c.d.c.length<=0)&&(q=x.c.i,q.c-=x.e.a,q.d-=x.e.b)}function tyn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z;for(t=new Mr,v=new rr(e);v.e!=v.i.gc();){for(d=u(pr(v),33),n=new Ys,Si(jue,d,n),z=new Rc,s=u(zl(new vn(null,new Sv(new cr(fr(hI(d).a.Kc(),new V)))),yKe(z,eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)])))),83),Vet(n,u(s.xc((Mn(),!0)),14),new _t),r=u(zl(Vi(u(s.xc(!1),15).Lc(),new hp),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[Ql]))),15),h=r.Kc();h.Ob();)o=u(h.Pb(),79),P=Dst(o),P&&(x=u(hc($o(t.f,P)),21),x||(x=Qot(P),gu(t.f,P,x)),no(n,x));for(s=u(zl(new vn(null,new Sv(new cr(fr(z0(d).a.Kc(),new V)))),yKe(z,eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[Ql])))),83),Vet(n,u(s.xc(!0),14),new Gt),r=u(zl(Vi(u(s.xc(!1),15).Lc(),new ff),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[Ql]))),15),L=r.Kc();L.Ob();)_=u(L.Pb(),79),P=Ist(_),P&&(x=u(hc($o(t.f,P)),21),x||(x=Qot(P),gu(t.f,P,x)),no(n,x))}}function nyn(e,t){pae();var n,r,s,o,h,d,v,x,_,L,P,z,q,W;if(v=Mc(e,0)<0,v&&(e=M8(e)),Mc(e,0)==0)switch(t){case 0:return"0";case 1:return L7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return z=new Tp,t<0?z.a+="0E+":z.a+="0E",z.a+=t==$a?"2147483648":""+-t,z.a}_=18,L=Me(Sh,Td,25,_+1,15,1),n=_,W=e;do x=W,W=eI(W,10),L[--n]=Or(Ua(48,Wp(x,ja(W,10))))&Ss;while(Mc(W,0)!=0);if(s=Wp(Wp(Wp(_,n),t),1),t==0)return v&&(L[--n]=45),jh(L,n,_-n);if(t>0&&Mc(s,-6)>=0){if(Mc(s,0)>=0){for(o=n+Or(s),d=_-1;d>=o;d--)L[d+1]=L[d];return L[++o]=46,v&&(L[--n]=45),jh(L,n,_-n+1)}for(h=2;fte(h,Ua(M8(s),1));h++)L[--n]=48;return L[--n]=46,L[--n]=48,v&&(L[--n]=45),jh(L,n,_-n)}return q=n+1,r=_,P=new xm,v&&(P.a+="-"),r-q>=1?(Bp(P,L[n]),P.a+=".",P.a+=jh(L,n+1,_-n-1)):P.a+=jh(L,n,_-n),P.a+="E",Mc(s,0)>0&&(P.a+="+"),P.a+=""+d_(s),P.a}function ryn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z;if(e.e.a.$b(),e.f.a.$b(),e.c.c=Me(Yn,yt,1,0,5,1),e.i.c=Me(Yn,yt,1,0,5,1),e.g.a.$b(),t)for(h=new C(t.a);h.a=1&&(Ve-x>0&&q>=0?(Du(L,L.i+Ne),Iu(L,L.j+v*x)):Ve-x<0&&z>=0&&(Du(L,L.i+Ne*Ve),Iu(L,L.j+v)));return So(e,(bi(),Rb),(Bl(),o=u(Qf(qS),9),new hh(o,u(wf(o,o.length),9),0))),new Pt(nt,_)}function Olt(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q;if(z=us(zo(u(Te((!e.b&&(e.b=new wn(mr,e,4,7)),e.b),0),82))),q=us(zo(u(Te((!e.c&&(e.c=new wn(mr,e,5,8)),e.c),0),82))),L=z==q,d=new Fa,t=u(Ft(e,(hH(),rAe)),74),t&&t.b>=2){if((!e.a&&(e.a=new at(os,e,6,6)),e.a).i==0)n=(pv(),s=new ld,s),Br((!e.a&&(e.a=new at(os,e,6,6)),e.a),n);else if((!e.a&&(e.a=new at(os,e,6,6)),e.a).i>1)for(P=new _6((!e.a&&(e.a=new at(os,e,6,6)),e.a));P.e!=P.i.gc();)J_(P);mI(t,u(Te((!e.a&&(e.a=new at(os,e,6,6)),e.a),0),202))}if(L)for(r=new rr((!e.a&&(e.a=new at(os,e,6,6)),e.a));r.e!=r.i.gc();)for(n=u(pr(r),202),x=new rr((!n.a&&(n.a=new Bs(ef,n,5)),n.a));x.e!=x.i.gc();)v=u(pr(x),469),d.a=b.Math.max(d.a,v.a),d.b=b.Math.max(d.b,v.b);for(h=new rr((!e.n&&(e.n=new at(Jo,e,1,7)),e.n));h.e!=h.i.gc();)o=u(pr(h),137),_=u(Ft(o,FS),8),_&&C1(o,_.a,_.b),L&&(d.a=b.Math.max(d.a,o.i+o.g),d.b=b.Math.max(d.b,o.j+o.f));return d}function iyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt;for(Ee=t.c.length,s=new p4(e.a,n,null,null),zt=Me(pa,Ao,25,Ee,15,1),W=Me(pa,Ao,25,Ee,15,1),q=Me(pa,Ao,25,Ee,15,1),X=0,d=0;dzt[v]&&(X=v),L=new C(e.a.b);L.az&&(o&&(q2(nt,P),q2(zt,ct(x.b-1))),ki=n.b,Ws+=P+t,P=0,_=b.Math.max(_,n.b+n.c+dr)),Du(d,ki),Iu(d,Ws),_=b.Math.max(_,ki+dr+n.c),P=b.Math.max(P,L),ki+=dr+t;if(_=b.Math.max(_,r),Rn=Ws+P+n.a,RnSd,Ut=b.Math.abs(P.b-q.b)>Sd,(!n&&zt&&Ut||n&&(zt||Ut))&&ci(X.a,Ne)),no(X.a,r),r.b==0?P=Ne:P=(Qn(r.b!=0),u(r.c.b.c,8)),xsn(z,L,W),xtt(s)==bt&&(Ya(bt.i)!=s.a&&(W=new Fa,_4e(W,Ya(bt.i),Ce)),Ye(X,Rle,W)),Ufn(z,X,Ce),_.a.zc(z,_);Va(X,Ve),ba(X,bt)}for(x=_.a.ec().Kc();x.Ob();)v=u(x.Pb(),17),Va(v,null),ba(v,null);ur(t)}function Nlt(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;if(e.gc()==1)return u(e.Xb(0),231);if(e.gc()<=0)return new k$;for(s=e.Kc();s.Ob();){for(n=u(s.Pb(),231),q=0,_=Ei,L=Ei,v=$a,x=$a,z=new C(n.e);z.ad&&(Ee=0,Ne+=h+le,h=0),q2n(W,n,Ee,Ne),t=b.Math.max(t,Ee+X.a),h=b.Math.max(h,X.b),Ee+=X.a+le;return W}function Plt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q;switch(_=new Gu,e.a.g){case 3:P=u(K(t.e,(et(),Mb)),15),z=u(K(t.j,Mb),15),q=u(K(t.f,Mb),15),n=u(K(t.e,q4),15),r=u(K(t.j,q4),15),s=u(K(t.f,q4),15),h=new st,Rs(h,P),z.Jc(new XX),Rs(h,we(z,152)?H6(u(z,152)):we(z,131)?u(z,131).a:we(z,54)?new lv(z):new Em(z)),Rs(h,q),o=new st,Rs(o,n),Rs(o,we(r,152)?H6(u(r,152)):we(r,131)?u(r,131).a:we(r,54)?new lv(r):new Em(r)),Rs(o,s),Ye(t.f,Mb,h),Ye(t.f,q4,o),Ye(t.f,z9e,t.f),Ye(t.e,Mb,null),Ye(t.e,q4,null),Ye(t.j,Mb,null),Ye(t.j,q4,null);break;case 1:no(_,t.e.a),ci(_,t.i.n),no(_,nb(t.j.a)),ci(_,t.a.n),no(_,t.f.a);break;default:no(_,t.e.a),no(_,nb(t.j.a)),no(_,t.f.a)}Rh(t.f.a),no(t.f.a,_),Va(t.f,t.e.c),d=u(K(t.e,(pt(),Fo)),74),x=u(K(t.j,Fo),74),v=u(K(t.f,Fo),74),(d||x||v)&&(L=new Gu,Kve(L,v),Kve(L,x),Kve(L,d),Ye(t.f,Fo,L)),Va(t.j,null),ba(t.j,null),Va(t.e,null),ba(t.e,null),No(t.a,null),No(t.i,null),t.g&&Plt(e,t.g)}function cyn(e){j5e();var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;if(e==null||(o=O$(e),q=Yan(o),q%4!=0))return null;if(W=q/4|0,W==0)return Me(el,A4,25,0,15,1);for(L=null,t=0,n=0,r=0,s=0,h=0,d=0,v=0,x=0,z=0,P=0,_=0,L=Me(el,A4,25,W*3,15,1);z>4)<<24>>24,L[P++]=((n&15)<<4|r>>2&15)<<24>>24,L[P++]=(r<<6|s)<<24>>24}return!fM(h=o[_++])||!fM(d=o[_++])?null:(t=J1[h],n=J1[d],v=o[_++],x=o[_++],J1[v]==-1||J1[x]==-1?v==61&&x==61?n&15?null:(X=Me(el,A4,25,z*3+1,15,1),Hc(L,0,X,0,z*3),X[P]=(t<<2|n>>4)<<24>>24,X):v!=61&&x==61?(r=J1[v],r&3?null:(X=Me(el,A4,25,z*3+2,15,1),Hc(L,0,X,0,z*3),X[P++]=(t<<2|n>>4)<<24>>24,X[P]=((n&15)<<4|r>>2&15)<<24>>24,X)):null:(r=J1[v],s=J1[x],L[P++]=(t<<2|n>>4)<<24>>24,L[P++]=((n&15)<<4|r>>2&15)<<24>>24,L[P++]=(r<<6|s)<<24>>24,L))}function uyn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve;for(kr(t,yft,1),q=u(K(e,(pt(),K0)),218),s=new C(e.b);s.a=2){for(W=!0,P=new C(o.j),n=u(Y(P),11),z=null;P.a0&&(s=u(St(X.c.a,nt-1),10),h=e.i[s.p],zt=b.Math.ceil(j3(e.n,s,X)),o=Ve.a.e-X.d.d-(h.a.e+s.o.b+s.d.a)-zt),x=gs,nt0&&bt.a.e.e-bt.a.a-(bt.b.e.e-bt.b.a)<0,q=Ee.a.e.e-Ee.a.a-(Ee.b.e.e-Ee.b.a)<0&&bt.a.e.e-bt.a.a-(bt.b.e.e-bt.b.a)>0,z=Ee.a.e.e+Ee.b.abt.b.e.e+bt.a.a,Ne=0,!W&&!q&&(P?o+L>0?Ne=L:x-r>0&&(Ne=r):z&&(o+d>0?Ne=d:x-Ce>0&&(Ne=Ce))),Ve.a.e+=Ne,Ve.b&&(Ve.d.e+=Ne),!1))}function Rlt(e,t,n){var r,s,o,h,d,v,x,_,L,P;if(r=new fh(t.qf().a,t.qf().b,t.rf().a,t.rf().b),s=new T6,e.c)for(h=new C(t.wf());h.ax&&(r.a+=$Ve(Me(Sh,Td,25,-x,15,1))),r.a+="Is",pd(v,Nu(32))>=0)for(s=0;s=r.o.b/2}else Ce=!L;Ce?(le=u(K(r,(et(),Mk)),15),le?P?o=le:(s=u(K(r,_k),15),s?le.gc()<=s.gc()?o=le:o=s:(o=new st,Ye(r,_k,o))):(o=new st,Ye(r,Mk,o))):(s=u(K(r,(et(),_k)),15),s?L?o=s:(le=u(K(r,Mk),15),le?s.gc()<=le.gc()?o=s:o=le:(o=new st,Ye(r,Mk,o))):(o=new st,Ye(r,_k,o))),o.Fc(e),Ye(e,(et(),Bq),n),t.d==n?(ba(t,null),n.e.c.length+n.g.c.length==0&&rc(n,null),ran(n)):(Va(t,null),n.e.c.length+n.g.c.length==0&&rc(n,null)),Rh(t.a)}function dyn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki;for(Ce=new Ea(e.b,0),_=t.Kc(),q=0,x=u(_.Pb(),19).a,Ve=0,n=new Ys,bt=new C0;Ce.b=e.a&&(r=Zbn(e,Ce),_=b.Math.max(_,r.b),Ne=b.Math.max(Ne,r.d),it(d,new xa(Ce,r)));for(zt=new st,x=0;x<_;++x)Om(zt,0,(Qn(X.b>0),X.a.Xb(X.c=--X.b),Ut=new Bh(e.b),Dm(X,Ut),Qn(X.b0?(x=0,X&&(x+=d),x+=(Ut-1)*h,Ee&&(x+=d),zt&&Ee&&(x=b.Math.max(x,Qgn(Ee,h,Ce,bt))),x0){for(P=_<100?null:new _p(_),x=new Vme(t),q=x.g,le=Me(Lr,Jr,25,_,15,1),r=0,Ne=new jv(_),s=0;s=0;)if(z!=null?Ci(z,q[v]):je(z)===je(q[v])){le.length<=r&&(X=le,le=Me(Lr,Jr,25,2*le.length,15,1),Hc(X,0,le,0,r)),le[r++]=s,Br(Ne,q[v]);break e}if(z=z,je(z)===je(d))break}}if(x=Ne,q=Ne.g,_=r,r>le.length&&(X=le,le=Me(Lr,Jr,25,r,15,1),Hc(X,0,le,0,r)),r>0){for(Ee=!0,o=0;o=0;)J6(e,le[h]);if(r!=_){for(s=_;--s>=r;)J6(x,s);X=le,le=Me(Lr,Jr,25,r,15,1),Hc(X,0,le,0,r)}t=x}}}else for(t=Yun(e,t),s=e.i;--s>=0;)t.Hc(e.g[s])&&(J6(e,s),Ee=!0);if(Ee){if(le!=null){for(n=t.gc(),L=n==1?x_(e,4,t.Kc().Pb(),null,le[0],W):x_(e,6,t,le,le[0],W),P=n<100?null:new _p(n),s=t.Kc();s.Ob();)z=s.Pb(),P=Ybe(e,u(z,72),P);P?(P.Ei(L),P.Fi()):_i(e.e,L)}else{for(P=cYt(t.gc()),s=t.Kc();s.Ob();)z=s.Pb(),P=Ybe(e,u(z,72),P);P&&P.Fi()}return!0}else return!1}function wyn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;for(n=new hit(t),n.a||tbn(t),x=n2n(t),v=new Nv,X=new sct,W=new C(t.a);W.a0||n.o==K1&&s0?(L=u(St(P.c.a,h-1),10),zt=j3(e.b,P,L),X=P.n.b-P.d.d-(L.n.b+L.o.b+L.d.a+zt)):X=P.n.b-P.d.d,x=b.Math.min(X,x),hh?w7(e,t,n):w7(e,n,t),sh?1:0}return r=u(K(t,(et(),Nc)),19).a,o=u(K(n,Nc),19).a,r>o?w7(e,t,n):w7(e,n,t),ro?1:0}function c6e(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce;if(It(Mt(Ft(t,(bi(),PV)))))return hn(),hn(),bo;if(x=(!t.a&&(t.a=new at(hs,t,10,11)),t.a).i!=0,L=adn(t),_=!L.dc(),x||_){if(s=u(Ft(t,xE),149),!s)throw J(new M3("Resolved algorithm is not set; apply a LayoutAlgorithmResolver before computing layout."));if(Ce=D2e(s,(g7(),KV)),Urt(t),!x&&_&&!Ce)return hn(),hn(),bo;if(v=new st,je(Ft(t,Q4))===je((F0(),Wg))&&(D2e(s,UV)||D2e(s,VV)))for(z=Act(e,t),q=new as,no(q,(!t.a&&(t.a=new at(hs,t,10,11)),t.a));q.b!=0;)P=u(q.b==0?null:(Qn(q.b!=0),bh(q,q.a.a)),33),Urt(P),le=je(Ft(P,Q4))===je(jS),le||J2(P,PS)&&!Vwe(s,Ft(P,xE))?(d=c6e(e,P,n,r),Rs(v,d),So(P,Q4,jS),Vct(P)):no(q,(!P.a&&(P.a=new at(hs,P,10,11)),P.a));else for(z=(!t.a&&(t.a=new at(hs,t,10,11)),t.a).i,h=new rr((!t.a&&(t.a=new at(hs,t,10,11)),t.a));h.e!=h.i.gc();)o=u(pr(h),33),d=c6e(e,o,n,r),Rs(v,d),Vct(o);for(X=new C(v);X.a=0?z=Y6(d):z=zD(Y6(d)),e.Ye(gE,z)),x=new Fa,P=!1,e.Xe(Cw)?(ybe(x,u(e.We(Cw),8)),P=!0):WWt(x,h.a/2,h.b/2),z.g){case 4:Ye(_,vu,(mh(),l2)),Ye(_,Fq,(sb(),F4)),_.o.b=h.b,W<0&&(_.o.a=-W),Vs(L,(ht(),$n)),P||(x.a=h.a),x.a-=h.a;break;case 2:Ye(_,vu,(mh(),Ly)),Ye(_,Fq,(sb(),aE)),_.o.b=h.b,W<0&&(_.o.a=-W),Vs(L,(ht(),Dn)),P||(x.a=0);break;case 1:Ye(_,Lb,(P0(),$4)),_.o.a=h.a,W<0&&(_.o.b=-W),Vs(L,(ht(),xr)),P||(x.b=h.b),x.b-=h.b;break;case 3:Ye(_,Lb,(P0(),Tk)),_.o.a=h.a,W<0&&(_.o.b=-W),Vs(L,(ht(),An)),P||(x.b=0)}if(ybe(L.n,x),Ye(_,Cw,x),t==$b||t==p0||t==tu){if(q=0,t==$b&&e.Xe(zg))switch(z.g){case 1:case 2:q=u(e.We(zg),19).a;break;case 3:case 4:q=-u(e.We(zg),19).a}else switch(z.g){case 4:case 2:q=o.b,t==p0&&(q/=s.b);break;case 1:case 3:q=o.a,t==p0&&(q/=s.a)}Ye(_,Ew,q)}return Ye(_,vc,z),_}function kyn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut;if(n=Ue(ft(K(e.a.j,(pt(),xTe)))),n<-1||!e.a.i||A6(u(K(e.a.o,bs),98))||ac(e.a.o,(ht(),$n)).gc()<2&&ac(e.a.o,Dn).gc()<2)return!0;if(e.a.c.Rf())return!1;for(Ve=0,Ne=0,Ee=new st,v=e.a.e,x=0,_=v.length;x<_;++x){for(d=v[x],P=d,z=0,W=P.length;z=n}function xyn(){qpe();function e(r){var s=this;this.dispatch=function(o){var h=o.data;switch(h.cmd){case"algorithms":var d=Zye((hn(),new T(new E1(x2.b))));r.postMessage({id:h.id,data:d});break;case"categories":var v=Zye((hn(),new T(new E1(x2.c))));r.postMessage({id:h.id,data:v});break;case"options":var x=Zye((hn(),new T(new E1(x2.d))));r.postMessage({id:h.id,data:x});break;case"register":Lwn(h.algorithms),r.postMessage({id:h.id});break;case"layout":uvn(h.graph,h.layoutOptions||{},h.options||{}),r.postMessage({id:h.id,data:h.graph});break}},this.saveDispatch=function(o){try{s.dispatch(o)}catch(h){r.postMessage({id:o.data.id,error:h})}}}function t(r){var s=this;this.dispatcher=new e({postMessage:function(o){s.onmessage({data:o})}}),this.postMessage=function(o){setTimeout(function(){s.dispatcher.saveDispatch({data:o})},0)}}if(typeof document===foe&&typeof self!==foe){var n=new e(self);self.onmessage=n.saveDispatch}else typeof p!==foe&&p.exports&&(Object.defineProperty(w,"__esModule",{value:!0}),p.exports={default:t,Worker:t})}function Eyn(e){e.N||(e.N=!0,e.b=gc(e,0),ls(e.b,0),ls(e.b,1),ls(e.b,2),e.bb=gc(e,1),ls(e.bb,0),ls(e.bb,1),e.fb=gc(e,2),ls(e.fb,3),ls(e.fb,4),zi(e.fb,5),e.qb=gc(e,3),ls(e.qb,0),zi(e.qb,1),zi(e.qb,2),ls(e.qb,3),ls(e.qb,4),zi(e.qb,5),ls(e.qb,6),e.a=di(e,4),e.c=di(e,5),e.d=di(e,6),e.e=di(e,7),e.f=di(e,8),e.g=di(e,9),e.i=di(e,10),e.j=di(e,11),e.k=di(e,12),e.n=di(e,13),e.o=di(e,14),e.p=di(e,15),e.q=di(e,16),e.s=di(e,17),e.r=di(e,18),e.t=di(e,19),e.u=di(e,20),e.v=di(e,21),e.w=di(e,22),e.B=di(e,23),e.A=di(e,24),e.C=di(e,25),e.D=di(e,26),e.F=di(e,27),e.G=di(e,28),e.H=di(e,29),e.J=di(e,30),e.I=di(e,31),e.K=di(e,32),e.M=di(e,33),e.L=di(e,34),e.P=di(e,35),e.Q=di(e,36),e.R=di(e,37),e.S=di(e,38),e.T=di(e,39),e.U=di(e,40),e.V=di(e,41),e.X=di(e,42),e.W=di(e,43),e.Y=di(e,44),e.Z=di(e,45),e.$=di(e,46),e._=di(e,47),e.ab=di(e,48),e.cb=di(e,49),e.db=di(e,50),e.eb=di(e,51),e.gb=di(e,52),e.hb=di(e,53),e.ib=di(e,54),e.jb=di(e,55),e.kb=di(e,56),e.lb=di(e,57),e.mb=di(e,58),e.nb=di(e,59),e.ob=di(e,60),e.pb=di(e,61))}function Tyn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;if(Ce=0,t.f.a==0)for(X=new C(e);X.ax&&(xn(x,t.c.length),u(t.c[x],200)).a.c.length==0;)Au(t,(xn(x,t.c.length),t.c[x]));if(!v){--o;continue}if(lbn(t,_,s,v,P,n,x,r)){L=!0;continue}if(P){if(vvn(t,_,s,v,n,x,r)){L=!0;continue}else if(_ye(_,s)){s.c=!0,L=!0;continue}}else if(_ye(_,s)){s.c=!0,L=!0;continue}if(L)continue}if(_ye(_,s)){s.c=!0,L=!0,v&&(v.k=!1);continue}else $H(s.q)}return L}function Sae(e,t,n,r,s,o,h){var d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki,Ws;for(W=0,In=0,x=new C(e.b);x.aW&&(o&&(q2(nt,z),q2(zt,ct(_.b-1)),it(e.d,q),d.c=Me(Yn,yt,1,0,5,1)),ki=n.b,Ws+=z+t,z=0,L=b.Math.max(L,n.b+n.c+dr)),d.c[d.c.length]=v,iit(v,ki,Ws),L=b.Math.max(L,ki+dr+n.c),z=b.Math.max(z,P),ki+=dr+t,q=v;if(Rs(e.a,d),it(e.d,u(St(d,d.c.length-1),157)),L=b.Math.max(L,r),Rn=Ws+z+n.a,Rn1&&(h=b.Math.min(h,b.Math.abs(u(s1(d.a,1),8).b-_.b)))));else for(W=new C(t.j);W.as&&(o=P.a-s,h=Ei,r.c=Me(Yn,yt,1,0,5,1),s=P.a),P.a>=s&&(r.c[r.c.length]=d,d.a.b>1&&(h=b.Math.min(h,b.Math.abs(u(s1(d.a,d.a.b-2),8).b-P.b)))));if(r.c.length!=0&&o>t.o.a/2&&h>t.o.b/2){for(z=new $c,rc(z,t),Vs(z,(ht(),An)),z.n.a=t.o.a/2,le=new $c,rc(le,t),Vs(le,xr),le.n.a=t.o.a/2,le.n.b=t.o.b,v=new C(r);v.a=x.b?Va(d,le):Va(d,z)):(x=u(yQt(d.a),8),X=d.a.b==0?D1(d.c):u(fj(d.a),8),X.b>=x.b?ba(d,le):ba(d,z)),L=u(K(d,(pt(),Fo)),74),L&&Xm(L,x,!0);t.n.a=s-t.o.a/2}}function Lyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki,Ws,rh,af;if(In=null,dr=t,Rn=GQe(e,jQe(n),dr),I_(Rn,D0(dr,Id)),ki=u(K3(e.g,tk(M0(dr,Bce))),33),P=M0(dr,"sourcePort"),r=null,P&&(r=tk(P)),Ws=u(K3(e.j,r),118),!ki)throw d=i7(dr),q="An edge must have a source node (edge id: '"+d,W=q+z7,J(new dd(W));if(Ws&&!md(L1(Ws),ki))throw v=D0(dr,Id),X="The source port of an edge must be a port of the edge's source node (edge id: '"+v,le=X+z7,J(new dd(le));if(zt=(!Rn.b&&(Rn.b=new wn(mr,Rn,4,7)),Rn.b),o=null,Ws?o=Ws:o=ki,Br(zt,o),rh=u(K3(e.g,tk(M0(dr,o8e))),33),z=M0(dr,"targetPort"),s=null,z&&(s=tk(z)),af=u(K3(e.j,s),118),!rh)throw L=i7(dr),Ce="An edge must have a target node (edge id: '"+L,Ee=Ce+z7,J(new dd(Ee));if(af&&!md(L1(af),rh))throw x=D0(dr,Id),Ne="The target port of an edge must be a port of the edge's target node (edge id: '"+x,Ve=Ne+z7,J(new dd(Ve));if(Ut=(!Rn.c&&(Rn.c=new wn(mr,Rn,5,8)),Rn.c),h=null,af?h=af:h=rh,Br(Ut,h),(!Rn.b&&(Rn.b=new wn(mr,Rn,4,7)),Rn.b).i==0||(!Rn.c&&(Rn.c=new wn(mr,Rn,5,8)),Rn.c).i==0)throw _=D0(dr,Id),nt=R1t+_,bt=nt+z7,J(new dd(bt));return KH(dr,Rn),m0n(dr,Rn),In=pie(e,dr,Rn),In}function zlt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In;return L=Ibn(_u(e,(ht(),Q1)),t),q=s4(_u(e,Bf),t),Ne=s4(_u(e,eh),t),zt=HH(_u(e,Jh),t),P=HH(_u(e,_h),t),Ce=s4(_u(e,Rf),t),W=s4(_u(e,ll),t),nt=s4(_u(e,th),t),Ve=s4(_u(e,Ch),t),Ut=HH(_u(e,wu),t),le=s4(_u(e,Ru),t),Ee=s4(_u(e,hl),t),bt=s4(_u(e,Bu),t),In=HH(_u(e,Fu),t),z=HH(_u(e,Ju),t),X=s4(_u(e,nu),t),n=Q3(ie(re(pa,1),Ao,25,15,[Ce.a,zt.a,nt.a,In.a])),r=Q3(ie(re(pa,1),Ao,25,15,[q.a,L.a,Ne.a,X.a])),s=le.a,o=Q3(ie(re(pa,1),Ao,25,15,[W.a,P.a,Ve.a,z.a])),x=Q3(ie(re(pa,1),Ao,25,15,[Ce.b,q.b,W.b,Ee.b])),v=Q3(ie(re(pa,1),Ao,25,15,[zt.b,L.b,P.b,X.b])),_=Ut.b,d=Q3(ie(re(pa,1),Ao,25,15,[nt.b,Ne.b,Ve.b,bt.b])),_g(_u(e,Q1),n+s,x+_),_g(_u(e,nu),n+s,x+_),_g(_u(e,Bf),n+s,0),_g(_u(e,eh),n+s,x+_+v),_g(_u(e,Jh),0,x+_),_g(_u(e,_h),n+s+r,x+_),_g(_u(e,ll),n+s+r,0),_g(_u(e,th),0,x+_+v),_g(_u(e,Ch),n+s+r,x+_+v),_g(_u(e,wu),0,x),_g(_u(e,Ru),n,0),_g(_u(e,Bu),0,x+_+v),_g(_u(e,Ju),n+s+r,0),h=new Fa,h.a=Q3(ie(re(pa,1),Ao,25,15,[n+r+s+o,Ut.a,Ee.a,bt.a])),h.b=Q3(ie(re(pa,1),Ao,25,15,[x+v+_+d,le.b,In.b,z.b])),h}function Myn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;for(W=new st,P=new C(e.d.b);P.as.d.d+s.d.a?_.f.d=!0:(_.f.d=!0,_.f.a=!0))),r.b!=r.d.c&&(t=n);_&&(o=u(er(e.f,h.d.i),57),t.bo.d.d+o.d.a?_.f.d=!0:(_.f.d=!0,_.f.a=!0))}for(d=new cr(fr(Xo(z).a.Kc(),new V));Vr(d);)h=u(Pr(d),17),h.a.b!=0&&(t=u(fj(h.a),8),h.d.j==(ht(),An)&&(X=new hC(t,new Pt(t.a,s.d.d),s,h),X.f.a=!0,X.a=h.d,W.c[W.c.length]=X),h.d.j==xr&&(X=new hC(t,new Pt(t.a,s.d.d+s.d.a),s,h),X.f.d=!0,X.a=h.d,W.c[W.c.length]=X))}return W}function Dyn(e,t,n){var r,s,o,h,d,v,x,_,L;if(kr(n,"Network simplex node placement",1),e.e=t,e.n=u(K(t,(et(),G4)),304),Kvn(e),Ahn(e),ms(ic(new vn(null,new mn(e.e.b,16)),new hQ),new Oje(e)),ms(Vi(ic(Vi(ic(new vn(null,new mn(e.e.b,16)),new N9),new kQ),new xQ),new EQ),new Ije(e)),It(Mt(K(e.e,(pt(),gS))))&&(h=Kc(n,1),kr(h,"Straight Edges Pre-Processing",1),dmn(e),ur(h)),uun(e.f),o=u(K(t,vS),19).a*e.f.a.c.length,sae(Rpe(Fpe(bne(e.f),o),!1),Kc(n,1)),e.d.a.gc()!=0){for(h=Kc(n,1),kr(h,"Flexible Where Space Processing",1),d=u(Tv(Fj(Cu(new vn(null,new mn(e.f.a,16)),new fQ),new sQ)),19).a,v=u(Tv(Rj(Cu(new vn(null,new mn(e.f.a,16)),new dQ),new aQ)),19).a,x=v-d,_=Ev(new z2,e.f),L=Ev(new z2,e.f),Cf(bf(pf(gf(vf(new Nh,2e4),x),_),L)),ms(Vi(Vi(Rne(e.i),new gQ),new pQ),new MYe(d,_,x,L)),s=e.d.a.ec().Kc();s.Ob();)r=u(s.Pb(),213),r.g=1;sae(Rpe(Fpe(bne(e.f),o),!1),Kc(h,1)),ur(h)}It(Mt(K(t,gS)))&&(h=Kc(n,1),kr(h,"Straight Edges Post-Processing",1),w1n(e),ur(h)),Qwn(e),e.e=null,e.f=null,e.i=null,e.c=null,sl(e.k),e.j=null,e.a=null,e.o=null,e.d.a.$b(),ur(n)}function Iyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve;for(d=new C(e.a.b);d.a0)if(r=L.gc(),x=_s(b.Math.floor((r+1)/2))-1,s=_s(b.Math.ceil((r+1)/2))-1,t.o==K1)for(_=s;_>=x;_--)t.a[Ne.p]==Ne&&(W=u(L.Xb(_),46),q=u(W.a,10),!_0(n,W.b)&&z>e.b.e[q.p]&&(t.a[q.p]=Ne,t.g[Ne.p]=t.g[q.p],t.a[Ne.p]=t.g[Ne.p],t.f[t.g[Ne.p].p]=(Mn(),!!(It(t.f[t.g[Ne.p].p])&Ne.k==(zn(),ca))),z=e.b.e[q.p]));else for(_=x;_<=s;_++)t.a[Ne.p]==Ne&&(le=u(L.Xb(_),46),X=u(le.a,10),!_0(n,le.b)&&z=q&&(Ce>q&&(z.c=Me(Yn,yt,1,0,5,1),q=Ce),z.c[z.c.length]=h);z.c.length!=0&&(P=u(St(z,BH(t,z.c.length)),128),Rn.a.Bc(P)!=null,P.s=W++,s5e(P,Ut,nt),z.c=Me(Yn,yt,1,0,5,1))}for(Ne=e.c.length+1,d=new C(e);d.aIn.s&&(Ol(n),Au(In.i,r),r.c>0&&(r.a=In,it(In.t,r),r.b=bt,it(bt.i,r)))}function u6e(e){var t,n,r,s,o;switch(t=e.c,t){case 11:return e.Ml();case 12:return e.Ol();case 14:return e.Ql();case 15:return e.Tl();case 16:return e.Rl();case 17:return e.Ul();case 21:return mi(e),yi(),yi(),nA;case 10:switch(e.a){case 65:return e.yl();case 90:return e.Dl();case 122:return e.Kl();case 98:return e.El();case 66:return e.zl();case 60:return e.Jl();case 62:return e.Hl()}}switch(o=Syn(e),t=e.c,t){case 3:return e.Zl(o);case 4:return e.Xl(o);case 5:return e.Yl(o);case 0:if(e.a==123&&e.d=48&&t<=57){for(r=t-48;s=48&&t<=57;)if(r=r*10+t-48,r<0)throw J(new $r(Ur((jr(),d8e))))}else throw J(new $r(Ur((jr(),hdt))));if(n=r,t==44){if(s>=e.j)throw J(new $r(Ur((jr(),ddt))));if((t=Ma(e.i,s++))>=48&&t<=57){for(n=t-48;s=48&&t<=57;)if(n=n*10+t-48,n<0)throw J(new $r(Ur((jr(),d8e))));if(r>n)throw J(new $r(Ur((jr(),gdt))))}else n=-1}if(t!=125)throw J(new $r(Ur((jr(),fdt))));e.sl(s)?(o=(yi(),yi(),new $m(9,o)),e.d=s+1):(o=(yi(),yi(),new $m(3,o)),e.d=s),o.dm(r),o.cm(n),mi(e)}}return o}function Glt(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn;for(W=new su(t.b),Ne=new su(t.b),P=new su(t.b),zt=new su(t.b),X=new su(t.b),bt=ii(t,0);bt.b!=bt.d.c;)for(Ve=u(ri(bt),11),d=new C(Ve.g);d.a0,le=Ve.g.c.length>0,x&&le?P.c[P.c.length]=Ve:x?W.c[W.c.length]=Ve:le&&(Ne.c[Ne.c.length]=Ve);for(q=new C(W);q.a1)for(q=new _6((!e.a&&(e.a=new at(os,e,6,6)),e.a));q.e!=q.i.gc();)J_(q);for(h=u(Te((!e.a&&(e.a=new at(os,e,6,6)),e.a),0),202),X=ki,ki>Ve+Ne?X=Ve+Ne:kint+W?le=nt+W:WsVe-Ne&&Xnt-W&&leki+dr?zt=ki+dr:VeWs+bt?Ut=Ws+bt:ntki-dr&&ztWs-bt&&Utn&&(P=n-1),z=pN+vl(t,24)*NI*L-L/2,z<0?z=1:z>r&&(z=r-1),s=(pv(),v=new pp,v),z$(s,P),G$(s,z),Br((!h.a&&(h.a=new Bs(ef,h,5)),h.a),s)}function pt(){pt=pe,Xle=(bi(),c3t),QTe=u3t,SO=zSe,Mf=l3t,Ok=GSe,Sw=h3t,Ry=qSe,bE=VSe,vE=USe,Qle=RV,Aw=jb,Zle=f3t,bS=YSe,eV=Fk,CO=(f6e(),svt),V4=avt,Nb=ovt,U4=cvt,Vvt=new fo(BV,ct(0)),pE=nvt,XTe=rvt,Ik=ivt,s_e=Mvt,ZTe=hvt,JTe=gvt,ehe=kvt,e_e=vvt,t_e=mvt,tV=Nvt,the=Dvt,r_e=Cvt,n_e=Tvt,i_e=Avt,_w=Xbt,pS=Qbt,Vle=gbt,ATe=bbt,VTe=new kv(12),qTe=new fo(Fb,VTe),_Te=($0(),_E),K0=new fo(wSe,_Te),Ny=new fo(kl,0),Uvt=new fo(ufe,ct(1)),Hq=new fo(Bk,N7),Ob=PV,bs=BS,gE=t5,Fvt=VO,Bd=Jyt,Iy=Q4,Wvt=new fo(lfe,(Mn(),!0)),Oy=UO,Db=nfe,Ib=Rb,Jq=p2,Yle=NV,TTe=(wo(),f0),Zl=new fo(Mw,TTe),Tw=J4,Qq=SSe,Py=Hy,qvt=cfe,KTe=$Se,WTe=(n4(),ZO),new fo(PSe,WTe),Hvt=ife,zvt=sfe,Gvt=afe,$vt=rfe,Jle=lvt,jTe=Fbt,Wle=Rbt,vS=uvt,vu=Mbt,Dy=abt,dS=sbt,My=U2t,kTe=W2t,Hle=Q2t,_O=K2t,zle=rbt,$Te=jbt,HTe=$bt,NTe=Tbt,Zq=evt,Kle=Gbt,Ule=mbt,GTe=Kbt,STe=fbt,qle=dbt,$le=IV,zTe=Hbt,Gq=j2t,wTe=F2t,zq=R2t,DTe=xbt,MTe=kbt,ITe=Ebt,fE=e5,Fo=Z4,Hg=ySe,Rd=tfe,Gle=efe,xTe=J2t,zg=ofe,fS=n3t,Kq=r3t,Cw=RSe,UTe=i3t,dE=s3t,BTe=Ibt,RTe=Nbt,By=Rk,Fle=B2t,FTe=Bbt,Wq=ubt,Uq=cbt,Xq=WO,PTe=Sbt,gS=Vbt,AO=WSe,ETe=obt,YTe=tvt,CTe=lbt,jvt=Lbt,Rvt=tbt,OTe=TSe,Yq=Dbt,Vq=nbt,h2=V2t,yTe=G2t,qq=H2t,mTe=z2t,jle=q2t,Dk=$2t,LTe=ybt}function Lae(e,t){pae();var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki;if(zt=e.e,q=e.d,s=e.a,zt==0)switch(t){case 0:return"0";case 1:return L7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return nt=new Tp,t<0?nt.a+="0E+":nt.a+="0E",nt.a+=-t,nt.a}if(Ee=q*10+1+7,Ne=Me(Sh,Td,25,Ee+1,15,1),n=Ee,q==1)if(d=s[0],d<0){ki=qs(d,yo);do W=ki,ki=eI(ki,10),Ne[--n]=48+Or(Wp(W,ja(ki,10)))&Ss;while(Mc(ki,0)!=0)}else{ki=d;do W=ki,ki=ki/10|0,Ne[--n]=48+(W-ki*10)&Ss;while(ki!=0)}else{In=Me(Lr,Jr,25,q,15,1),dr=q,Hc(s,0,In,0,dr);e:for(;;){for(bt=0,x=dr-1;x>=0;x--)Rn=Ua(A0(bt,32),qs(In[x],yo)),le=Ghn(Rn),In[x]=Or(le),bt=Or(Np(le,32));Ce=Or(bt),X=n;do Ne[--n]=48+Ce%10&Ss;while((Ce=Ce/10|0)!=0&&n!=0);for(r=9-X+n,v=0;v0;v++)Ne[--n]=48;for(L=dr-1;In[L]==0;L--)if(L==0)break e;dr=L+1}for(;Ne[n]==48;)++n}if(z=zt<0,h=Ee-n-t-1,t==0)return z&&(Ne[--n]=45),jh(Ne,n,Ee-n);if(t>0&&h>=-6){if(h>=0){for(_=n+h,P=Ee-1;P>=_;P--)Ne[P+1]=Ne[P];return Ne[++_]=46,z&&(Ne[--n]=45),jh(Ne,n,Ee-n+1)}for(L=2;L<-h+1;L++)Ne[--n]=48;return Ne[--n]=46,Ne[--n]=48,z&&(Ne[--n]=45),jh(Ne,n,Ee-n)}return Ut=n+1,o=Ee,Ve=new xm,z&&(Ve.a+="-"),o-Ut>=1?(Bp(Ve,Ne[n]),Ve.a+=".",Ve.a+=jh(Ne,n+1,Ee-n-1)):Ve.a+=jh(Ne,n,Ee-n),Ve.a+="E",h>0&&(Ve.a+="+"),Ve.a+=""+h,Ve.a}function Ult(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt;switch(e.c=t,e.g=new Mr,n=(Tm(),new ym(e.c)),r=new nr(n),Uye(r),Ee=Hr(Ft(e.c,(nI(),HCe))),v=u(Ft(e.c,Vhe),316),Ve=u(Ft(e.c,Uhe),429),h=u(Ft(e.c,FCe),482),Ne=u(Ft(e.c,qhe),430),e.j=Ue(ft(Ft(e.c,Eyt))),d=e.a,v.g){case 0:d=e.a;break;case 1:d=e.b;break;case 2:d=e.i;break;case 3:d=e.e;break;case 4:d=e.f;break;default:throw J(new Ln(lG+(v.f!=null?v.f:""+v.g)))}if(e.d=new gXe(d,Ve,h),Ye(e.d,(H8(),JC),Mt(Ft(e.c,kyt))),e.d.c=It(Mt(Ft(e.c,jCe))),Jj(e.c).i==0)return e.d;for(L=new rr(Jj(e.c));L.e!=L.i.gc();){for(_=u(pr(L),33),z=_.g/2,P=_.f/2,nt=new Pt(_.i+z,_.j+P);Il(e.g,nt);)Lm(nt,(b.Math.random()-.5)*Sd,(b.Math.random()-.5)*Sd);W=u(Ft(_,(bi(),WO)),142),X=new DXe(nt,new fh(nt.a-z-e.j/2-W.b,nt.b-P-e.j/2-W.d,_.g+e.j+(W.b+W.c),_.f+e.j+(W.d+W.a))),it(e.d.i,X),Si(e.g,nt,new xa(X,_))}switch(Ne.g){case 0:if(Ee==null)e.d.d=u(St(e.d.i,0),65);else for(Ce=new C(e.d.i);Ce.a1&&ks(_,le,_.c.b,_.c),F$(s)));le=Ce}return _}function jyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki,Ws,rh,af,ed;for(kr(n,"Greedy cycle removal",1),Ee=t.a,ed=Ee.c.length,e.a=Me(Lr,Jr,25,ed,15,1),e.c=Me(Lr,Jr,25,ed,15,1),e.b=Me(Lr,Jr,25,ed,15,1),x=0,le=new C(Ee);le.a0?dr+1:1);for(h=new C(nt.g);h.a0?dr+1:1)}e.c[x]==0?ci(e.e,W):e.a[x]==0&&ci(e.f,W),++x}for(q=-1,z=1,L=new st,e.d=u(K(t,(et(),Lk)),230);ed>0;){for(;e.e.b!=0;)Ws=u(mne(e.e),10),e.b[Ws.p]=q--,I5e(e,Ws),--ed;for(;e.f.b!=0;)rh=u(mne(e.f),10),e.b[rh.p]=z++,I5e(e,rh),--ed;if(ed>0){for(P=$a,Ce=new C(Ee);Ce.a=P&&(Ne>P&&(L.c=Me(Yn,yt,1,0,5,1),P=Ne),L.c[L.c.length]=W));_=e.Zf(L),e.b[_.p]=z++,I5e(e,_),--ed}}for(ki=Ee.c.length+1,x=0;xe.b[af]&&(iw(r,!0),Ye(t,yO,(Mn(),!0)));e.a=null,e.c=null,e.b=null,Rh(e.f),Rh(e.e),ur(n)}function Klt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le;for(r=new st,d=new st,X=t/2,z=e.gc(),s=u(e.Xb(0),8),le=u(e.Xb(1),8),q=Gse(s.a,s.b,le.a,le.b,X),it(r,(xn(0,q.c.length),u(q.c[0],8))),it(d,(xn(1,q.c.length),u(q.c[1],8))),x=2;x=0;v--)ci(n,(xn(v,h.c.length),u(h.c[v],8)));return n}function $yn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z;if(h=!0,L=null,r=null,s=null,t=!1,z=e4t,x=null,o=null,d=0,v=Yie(e,d,OAe,NAe),v=0&&an(e.substr(d,2),"//")?(d+=2,v=Yie(e,d,KS,YS),r=e.substr(d,v-d),d=v):L!=null&&(d==e.length||(zr(d,e.length),e.charCodeAt(d)!=47))&&(h=!1,v=lbe(e,Nu(35),d),v==-1&&(v=e.length),r=e.substr(d,v-d),d=v);if(!n&&d0&&Ma(_,_.length-1)==58&&(s=_,d=v)),d=e.j){e.a=-1,e.c=1;return}if(t=Ma(e.i,e.d++),e.a=t,e.b==1){switch(t){case 92:if(r=10,e.d>=e.j)throw J(new $r(Ur((jr(),vG))));e.a=Ma(e.i,e.d++);break;case 45:(e.e&512)==512&&e.d=e.j||Ma(e.i,e.d)!=63)break;if(++e.d>=e.j)throw J(new $r(Ur((jr(),Wce))));switch(t=Ma(e.i,e.d++),t){case 58:r=13;break;case 61:r=14;break;case 33:r=15;break;case 91:r=19;break;case 62:r=18;break;case 60:if(e.d>=e.j)throw J(new $r(Ur((jr(),Wce))));if(t=Ma(e.i,e.d++),t==61)r=16;else if(t==33)r=17;else throw J(new $r(Ur((jr(),W1t))));break;case 35:for(;e.d=e.j)throw J(new $r(Ur((jr(),vG))));e.a=Ma(e.i,e.d++);break;default:r=0}e.c=r}function zyn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr;if(bt=u(K(e,(pt(),bs)),98),bt!=(wa(),X1)&&bt!=w2){for(q=e.b,z=q.c.length,_=new su((ql(z+2,Nae),R$(Ua(Ua(5,z+2),(z+2)/10|0)))),W=new su((ql(z+2,Nae),R$(Ua(Ua(5,z+2),(z+2)/10|0)))),it(_,new Mr),it(_,new Mr),it(W,new st),it(W,new st),nt=new st,t=0;t=Ve||!ucn(le,r))&&(r=HXe(t,_)),No(le,r),o=new cr(fr(Xo(le).a.Kc(),new V));Vr(o);)s=u(Pr(o),17),!e.a[s.p]&&(W=s.c.i,--e.e[W.p],e.e[W.p]==0&&S8(l7(z,W)));for(x=_.c.length-1;x>=0;--x)it(t.b,(xn(x,_.c.length),u(_.c[x],29)));t.a.c=Me(Yn,yt,1,0,5,1),ur(n)}function Ylt(e){var t,n,r,s,o,h,d,v,x;for(e.b=1,mi(e),t=null,e.c==0&&e.a==94?(mi(e),t=(yi(),yi(),new Hl(4)),Yc(t,0,q7),d=new Hl(4)):d=(yi(),yi(),new Hl(4)),s=!0;(x=e.c)!=1;){if(x==0&&e.a==93&&!s){t&&(bC(t,d),d=t);break}if(n=e.a,r=!1,x==10)switch(n){case 100:case 68:case 119:case 87:case 115:case 83:ly(d,m7(n)),r=!0;break;case 105:case 73:case 99:case 67:n=(ly(d,m7(n)),-1),n<0&&(r=!0);break;case 112:case 80:if(v=$4e(e,n),!v)throw J(new $r(Ur((jr(),Kce))));ly(d,v),r=!0;break;default:n=y5e(e)}else if(x==24&&!s){if(t&&(bC(t,d),d=t),o=Ylt(e),bC(d,o),e.c!=0||e.a!=93)throw J(new $r(Ur((jr(),rdt))));break}if(mi(e),!r){if(x==0){if(n==91)throw J(new $r(Ur((jr(),h8e))));if(n==93)throw J(new $r(Ur((jr(),f8e))));if(n==45&&!s&&e.a!=93)throw J(new $r(Ur((jr(),Yce))))}if(e.c!=0||e.a!=45||n==45&&s)Yc(d,n,n);else{if(mi(e),(x=e.c)==1)throw J(new $r(Ur((jr(),wG))));if(x==0&&e.a==93)Yc(d,n,n),Yc(d,45,45);else{if(x==0&&e.a==93||x==24)throw J(new $r(Ur((jr(),Yce))));if(h=e.a,x==0){if(h==91)throw J(new $r(Ur((jr(),h8e))));if(h==93)throw J(new $r(Ur((jr(),f8e))));if(h==45)throw J(new $r(Ur((jr(),Yce))))}else x==10&&(h=y5e(e));if(mi(e),n>h)throw J(new $r(Ur((jr(),adt))));Yc(d,n,h)}}}s=!1}if(e.c==1)throw J(new $r(Ur((jr(),wG))));return l4(d),gC(d),e.b=0,mi(e),d}function qyn(e){Rr(e.c,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#decimal"])),Rr(e.d,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#integer"])),Rr(e.e,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#boolean"])),Rr(e.f,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EBoolean",gi,"EBoolean:Object"])),Rr(e.i,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#byte"])),Rr(e.g,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#hexBinary"])),Rr(e.j,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EByte",gi,"EByte:Object"])),Rr(e.n,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EChar",gi,"EChar:Object"])),Rr(e.t,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#double"])),Rr(e.u,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EDouble",gi,"EDouble:Object"])),Rr(e.F,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#float"])),Rr(e.G,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EFloat",gi,"EFloat:Object"])),Rr(e.I,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#int"])),Rr(e.J,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EInt",gi,"EInt:Object"])),Rr(e.N,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#long"])),Rr(e.O,Zr,ie(re(mt,1),Qe,2,6,[Ha,"ELong",gi,"ELong:Object"])),Rr(e.Z,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#short"])),Rr(e.$,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EShort",gi,"EShort:Object"])),Rr(e._,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#string"]))}function Vyn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr;if(e.c.length==1)return xn(0,e.c.length),u(e.c[0],135);if(e.c.length<=0)return new E$;for(v=new C(e);v.aL&&(Rn=0,dr+=_+bt,_=0),tgn(Ve,h,Rn,dr),t=b.Math.max(t,Rn+nt.a),_=b.Math.max(_,nt.b),Rn+=nt.a+bt;for(Ne=new Mr,n=new Mr,Ut=new C(e);Ut.aqse(o))&&(L=o);for(!L&&(L=(xn(0,X.c.length),u(X.c[0],180))),W=new C(t.b);W.a=-1900?1:0,n>=4?Yr(e,ie(re(mt,1),Qe,2,6,[fht,dht])[d]):Yr(e,ie(re(mt,1),Qe,2,6,["BC","AD"])[d]);break;case 121:jcn(e,n,r);break;case 77:G2n(e,n,r);break;case 107:v=s.q.getHours(),v==0?e0(e,24,n):e0(e,v,n);break;case 83:lgn(e,n,s);break;case 69:_=r.q.getDay(),n==5?Yr(e,ie(re(mt,1),Qe,2,6,["S","M","T","W","T","F","S"])[_]):n==4?Yr(e,ie(re(mt,1),Qe,2,6,[Kae,Yae,Xae,Qae,Zae,Jae,eoe])[_]):Yr(e,ie(re(mt,1),Qe,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[_]);break;case 97:s.q.getHours()>=12&&s.q.getHours()<24?Yr(e,ie(re(mt,1),Qe,2,6,["AM","PM"])[1]):Yr(e,ie(re(mt,1),Qe,2,6,["AM","PM"])[0]);break;case 104:L=s.q.getHours()%12,L==0?e0(e,12,n):e0(e,L,n);break;case 75:P=s.q.getHours()%12,e0(e,P,n);break;case 72:z=s.q.getHours(),e0(e,z,n);break;case 99:q=r.q.getDay(),n==5?Yr(e,ie(re(mt,1),Qe,2,6,["S","M","T","W","T","F","S"])[q]):n==4?Yr(e,ie(re(mt,1),Qe,2,6,[Kae,Yae,Xae,Qae,Zae,Jae,eoe])[q]):n==3?Yr(e,ie(re(mt,1),Qe,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[q]):e0(e,q,1);break;case 76:W=r.q.getMonth(),n==5?Yr(e,ie(re(mt,1),Qe,2,6,["J","F","M","A","M","J","J","A","S","O","N","D"])[W]):n==4?Yr(e,ie(re(mt,1),Qe,2,6,[Rae,Fae,jae,$ae,ak,Hae,zae,Gae,qae,Vae,Uae,Wae])[W]):n==3?Yr(e,ie(re(mt,1),Qe,2,6,["Jan","Feb","Mar","Apr",ak,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"])[W]):e0(e,W+1,n);break;case 81:X=r.q.getMonth()/3|0,n<4?Yr(e,ie(re(mt,1),Qe,2,6,["Q1","Q2","Q3","Q4"])[X]):Yr(e,ie(re(mt,1),Qe,2,6,["1st quarter","2nd quarter","3rd quarter","4th quarter"])[X]);break;case 100:le=r.q.getDate(),e0(e,le,n);break;case 109:x=s.q.getMinutes(),e0(e,x,n);break;case 115:h=s.q.getSeconds(),e0(e,h,n);break;case 122:n<4?Yr(e,o.c[0]):Yr(e,o.c[1]);break;case 118:Yr(e,o.b);break;case 90:n<3?Yr(e,J1n(o)):n==3?Yr(e,ndn(o)):Yr(e,rdn(o.a));break;default:return!1}return!0}function h6e(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki;if(Bct(t),v=u(Te((!t.b&&(t.b=new wn(mr,t,4,7)),t.b),0),82),_=u(Te((!t.c&&(t.c=new wn(mr,t,5,8)),t.c),0),82),d=zo(v),x=zo(_),h=(!t.a&&(t.a=new at(os,t,6,6)),t.a).i==0?null:u(Te((!t.a&&(t.a=new at(os,t,6,6)),t.a),0),202),bt=u(er(e.a,d),10),Rn=u(er(e.a,x),10),zt=null,dr=null,we(v,186)&&(nt=u(er(e.a,v),299),we(nt,11)?zt=u(nt,11):we(nt,10)&&(bt=u(nt,10),zt=u(St(bt.j,0),11))),we(_,186)&&(In=u(er(e.a,_),299),we(In,11)?dr=u(In,11):we(In,10)&&(Rn=u(In,10),dr=u(St(Rn.j,0),11))),!bt||!Rn)throw J(new CT("The source or the target of edge "+t+" could not be found. This usually happens when an edge connects a node laid out by ELK Layered to a node in another level of hierarchy laid out by either another instance of ELK Layered or another layout algorithm alltogether. The former can be solved by setting the hierarchyHandling option to INCLUDE_CHILDREN."));for(W=new Iv,Ho(W,t),Ye(W,(et(),Mi),t),Ye(W,(pt(),Fo),null),z=u(K(r,eu),21),bt==Rn&&z.Fc((mo(),cS)),zt||(Ve=(vo(),hu),Ut=null,h&&R3(u(K(bt,bs),98))&&(Ut=new Pt(h.j,h.k),qQe(Ut,nD(t)),yZe(Ut,n),Vm(x,d)&&(Ve=ul,Ni(Ut,bt.n))),zt=Nut(bt,Ut,Ve,r)),dr||(Ve=(vo(),ul),ki=null,h&&R3(u(K(Rn,bs),98))&&(ki=new Pt(h.b,h.c),qQe(ki,nD(t)),yZe(ki,n)),dr=Nut(Rn,ki,Ve,Ya(Rn))),Va(W,zt),ba(W,dr),(zt.e.c.length>1||zt.g.c.length>1||dr.e.c.length>1||dr.g.c.length>1)&&z.Fc((mo(),oS)),P=new rr((!t.n&&(t.n=new at(Jo,t,1,7)),t.n));P.e!=P.i.gc();)if(L=u(pr(P),137),!It(Mt(Ft(L,Ob)))&&L.a)switch(X=Mie(L),it(W.b,X),u(K(X,Rd),272).g){case 1:case 2:z.Fc((mo(),cE));break;case 0:z.Fc((mo(),oE)),Ye(X,Rd,(P1(),EE))}if(o=u(K(r,dS),314),le=u(K(r,Zq),315),s=o==(V6(),vO)||le==(X_(),ohe),h&&(!h.a&&(h.a=new Bs(ef,h,5)),h.a).i!=0&&s){for(Ce=iI(h),q=new Gu,Ne=ii(Ce,0);Ne.b!=Ne.d.c;)Ee=u(ri(Ne),8),ci(q,new Io(Ee));Ye(W,R9e,q)}return W}function Yyn(e){e.gb||(e.gb=!0,e.b=gc(e,0),ls(e.b,18),zi(e.b,19),e.a=gc(e,1),ls(e.a,1),zi(e.a,2),zi(e.a,3),zi(e.a,4),zi(e.a,5),e.o=gc(e,2),ls(e.o,8),ls(e.o,9),zi(e.o,10),zi(e.o,11),zi(e.o,12),zi(e.o,13),zi(e.o,14),zi(e.o,15),zi(e.o,16),zi(e.o,17),zi(e.o,18),zi(e.o,19),zi(e.o,20),zi(e.o,21),zi(e.o,22),zi(e.o,23),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),e.p=gc(e,3),ls(e.p,2),ls(e.p,3),ls(e.p,4),ls(e.p,5),zi(e.p,6),zi(e.p,7),Bo(e.p),Bo(e.p),e.q=gc(e,4),ls(e.q,8),e.v=gc(e,5),zi(e.v,9),Bo(e.v),Bo(e.v),Bo(e.v),e.w=gc(e,6),ls(e.w,2),ls(e.w,3),ls(e.w,4),zi(e.w,5),e.B=gc(e,7),zi(e.B,1),Bo(e.B),Bo(e.B),Bo(e.B),e.Q=gc(e,8),zi(e.Q,0),Bo(e.Q),e.R=gc(e,9),ls(e.R,1),e.S=gc(e,10),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),e.T=gc(e,11),zi(e.T,10),zi(e.T,11),zi(e.T,12),zi(e.T,13),zi(e.T,14),Bo(e.T),Bo(e.T),e.U=gc(e,12),ls(e.U,2),ls(e.U,3),zi(e.U,4),zi(e.U,5),zi(e.U,6),zi(e.U,7),Bo(e.U),e.V=gc(e,13),zi(e.V,10),e.W=gc(e,14),ls(e.W,18),ls(e.W,19),ls(e.W,20),zi(e.W,21),zi(e.W,22),zi(e.W,23),e.bb=gc(e,15),ls(e.bb,10),ls(e.bb,11),ls(e.bb,12),ls(e.bb,13),ls(e.bb,14),ls(e.bb,15),ls(e.bb,16),zi(e.bb,17),Bo(e.bb),Bo(e.bb),e.eb=gc(e,16),ls(e.eb,2),ls(e.eb,3),ls(e.eb,4),ls(e.eb,5),ls(e.eb,6),ls(e.eb,7),zi(e.eb,8),zi(e.eb,9),e.ab=gc(e,17),ls(e.ab,0),ls(e.ab,1),e.H=gc(e,18),zi(e.H,0),zi(e.H,1),zi(e.H,2),zi(e.H,3),zi(e.H,4),zi(e.H,5),Bo(e.H),e.db=gc(e,19),zi(e.db,2),e.c=di(e,20),e.d=di(e,21),e.e=di(e,22),e.f=di(e,23),e.i=di(e,24),e.g=di(e,25),e.j=di(e,26),e.k=di(e,27),e.n=di(e,28),e.r=di(e,29),e.s=di(e,30),e.t=di(e,31),e.u=di(e,32),e.fb=di(e,33),e.A=di(e,34),e.C=di(e,35),e.D=di(e,36),e.F=di(e,37),e.G=di(e,38),e.I=di(e,39),e.J=di(e,40),e.L=di(e,41),e.M=di(e,42),e.N=di(e,43),e.O=di(e,44),e.P=di(e,45),e.X=di(e,46),e.Y=di(e,47),e.Z=di(e,48),e.$=di(e,49),e._=di(e,50),e.cb=di(e,51),e.K=di(e,52))}function bi(){bi=pe;var e,t;PS=new Zi(n1t),xE=new Zi(r1t),dSe=(t0(),Yhe),Jyt=new dn(Zke,dSe),Bk=new dn(fk,null),e3t=new Zi(Uxe),pSe=(ty(),Ui(Zhe,ie(re(Jhe,1),tt,291,0,[Qhe]))),IV=new dn(rG,pSe),VO=new dn(WI,(Mn(),!1)),bSe=(wo(),f0),Mw=new dn(txe,bSe),mSe=($0(),hfe),wSe=new dn(VI,mSe),xSe=new dn(uG,!1),ESe=(F0(),FV),Q4=new dn(nG,ESe),OSe=new kv(12),Fb=new dn(uw,OSe),OV=new dn(jI,!1),TSe=new dn(fce,!1),KO=new dn(CC,!1),FSe=(wa(),w2),BS=new dn(Doe,FSe),Rk=new Zi(iG),BV=new Zi(FI),ufe=new Zi(Fz),lfe=new Zi(_C),_Se=new Gu,Z4=new dn(lxe,_Se),n3t=new dn(dxe,!1),r3t=new dn(gxe,!1),CSe=new yT,WO=new dn(bxe,CSe),PV=new dn(Xke,!1),o3t=new dn(i1t,1),new dn(s1t,!0),ct(0),new dn(a1t,ct(100)),new dn(o1t,!1),ct(0),new dn(c1t,ct(4e3)),ct(0),new dn(u1t,ct(400)),new dn(l1t,!1),new dn(h1t,!1),new dn(f1t,!0),new dn(d1t,!1),gSe=(EH(),pfe),t3t=new dn(Vxe,gSe),c3t=new dn(Fke,10),u3t=new dn(jke,10),zSe=new dn(_oe,20),l3t=new dn($ke,10),GSe=new dn(Moe,2),h3t=new dn(Hke,10),qSe=new dn(zke,0),RV=new dn(Vke,5),VSe=new dn(Gke,1),USe=new dn(qke,1),jb=new dn(py,20),f3t=new dn(Uke,10),YSe=new dn(Wke,10),Fk=new Zi(Kke),KSe=new bVe,WSe=new dn(vxe,KSe),s3t=new Zi(hce),NSe=!1,i3t=new dn(lce,NSe),ASe=new kv(5),SSe=new dn(nxe,ASe),LSe=(sy(),t=u(Qf(xo),9),new hh(t,u(wf(t,t.length),9),0)),J4=new dn(P7,LSe),BSe=(n4(),v2),PSe=new dn(sxe,BSe),ife=new Zi(axe),sfe=new Zi(oxe),afe=new Zi(cxe),rfe=new Zi(uxe),MSe=(e=u(Qf(qS),9),new hh(e,u(wf(e,e.length),9),0)),Rb=new dn(E4,MSe),ISe=rn((wl(),SE)),p2=new dn(dk,ISe),DSe=new Pt(0,0),e5=new dn(gk,DSe),NV=new dn(uce,!1),vSe=(P1(),EE),tfe=new dn(hxe,vSe),efe=new dn(jz,!1),ct(1),new dn(g1t,null),RSe=new Zi(pxe),ofe=new Zi(fxe),HSe=(ht(),uc),t5=new dn(Qke,HSe),kl=new Zi(Yke),jSe=(ol(),rn(m2)),Hy=new dn(B7,jSe),cfe=new dn(rxe,!1),$Se=new dn(ixe,!0),UO=new dn(Jke,!1),nfe=new dn(exe,!1),ySe=new dn(Coe,1),kSe=(YH(),dfe),new dn(p1t,kSe),a3t=!0}function et(){et=pe;var e,t;Mi=new Zi(K6e),O9e=new Zi("coordinateOrigin"),Ple=new Zi("processors"),I9e=new zs("compoundNode",(Mn(),!1)),kO=new zs("insideConnections",!1),R9e=new Zi("originalBendpoints"),F9e=new Zi("originalDummyNodePosition"),j9e=new Zi("originalLabelEdge"),EO=new Zi("representedLabels"),uS=new Zi("endLabels"),Ck=new Zi("endLabel.origin"),Ak=new zs("labelSide",(Ul(),QO)),H4=new zs("maxEdgeThickness",0),W1=new zs("reversed",!1),Lk=new Zi(Qht),l1=new zs("longEdgeSource",null),Yh=new zs("longEdgeTarget",null),Ay=new zs("longEdgeHasLabelDummies",!1),xO=new zs("longEdgeBeforeLabelDummy",!1),Fq=new zs("edgeConstraint",(sb(),wle)),xw=new Zi("inLayerLayoutUnit"),Lb=new zs("inLayerConstraint",(P0(),mO)),Sk=new zs("inLayerSuccessorConstraint",new st),B9e=new zs("inLayerSuccessorConstraintBetweenNonDummies",!1),cl=new Zi("portDummy"),Rq=new zs("crossingHint",ct(0)),eu=new zs("graphProperties",(t=u(Qf(_le),9),new hh(t,u(wf(t,t.length),9),0))),vc=new zs("externalPortSide",(ht(),uc)),P9e=new zs("externalPortSize",new Fa),Mle=new Zi("externalPortReplacedDummies"),jq=new Zi("externalPortReplacedDummy"),Sy=new zs("externalPortConnections",(e=u(Qf(ao),9),new hh(e,u(wf(e,e.length),9),0))),Ew=new zs(Ght,0),D9e=new Zi("barycenterAssociates"),Mk=new Zi("TopSideComments"),_k=new Zi("BottomSideComments"),Bq=new Zi("CommentConnectionPort"),Ile=new zs("inputCollect",!1),Nle=new zs("outputCollect",!1),yO=new zs("cyclic",!1),N9e=new Zi("crossHierarchyMap"),Rle=new Zi("targetOffset"),new zs("splineLabelSize",new Fa),G4=new Zi("spacings"),$q=new zs("partitionConstraint",!1),yw=new Zi("breakingPoint.info"),z9e=new Zi("splines.survivingEdge"),Mb=new Zi("splines.route.start"),q4=new Zi("splines.edgeChain"),H9e=new Zi("originalPortConstraints"),lE=new Zi("selfLoopHolder"),hE=new Zi("splines.nsPortY"),Nc=new Zi("modelOrder"),Ole=new Zi("longEdgeTargetNode"),kw=new zs(Tft,!1),z4=new zs(Tft,!1),Dle=new Zi("layerConstraints.hiddenNodes"),$9e=new Zi("layerConstraints.opposidePort"),Ble=new Zi("targetNode.modelOrder")}function f6e(){f6e=pe,J9e=(ED(),Lq),obt=new dn(nke,J9e),mbt=new dn(rke,(Mn(),!1)),sTe=(b$(),Lle),Tbt=new dn(Gz,sTe),jbt=new dn(ike,!1),$bt=new dn(ske,!0),B2t=new dn(ake,!1),dTe=(mD(),lhe),tvt=new dn(oke,dTe),ct(1),uvt=new dn(cke,ct(7)),lvt=new dn(uke,!1),ybt=new dn(lke,!1),Z9e=(db(),ble),abt=new dn(Roe,Z9e),cTe=(WH(),rhe),Fbt=new dn(GI,cTe),aTe=(mh(),TO),Mbt=new dn(hke,aTe),ct(-1),Lbt=new dn(fke,ct(-1)),ct(-1),Dbt=new dn(dke,ct(-1)),ct(-1),Ibt=new dn(Foe,ct(4)),ct(-1),Nbt=new dn(joe,ct(2)),oTe=(f4(),aV),Rbt=new dn($oe,oTe),ct(0),Bbt=new dn(Hoe,ct(0)),Sbt=new dn(zoe,ct(Ei)),Q9e=(V6(),Ek),sbt=new dn(MC,Q9e),U2t=new dn(gke,!1),J2t=new dn(Goe,.1),rbt=new dn(qoe,!1),ct(-1),tbt=new dn(pke,ct(-1)),ct(-1),nbt=new dn(bke,ct(-1)),ct(0),W2t=new dn(vke,ct(40)),X9e=(q8(),Sle),Q2t=new dn(Voe,X9e),Y9e=wO,K2t=new dn(qz,Y9e),fTe=(X_(),wS),evt=new dn(T4,fTe),Vbt=new Zi(Vz),uTe=(pD(),Dq),Hbt=new dn(Uoe,uTe),lTe=(tI(),Iq),Gbt=new dn(Woe,lTe),Kbt=new dn(Koe,.3),Xbt=new Zi(Yoe),hTe=(Zm(),sV),Qbt=new dn(Xoe,hTe),nTe=(iH(),fhe),fbt=new dn(wke,nTe),rTe=(uD(),dhe),dbt=new dn(mke,rTe),iTe=(Q8(),kS),gbt=new dn(Uz,iTe),bbt=new dn(Wz,.2),lbt=new dn(Qoe,2),svt=new dn(yke,null),ovt=new dn(kke,10),avt=new dn(xke,10),cvt=new dn(Eke,20),ct(0),nvt=new dn(Tke,ct(0)),ct(0),rvt=new dn(_ke,ct(0)),ct(0),ivt=new dn(Cke,ct(0)),R2t=new dn(Zoe,!1),V9e=(h7(),aS),j2t=new dn(Ske,V9e),q9e=(S$(),gle),F2t=new dn(Ake,q9e),xbt=new dn(Kz,!1),ct(0),kbt=new dn(Joe,ct(16)),ct(0),Ebt=new dn(ece,ct(5)),bTe=(uH(),bhe),Mvt=new dn(W0,bTe),hvt=new dn(Yz,10),gvt=new dn(Xz,1),pTe=(V$(),Aq),kvt=new dn(DC,pTe),vvt=new Zi(tce),gTe=ct(1),ct(0),mvt=new dn(nce,gTe),vTe=(nH(),phe),Nvt=new dn(Qz,vTe),Dvt=new Zi(Zz),Cvt=new dn(Jz,!0),Tvt=new dn(eG,2),Avt=new dn(rce,!0),tTe=(QH(),Mq),ubt=new dn(Lke,tTe),eTe=(ek(),iE),cbt=new dn(Mke,eTe),K9e=(R0(),f2),V2t=new dn(tG,K9e),q2t=new dn(Dke,!1),U9e=(Uv(),N4),$2t=new dn(ice,U9e),W9e=(j_(),ihe),G2t=new dn(Ike,W9e),H2t=new dn(sce,0),z2t=new dn(ace,0),Cbt=vle,_bt=vO,Obt=rV,Pbt=rV,Abt=nhe,ebt=(F0(),Wg),ibt=Ek,Z2t=Ek,Y2t=Ek,X2t=Wg,Ubt=mS,Wbt=wS,zbt=wS,qbt=wS,Ybt=che,Jbt=mS,Zbt=mS,pbt=($0(),jk),vbt=jk,wbt=kS,hbt=YO,fvt=wE,dvt=Fy,pvt=wE,bvt=Fy,xvt=wE,Evt=Fy,wvt=ple,yvt=Aq,Pvt=wE,Bvt=Fy,Ivt=wE,Ovt=Fy,Svt=Fy,_vt=Fy,Lvt=Fy}function po(){po=pe,MEe=new Cs("DIRECTION_PREPROCESSOR",0),SEe=new Cs("COMMENT_PREPROCESSOR",1),tS=new Cs("EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER",2),ele=new Cs("INTERACTIVE_EXTERNAL_PORT_POSITIONER",3),YEe=new Cs("PARTITION_PREPROCESSOR",4),uq=new Cs("LABEL_DUMMY_INSERTER",5),mq=new Cs("SELF_LOOP_PREPROCESSOR",6),eE=new Cs("LAYER_CONSTRAINT_PREPROCESSOR",7),WEe=new Cs("PARTITION_MIDPROCESSOR",8),FEe=new Cs("HIGH_DEGREE_NODE_LAYER_PROCESSOR",9),VEe=new Cs("NODE_PROMOTION",10),J7=new Cs("LAYER_CONSTRAINT_POSTPROCESSOR",11),KEe=new Cs("PARTITION_POSTPROCESSOR",12),PEe=new Cs("HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR",13),XEe=new Cs("SEMI_INTERACTIVE_CROSSMIN_PROCESSOR",14),kEe=new Cs("BREAKING_POINT_INSERTER",15),dq=new Cs("LONG_EDGE_SPLITTER",16),tle=new Cs("PORT_SIDE_PROCESSOR",17),oq=new Cs("INVERTED_PORT_PROCESSOR",18),bq=new Cs("PORT_LIST_SORTER",19),ZEe=new Cs("SORT_BY_INPUT_ORDER_OF_MODEL",20),pq=new Cs("NORTH_SOUTH_PORT_PREPROCESSOR",21),xEe=new Cs("BREAKING_POINT_PROCESSOR",22),UEe=new Cs(bft,23),JEe=new Cs(vft,24),vq=new Cs("SELF_LOOP_PORT_RESTORER",25),QEe=new Cs("SINGLE_EDGE_GRAPH_WRAPPER",26),cq=new Cs("IN_LAYER_CONSTRAINT_PROCESSOR",27),IEe=new Cs("END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR",28),GEe=new Cs("LABEL_AND_NODE_SIZE_PROCESSOR",29),zEe=new Cs("INNERMOST_NODE_MARGIN_CALCULATOR",30),yq=new Cs("SELF_LOOP_ROUTER",31),_Ee=new Cs("COMMENT_NODE_MARGIN_CALCULATOR",32),aq=new Cs("END_LABEL_PREPROCESSOR",33),hq=new Cs("LABEL_DUMMY_SWITCHER",34),TEe=new Cs("CENTER_LABEL_MANAGEMENT_PROCESSOR",35),Z7=new Cs("LABEL_SIDE_SELECTOR",36),$Ee=new Cs("HYPEREDGE_DUMMY_MERGER",37),BEe=new Cs("HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR",38),qEe=new Cs("LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR",39),nS=new Cs("HIERARCHICAL_PORT_POSITION_PROCESSOR",40),AEe=new Cs("CONSTRAINTS_POSTPROCESSOR",41),CEe=new Cs("COMMENT_POSTPROCESSOR",42),HEe=new Cs("HYPERNODE_PROCESSOR",43),REe=new Cs("HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER",44),fq=new Cs("LONG_EDGE_JOINER",45),wq=new Cs("SELF_LOOP_POSTPROCESSOR",46),EEe=new Cs("BREAKING_POINT_REMOVER",47),gq=new Cs("NORTH_SOUTH_PORT_POSTPROCESSOR",48),jEe=new Cs("HORIZONTAL_COMPACTOR",49),lq=new Cs("LABEL_DUMMY_REMOVER",50),OEe=new Cs("FINAL_SPLINE_BENDPOINTS_CALCULATOR",51),DEe=new Cs("END_LABEL_SORTER",52),pO=new Cs("REVERSED_EDGE_RESTORER",53),sq=new Cs("END_LABEL_POSTPROCESSOR",54),NEe=new Cs("HIERARCHICAL_NODE_RESIZER",55),LEe=new Cs("DIRECTION_POSTPROCESSOR",56)}function Xyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki,Ws,rh,af,ed,aU,pN,rA,bN,IE,Dfe,Q4t,Ife,Jg,Bw,OE,vN,wN,Vk,Ofe,iA,Z4t,gLe,Rw,sA,Nfe,Uk,aA,Qy,oA,Pfe,J4t;for(gLe=0,ki=t,af=0,pN=ki.length;af0&&(e.a[Jg.p]=gLe++)}for(aA=0,Ws=n,ed=0,rA=Ws.length;ed0;){for(Jg=(Qn(wN.b>0),u(wN.a.Xb(wN.c=--wN.b),11)),vN=0,d=new C(Jg.e);d.a0&&(Jg.j==(ht(),An)?(e.a[Jg.p]=aA,++aA):(e.a[Jg.p]=aA+bN+Dfe,++Dfe))}aA+=Dfe}for(OE=new Mr,q=new C0,dr=t,rh=0,aU=dr.length;rhx.b&&(x.b=Vk)):Jg.i.c==Z4t&&(Vkx.c&&(x.c=Vk));for(L8(W,0,W.length,null),Uk=Me(Lr,Jr,25,W.length,15,1),r=Me(Lr,Jr,25,aA+1,15,1),le=0;le0;)bt%2>0&&(s+=Pfe[bt+1]),bt=(bt-1)/2|0,++Pfe[bt];for(Ut=Me(_wt,yt,362,W.length*2,0,1),Ne=0;Ne'?":an(W1t,e)?"'(?<' or '(? toIndex: ",_6e=", toIndex: ",C6e="Index: ",S6e=", Size: ",M7="org.eclipse.elk.alg.common",ji={62:1},_ht="org.eclipse.elk.alg.common.compaction",Cht="Scanline/EventHandler",o0="org.eclipse.elk.alg.common.compaction.oned",Sht="CNode belongs to another CGroup.",Aht="ISpacingsHandler/1",doe="The ",goe=" instance has been finished already.",Lht="The direction ",Mht=" is not supported by the CGraph instance.",Dht="OneDimensionalCompactor",Iht="OneDimensionalCompactor/lambda$0$Type",Oht="Quadruplet",Nht="ScanlineConstraintCalculator",Pht="ScanlineConstraintCalculator/ConstraintsScanlineHandler",Bht="ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type",Rht="ScanlineConstraintCalculator/Timestamp",Fht="ScanlineConstraintCalculator/lambda$0$Type",_d={169:1,45:1},poe="org.eclipse.elk.alg.common.compaction.options",cc="org.eclipse.elk.core.data",A6e="org.eclipse.elk.polyomino.traversalStrategy",L6e="org.eclipse.elk.polyomino.lowLevelSort",M6e="org.eclipse.elk.polyomino.highLevelSort",D6e="org.eclipse.elk.polyomino.fill",zh={130:1},boe="polyomino",xC="org.eclipse.elk.alg.common.networksimplex",c0={177:1,3:1,4:1},jht="org.eclipse.elk.alg.common.nodespacing",wb="org.eclipse.elk.alg.common.nodespacing.cellsystem",D7="CENTER",$ht={212:1,326:1},I6e={3:1,4:1,5:1,595:1},uk="LEFT",lk="RIGHT",O6e="Vertical alignment cannot be null",N6e="BOTTOM",Iz="org.eclipse.elk.alg.common.nodespacing.internal",EC="UNDEFINED",z1=.01,PI="org.eclipse.elk.alg.common.nodespacing.internal.algorithm",Hht="LabelPlacer/lambda$0$Type",zht="LabelPlacer/lambda$1$Type",Ght="portRatioOrPosition",I7="org.eclipse.elk.alg.common.overlaps",voe="DOWN",Cd="org.eclipse.elk.alg.common.polyomino",Oz="NORTH",woe="EAST",moe="SOUTH",yoe="WEST",Nz="org.eclipse.elk.alg.common.polyomino.structures",P6e="Direction",koe="Grid is only of size ",xoe=". Requested point (",Eoe=") is out of bounds.",Pz=" Given center based coordinates were (",BI="org.eclipse.elk.graph.properties",qht="IPropertyHolder",B6e={3:1,94:1,134:1},hk="org.eclipse.elk.alg.common.spore",Vht="org.eclipse.elk.alg.common.utils",mb={209:1},k4="org.eclipse.elk.core",Uht="Connected Components Compaction",Wht="org.eclipse.elk.alg.disco",Bz="org.eclipse.elk.alg.disco.graph",Toe="org.eclipse.elk.alg.disco.options",R6e="CompactionStrategy",F6e="org.eclipse.elk.disco.componentCompaction.strategy",j6e="org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm",$6e="org.eclipse.elk.disco.debug.discoGraph",H6e="org.eclipse.elk.disco.debug.discoPolys",Kht="componentCompaction",yb="org.eclipse.elk.disco",_oe="org.eclipse.elk.spacing.componentComponent",Coe="org.eclipse.elk.edge.thickness",fk="org.eclipse.elk.aspectRatio",uw="org.eclipse.elk.padding",x4="org.eclipse.elk.alg.disco.transform",Soe=1.5707963267948966,O7=17976931348623157e292,gy={3:1,4:1,5:1,192:1},z6e={3:1,6:1,4:1,5:1,106:1,120:1},G6e="org.eclipse.elk.alg.force",q6e="ComponentsProcessor",Yht="ComponentsProcessor/1",RI="org.eclipse.elk.alg.force.graph",Xht="Component Layout",V6e="org.eclipse.elk.alg.force.model",Rz="org.eclipse.elk.force.model",U6e="org.eclipse.elk.force.iterations",W6e="org.eclipse.elk.force.repulsivePower",Aoe="org.eclipse.elk.force.temperature",Sd=.001,Loe="org.eclipse.elk.force.repulsion",TC="org.eclipse.elk.alg.force.options",N7=1.600000023841858,Yl="org.eclipse.elk.force",FI="org.eclipse.elk.priority",py="org.eclipse.elk.spacing.nodeNode",Moe="org.eclipse.elk.spacing.edgeLabel",Fz="org.eclipse.elk.randomSeed",_C="org.eclipse.elk.separateConnectedComponents",jI="org.eclipse.elk.interactive",Doe="org.eclipse.elk.portConstraints",jz="org.eclipse.elk.edgeLabels.inline",CC="org.eclipse.elk.omitNodeMicroLayout",dk="org.eclipse.elk.nodeSize.options",E4="org.eclipse.elk.nodeSize.constraints",P7="org.eclipse.elk.nodeLabels.placement",B7="org.eclipse.elk.portLabels.placement",K6e="origin",Qht="random",Zht="boundingBox.upLeft",Jht="boundingBox.lowRight",Y6e="org.eclipse.elk.stress.fixed",X6e="org.eclipse.elk.stress.desiredEdgeLength",Q6e="org.eclipse.elk.stress.dimension",Z6e="org.eclipse.elk.stress.epsilon",J6e="org.eclipse.elk.stress.iterationLimit",t2="org.eclipse.elk.stress",eft="ELK Stress",gk="org.eclipse.elk.nodeSize.minimum",$z="org.eclipse.elk.alg.force.stress",tft="Layered layout",pk="org.eclipse.elk.alg.layered",$I="org.eclipse.elk.alg.layered.compaction.components",SC="org.eclipse.elk.alg.layered.compaction.oned",Hz="org.eclipse.elk.alg.layered.compaction.oned.algs",kb="org.eclipse.elk.alg.layered.compaction.recthull",Ad="org.eclipse.elk.alg.layered.components",U0="NONE",Dc={3:1,6:1,4:1,9:1,5:1,122:1},nft={3:1,6:1,4:1,5:1,141:1,106:1,120:1},zz="org.eclipse.elk.alg.layered.compound",ps={51:1},uu="org.eclipse.elk.alg.layered.graph",Ioe=" -> ",rft="Not supported by LGraph",eke="Port side is undefined",Ooe={3:1,6:1,4:1,5:1,474:1,141:1,106:1,120:1},Bg={3:1,6:1,4:1,5:1,141:1,193:1,203:1,106:1,120:1},ift={3:1,6:1,4:1,5:1,141:1,1943:1,203:1,106:1,120:1},sft=`([{"' \r +`,aft=`)]}"' \r +`,oft="The given string contains parts that cannot be parsed as numbers.",HI="org.eclipse.elk.core.math",cft={3:1,4:1,142:1,207:1,414:1},uft={3:1,4:1,116:1,207:1,414:1},qn="org.eclipse.elk.layered",Rg="org.eclipse.elk.alg.layered.graph.transform",lft="ElkGraphImporter",hft="ElkGraphImporter/lambda$0$Type",fft="ElkGraphImporter/lambda$1$Type",dft="ElkGraphImporter/lambda$2$Type",gft="ElkGraphImporter/lambda$4$Type",pft="Node margin calculation",Pn="org.eclipse.elk.alg.layered.intermediate",bft="ONE_SIDED_GREEDY_SWITCH",vft="TWO_SIDED_GREEDY_SWITCH",Noe="No implementation is available for the layout processor ",tke="IntermediateProcessorStrategy",Poe="Node '",wft="FIRST_SEPARATE",mft="LAST_SEPARATE",yft="Odd port side processing",Is="org.eclipse.elk.alg.layered.intermediate.compaction",AC="org.eclipse.elk.alg.layered.intermediate.greedyswitch",u0="org.eclipse.elk.alg.layered.p3order.counting",zI={225:1},bk="org.eclipse.elk.alg.layered.intermediate.loops",Xl="org.eclipse.elk.alg.layered.intermediate.loops.ordering",n2="org.eclipse.elk.alg.layered.intermediate.loops.routing",LC="org.eclipse.elk.alg.layered.intermediate.preserveorder",Ld="org.eclipse.elk.alg.layered.intermediate.wrapping",Ic="org.eclipse.elk.alg.layered.options",Boe="INTERACTIVE",kft="DEPTH_FIRST",xft="EDGE_LENGTH",Eft="SELF_LOOPS",Tft="firstTryWithInitialOrder",nke="org.eclipse.elk.layered.directionCongruency",rke="org.eclipse.elk.layered.feedbackEdges",Gz="org.eclipse.elk.layered.interactiveReferencePoint",ike="org.eclipse.elk.layered.mergeEdges",ske="org.eclipse.elk.layered.mergeHierarchyEdges",ake="org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides",oke="org.eclipse.elk.layered.portSortingStrategy",cke="org.eclipse.elk.layered.thoroughness",uke="org.eclipse.elk.layered.unnecessaryBendpoints",lke="org.eclipse.elk.layered.generatePositionAndLayerIds",Roe="org.eclipse.elk.layered.cycleBreaking.strategy",GI="org.eclipse.elk.layered.layering.strategy",hke="org.eclipse.elk.layered.layering.layerConstraint",fke="org.eclipse.elk.layered.layering.layerChoiceConstraint",dke="org.eclipse.elk.layered.layering.layerId",Foe="org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth",joe="org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor",$oe="org.eclipse.elk.layered.layering.nodePromotion.strategy",Hoe="org.eclipse.elk.layered.layering.nodePromotion.maxIterations",zoe="org.eclipse.elk.layered.layering.coffmanGraham.layerBound",MC="org.eclipse.elk.layered.crossingMinimization.strategy",gke="org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder",Goe="org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness",qoe="org.eclipse.elk.layered.crossingMinimization.semiInteractive",pke="org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint",bke="org.eclipse.elk.layered.crossingMinimization.positionId",vke="org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold",Voe="org.eclipse.elk.layered.crossingMinimization.greedySwitch.type",qz="org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type",T4="org.eclipse.elk.layered.nodePlacement.strategy",Vz="org.eclipse.elk.layered.nodePlacement.favorStraightEdges",Uoe="org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening",Woe="org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment",Koe="org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening",Yoe="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility",Xoe="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default",wke="org.eclipse.elk.layered.edgeRouting.selfLoopDistribution",mke="org.eclipse.elk.layered.edgeRouting.selfLoopOrdering",Uz="org.eclipse.elk.layered.edgeRouting.splines.mode",Wz="org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor",Qoe="org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth",yke="org.eclipse.elk.layered.spacing.baseValue",kke="org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers",xke="org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers",Eke="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers",Tke="org.eclipse.elk.layered.priority.direction",_ke="org.eclipse.elk.layered.priority.shortness",Cke="org.eclipse.elk.layered.priority.straightness",Zoe="org.eclipse.elk.layered.compaction.connectedComponents",Ske="org.eclipse.elk.layered.compaction.postCompaction.strategy",Ake="org.eclipse.elk.layered.compaction.postCompaction.constraints",Kz="org.eclipse.elk.layered.highDegreeNodes.treatment",Joe="org.eclipse.elk.layered.highDegreeNodes.threshold",ece="org.eclipse.elk.layered.highDegreeNodes.treeHeight",W0="org.eclipse.elk.layered.wrapping.strategy",Yz="org.eclipse.elk.layered.wrapping.additionalEdgeSpacing",Xz="org.eclipse.elk.layered.wrapping.correctionFactor",DC="org.eclipse.elk.layered.wrapping.cutting.strategy",tce="org.eclipse.elk.layered.wrapping.cutting.cuts",nce="org.eclipse.elk.layered.wrapping.cutting.msd.freedom",Qz="org.eclipse.elk.layered.wrapping.validify.strategy",Zz="org.eclipse.elk.layered.wrapping.validify.forbiddenIndices",Jz="org.eclipse.elk.layered.wrapping.multiEdge.improveCuts",eG="org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty",rce="org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges",Lke="org.eclipse.elk.layered.edgeLabels.sideSelection",Mke="org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy",tG="org.eclipse.elk.layered.considerModelOrder.strategy",Dke="org.eclipse.elk.layered.considerModelOrder.noModelOrder",ice="org.eclipse.elk.layered.considerModelOrder.components",Ike="org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy",sce="org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence",ace="org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence",oce="layering",_ft="layering.minWidth",Cft="layering.nodePromotion",qI="crossingMinimization",nG="org.eclipse.elk.hierarchyHandling",Sft="crossingMinimization.greedySwitch",Aft="nodePlacement",Lft="nodePlacement.bk",Mft="edgeRouting",VI="org.eclipse.elk.edgeRouting",G1="spacing",Oke="priority",Nke="compaction",Dft="compaction.postCompaction",Ift="Specifies whether and how post-process compaction is applied.",Pke="highDegreeNodes",Bke="wrapping",Oft="wrapping.cutting",Nft="wrapping.validify",Rke="wrapping.multiEdge",cce="edgeLabels",UI="considerModelOrder",Fke="org.eclipse.elk.spacing.commentComment",jke="org.eclipse.elk.spacing.commentNode",$ke="org.eclipse.elk.spacing.edgeEdge",Hke="org.eclipse.elk.spacing.edgeNode",zke="org.eclipse.elk.spacing.labelLabel",Gke="org.eclipse.elk.spacing.labelPortHorizontal",qke="org.eclipse.elk.spacing.labelPortVertical",Vke="org.eclipse.elk.spacing.labelNode",Uke="org.eclipse.elk.spacing.nodeSelfLoop",Wke="org.eclipse.elk.spacing.portPort",Kke="org.eclipse.elk.spacing.individual",Yke="org.eclipse.elk.port.borderOffset",Xke="org.eclipse.elk.noLayout",Qke="org.eclipse.elk.port.side",WI="org.eclipse.elk.debugMode",Zke="org.eclipse.elk.alignment",Jke="org.eclipse.elk.insideSelfLoops.activate",exe="org.eclipse.elk.insideSelfLoops.yo",uce="org.eclipse.elk.nodeSize.fixedGraphSize",txe="org.eclipse.elk.direction",nxe="org.eclipse.elk.nodeLabels.padding",rxe="org.eclipse.elk.portLabels.nextToPortIfPossible",ixe="org.eclipse.elk.portLabels.treatAsGroup",sxe="org.eclipse.elk.portAlignment.default",axe="org.eclipse.elk.portAlignment.north",oxe="org.eclipse.elk.portAlignment.south",cxe="org.eclipse.elk.portAlignment.west",uxe="org.eclipse.elk.portAlignment.east",rG="org.eclipse.elk.contentAlignment",lxe="org.eclipse.elk.junctionPoints",hxe="org.eclipse.elk.edgeLabels.placement",fxe="org.eclipse.elk.port.index",dxe="org.eclipse.elk.commentBox",gxe="org.eclipse.elk.hypernode",pxe="org.eclipse.elk.port.anchor",lce="org.eclipse.elk.partitioning.activate",hce="org.eclipse.elk.partitioning.partition",iG="org.eclipse.elk.position",bxe="org.eclipse.elk.margins",vxe="org.eclipse.elk.spacing.portsSurrounding",fce="org.eclipse.elk.interactiveLayout",Oc="org.eclipse.elk.core.util",wxe={3:1,4:1,5:1,593:1},Pft="NETWORK_SIMPLEX",Qc={123:1,51:1},sG="org.eclipse.elk.alg.layered.p1cycles",by="org.eclipse.elk.alg.layered.p2layers",mxe={402:1,225:1},Bft={832:1,3:1,4:1},Qu="org.eclipse.elk.alg.layered.p3order",ko="org.eclipse.elk.alg.layered.p4nodes",Rft={3:1,4:1,5:1,840:1},Md=1e-5,r2="org.eclipse.elk.alg.layered.p4nodes.bk",dce="org.eclipse.elk.alg.layered.p5edges",o1="org.eclipse.elk.alg.layered.p5edges.orthogonal",gce="org.eclipse.elk.alg.layered.p5edges.orthogonal.direction",pce=1e-6,vy="org.eclipse.elk.alg.layered.p5edges.splines",bce=.09999999999999998,aG=1e-8,Fft=4.71238898038469,jft=3.141592653589793,IC="org.eclipse.elk.alg.mrtree",OC="org.eclipse.elk.alg.mrtree.graph",vk="org.eclipse.elk.alg.mrtree.intermediate",$ft="Set neighbors in level",Hft="DESCENDANTS",yxe="org.eclipse.elk.mrtree.weighting",kxe="org.eclipse.elk.mrtree.searchOrder",oG="org.eclipse.elk.alg.mrtree.options",Fg="org.eclipse.elk.mrtree",zft="org.eclipse.elk.tree",xxe="org.eclipse.elk.alg.radial",_4=6.283185307179586,Exe=5e-324,Gft="org.eclipse.elk.alg.radial.intermediate",vce="org.eclipse.elk.alg.radial.intermediate.compaction",qft={3:1,4:1,5:1,106:1},Txe="org.eclipse.elk.alg.radial.intermediate.optimization",wce="No implementation is available for the layout option ",NC="org.eclipse.elk.alg.radial.options",_xe="org.eclipse.elk.radial.orderId",Cxe="org.eclipse.elk.radial.radius",mce="org.eclipse.elk.radial.compactor",yce="org.eclipse.elk.radial.compactionStepSize",Sxe="org.eclipse.elk.radial.sorter",Axe="org.eclipse.elk.radial.wedgeCriteria",Lxe="org.eclipse.elk.radial.optimizationCriteria",Dd="org.eclipse.elk.radial",Vft="org.eclipse.elk.alg.radial.p1position.wedge",Mxe="org.eclipse.elk.alg.radial.sorting",Uft=5.497787143782138,Wft=3.9269908169872414,Kft=2.356194490192345,Yft="org.eclipse.elk.alg.rectpacking",cG="org.eclipse.elk.alg.rectpacking.firstiteration",kce="org.eclipse.elk.alg.rectpacking.options",Dxe="org.eclipse.elk.rectpacking.optimizationGoal",Ixe="org.eclipse.elk.rectpacking.lastPlaceShift",Oxe="org.eclipse.elk.rectpacking.currentPosition",Nxe="org.eclipse.elk.rectpacking.desiredPosition",Pxe="org.eclipse.elk.rectpacking.onlyFirstIteration",Bxe="org.eclipse.elk.rectpacking.rowCompaction",xce="org.eclipse.elk.rectpacking.expandToAspectRatio",Rxe="org.eclipse.elk.rectpacking.targetWidth",uG="org.eclipse.elk.expandNodes",Gh="org.eclipse.elk.rectpacking",KI="org.eclipse.elk.alg.rectpacking.util",lG="No implementation available for ",wy="org.eclipse.elk.alg.spore",my="org.eclipse.elk.alg.spore.options",lw="org.eclipse.elk.sporeCompaction",Ece="org.eclipse.elk.underlyingLayoutAlgorithm",Fxe="org.eclipse.elk.processingOrder.treeConstruction",jxe="org.eclipse.elk.processingOrder.spanningTreeCostFunction",Tce="org.eclipse.elk.processingOrder.preferredRoot",_ce="org.eclipse.elk.processingOrder.rootSelection",Cce="org.eclipse.elk.structure.structureExtractionStrategy",$xe="org.eclipse.elk.compaction.compactionStrategy",Hxe="org.eclipse.elk.compaction.orthogonal",zxe="org.eclipse.elk.overlapRemoval.maxIterations",Gxe="org.eclipse.elk.overlapRemoval.runScanline",Sce="processingOrder",Xft="overlapRemoval",R7="org.eclipse.elk.sporeOverlap",Qft="org.eclipse.elk.alg.spore.p1structure",Ace="org.eclipse.elk.alg.spore.p2processingorder",Lce="org.eclipse.elk.alg.spore.p3execution",Zft="Invalid index: ",F7="org.eclipse.elk.core.alg",C4={331:1},yy={288:1},Jft="Make sure its type is registered with the ",qxe=" utility class.",j7="true",Mce="false",e1t="Couldn't clone property '",hw=.05,qh="org.eclipse.elk.core.options",t1t=1.2999999523162842,fw="org.eclipse.elk.box",Vxe="org.eclipse.elk.box.packingMode",n1t="org.eclipse.elk.algorithm",r1t="org.eclipse.elk.resolvedAlgorithm",Uxe="org.eclipse.elk.bendPoints",t3n="org.eclipse.elk.labelManager",i1t="org.eclipse.elk.scaleFactor",s1t="org.eclipse.elk.animate",a1t="org.eclipse.elk.animTimeFactor",o1t="org.eclipse.elk.layoutAncestors",c1t="org.eclipse.elk.maxAnimTime",u1t="org.eclipse.elk.minAnimTime",l1t="org.eclipse.elk.progressBar",h1t="org.eclipse.elk.validateGraph",f1t="org.eclipse.elk.validateOptions",d1t="org.eclipse.elk.zoomToFit",n3n="org.eclipse.elk.font.name",g1t="org.eclipse.elk.font.size",p1t="org.eclipse.elk.edge.type",b1t="partitioning",v1t="nodeLabels",hG="portAlignment",Dce="nodeSize",Ice="port",Wxe="portLabels",w1t="insideSelfLoops",PC="org.eclipse.elk.fixed",fG="org.eclipse.elk.random",m1t="port must have a parent node to calculate the port side",y1t="The edge needs to have exactly one edge section. Found: ",BC="org.eclipse.elk.core.util.adapters",kh="org.eclipse.emf.ecore",S4="org.eclipse.elk.graph",k1t="EMapPropertyHolder",x1t="ElkBendPoint",E1t="ElkGraphElement",T1t="ElkConnectableShape",Kxe="ElkEdge",_1t="ElkEdgeSection",C1t="EModelElement",S1t="ENamedElement",Yxe="ElkLabel",Xxe="ElkNode",Qxe="ElkPort",A1t={92:1,90:1},wk="org.eclipse.emf.common.notify.impl",i2="The feature '",RC="' is not a valid changeable feature",L1t="Expecting null",Oce="' is not a valid feature",M1t="The feature ID",D1t=" is not a valid feature ID",_c=32768,I1t={105:1,92:1,90:1,56:1,49:1,97:1},Tn="org.eclipse.emf.ecore.impl",xb="org.eclipse.elk.graph.impl",FC="Recursive containment not allowed for ",$7="The datatype '",dw="' is not a valid classifier",Nce="The value '",A4={190:1,3:1,4:1},Pce="The class '",H7="http://www.eclipse.org/elk/ElkGraph",Sf=1024,Zxe="property",jC="value",Bce="source",O1t="properties",N1t="identifier",Rce="height",Fce="width",jce="parent",$ce="text",Hce="children",P1t="hierarchical",Jxe="sources",zce="targets",e8e="sections",dG="bendPoints",t8e="outgoingShape",n8e="incomingShape",r8e="outgoingSections",i8e="incomingSections",Qa="org.eclipse.emf.common.util",s8e="Severe implementation error in the Json to ElkGraph importer.",Id="id",Ia="org.eclipse.elk.graph.json",a8e="Unhandled parameter types: ",B1t="startPoint",R1t="An edge must have at least one source and one target (edge id: '",z7="').",F1t="Referenced edge section does not exist: ",j1t=" (edge id: '",o8e="target",$1t="sourcePoint",H1t="targetPoint",gG="group",gi="name",z1t="connectableShape cannot be null",G1t="edge cannot be null",Gce="Passed edge is not 'simple'.",pG="org.eclipse.elk.graph.util",YI="The 'no duplicates' constraint is violated",qce="targetIndex=",Eb=", size=",Vce="sourceIndex=",Od={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1},Uce={3:1,4:1,20:1,28:1,52:1,14:1,47:1,15:1,54:1,67:1,63:1,58:1,588:1},bG="logging",q1t="measureExecutionTime",V1t="parser.parse.1",U1t="parser.parse.2",vG="parser.next.1",Wce="parser.next.2",W1t="parser.next.3",K1t="parser.next.4",Tb="parser.factor.1",c8e="parser.factor.2",Y1t="parser.factor.3",X1t="parser.factor.4",Q1t="parser.factor.5",Z1t="parser.factor.6",J1t="parser.atom.1",edt="parser.atom.2",tdt="parser.atom.3",u8e="parser.atom.4",Kce="parser.atom.5",l8e="parser.cc.1",wG="parser.cc.2",ndt="parser.cc.3",rdt="parser.cc.5",h8e="parser.cc.6",f8e="parser.cc.7",Yce="parser.cc.8",idt="parser.ope.1",sdt="parser.ope.2",adt="parser.ope.3",jg="parser.descape.1",odt="parser.descape.2",cdt="parser.descape.3",udt="parser.descape.4",ldt="parser.descape.5",xh="parser.process.1",hdt="parser.quantifier.1",fdt="parser.quantifier.2",ddt="parser.quantifier.3",gdt="parser.quantifier.4",d8e="parser.quantifier.5",pdt="org.eclipse.emf.common.notify",g8e={415:1,672:1},bdt={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1},XI={366:1,143:1},$C="index=",Xce={3:1,4:1,5:1,126:1},vdt={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,58:1},p8e={3:1,6:1,4:1,5:1,192:1},wdt={3:1,4:1,5:1,165:1,367:1},mdt=";/?:@&=+$,",ydt="invalid authority: ",kdt="EAnnotation",xdt="ETypedElement",Edt="EStructuralFeature",Tdt="EAttribute",_dt="EClassifier",Cdt="EEnumLiteral",Sdt="EGenericType",Adt="EOperation",Ldt="EParameter",Mdt="EReference",Ddt="ETypeParameter",Wi="org.eclipse.emf.ecore.util",Qce={76:1},b8e={3:1,20:1,14:1,15:1,58:1,589:1,76:1,69:1,95:1},Idt="org.eclipse.emf.ecore.util.FeatureMap$Entry",Zu=8192,ky=2048,HC="byte",mG="char",zC="double",GC="float",qC="int",VC="long",UC="short",Odt="java.lang.Object",L4={3:1,4:1,5:1,247:1},v8e={3:1,4:1,5:1,673:1},Ndt={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,69:1},Zo={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,69:1,95:1},QI="mixed",Zr="http:///org/eclipse/emf/ecore/util/ExtendedMetaData",Vh="kind",Pdt={3:1,4:1,5:1,674:1},w8e={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1,76:1,69:1,95:1},yG={20:1,28:1,52:1,14:1,15:1,58:1,69:1},kG={47:1,125:1,279:1},xG={72:1,332:1},EG="The value of type '",TG="' must be of type '",M4=1316,Uh="http://www.eclipse.org/emf/2002/Ecore",_G=-32768,gw="constraints",Ha="baseType",Bdt="getEStructuralFeature",Rdt="getFeatureID",WC="feature",Fdt="getOperationID",m8e="operation",jdt="defaultValue",$dt="eTypeParameters",Hdt="isInstance",zdt="getEEnumLiteral",Gdt="eContainingClass",li={55:1},qdt={3:1,4:1,5:1,119:1},Vdt="org.eclipse.emf.ecore.resource",Udt={92:1,90:1,591:1,1935:1},Zce="org.eclipse.emf.ecore.resource.impl",y8e="unspecified",ZI="simple",CG="attribute",Wdt="attributeWildcard",SG="element",Jce="elementWildcard",c1="collapse",eue="itemType",AG="namespace",JI="##targetNamespace",Wh="whiteSpace",k8e="wildcards",_b="http://www.eclipse.org/emf/2003/XMLType",tue="##any",G7="uninitialized",eO="The multiplicity constraint is violated",LG="org.eclipse.emf.ecore.xml.type",Kdt="ProcessingInstruction",Ydt="SimpleAnyType",Xdt="XMLTypeDocumentRoot",As="org.eclipse.emf.ecore.xml.type.impl",tO="INF",Qdt="processing",Zdt="ENTITIES_._base",x8e="minLength",E8e="ENTITY",MG="NCName",Jdt="IDREFS_._base",T8e="integer",nue="token",rue="pattern",e0t="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",_8e="\\i\\c*",t0t="[\\i-[:]][\\c-[:]]*",n0t="nonPositiveInteger",nO="maxInclusive",C8e="NMTOKEN",r0t="NMTOKENS_._base",S8e="nonNegativeInteger",rO="minInclusive",i0t="normalizedString",s0t="unsignedByte",a0t="unsignedInt",o0t="18446744073709551615",c0t="unsignedShort",u0t="processingInstruction",$g="org.eclipse.emf.ecore.xml.type.internal",q7=1114111,l0t="Internal Error: shorthands: \\u",KC="xml:isDigit",iue="xml:isWord",sue="xml:isSpace",aue="xml:isNameChar",oue="xml:isInitialNameChar",h0t="09٠٩۰۹०९০৯੦੯૦૯୦୯௧௯౦౯೦೯൦൯๐๙໐໙༠༩",f0t="AZazÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁΆΆΈΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆאתװײءغفيٱڷںھۀێېۓەەۥۦअहऽऽक़ॡঅঌএঐওনপরললশহড়ঢ়য়ৡৰৱਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹਖ਼ੜਫ਼ਫ਼ੲੴઅઋઍઍએઑઓનપરલળવહઽઽૠૠଅଌଏଐଓନପରଲଳଶହଽଽଡ଼ଢ଼ୟୡஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹఅఌఎఐఒనపళవహౠౡಅಌಎಐಒನಪಳವಹೞೞೠೡഅഌഎഐഒനപഹൠൡกฮะะาำเๅກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະະາຳຽຽເໄཀཇཉཀྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼΩΩKÅ℮℮ↀↂ〇〇〡〩ぁゔァヺㄅㄬ一龥가힣",d0t="Private Use",cue="ASSIGNED",uue="\0€ÿĀſƀɏɐʯʰ˿̀ͯͰϿЀӿ԰֏֐׿؀ۿ܀ݏހ޿ऀॿঀ৿਀੿઀૿଀୿஀௿ఀ౿ಀ೿ഀൿ඀෿฀๿຀໿ༀ࿿က႟Ⴀჿᄀᇿሀ፿Ꭰ᏿᐀ᙿ ᚟ᚠ᛿ក៿᠀᢯Ḁỿἀ῿ ⁰₟₠⃏⃐⃿℀⅏⅐↏←⇿∀⋿⌀⏿␀␿⑀⑟①⓿─╿▀▟■◿☀⛿✀➿⠀⣿⺀⻿⼀⿟⿰⿿ 〿぀ゟ゠ヿ㄀ㄯ㄰㆏㆐㆟ㆠㆿ㈀㋿㌀㏿㐀䶵一鿿ꀀ꒏꒐꓏가힣豈﫿ffﭏﭐ﷿︠︯︰﹏﹐﹯ﹰ﻾\uFEFF\uFEFF＀￯",A8e="UNASSIGNED",V7={3:1,117:1},g0t="org.eclipse.emf.ecore.xml.type.util",DG={3:1,4:1,5:1,368:1},L8e="org.eclipse.xtext.xbase.lib",p0t="Cannot add elements to a Range",b0t="Cannot set elements in a Range",v0t="Cannot remove elements from a Range",IG="locale",OG="default",NG="user.agent",l,PG,lue;b.goog=b.goog||{},b.goog.global=b.goog.global||b,Afn(),M(1,null,{},S),l.Fb=function(t){return lVe(this,t)},l.Gb=function(){return this.gm},l.Hb=function(){return xv(this)},l.Ib=function(){var t;return Cp(pl(this))+"@"+(t=Xi(this)>>>0,t.toString(16))},l.equals=function(e){return this.Fb(e)},l.hashCode=function(){return this.Hb()},l.toString=function(){return this.Ib()};var w0t,m0t,y0t;M(290,1,{290:1,2026:1},aye),l.le=function(t){var n;return n=new aye,n.i=4,t>1?n.c=SXe(this,t-1):n.c=this,n},l.me=function(){return S0(this),this.b},l.ne=function(){return Cp(this)},l.oe=function(){return S0(this),this.k},l.pe=function(){return(this.i&4)!=0},l.qe=function(){return(this.i&1)!=0},l.Ib=function(){return kme(this)},l.i=0;var Yn=O(oc,"Object",1),M8e=O(oc,"Class",290);M(1998,1,_I),O(CI,"Optional",1998),M(1170,1998,_I,N),l.Fb=function(t){return t===this},l.Hb=function(){return 2040732332},l.Ib=function(){return"Optional.absent()"},l.Jb=function(t){return Nr(t),kT(),hue};var hue;O(CI,"Absent",1170),M(628,1,{},ste),O(CI,"Joiner",628);var r3n=ss(CI,"Predicate");M(582,1,{169:1,582:1,3:1,45:1},aT),l.Mb=function(t){return pnt(this,t)},l.Lb=function(t){return pnt(this,t)},l.Fb=function(t){var n;return we(t,582)?(n=u(t,582),J4e(this.a,n.a)):!1},l.Hb=function(){return hye(this.a)+306654252},l.Ib=function(){return g1n(this.a)},O(CI,"Predicates/AndPredicate",582),M(408,1998,{408:1,3:1},Bx),l.Fb=function(t){var n;return we(t,408)?(n=u(t,408),Ci(this.a,n.a)):!1},l.Hb=function(){return 1502476572+Xi(this.a)},l.Ib=function(){return tht+this.a+")"},l.Jb=function(t){return new Bx(Zj(t.Kb(this.a),"the Function passed to Optional.transform() must not return null."))},O(CI,"Present",408),M(198,1,T7),l.Nb=function(t){La(this,t)},l.Qb=function(){eze()},O(qt,"UnmodifiableIterator",198),M(1978,198,_7),l.Qb=function(){eze()},l.Rb=function(t){throw J(new Fr)},l.Wb=function(t){throw J(new Fr)},O(qt,"UnmodifiableListIterator",1978),M(386,1978,_7),l.Ob=function(){return this.c0},l.Pb=function(){if(this.c>=this.d)throw J(new xc);return this.Xb(this.c++)},l.Tb=function(){return this.c},l.Ub=function(){if(this.c<=0)throw J(new xc);return this.Xb(--this.c)},l.Vb=function(){return this.c-1},l.c=0,l.d=0,O(qt,"AbstractIndexedListIterator",386),M(699,198,T7),l.Ob=function(){return nie(this)},l.Pb=function(){return pme(this)},l.e=1,O(qt,"AbstractIterator",699),M(1986,1,{224:1}),l.Zb=function(){var t;return t=this.f,t||(this.f=this.ac())},l.Fb=function(t){return yie(this,t)},l.Hb=function(){return Xi(this.Zb())},l.dc=function(){return this.gc()==0},l.ec=function(){return D6(this)},l.Ib=function(){return Qo(this.Zb())},O(qt,"AbstractMultimap",1986),M(726,1986,bb),l.$b=function(){U$(this)},l._b=function(t){return mze(this,t)},l.ac=function(){return new Jx(this,this.c)},l.ic=function(t){return this.hc()},l.bc=function(){return new H3(this,this.c)},l.jc=function(){return this.mc(this.hc())},l.kc=function(){return new RHe(this)},l.lc=function(){return Sse(this.c.vc().Nc(),new R,64,this.d)},l.cc=function(t){return Ii(this,t)},l.fc=function(t){return jD(this,t)},l.gc=function(){return this.d},l.mc=function(t){return hn(),new T(t)},l.nc=function(){return new BHe(this)},l.oc=function(){return Sse(this.c.Cc().Nc(),new B,64,this.d)},l.pc=function(t,n){return new C$(this,t,n,null)},l.d=0,O(qt,"AbstractMapBasedMultimap",726),M(1631,726,bb),l.hc=function(){return new su(this.a)},l.jc=function(){return hn(),hn(),bo},l.cc=function(t){return u(Ii(this,t),15)},l.fc=function(t){return u(jD(this,t),15)},l.Zb=function(){return B6(this)},l.Fb=function(t){return yie(this,t)},l.qc=function(t){return u(Ii(this,t),15)},l.rc=function(t){return u(jD(this,t),15)},l.mc=function(t){return ZM(u(t,15))},l.pc=function(t,n){return IQe(this,t,u(n,15),null)},O(qt,"AbstractListMultimap",1631),M(732,1,ga),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.c.Ob()||this.e.Ob()},l.Pb=function(){var t;return this.e.Ob()||(t=u(this.c.Pb(),42),this.b=t.cd(),this.a=u(t.dd(),14),this.e=this.a.Kc()),this.sc(this.b,this.e.Pb())},l.Qb=function(){this.e.Qb(),this.a.dc()&&this.c.Qb(),--this.d.d},O(qt,"AbstractMapBasedMultimap/Itr",732),M(1099,732,ga,BHe),l.sc=function(t,n){return n},O(qt,"AbstractMapBasedMultimap/1",1099),M(1100,1,{},B),l.Kb=function(t){return u(t,14).Nc()},O(qt,"AbstractMapBasedMultimap/1methodref$spliterator$Type",1100),M(1101,732,ga,RHe),l.sc=function(t,n){return new vv(t,n)},O(qt,"AbstractMapBasedMultimap/2",1101);var D8e=ss(wr,"Map");M(1967,1,ow),l.wc=function(t){B_(this,t)},l.yc=function(t,n,r){return Rie(this,t,n,r)},l.$b=function(){this.vc().$b()},l.tc=function(t){return lse(this,t)},l._b=function(t){return!!n4e(this,t,!1)},l.uc=function(t){var n,r,s;for(r=this.vc().Kc();r.Ob();)if(n=u(r.Pb(),42),s=n.dd(),je(t)===je(s)||t!=null&&Ci(t,s))return!0;return!1},l.Fb=function(t){var n,r,s;if(t===this)return!0;if(!we(t,83)||(s=u(t,83),this.gc()!=s.gc()))return!1;for(r=s.vc().Kc();r.Ob();)if(n=u(r.Pb(),42),!this.tc(n))return!1;return!0},l.xc=function(t){return hc(n4e(this,t,!1))},l.Hb=function(){return tye(this.vc())},l.dc=function(){return this.gc()==0},l.ec=function(){return new vm(this)},l.zc=function(t,n){throw J(new pg("Put not supported on this map"))},l.Ac=function(t){P_(this,t)},l.Bc=function(t){return hc(n4e(this,t,!0))},l.gc=function(){return this.vc().gc()},l.Ib=function(){return vst(this)},l.Cc=function(){return new E1(this)},O(wr,"AbstractMap",1967),M(1987,1967,ow),l.bc=function(){return new mF(this)},l.vc=function(){return DKe(this)},l.ec=function(){var t;return t=this.g,t||(this.g=this.bc())},l.Cc=function(){var t;return t=this.i,t||(this.i=new hGe(this))},O(qt,"Maps/ViewCachingAbstractMap",1987),M(389,1987,ow,Jx),l.xc=function(t){return Xrn(this,t)},l.Bc=function(t){return fan(this,t)},l.$b=function(){this.d==this.e.c?this.e.$b():Aj(new Eve(this))},l._b=function(t){return Knt(this.d,t)},l.Ec=function(){return new Rx(this)},l.Dc=function(){return this.Ec()},l.Fb=function(t){return this===t||Ci(this.d,t)},l.Hb=function(){return Xi(this.d)},l.ec=function(){return this.e.ec()},l.gc=function(){return this.d.gc()},l.Ib=function(){return Qo(this.d)},O(qt,"AbstractMapBasedMultimap/AsMap",389);var q1=ss(oc,"Iterable");M(28,1,hy),l.Jc=function(t){Da(this,t)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new mn(this,0)},l.Oc=function(){return new vn(null,this.Nc())},l.Fc=function(t){throw J(new pg("Add not supported on this collection"))},l.Gc=function(t){return no(this,t)},l.$b=function(){cwe(this)},l.Hc=function(t){return Xm(this,t,!1)},l.Ic=function(t){return MD(this,t)},l.dc=function(){return this.gc()==0},l.Mc=function(t){return Xm(this,t,!0)},l.Pc=function(){return Bve(this)},l.Qc=function(t){return YD(this,t)},l.Ib=function(){return Yp(this)},O(wr,"AbstractCollection",28);var Kh=ss(wr,"Set");M(H1,28,Xu),l.Nc=function(){return new mn(this,1)},l.Fb=function(t){return Hrt(this,t)},l.Hb=function(){return tye(this)},O(wr,"AbstractSet",H1),M(1970,H1,Xu),O(qt,"Sets/ImprovedAbstractSet",1970),M(1971,1970,Xu),l.$b=function(){this.Rc().$b()},l.Hc=function(t){return xrt(this,t)},l.dc=function(){return this.Rc().dc()},l.Mc=function(t){var n;return this.Hc(t)?(n=u(t,42),this.Rc().ec().Mc(n.cd())):!1},l.gc=function(){return this.Rc().gc()},O(qt,"Maps/EntrySet",1971),M(1097,1971,Xu,Rx),l.Hc=function(t){return Mye(this.a.d.vc(),t)},l.Kc=function(){return new Eve(this.a)},l.Rc=function(){return this.a},l.Mc=function(t){var n;return Mye(this.a.d.vc(),t)?(n=u(t,42),Bnn(this.a.e,n.cd()),!0):!1},l.Nc=function(){return qM(this.a.d.vc().Nc(),new $R(this.a))},O(qt,"AbstractMapBasedMultimap/AsMap/AsMapEntries",1097),M(1098,1,{},$R),l.Kb=function(t){return kZe(this.a,u(t,42))},O(qt,"AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type",1098),M(730,1,ga,Eve),l.Nb=function(t){La(this,t)},l.Pb=function(){var t;return t=u(this.b.Pb(),42),this.a=u(t.dd(),14),kZe(this.c,t)},l.Ob=function(){return this.b.Ob()},l.Qb=function(){X3(!!this.a),this.b.Qb(),this.c.e.d-=this.a.gc(),this.a.$b(),this.a=null},O(qt,"AbstractMapBasedMultimap/AsMap/AsMapIterator",730),M(532,1970,Xu,mF),l.$b=function(){this.b.$b()},l.Hc=function(t){return this.b._b(t)},l.Jc=function(t){Nr(t),this.b.wc(new dee(t))},l.dc=function(){return this.b.dc()},l.Kc=function(){return new xT(this.b.vc().Kc())},l.Mc=function(t){return this.b._b(t)?(this.b.Bc(t),!0):!1},l.gc=function(){return this.b.gc()},O(qt,"Maps/KeySet",532),M(318,532,Xu,H3),l.$b=function(){var t;Aj((t=this.b.vc().Kc(),new Ype(this,t)))},l.Ic=function(t){return this.b.ec().Ic(t)},l.Fb=function(t){return this===t||Ci(this.b.ec(),t)},l.Hb=function(){return Xi(this.b.ec())},l.Kc=function(){var t;return t=this.b.vc().Kc(),new Ype(this,t)},l.Mc=function(t){var n,r;return r=0,n=u(this.b.Bc(t),14),n&&(r=n.gc(),n.$b(),this.a.d-=r),r>0},l.Nc=function(){return this.b.ec().Nc()},O(qt,"AbstractMapBasedMultimap/KeySet",318),M(731,1,ga,Ype),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.c.Ob()},l.Pb=function(){return this.a=u(this.c.Pb(),42),this.a.cd()},l.Qb=function(){var t;X3(!!this.a),t=u(this.a.dd(),14),this.c.Qb(),this.b.a.d-=t.gc(),t.$b(),this.a=null},O(qt,"AbstractMapBasedMultimap/KeySet/1",731),M(491,389,{83:1,161:1},RM),l.bc=function(){return this.Sc()},l.ec=function(){return this.Tc()},l.Sc=function(){return new dM(this.c,this.Uc())},l.Tc=function(){var t;return t=this.b,t||(this.b=this.Sc())},l.Uc=function(){return u(this.d,161)},O(qt,"AbstractMapBasedMultimap/SortedAsMap",491),M(542,491,nht,pj),l.bc=function(){return new Zx(this.a,u(u(this.d,161),171))},l.Sc=function(){return new Zx(this.a,u(u(this.d,161),171))},l.ec=function(){var t;return t=this.b,u(t||(this.b=new Zx(this.a,u(u(this.d,161),171))),271)},l.Tc=function(){var t;return t=this.b,u(t||(this.b=new Zx(this.a,u(u(this.d,161),171))),271)},l.Uc=function(){return u(u(this.d,161),171)},O(qt,"AbstractMapBasedMultimap/NavigableAsMap",542),M(490,318,rht,dM),l.Nc=function(){return this.b.ec().Nc()},O(qt,"AbstractMapBasedMultimap/SortedKeySet",490),M(388,490,g6e,Zx),O(qt,"AbstractMapBasedMultimap/NavigableKeySet",388),M(541,28,hy,C$),l.Fc=function(t){var n,r;return bl(this),r=this.d.dc(),n=this.d.Fc(t),n&&(++this.f.d,r&&HM(this)),n},l.Gc=function(t){var n,r,s;return t.dc()?!1:(s=(bl(this),this.d.gc()),n=this.d.Gc(t),n&&(r=this.d.gc(),this.f.d+=r-s,s==0&&HM(this)),n)},l.$b=function(){var t;t=(bl(this),this.d.gc()),t!=0&&(this.d.$b(),this.f.d-=t,Oj(this))},l.Hc=function(t){return bl(this),this.d.Hc(t)},l.Ic=function(t){return bl(this),this.d.Ic(t)},l.Fb=function(t){return t===this?!0:(bl(this),Ci(this.d,t))},l.Hb=function(){return bl(this),Xi(this.d)},l.Kc=function(){return bl(this),new uve(this)},l.Mc=function(t){var n;return bl(this),n=this.d.Mc(t),n&&(--this.f.d,Oj(this)),n},l.gc=function(){return Yqe(this)},l.Nc=function(){return bl(this),this.d.Nc()},l.Ib=function(){return bl(this),Qo(this.d)},O(qt,"AbstractMapBasedMultimap/WrappedCollection",541);var Eh=ss(wr,"List");M(728,541,{20:1,28:1,14:1,15:1},Fve),l.ad=function(t){Y3(this,t)},l.Nc=function(){return bl(this),this.d.Nc()},l.Vc=function(t,n){var r;bl(this),r=this.d.dc(),u(this.d,15).Vc(t,n),++this.a.d,r&&HM(this)},l.Wc=function(t,n){var r,s,o;return n.dc()?!1:(o=(bl(this),this.d.gc()),r=u(this.d,15).Wc(t,n),r&&(s=this.d.gc(),this.a.d+=s-o,o==0&&HM(this)),r)},l.Xb=function(t){return bl(this),u(this.d,15).Xb(t)},l.Xc=function(t){return bl(this),u(this.d,15).Xc(t)},l.Yc=function(){return bl(this),new AVe(this)},l.Zc=function(t){return bl(this),new HYe(this,t)},l.$c=function(t){var n;return bl(this),n=u(this.d,15).$c(t),--this.a.d,Oj(this),n},l._c=function(t,n){return bl(this),u(this.d,15)._c(t,n)},l.bd=function(t,n){return bl(this),IQe(this.a,this.e,u(this.d,15).bd(t,n),this.b?this.b:this)},O(qt,"AbstractMapBasedMultimap/WrappedList",728),M(1096,728,{20:1,28:1,14:1,15:1,54:1},wUe),O(qt,"AbstractMapBasedMultimap/RandomAccessWrappedList",1096),M(620,1,ga,uve),l.Nb=function(t){La(this,t)},l.Ob=function(){return y8(this),this.b.Ob()},l.Pb=function(){return y8(this),this.b.Pb()},l.Qb=function(){tUe(this)},O(qt,"AbstractMapBasedMultimap/WrappedCollection/WrappedIterator",620),M(729,620,r0,AVe,HYe),l.Qb=function(){tUe(this)},l.Rb=function(t){var n;n=Yqe(this.a)==0,(y8(this),u(this.b,125)).Rb(t),++this.a.a.d,n&&HM(this.a)},l.Sb=function(){return(y8(this),u(this.b,125)).Sb()},l.Tb=function(){return(y8(this),u(this.b,125)).Tb()},l.Ub=function(){return(y8(this),u(this.b,125)).Ub()},l.Vb=function(){return(y8(this),u(this.b,125)).Vb()},l.Wb=function(t){(y8(this),u(this.b,125)).Wb(t)},O(qt,"AbstractMapBasedMultimap/WrappedList/WrappedListIterator",729),M(727,541,rht,Mbe),l.Nc=function(){return bl(this),this.d.Nc()},O(qt,"AbstractMapBasedMultimap/WrappedSortedSet",727),M(1095,727,g6e,yVe),O(qt,"AbstractMapBasedMultimap/WrappedNavigableSet",1095),M(1094,541,Xu,IUe),l.Nc=function(){return bl(this),this.d.Nc()},O(qt,"AbstractMapBasedMultimap/WrappedSet",1094),M(1103,1,{},R),l.Kb=function(t){return znn(u(t,42))},O(qt,"AbstractMapBasedMultimap/lambda$1$Type",1103),M(1102,1,{},eee),l.Kb=function(t){return new vv(this.a,t)},O(qt,"AbstractMapBasedMultimap/lambda$2$Type",1102);var Cb=ss(wr,"Map/Entry");M(345,1,_z),l.Fb=function(t){var n;return we(t,42)?(n=u(t,42),md(this.cd(),n.cd())&&md(this.dd(),n.dd())):!1},l.Hb=function(){var t,n;return t=this.cd(),n=this.dd(),(t==null?0:Xi(t))^(n==null?0:Xi(n))},l.ed=function(t){throw J(new Fr)},l.Ib=function(){return this.cd()+"="+this.dd()},O(qt,iht,345),M(1988,28,hy),l.$b=function(){this.fd().$b()},l.Hc=function(t){var n;return we(t,42)?(n=u(t,42),xtn(this.fd(),n.cd(),n.dd())):!1},l.Mc=function(t){var n;return we(t,42)?(n=u(t,42),fQe(this.fd(),n.cd(),n.dd())):!1},l.gc=function(){return this.fd().d},O(qt,"Multimaps/Entries",1988),M(733,1988,hy,XL),l.Kc=function(){return this.a.kc()},l.fd=function(){return this.a},l.Nc=function(){return this.a.lc()},O(qt,"AbstractMultimap/Entries",733),M(734,733,Xu,_pe),l.Nc=function(){return this.a.lc()},l.Fb=function(t){return y4e(this,t)},l.Hb=function(){return ptt(this)},O(qt,"AbstractMultimap/EntrySet",734),M(735,28,hy,T3),l.$b=function(){this.a.$b()},l.Hc=function(t){return aan(this.a,t)},l.Kc=function(){return this.a.nc()},l.gc=function(){return this.a.d},l.Nc=function(){return this.a.oc()},O(qt,"AbstractMultimap/Values",735),M(1989,28,{835:1,20:1,28:1,14:1}),l.Jc=function(t){Nr(t),G3(this).Jc(new fee(t))},l.Nc=function(){var t;return t=G3(this).Nc(),Sse(t,new ve,64|t.qd()&1296,this.a.d)},l.Fc=function(t){return Npe(),!0},l.Gc=function(t){return Nr(this),Nr(t),we(t,543)?Stn(u(t,835)):!t.dc()&&Wre(this,t.Kc())},l.Hc=function(t){var n;return n=u(Ym(B6(this.a),t),14),(n?n.gc():0)>0},l.Fb=function(t){return y0n(this,t)},l.Hb=function(){return Xi(G3(this))},l.dc=function(){return G3(this).dc()},l.Mc=function(t){return Nat(this,t,1)>0},l.Ib=function(){return Qo(G3(this))},O(qt,"AbstractMultiset",1989),M(1991,1970,Xu),l.$b=function(){U$(this.a.a)},l.Hc=function(t){var n,r;return we(t,492)?(r=u(t,416),u(r.a.dd(),14).gc()<=0?!1:(n=zXe(this.a,r.a.cd()),n==u(r.a.dd(),14).gc())):!1},l.Mc=function(t){var n,r,s,o;return we(t,492)&&(r=u(t,416),n=r.a.cd(),s=u(r.a.dd(),14).gc(),s!=0)?(o=this.a,cdn(o,n,s)):!1},O(qt,"Multisets/EntrySet",1991),M(1109,1991,Xu,QL),l.Kc=function(){return new VHe(DKe(B6(this.a.a)).Kc())},l.gc=function(){return B6(this.a.a).gc()},O(qt,"AbstractMultiset/EntrySet",1109),M(619,726,bb),l.hc=function(){return this.gd()},l.jc=function(){return this.hd()},l.cc=function(t){return this.jd(t)},l.fc=function(t){return this.kd(t)},l.Zb=function(){var t;return t=this.f,t||(this.f=this.ac())},l.hd=function(){return hn(),hn(),HG},l.Fb=function(t){return yie(this,t)},l.jd=function(t){return u(Ii(this,t),21)},l.kd=function(t){return u(jD(this,t),21)},l.mc=function(t){return hn(),new Kx(u(t,21))},l.pc=function(t,n){return new IUe(this,t,u(n,21))},O(qt,"AbstractSetMultimap",619),M(1657,619,bb),l.hc=function(){return new Sp(this.b)},l.gd=function(){return new Sp(this.b)},l.jc=function(){return Jve(new Sp(this.b))},l.hd=function(){return Jve(new Sp(this.b))},l.cc=function(t){return u(u(Ii(this,t),21),84)},l.jd=function(t){return u(u(Ii(this,t),21),84)},l.fc=function(t){return u(u(jD(this,t),21),84)},l.kd=function(t){return u(u(jD(this,t),21),84)},l.mc=function(t){return we(t,271)?Jve(u(t,271)):(hn(),new ube(u(t,84)))},l.Zb=function(){var t;return t=this.f,t||(this.f=we(this.c,171)?new pj(this,u(this.c,171)):we(this.c,161)?new RM(this,u(this.c,161)):new Jx(this,this.c))},l.pc=function(t,n){return we(n,271)?new yVe(this,t,u(n,271)):new Mbe(this,t,u(n,84))},O(qt,"AbstractSortedSetMultimap",1657),M(1658,1657,bb),l.Zb=function(){var t;return t=this.f,u(u(t||(this.f=we(this.c,171)?new pj(this,u(this.c,171)):we(this.c,161)?new RM(this,u(this.c,161)):new Jx(this,this.c)),161),171)},l.ec=function(){var t;return t=this.i,u(u(t||(this.i=we(this.c,171)?new Zx(this,u(this.c,171)):we(this.c,161)?new dM(this,u(this.c,161)):new H3(this,this.c)),84),271)},l.bc=function(){return we(this.c,171)?new Zx(this,u(this.c,171)):we(this.c,161)?new dM(this,u(this.c,161)):new H3(this,this.c)},O(qt,"AbstractSortedKeySortedSetMultimap",1658),M(2010,1,{1947:1}),l.Fb=function(t){return Qln(this,t)},l.Hb=function(){var t;return tye((t=this.g,t||(this.g=new oT(this))))},l.Ib=function(){var t;return vst((t=this.f,t||(this.f=new tbe(this))))},O(qt,"AbstractTable",2010),M(665,H1,Xu,oT),l.$b=function(){tze()},l.Hc=function(t){var n,r;return we(t,468)?(n=u(t,682),r=u(Ym(eYe(this.a),Mp(n.c.e,n.b)),83),!!r&&Mye(r.vc(),new vv(Mp(n.c.c,n.a),G6(n.c,n.b,n.a)))):!1},l.Kc=function(){return PJt(this.a)},l.Mc=function(t){var n,r;return we(t,468)?(n=u(t,682),r=u(Ym(eYe(this.a),Mp(n.c.e,n.b)),83),!!r&&Oan(r.vc(),new vv(Mp(n.c.c,n.a),G6(n.c,n.b,n.a)))):!1},l.gc=function(){return fKe(this.a)},l.Nc=function(){return Mtn(this.a)},O(qt,"AbstractTable/CellSet",665),M(1928,28,hy,tee),l.$b=function(){tze()},l.Hc=function(t){return zhn(this.a,t)},l.Kc=function(){return BJt(this.a)},l.gc=function(){return fKe(this.a)},l.Nc=function(){return pQe(this.a)},O(qt,"AbstractTable/Values",1928),M(1632,1631,bb),O(qt,"ArrayListMultimapGwtSerializationDependencies",1632),M(513,1632,bb,ite,Twe),l.hc=function(){return new su(this.a)},l.a=0,O(qt,"ArrayListMultimap",513),M(664,2010,{664:1,1947:1,3:1},qat),O(qt,"ArrayTable",664),M(1924,386,_7,YVe),l.Xb=function(t){return new sye(this.a,t)},O(qt,"ArrayTable/1",1924),M(1925,1,{},jR),l.ld=function(t){return new sye(this.a,t)},O(qt,"ArrayTable/1methodref$getCell$Type",1925),M(2011,1,{682:1}),l.Fb=function(t){var n;return t===this?!0:we(t,468)?(n=u(t,682),md(Mp(this.c.e,this.b),Mp(n.c.e,n.b))&&md(Mp(this.c.c,this.a),Mp(n.c.c,n.a))&&md(G6(this.c,this.b,this.a),G6(n.c,n.b,n.a))):!1},l.Hb=function(){return fH(ie(re(Yn,1),yt,1,5,[Mp(this.c.e,this.b),Mp(this.c.c,this.a),G6(this.c,this.b,this.a)]))},l.Ib=function(){return"("+Mp(this.c.e,this.b)+","+Mp(this.c.c,this.a)+")="+G6(this.c,this.b,this.a)},O(qt,"Tables/AbstractCell",2011),M(468,2011,{468:1,682:1},sye),l.a=0,l.b=0,l.d=0,O(qt,"ArrayTable/2",468),M(1927,1,{},r6),l.ld=function(t){return CJe(this.a,t)},O(qt,"ArrayTable/2methodref$getValue$Type",1927),M(1926,386,_7,XVe),l.Xb=function(t){return CJe(this.a,t)},O(qt,"ArrayTable/3",1926),M(1979,1967,ow),l.$b=function(){Aj(this.kc())},l.vc=function(){return new s6(this)},l.lc=function(){return new AYe(this.kc(),this.gc())},O(qt,"Maps/IteratorBasedAbstractMap",1979),M(828,1979,ow),l.$b=function(){throw J(new Fr)},l._b=function(t){return yze(this.c,t)},l.kc=function(){return new QVe(this,this.c.b.c.gc())},l.lc=function(){return Ene(this.c.b.c.gc(),16,new iv(this))},l.xc=function(t){var n;return n=u(c_(this.c,t),19),n?this.nd(n.a):null},l.dc=function(){return this.c.b.c.dc()},l.ec=function(){return Dne(this.c)},l.zc=function(t,n){var r;if(r=u(c_(this.c,t),19),!r)throw J(new Ln(this.md()+" "+t+" not in "+Dne(this.c)));return this.od(r.a,n)},l.Bc=function(t){throw J(new Fr)},l.gc=function(){return this.c.b.c.gc()},O(qt,"ArrayTable/ArrayMap",828),M(1923,1,{},iv),l.ld=function(t){return nYe(this.a,t)},O(qt,"ArrayTable/ArrayMap/0methodref$getEntry$Type",1923),M(1921,345,_z,eGe),l.cd=function(){return QWt(this.a,this.b)},l.dd=function(){return this.a.nd(this.b)},l.ed=function(t){return this.a.od(this.b,t)},l.b=0,O(qt,"ArrayTable/ArrayMap/1",1921),M(1922,386,_7,QVe),l.Xb=function(t){return nYe(this.a,t)},O(qt,"ArrayTable/ArrayMap/2",1922),M(1920,828,ow,GKe),l.md=function(){return"Column"},l.nd=function(t){return G6(this.b,this.a,t)},l.od=function(t,n){return ent(this.b,this.a,t,n)},l.a=0,O(qt,"ArrayTable/Row",1920),M(829,828,ow,tbe),l.nd=function(t){return new GKe(this.a,t)},l.zc=function(t,n){return u(n,83),NVt()},l.od=function(t,n){return u(n,83),PVt()},l.md=function(){return"Row"},O(qt,"ArrayTable/RowMap",829),M(1120,1,Hh,tGe),l.qd=function(){return this.a.qd()&-262},l.rd=function(){return this.a.rd()},l.Nb=function(t){this.a.Nb(new Xze(t,this.b))},l.sd=function(t){return this.a.sd(new Yze(t,this.b))},O(qt,"CollectSpliterators/1",1120),M(1121,1,Un,Yze),l.td=function(t){this.a.td(this.b.Kb(t))},O(qt,"CollectSpliterators/1/lambda$0$Type",1121),M(1122,1,Un,Xze),l.td=function(t){this.a.td(this.b.Kb(t))},O(qt,"CollectSpliterators/1/lambda$1$Type",1122),M(1123,1,Hh,CQe),l.qd=function(){return this.a},l.rd=function(){return this.d&&(this.b=MVe(this.b,this.d.rd())),MVe(this.b,0)},l.Nb=function(t){this.d&&(this.d.Nb(t),this.d=null),this.c.Nb(new Kze(this.e,t)),this.b=0},l.sd=function(t){for(;;){if(this.d&&this.d.sd(t))return XT(this.b,Cz)&&(this.b=Wp(this.b,1)),!0;if(this.d=null,!this.c.sd(new Qze(this,this.e)))return!1}},l.a=0,l.b=0,O(qt,"CollectSpliterators/1FlatMapSpliterator",1123),M(1124,1,Un,Qze),l.td=function(t){eYt(this.a,this.b,t)},O(qt,"CollectSpliterators/1FlatMapSpliterator/lambda$0$Type",1124),M(1125,1,Un,Kze),l.td=function(t){FWt(this.b,this.a,t)},O(qt,"CollectSpliterators/1FlatMapSpliterator/lambda$1$Type",1125),M(1117,1,Hh,cWe),l.qd=function(){return 16464|this.b},l.rd=function(){return this.a.rd()},l.Nb=function(t){this.a.xe(new Jze(t,this.c))},l.sd=function(t){return this.a.ye(new Zze(t,this.c))},l.b=0,O(qt,"CollectSpliterators/1WithCharacteristics",1117),M(1118,1,SI,Zze),l.ud=function(t){this.a.td(this.b.ld(t))},O(qt,"CollectSpliterators/1WithCharacteristics/lambda$0$Type",1118),M(1119,1,SI,Jze),l.ud=function(t){this.a.td(this.b.ld(t))},O(qt,"CollectSpliterators/1WithCharacteristics/lambda$1$Type",1119),M(245,1,Iae),l.wd=function(t){return this.vd(u(t,245))},l.vd=function(t){var n;return t==(Yee(),due)?1:t==(Xee(),fue)?-1:(n=(_j(),CD(this.a,t.a)),n!=0?n:we(this,519)==we(t,519)?0:we(this,519)?1:-1)},l.zd=function(){return this.a},l.Fb=function(t){return c3e(this,t)},O(qt,"Cut",245),M(1761,245,Iae,ize),l.vd=function(t){return t==this?0:1},l.xd=function(t){throw J(new ope)},l.yd=function(t){t.a+="+∞)"},l.zd=function(){throw J(new Wo(aht))},l.Hb=function(){return Ud(),v3e(this)},l.Ad=function(t){return!1},l.Ib=function(){return"+∞"};var fue;O(qt,"Cut/AboveAll",1761),M(519,245,{245:1,519:1,3:1,35:1},nUe),l.xd=function(t){Ec((t.a+="(",t),this.a)},l.yd=function(t){Bp(Ec(t,this.a),93)},l.Hb=function(){return~Xi(this.a)},l.Ad=function(t){return _j(),CD(this.a,t)<0},l.Ib=function(){return"/"+this.a+"\\"},O(qt,"Cut/AboveValue",519),M(1760,245,Iae,sze),l.vd=function(t){return t==this?0:-1},l.xd=function(t){t.a+="(-∞"},l.yd=function(t){throw J(new ope)},l.zd=function(){throw J(new Wo(aht))},l.Hb=function(){return Ud(),v3e(this)},l.Ad=function(t){return!0},l.Ib=function(){return"-∞"};var due;O(qt,"Cut/BelowAll",1760),M(1762,245,Iae,rUe),l.xd=function(t){Ec((t.a+="[",t),this.a)},l.yd=function(t){Bp(Ec(t,this.a),41)},l.Hb=function(){return Xi(this.a)},l.Ad=function(t){return _j(),CD(this.a,t)<=0},l.Ib=function(){return"\\"+this.a+"/"},O(qt,"Cut/BelowValue",1762),M(537,1,i0),l.Jc=function(t){Da(this,t)},l.Ib=function(){return uon(u(Zj(this,"use Optional.orNull() instead of Optional.or(null)"),20).Kc())},O(qt,"FluentIterable",537),M(433,537,i0,JT),l.Kc=function(){return new cr(fr(this.a.Kc(),new V))},O(qt,"FluentIterable/2",433),M(1046,537,i0,oVe),l.Kc=function(){return Pp(this)},O(qt,"FluentIterable/3",1046),M(708,386,_7,nbe),l.Xb=function(t){return this.a[t].Kc()},O(qt,"FluentIterable/3/1",708),M(1972,1,{}),l.Ib=function(){return Qo(this.Bd().b)},O(qt,"ForwardingObject",1972),M(1973,1972,oht),l.Bd=function(){return this.Cd()},l.Jc=function(t){Da(this,t)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new mn(this,0)},l.Oc=function(){return new vn(null,this.Nc())},l.Fc=function(t){return this.Cd(),Tze()},l.Gc=function(t){return this.Cd(),_ze()},l.$b=function(){this.Cd(),Cze()},l.Hc=function(t){return this.Cd().Hc(t)},l.Ic=function(t){return this.Cd().Ic(t)},l.dc=function(){return this.Cd().b.dc()},l.Kc=function(){return this.Cd().Kc()},l.Mc=function(t){return this.Cd(),Sze()},l.gc=function(){return this.Cd().b.gc()},l.Pc=function(){return this.Cd().Pc()},l.Qc=function(t){return this.Cd().Qc(t)},O(qt,"ForwardingCollection",1973),M(1980,28,p6e),l.Kc=function(){return this.Ed()},l.Fc=function(t){throw J(new Fr)},l.Gc=function(t){throw J(new Fr)},l.$b=function(){throw J(new Fr)},l.Hc=function(t){return t!=null&&Xm(this,t,!1)},l.Dd=function(){switch(this.gc()){case 0:return Rm(),Rm(),gue;case 1:return Rm(),new Tne(Nr(this.Ed().Pb()));default:return new qKe(this,this.Pc())}},l.Mc=function(t){throw J(new Fr)},O(qt,"ImmutableCollection",1980),M(712,1980,p6e,spe),l.Kc=function(){return q6(this.a.Kc())},l.Hc=function(t){return t!=null&&this.a.Hc(t)},l.Ic=function(t){return this.a.Ic(t)},l.dc=function(){return this.a.dc()},l.Ed=function(){return q6(this.a.Kc())},l.gc=function(){return this.a.gc()},l.Pc=function(){return this.a.Pc()},l.Qc=function(t){return this.a.Qc(t)},l.Ib=function(){return Qo(this.a)},O(qt,"ForwardingImmutableCollection",712),M(152,1980,vC),l.Kc=function(){return this.Ed()},l.Yc=function(){return this.Fd(0)},l.Zc=function(t){return this.Fd(t)},l.ad=function(t){Y3(this,t)},l.Nc=function(){return new mn(this,16)},l.bd=function(t,n){return this.Gd(t,n)},l.Vc=function(t,n){throw J(new Fr)},l.Wc=function(t,n){throw J(new Fr)},l.Fb=function(t){return i0n(this,t)},l.Hb=function(){return psn(this)},l.Xc=function(t){return t==null?-1:Aun(this,t)},l.Ed=function(){return this.Fd(0)},l.Fd=function(t){return vbe(this,t)},l.$c=function(t){throw J(new Fr)},l._c=function(t,n){throw J(new Fr)},l.Gd=function(t,n){var r;return pH((r=new fGe(this),new Zd(r,t,n)))};var gue;O(qt,"ImmutableList",152),M(2006,152,vC),l.Kc=function(){return q6(this.Hd().Kc())},l.bd=function(t,n){return pH(this.Hd().bd(t,n))},l.Hc=function(t){return t!=null&&this.Hd().Hc(t)},l.Ic=function(t){return this.Hd().Ic(t)},l.Fb=function(t){return Ci(this.Hd(),t)},l.Xb=function(t){return Mp(this,t)},l.Hb=function(){return Xi(this.Hd())},l.Xc=function(t){return this.Hd().Xc(t)},l.dc=function(){return this.Hd().dc()},l.Ed=function(){return q6(this.Hd().Kc())},l.gc=function(){return this.Hd().gc()},l.Gd=function(t,n){return pH(this.Hd().bd(t,n))},l.Pc=function(){return this.Hd().Qc(Me(Yn,yt,1,this.Hd().gc(),5,1))},l.Qc=function(t){return this.Hd().Qc(t)},l.Ib=function(){return Qo(this.Hd())},O(qt,"ForwardingImmutableList",2006),M(714,1,C7),l.vc=function(){return Cv(this)},l.wc=function(t){B_(this,t)},l.ec=function(){return Dne(this)},l.yc=function(t,n,r){return Rie(this,t,n,r)},l.Cc=function(){return this.Ld()},l.$b=function(){throw J(new Fr)},l._b=function(t){return this.xc(t)!=null},l.uc=function(t){return this.Ld().Hc(t)},l.Jd=function(){return new Y$e(this)},l.Kd=function(){return new X$e(this)},l.Fb=function(t){return oan(this,t)},l.Hb=function(){return Cv(this).Hb()},l.dc=function(){return this.gc()==0},l.zc=function(t,n){return BVt()},l.Bc=function(t){throw J(new Fr)},l.Ib=function(){return jfn(this)},l.Ld=function(){return this.e?this.e:this.e=this.Kd()},l.c=null,l.d=null,l.e=null;var k0t;O(qt,"ImmutableMap",714),M(715,714,C7),l._b=function(t){return yze(this,t)},l.uc=function(t){return bGe(this.b,t)},l.Id=function(){return Wnt(new uT(this))},l.Jd=function(){return Wnt(TYe(this.b))},l.Kd=function(){return wd(),new spe(EYe(this.b))},l.Fb=function(t){return vGe(this.b,t)},l.xc=function(t){return c_(this,t)},l.Hb=function(){return Xi(this.b.c)},l.dc=function(){return this.b.c.dc()},l.gc=function(){return this.b.c.gc()},l.Ib=function(){return Qo(this.b.c)},O(qt,"ForwardingImmutableMap",715),M(1974,1973,Oae),l.Bd=function(){return this.Md()},l.Cd=function(){return this.Md()},l.Nc=function(){return new mn(this,1)},l.Fb=function(t){return t===this||this.Md().Fb(t)},l.Hb=function(){return this.Md().Hb()},O(qt,"ForwardingSet",1974),M(1069,1974,Oae,uT),l.Bd=function(){return w8(this.a.b)},l.Cd=function(){return w8(this.a.b)},l.Hc=function(t){if(we(t,42)&&u(t,42).cd()==null)return!1;try{return pGe(w8(this.a.b),t)}catch(n){if(n=ts(n),we(n,205))return!1;throw J(n)}},l.Md=function(){return w8(this.a.b)},l.Qc=function(t){var n;return n=sXe(w8(this.a.b),t),w8(this.a.b).b.gc()=0?"+":"")+(r/60|0),n=ZF(b.Math.abs(r)%60),(Sst(),R0t)[this.q.getDay()]+" "+F0t[this.q.getMonth()]+" "+ZF(this.q.getDate())+" "+ZF(this.q.getHours())+":"+ZF(this.q.getMinutes())+":"+ZF(this.q.getSeconds())+" GMT"+t+n+" "+this.q.getFullYear()};var FG=O(wr,"Date",199);M(1915,199,bht,est),l.a=!1,l.b=0,l.c=0,l.d=0,l.e=0,l.f=0,l.g=!1,l.i=0,l.j=0,l.k=0,l.n=0,l.o=0,l.p=0,O("com.google.gwt.i18n.shared.impl","DateRecord",1915),M(1966,1,{}),l.fe=function(){return null},l.ge=function(){return null},l.he=function(){return null},l.ie=function(){return null},l.je=function(){return null},O(ok,"JSONValue",1966),M(216,1966,{216:1},hg,a6),l.Fb=function(t){return we(t,216)?Swe(this.a,u(t,216).a):!1},l.ee=function(){return iVt},l.Hb=function(){return gwe(this.a)},l.fe=function(){return this},l.Ib=function(){var t,n,r;for(r=new Fl("["),n=0,t=this.a.length;n0&&(r.a+=","),Ec(r,Gm(this,n));return r.a+="]",r.a},O(ok,"JSONArray",216),M(483,1966,{483:1},jx),l.ee=function(){return sVt},l.ge=function(){return this},l.Ib=function(){return Mn(),""+this.a},l.a=!1;var A0t,L0t;O(ok,"JSONBoolean",483),M(985,60,q0,UHe),O(ok,"JSONException",985),M(1023,1966,{},Ae),l.ee=function(){return lVt},l.Ib=function(){return Pu};var M0t;O(ok,"JSONNull",1023),M(258,1966,{258:1},lT),l.Fb=function(t){return we(t,258)?this.a==u(t,258).a:!1},l.ee=function(){return aVt},l.Hb=function(){return i8(this.a)},l.he=function(){return this},l.Ib=function(){return this.a+""},l.a=0,O(ok,"JSONNumber",258),M(183,1966,{183:1},p6,$x),l.Fb=function(t){return we(t,183)?Swe(this.a,u(t,183).a):!1},l.ee=function(){return oVt},l.Hb=function(){return gwe(this.a)},l.ie=function(){return this},l.Ib=function(){var t,n,r,s,o,h,d;for(d=new Fl("{"),t=!0,h=aie(this,Me(mt,Qe,2,0,6,1)),r=h,s=0,o=r.length;s=0?":"+this.c:"")+")"},l.c=0;var K8e=O(oc,"StackTraceElement",310);y0t={3:1,475:1,35:1,2:1};var mt=O(oc,b6e,2);M(107,418,{475:1},bg,ST,Ph),O(oc,"StringBuffer",107),M(100,418,{475:1},Tp,xm,Fl),O(oc,"StringBuilder",100),M(687,73,noe,Bpe),O(oc,"StringIndexOutOfBoundsException",687),M(2043,1,{});var Y8e;M(844,1,{},Bt),l.Kb=function(t){return u(t,78).e},O(oc,"Throwable/lambda$0$Type",844),M(41,60,{3:1,102:1,60:1,78:1,41:1},Fr,pg),O(oc,"UnsupportedOperationException",41),M(240,236,{3:1,35:1,236:1,240:1},kD,Vpe),l.wd=function(t){return out(this,u(t,240))},l.ke=function(){return ry(Gut(this))},l.Fb=function(t){var n;return this===t?!0:we(t,240)?(n=u(t,240),this.e==n.e&&out(this,n)==0):!1},l.Hb=function(){var t;return this.b!=0?this.b:this.a<54?(t=Ou(this.f),this.b=Or(qs(t,-1)),this.b=33*this.b+Or(qs(Np(t,32),-1)),this.b=17*this.b+_s(this.e),this.b):(this.b=17*Hnt(this.c)+_s(this.e),this.b)},l.Ib=function(){return Gut(this)},l.a=0,l.b=0,l.d=0,l.e=0,l.f=0;var N0t,Ab,X8e,Q8e,Z8e,J8e,e7e,t7e,xue=O("java.math","BigDecimal",240);M(91,236,{3:1,35:1,236:1,91:1},b3e,Tg,z3,Z3e,qrt,Ip),l.wd=function(t){return jrt(this,u(t,91))},l.ke=function(){return ry(Lae(this,0))},l.Fb=function(t){return Yye(this,t)},l.Hb=function(){return Hnt(this)},l.Ib=function(){return Lae(this,0)},l.b=-2,l.c=0,l.d=0,l.e=0;var Eue,jG,n7e,Tue,$G,K7,D4=O("java.math","BigInteger",91),P0t,B0t,yk,QC;M(488,1967,ow),l.$b=function(){sl(this)},l._b=function(t){return Il(this,t)},l.uc=function(t){return _nt(this,t,this.g)||_nt(this,t,this.f)},l.vc=function(){return new dg(this)},l.xc=function(t){return er(this,t)},l.zc=function(t,n){return Si(this,t,n)},l.Bc=function(t){return z6(this,t)},l.gc=function(){return MT(this)},O(wr,"AbstractHashMap",488),M(261,H1,Xu,dg),l.$b=function(){this.a.$b()},l.Hc=function(t){return kQe(this,t)},l.Kc=function(){return new ob(this.a)},l.Mc=function(t){var n;return kQe(this,t)?(n=u(t,42).cd(),this.a.Bc(n),!0):!1},l.gc=function(){return this.a.gc()},O(wr,"AbstractHashMap/EntrySet",261),M(262,1,ga,ob),l.Nb=function(t){La(this,t)},l.Pb=function(){return $v(this)},l.Ob=function(){return this.b},l.Qb=function(){wJe(this)},l.b=!1,O(wr,"AbstractHashMap/EntrySetIterator",262),M(417,1,ga,c6),l.Nb=function(t){La(this,t)},l.Ob=function(){return wM(this)},l.Pb=function(){return GYe(this)},l.Qb=function(){Ol(this)},l.b=0,l.c=-1,O(wr,"AbstractList/IteratorImpl",417),M(96,417,r0,Ea),l.Qb=function(){Ol(this)},l.Rb=function(t){Dm(this,t)},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Ub=function(){return Qn(this.b>0),this.a.Xb(this.c=--this.b)},l.Vb=function(){return this.b-1},l.Wb=function(t){Am(this.c!=-1),this.a._c(this.c,t)},O(wr,"AbstractList/ListIteratorImpl",96),M(219,52,A7,Zd),l.Vc=function(t,n){jm(t,this.b),this.c.Vc(this.a+t,n),++this.b},l.Xb=function(t){return xn(t,this.b),this.c.Xb(this.a+t)},l.$c=function(t){var n;return xn(t,this.b),n=this.c.$c(this.a+t),--this.b,n},l._c=function(t,n){return xn(t,this.b),this.c._c(this.a+t,n)},l.gc=function(){return this.b},l.a=0,l.b=0,O(wr,"AbstractList/SubList",219),M(384,H1,Xu,vm),l.$b=function(){this.a.$b()},l.Hc=function(t){return this.a._b(t)},l.Kc=function(){var t;return t=this.a.vc().Kc(),new nM(t)},l.Mc=function(t){return this.a._b(t)?(this.a.Bc(t),!0):!1},l.gc=function(){return this.a.gc()},O(wr,"AbstractMap/1",384),M(691,1,ga,nM),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var t;return t=u(this.a.Pb(),42),t.cd()},l.Qb=function(){this.a.Qb()},O(wr,"AbstractMap/1/1",691),M(226,28,hy,E1),l.$b=function(){this.a.$b()},l.Hc=function(t){return this.a.uc(t)},l.Kc=function(){var t;return t=this.a.vc().Kc(),new T1(t)},l.gc=function(){return this.a.gc()},O(wr,"AbstractMap/2",226),M(294,1,ga,T1),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var t;return t=u(this.a.Pb(),42),t.dd()},l.Qb=function(){this.a.Qb()},O(wr,"AbstractMap/2/1",294),M(484,1,{484:1,42:1}),l.Fb=function(t){var n;return we(t,42)?(n=u(t,42),Vc(this.d,n.cd())&&Vc(this.e,n.dd())):!1},l.cd=function(){return this.d},l.dd=function(){return this.e},l.Hb=function(){return F3(this.d)^F3(this.e)},l.ed=function(t){return Rbe(this,t)},l.Ib=function(){return this.d+"="+this.e},O(wr,"AbstractMap/AbstractEntry",484),M(383,484,{484:1,383:1,42:1},OF),O(wr,"AbstractMap/SimpleEntry",383),M(1984,1,aoe),l.Fb=function(t){var n;return we(t,42)?(n=u(t,42),Vc(this.cd(),n.cd())&&Vc(this.dd(),n.dd())):!1},l.Hb=function(){return F3(this.cd())^F3(this.dd())},l.Ib=function(){return this.cd()+"="+this.dd()},O(wr,iht,1984),M(1992,1967,nht),l.tc=function(t){return LZe(this,t)},l._b=function(t){return fne(this,t)},l.vc=function(){return new k(this)},l.xc=function(t){var n;return n=t,hc(bye(this,n))},l.ec=function(){return new m(this)},O(wr,"AbstractNavigableMap",1992),M(739,H1,Xu,k),l.Hc=function(t){return we(t,42)&&LZe(this.b,u(t,42))},l.Kc=function(){return new o_(this.b)},l.Mc=function(t){var n;return we(t,42)?(n=u(t,42),bJe(this.b,n)):!1},l.gc=function(){return this.b.c},O(wr,"AbstractNavigableMap/EntrySet",739),M(493,H1,g6e,m),l.Nc=function(){return new DF(this)},l.$b=function(){ET(this.a)},l.Hc=function(t){return fne(this.a,t)},l.Kc=function(){var t;return t=new o_(new i_(this.a).b),new g(t)},l.Mc=function(t){return fne(this.a,t)?(k_(this.a,t),!0):!1},l.gc=function(){return this.a.c},O(wr,"AbstractNavigableMap/NavigableKeySet",493),M(494,1,ga,g),l.Nb=function(t){La(this,t)},l.Ob=function(){return wM(this.a.a)},l.Pb=function(){var t;return t=dj(this.a),t.cd()},l.Qb=function(){mWe(this.a)},O(wr,"AbstractNavigableMap/NavigableKeySet/1",494),M(2004,28,hy),l.Fc=function(t){return S8(l7(this,t)),!0},l.Gc=function(t){return Sn(t),kj(t!=this,"Can't add a queue to itself"),no(this,t)},l.$b=function(){for(;Kre(this)!=null;);},O(wr,"AbstractQueue",2004),M(302,28,{4:1,20:1,28:1,14:1},L3,UXe),l.Fc=function(t){return Pwe(this,t),!0},l.$b=function(){Hwe(this)},l.Hc=function(t){return Ktt(new y_(this),t)},l.dc=function(){return TT(this)},l.Kc=function(){return new y_(this)},l.Mc=function(t){return yen(new y_(this),t)},l.gc=function(){return this.c-this.b&this.a.length-1},l.Nc=function(){return new mn(this,272)},l.Qc=function(t){var n;return n=this.c-this.b&this.a.length-1,t.lengthn&&cs(t,n,null),t},l.b=0,l.c=0,O(wr,"ArrayDeque",302),M(446,1,ga,y_),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.a!=this.b},l.Pb=function(){return gH(this)},l.Qb=function(){Uet(this)},l.a=0,l.b=0,l.c=-1,O(wr,"ArrayDeque/IteratorImpl",446),M(12,52,mht,st,su,Uu),l.Vc=function(t,n){Om(this,t,n)},l.Fc=function(t){return it(this,t)},l.Wc=function(t,n){return xye(this,t,n)},l.Gc=function(t){return Rs(this,t)},l.$b=function(){this.c=Me(Yn,yt,1,0,5,1)},l.Hc=function(t){return Yo(this,t,0)!=-1},l.Jc=function(t){Mu(this,t)},l.Xb=function(t){return St(this,t)},l.Xc=function(t){return Yo(this,t,0)},l.dc=function(){return this.c.length==0},l.Kc=function(){return new C(this)},l.$c=function(t){return Eg(this,t)},l.Mc=function(t){return Au(this,t)},l.Ud=function(t,n){VXe(this,t,n)},l._c=function(t,n){return gh(this,t,n)},l.gc=function(){return this.c.length},l.ad=function(t){aa(this,t)},l.Pc=function(){return tne(this)},l.Qc=function(t){return j1(this,t)};var i3n=O(wr,"ArrayList",12);M(7,1,ga,C),l.Nb=function(t){La(this,t)},l.Ob=function(){return nc(this)},l.Pb=function(){return Y(this)},l.Qb=function(){b_(this)},l.a=0,l.b=-1,O(wr,"ArrayList/1",7),M(2013,b.Function,{},he),l.te=function(t,n){return Fs(t,n)},M(154,52,yht,Al),l.Hc=function(t){return Ket(this,t)!=-1},l.Jc=function(t){var n,r,s,o;for(Sn(t),r=this.a,s=0,o=r.length;s>>0,t.toString(16)))},l.f=0,l.i=Ds;var VG=O(o0,"CNode",57);M(814,1,{},bpe),O(o0,"CNode/CNodeBuilder",814);var Z0t;M(1525,1,{},Er),l.Oe=function(t,n){return 0},l.Pe=function(t,n){return 0},O(o0,Aht,1525),M(1790,1,{},br),l.Le=function(t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;for(_=gs,s=new C(t.a.b);s.as.d.c||s.d.c==h.d.c&&s.d.b0?t+this.n.d+this.n.a:0},l.Se=function(){var t,n,r,s,o;if(o=0,this.e)this.b?o=this.b.a:this.a[1][1]&&(o=this.a[1][1].Se());else if(this.g)o=qye(this,wse(this,null,!0));else for(n=(n1(),ie(re(Ey,1),tt,232,0,[pc,lu,bc])),r=0,s=n.length;r0?o+this.n.b+this.n.c:0},l.Te=function(){var t,n,r,s,o;if(this.g)for(t=wse(this,null,!1),r=(n1(),ie(re(Ey,1),tt,232,0,[pc,lu,bc])),s=0,o=r.length;s0&&(s[0]+=this.d,r-=s[0]),s[2]>0&&(s[2]+=this.d,r-=s[2]),this.c.a=b.Math.max(0,r),this.c.d=n.d+t.d+(this.c.a-r)/2,s[1]=b.Math.max(s[1],r),Kwe(this,lu,n.d+t.d+s[0]-(s[1]-r)/2,s)},l.b=null,l.d=0,l.e=!1,l.f=!1,l.g=!1;var Due=0,UG=0;O(wb,"GridContainerCell",1473),M(461,22,{3:1,35:1,22:1,461:1},pte);var a2,Nd,Af,cgt=Gr(wb,"HorizontalLabelAlignment",461,Wr,Pen,mYt),ugt;M(306,212,{212:1,306:1},fXe,yet,uXe),l.Re=function(){return XWe(this)},l.Se=function(){return kve(this)},l.a=0,l.c=!1;var g3n=O(wb,"LabelCell",306);M(244,326,{212:1,326:1,244:1},W_),l.Re=function(){return oI(this)},l.Se=function(){return cI(this)},l.Te=function(){uae(this)},l.Ue=function(){lae(this)},l.b=0,l.c=0,l.d=!1,O(wb,"StripContainerCell",244),M(1626,1,vi,Ms),l.Mb=function(t){return IVt(u(t,212))},O(wb,"StripContainerCell/lambda$0$Type",1626),M(1627,1,{},Pa),l.Fe=function(t){return u(t,212).Se()},O(wb,"StripContainerCell/lambda$1$Type",1627),M(1628,1,vi,Ta),l.Mb=function(t){return OVt(u(t,212))},O(wb,"StripContainerCell/lambda$2$Type",1628),M(1629,1,{},_a),l.Fe=function(t){return u(t,212).Re()},O(wb,"StripContainerCell/lambda$3$Type",1629),M(462,22,{3:1,35:1,22:1,462:1},bte);var Lf,o2,u1,lgt=Gr(wb,"VerticalLabelAlignment",462,Wr,Ben,yYt),hgt;M(789,1,{},i6e),l.c=0,l.d=0,l.k=0,l.s=0,l.t=0,l.v=!1,l.w=0,l.D=!1,O(Iz,"NodeContext",789),M(1471,1,ji,ka),l.ue=function(t,n){return fVe(u(t,61),u(n,61))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Iz,"NodeContext/0methodref$comparePortSides$Type",1471),M(1472,1,ji,Qi),l.ue=function(t,n){return afn(u(t,111),u(n,111))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Iz,"NodeContext/1methodref$comparePortContexts$Type",1472),M(159,22,{3:1,35:1,22:1,159:1},vh);var fgt,dgt,ggt,pgt,bgt,vgt,wgt,mgt,ygt,kgt,xgt,Egt,Tgt,_gt,Cgt,Sgt,Agt,Lgt,Mgt,Dgt,Igt,Iue,Ogt=Gr(Iz,"NodeLabelLocation",159,Wr,Xie,kYt),Ngt;M(111,1,{111:1},Wat),l.a=!1,O(Iz,"PortContext",111),M(1476,1,Un,ea),l.td=function(t){Dze(u(t,306))},O(PI,Hht,1476),M(1477,1,vi,Ca),l.Mb=function(t){return!!u(t,111).c},O(PI,zht,1477),M(1478,1,Un,Sa),l.td=function(t){Dze(u(t,111).c)},O(PI,"LabelPlacer/lambda$2$Type",1478);var F7e;M(1475,1,Un,cg),l.td=function(t){Mm(),fVt(u(t,111))},O(PI,"NodeLabelAndSizeUtilities/lambda$0$Type",1475),M(790,1,Un,eve),l.td=function(t){TUt(this.b,this.c,this.a,u(t,181))},l.a=!1,l.c=!1,O(PI,"NodeLabelCellCreator/lambda$0$Type",790),M(1474,1,Un,fn),l.td=function(t){pVt(this.a,u(t,181))},O(PI,"PortContextCreator/lambda$0$Type",1474);var WG;M(1829,1,{},Gc),O(I7,"GreedyRectangleStripOverlapRemover",1829),M(1830,1,ji,Ka),l.ue=function(t,n){return nKt(u(t,222),u(n,222))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(I7,"GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type",1830),M(1786,1,{},uHe),l.a=5,l.e=0,O(I7,"RectangleStripOverlapRemover",1786),M(1787,1,ji,Es),l.ue=function(t,n){return rKt(u(t,222),u(n,222))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(I7,"RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type",1787),M(1789,1,ji,lp),l.ue=function(t,n){return SZt(u(t,222),u(n,222))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(I7,"RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type",1789),M(406,22,{3:1,35:1,22:1,406:1},BF);var iO,Oue,Nue,sO,Pgt=Gr(I7,"RectangleStripOverlapRemover/OverlapRemovalDirection",406,Wr,Ptn,xYt),Bgt;M(222,1,{222:1},Lne),O(I7,"RectangleStripOverlapRemover/RectangleNode",222),M(1788,1,Un,vr),l.td=function(t){Dun(this.a,u(t,222))},O(I7,"RectangleStripOverlapRemover/lambda$1$Type",1788),M(1304,1,ji,sd),l.ue=function(t,n){return Rvn(u(t,167),u(n,167))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator",1304),M(1307,1,{},sh),l.Kb=function(t){return u(t,324).a},O(Cd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type",1307),M(1308,1,vi,Ai),l.Mb=function(t){return u(t,323).a},O(Cd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type",1308),M(1309,1,vi,nn),l.Mb=function(t){return u(t,323).a},O(Cd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type",1309),M(1302,1,ji,Tr),l.ue=function(t,n){return v2n(u(t,167),u(n,167))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator",1302),M(1305,1,{},Dh),l.Kb=function(t){return u(t,324).a},O(Cd,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type",1305),M(767,1,ji,ai),l.ue=function(t,n){return msn(u(t,167),u(n,167))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/MinNumOfExtensionsComparator",767),M(1300,1,ji,Ns),l.ue=function(t,n){return Ain(u(t,321),u(n,321))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/MinPerimeterComparator",1300),M(1301,1,ji,mc),l.ue=function(t,n){return iun(u(t,321),u(n,321))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/MinPerimeterComparatorWithShape",1301),M(1303,1,ji,yu),l.ue=function(t,n){return $2n(u(t,167),u(n,167))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator",1303),M(1306,1,{},Mo),l.Kb=function(t){return u(t,324).a},O(Cd,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type",1306),M(777,1,{},o2e),l.Ce=function(t,n){return Dtn(this,u(t,46),u(n,167))},O(Cd,"SuccessorCombination",777),M(644,1,{},ku),l.Ce=function(t,n){var r;return ydn((r=u(t,46),u(n,167),r))},O(Cd,"SuccessorJitter",644),M(643,1,{},Ih),l.Ce=function(t,n){var r;return cpn((r=u(t,46),u(n,167),r))},O(Cd,"SuccessorLineByLine",643),M(568,1,{},qf),l.Ce=function(t,n){var r;return k0n((r=u(t,46),u(n,167),r))},O(Cd,"SuccessorManhattan",568),M(1356,1,{},lx),l.Ce=function(t,n){var r;return Ign((r=u(t,46),u(n,167),r))},O(Cd,"SuccessorMaxNormWindingInMathPosSense",1356),M(400,1,{},gr),l.Ce=function(t,n){return Yve(this,t,n)},l.c=!1,l.d=!1,l.e=!1,l.f=!1,O(Cd,"SuccessorQuadrantsGeneric",400),M(1357,1,{},ad),l.Kb=function(t){return u(t,324).a},O(Cd,"SuccessorQuadrantsGeneric/lambda$0$Type",1357),M(323,22,{3:1,35:1,22:1,323:1},PF),l.a=!1;var aO,oO,cO,uO,Rgt=Gr(Nz,P6e,323,Wr,Ftn,EYt),Fgt;M(1298,1,{}),l.Ib=function(){var t,n,r,s,o,h;for(r=" ",t=ct(0),o=0;o=0?"b"+t+"["+Sre(this.a)+"]":"b["+Sre(this.a)+"]"):"b_"+xv(this)},O(RI,"FBendpoint",559),M(282,134,{3:1,282:1,94:1,134:1},UUe),l.Ib=function(){return Sre(this)},O(RI,"FEdge",282),M(231,134,{3:1,231:1,94:1,134:1},k$);var b3n=O(RI,"FGraph",231);M(447,357,{3:1,447:1,357:1,94:1,134:1},YQe),l.Ib=function(){return this.b==null||this.b.length==0?"l["+Sre(this.a)+"]":"l_"+this.b},O(RI,"FLabel",447),M(144,357,{3:1,144:1,357:1,94:1,134:1},sYe),l.Ib=function(){return Cwe(this)},l.b=0,O(RI,"FNode",144),M(2003,1,{}),l.bf=function(t){R5e(this,t)},l.cf=function(){Mit(this)},l.d=0,O(V6e,"AbstractForceModel",2003),M(631,2003,{631:1},$tt),l.af=function(t,n){var r,s,o,h,d;return Cat(this.f,t,n),o=da(fc(n.d),t.d),d=b.Math.sqrt(o.a*o.a+o.b*o.b),s=b.Math.max(0,d-w_(t.e)/2-w_(n.e)/2),r=bnt(this.e,t,n),r>0?h=-TZt(s,this.c)*r:h=bKt(s,this.b)*u(K(t,(a1(),Q7)),19).a,bd(o,h/d),o},l.bf=function(t){R5e(this,t),this.a=u(K(t,(a1(),JG)),19).a,this.c=Ue(ft(K(t,eq))),this.b=Ue(ft(K(t,Hue)))},l.df=function(t){return t0&&(h-=AVt(s,this.a)*r),bd(o,h*this.b/d),o},l.bf=function(t){var n,r,s,o,h,d,v;for(R5e(this,t),this.b=Ue(ft(K(t,(a1(),zue)))),this.c=this.b/u(K(t,JG),19).a,s=t.e.c.length,h=0,o=0,v=new C(t.e);v.a0},l.a=0,l.b=0,l.c=0,O(V6e,"FruchtermanReingoldModel",632),M(849,1,zh,DJ),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Rz),""),"Force Model"),"Determines the model for force calculation."),W7e),(Ng(),vs)),K7e),rn((i1(),Fn))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,U6e),""),"Iterations"),"The number of iterations on the force model."),ct(300)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,W6e),""),"Repulsive Power"),"Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model"),ct(0)),Cc),Za),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Aoe),""),"FR Temperature"),"The temperature is used as a scaling factor for particle displacements."),Sd),qo),ma),rn(Fn)))),va(t,Aoe,Rz,ipt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Loe),""),"Eades Repulsion"),"Factor for repulsive forces in Eades' model."),5),qo),ma),rn(Fn)))),va(t,Loe,Rz,tpt),Slt((new rT,t))};var Zgt,Jgt,W7e,ept,tpt,npt,rpt,ipt;O(TC,"ForceMetaDataProvider",849),M(424,22,{3:1,35:1,22:1,424:1},h2e);var $ue,ZG,K7e=Gr(TC,"ForceModelStrategy",424,Wr,len,CYt),spt;M(988,1,zh,rT),l.Qe=function(t){Slt(t)};var apt,opt,Y7e,JG,X7e,cpt,upt,lpt,Q7e,hpt,Z7e,J7e,fpt,Q7,dpt,Hue,eEe,gpt,ppt,eq,zue;O(TC,"ForceOptions",988),M(989,1,{},N5),l.$e=function(){var t;return t=new dpe,t},l._e=function(t){},O(TC,"ForceOptions/ForceFactory",989);var fO,eS,kk,tq;M(850,1,zh,IJ),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Y6e),""),"Fixed Position"),"Prevent that the node is moved by the layout algorithm."),(Mn(),!1)),(Ng(),za)),Us),rn((i1(),ua))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,X6e),""),"Desired Edge Length"),"Either specified for parent nodes or for individual edges, where the latter takes higher precedence."),100),qo),ma),Ui(Fn,ie(re(Ug,1),tt,175,0,[Fd]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Q6e),""),"Layout Dimension"),"Dimensions that are permitted to be altered during layout."),tEe),vs),cEe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Z6e),""),"Stress Epsilon"),"Termination criterion for the iterative process."),Sd),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,J6e),""),"Iteration Limit"),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),ct(Ei)),Cc),Za),rn(Fn)))),hlt((new OJ,t))};var bpt,vpt,tEe,wpt,mpt,ypt;O(TC,"StressMetaDataProvider",850),M(992,1,zh,OJ),l.Qe=function(t){hlt(t)};var nq,nEe,rEe,iEe,sEe,aEe,kpt,xpt,Ept,Tpt,oEe,_pt;O(TC,"StressOptions",992),M(993,1,{},ah),l.$e=function(){var t;return t=new WUe,t},l._e=function(t){},O(TC,"StressOptions/StressFactory",993),M(1128,209,mb,WUe),l.Ze=function(t,n){var r,s,o,h,d;for(kr(n,eft,1),It(Mt(Ft(t,(ZD(),sEe))))?It(Mt(Ft(t,oEe)))||i$((r=new sr((Tm(),new ym(t))),r)):Iot(new dpe,t,Kc(n,1)),o=cnt(t),s=kut(this.a,o),d=s.Kc();d.Ob();)h=u(d.Pb(),231),!(h.e.c.length<=1)&&(Pvn(this.b,h),d0n(this.b),Mu(h.d,new od));o=Nlt(s),Dlt(o),ur(n)},O($z,"StressLayoutProvider",1128),M(1129,1,Un,od),l.td=function(t){q5e(u(t,447))},O($z,"StressLayoutProvider/lambda$0$Type",1129),M(990,1,{},nHe),l.c=0,l.e=0,l.g=0,O($z,"StressMajorization",990),M(379,22,{3:1,35:1,22:1,379:1},vte);var Gue,que,Vue,cEe=Gr($z,"StressMajorization/Dimension",379,Wr,Fen,SYt),Cpt;M(991,1,ji,Li),l.ue=function(t,n){return rYt(this.a,u(t,144),u(n,144))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O($z,"StressMajorization/lambda$0$Type",991),M(1229,1,{},cQe),O(pk,"ElkLayered",1229),M(1230,1,Un,P5),l.td=function(t){gdn(u(t,37))},O(pk,"ElkLayered/lambda$0$Type",1230),M(1231,1,Un,wi),l.td=function(t){iYt(this.a,u(t,37))},O(pk,"ElkLayered/lambda$1$Type",1231),M(1263,1,{},NVe);var Spt,Apt,Lpt;O(pk,"GraphConfigurator",1263),M(759,1,Un,Ts),l.td=function(t){Fst(this.a,u(t,10))},O(pk,"GraphConfigurator/lambda$0$Type",759),M(760,1,{},B5),l.Kb=function(t){return H3e(),new vn(null,new mn(u(t,29).a,16))},O(pk,"GraphConfigurator/lambda$1$Type",760),M(761,1,Un,Yi),l.td=function(t){Fst(this.a,u(t,10))},O(pk,"GraphConfigurator/lambda$2$Type",761),M(1127,209,mb,sHe),l.Ze=function(t,n){var r;r=nvn(new hHe,t),je(Ft(t,(pt(),Iy)))===je((F0(),Wg))?Non(this.a,r,n):Mdn(this.a,r,n),Clt(new PJ,r)},O(pk,"LayeredLayoutProvider",1127),M(356,22,{3:1,35:1,22:1,356:1},yM);var Pd,c2,bu,Zc,Go,uEe=Gr(pk,"LayeredPhases",356,Wr,knn,AYt),Mpt;M(1651,1,{},Yet),l.i=0;var Dpt;O($I,"ComponentsToCGraphTransformer",1651);var Ipt;M(1652,1,{},y9),l.ef=function(t,n){return b.Math.min(t.a!=null?Ue(t.a):t.c.i,n.a!=null?Ue(n.a):n.c.i)},l.ff=function(t,n){return b.Math.min(t.a!=null?Ue(t.a):t.c.i,n.a!=null?Ue(n.a):n.c.i)},O($I,"ComponentsToCGraphTransformer/1",1652),M(81,1,{81:1}),l.i=0,l.k=!0,l.o=Ds;var Uue=O(SC,"CNode",81);M(460,81,{460:1,81:1},fbe,d3e),l.Ib=function(){return""},O($I,"ComponentsToCGraphTransformer/CRectNode",460),M(1623,1,{},vL);var Wue,Kue;O($I,"OneDimensionalComponentsCompaction",1623),M(1624,1,{},v1),l.Kb=function(t){return Len(u(t,46))},l.Fb=function(t){return this===t},O($I,"OneDimensionalComponentsCompaction/lambda$0$Type",1624),M(1625,1,{},dp),l.Kb=function(t){return zon(u(t,46))},l.Fb=function(t){return this===t},O($I,"OneDimensionalComponentsCompaction/lambda$1$Type",1625),M(1654,1,{},iYe),O(SC,"CGraph",1654),M(189,1,{189:1},Wie),l.b=0,l.c=0,l.e=0,l.g=!0,l.i=Ds,O(SC,"CGroup",189),M(1653,1,{},om),l.ef=function(t,n){return b.Math.max(t.a!=null?Ue(t.a):t.c.i,n.a!=null?Ue(n.a):n.c.i)},l.ff=function(t,n){return b.Math.max(t.a!=null?Ue(t.a):t.c.i,n.a!=null?Ue(n.a):n.c.i)},O(SC,Aht,1653),M(1655,1,{},jat),l.d=!1;var Opt,Yue=O(SC,Dht,1655);M(1656,1,{},yc),l.Kb=function(t){return Zpe(),Mn(),u(u(t,46).a,81).d.e!=0},l.Fb=function(t){return this===t},O(SC,Iht,1656),M(823,1,{},xve),l.a=!1,l.b=!1,l.c=!1,l.d=!1,O(SC,Oht,823),M(1825,1,{},xKe),O(Hz,Nht,1825);var dO=ss(kb,Cht);M(1826,1,{369:1},JYe),l.Ke=function(t){Epn(this,u(t,466))},O(Hz,Pht,1826),M(1827,1,ji,hx),l.ue=function(t,n){return EJt(u(t,81),u(n,81))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Hz,Bht,1827),M(466,1,{466:1},d2e),l.a=!1,O(Hz,Rht,466),M(1828,1,ji,Vo),l.ue=function(t,n){return Pln(u(t,466),u(n,466))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Hz,Fht,1828),M(140,1,{140:1},r8,vve),l.Fb=function(t){var n;return t==null||v3n!=pl(t)?!1:(n=u(t,140),Vc(this.c,n.c)&&Vc(this.d,n.d))},l.Hb=function(){return fH(ie(re(Yn,1),yt,1,5,[this.c,this.d]))},l.Ib=function(){return"("+this.c+io+this.d+(this.a?"cx":"")+this.b+")"},l.a=!0,l.c=0,l.d=0;var v3n=O(kb,"Point",140);M(405,22,{3:1,35:1,22:1,405:1},RF);var vw,Ty,O4,_y,Npt=Gr(kb,"Point/Quadrant",405,Wr,jtn,LYt),Ppt;M(1642,1,{},aHe),l.b=null,l.c=null,l.d=null,l.e=null,l.f=null;var Bpt,Rpt,Fpt,jpt,$pt;O(kb,"RectilinearConvexHull",1642),M(574,1,{369:1},IH),l.Ke=function(t){xrn(this,u(t,140))},l.b=0;var lEe;O(kb,"RectilinearConvexHull/MaximalElementsEventHandler",574),M(1644,1,ji,am),l.ue=function(t,n){return fJt(ft(t),ft(n))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type",1644),M(1643,1,{369:1},vet),l.Ke=function(t){Bgn(this,u(t,140))},l.a=0,l.b=null,l.c=null,l.d=null,l.e=null,O(kb,"RectilinearConvexHull/RectangleEventHandler",1643),M(1645,1,ji,ev),l.ue=function(t,n){return ptn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$0$Type",1645),M(1646,1,ji,cd),l.ue=function(t,n){return btn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$1$Type",1646),M(1647,1,ji,fx),l.ue=function(t,n){return wtn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$2$Type",1647),M(1648,1,ji,oh),l.ue=function(t,n){return vtn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$3$Type",1648),M(1649,1,ji,QK),l.ue=function(t,n){return yfn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$4$Type",1649),M(1650,1,{},MXe),O(kb,"Scanline",1650),M(2005,1,{}),O(Ad,"AbstractGraphPlacer",2005),M(325,1,{325:1},xUe),l.mf=function(t){return this.nf(t)?(sn(this.b,u(K(t,(et(),Sy)),21),t),!0):!1},l.nf=function(t){var n,r,s,o;for(n=u(K(t,(et(),Sy)),21),o=u(Ii($i,n),21),s=o.Kc();s.Ob();)if(r=u(s.Pb(),21),!u(Ii(this.b,r),15).dc())return!1;return!0};var $i;O(Ad,"ComponentGroup",325),M(765,2005,{},vpe),l.of=function(t){var n,r;for(r=new C(this.a);r.aq&&(nt=0,bt+=z+o,z=0),le=d.c,cC(d,nt+le.a,bt+le.b),Zf(le),r=b.Math.max(r,nt+Ee.a),z=b.Math.max(z,Ee.b),nt+=Ee.a+o;if(n.f.a=r,n.f.b=bt+z,It(Mt(K(h,zq)))){for(s=new k9,l6e(s,t,o),P=t.Kc();P.Ob();)L=u(P.Pb(),37),Ni(Zf(L.c),s.e);Ni(Zf(n.f),s.a)}lme(n,t)},O(Ad,"SimpleRowGraphPlacer",1291),M(1292,1,ji,Vf),l.ue=function(t,n){return wsn(u(t,37),u(n,37))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Ad,"SimpleRowGraphPlacer/1",1292);var zpt;M(1262,1,_d,cm),l.Lb=function(t){var n;return n=u(K(u(t,243).b,(pt(),Fo)),74),!!n&&n.b!=0},l.Fb=function(t){return this===t},l.Mb=function(t){var n;return n=u(K(u(t,243).b,(pt(),Fo)),74),!!n&&n.b!=0},O(zz,"CompoundGraphPostprocessor/1",1262),M(1261,1,ps,fHe),l.pf=function(t,n){dit(this,u(t,37),n)},O(zz,"CompoundGraphPreprocessor",1261),M(441,1,{441:1},ert),l.c=!1,O(zz,"CompoundGraphPreprocessor/ExternalPort",441),M(243,1,{243:1},mj),l.Ib=function(){return nne(this.c)+":"+Pat(this.b)},O(zz,"CrossHierarchyEdge",243),M(763,1,ji,Di),l.ue=function(t,n){return oln(this,u(t,243),u(n,243))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(zz,"CrossHierarchyEdgeComparator",763),M(299,134,{3:1,299:1,94:1,134:1}),l.p=0,O(uu,"LGraphElement",299),M(17,299,{3:1,17:1,299:1,94:1,134:1},Iv),l.Ib=function(){return Pat(this)};var Que=O(uu,"LEdge",17);M(37,299,{3:1,20:1,37:1,299:1,94:1,134:1},Ime),l.Jc=function(t){Da(this,t)},l.Kc=function(){return new C(this.b)},l.Ib=function(){return this.b.c.length==0?"G-unlayered"+Yp(this.a):this.a.c.length==0?"G-layered"+Yp(this.b):"G[layerless"+Yp(this.a)+", layers"+Yp(this.b)+"]"};var Gpt=O(uu,"LGraph",37),qpt;M(657,1,{}),l.qf=function(){return this.e.n},l.We=function(t){return K(this.e,t)},l.rf=function(){return this.e.o},l.sf=function(){return this.e.p},l.Xe=function(t){return ta(this.e,t)},l.tf=function(t){this.e.n.a=t.a,this.e.n.b=t.b},l.uf=function(t){this.e.o.a=t.a,this.e.o.b=t.b},l.vf=function(t){this.e.p=t},O(uu,"LGraphAdapters/AbstractLShapeAdapter",657),M(577,1,{839:1},es),l.wf=function(){var t,n;if(!this.b)for(this.b=Wd(this.a.b.c.length),n=new C(this.a.b);n.a0&&$nt((zr(n-1,t.length),t.charCodeAt(n-1)),aft);)--n;if(h> ",t),zH(r)),Yr(Ec((t.a+="[",t),r.i),"]")),t.a},l.c=!0,l.d=!1;var pEe,bEe,vEe,wEe,mEe,yEe,Upt=O(uu,"LPort",11);M(397,1,i0,sa),l.Jc=function(t){Da(this,t)},l.Kc=function(){var t;return t=new C(this.a.e),new Ks(t)},O(uu,"LPort/1",397),M(1290,1,ga,Ks),l.Nb=function(t){La(this,t)},l.Pb=function(){return u(Y(this.a),17).c},l.Ob=function(){return nc(this.a)},l.Qb=function(){b_(this.a)},O(uu,"LPort/1/1",1290),M(359,1,i0,Ar),l.Jc=function(t){Da(this,t)},l.Kc=function(){var t;return t=new C(this.a.g),new We(t)},O(uu,"LPort/2",359),M(762,1,ga,We),l.Nb=function(t){La(this,t)},l.Pb=function(){return u(Y(this.a),17).d},l.Ob=function(){return nc(this.a)},l.Qb=function(){b_(this.a)},O(uu,"LPort/2/1",762),M(1283,1,i0,JGe),l.Jc=function(t){Da(this,t)},l.Kc=function(){return new N1(this)},O(uu,"LPort/CombineIter",1283),M(201,1,ga,N1),l.Nb=function(t){La(this,t)},l.Qb=function(){Eze()},l.Ob=function(){return s_(this)},l.Pb=function(){return nc(this.a)?Y(this.a):Y(this.b)},O(uu,"LPort/CombineIter/1",201),M(1285,1,_d,gp),l.Lb=function(t){return NKe(t)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).e.c.length!=0},O(uu,"LPort/lambda$0$Type",1285),M(1284,1,_d,um),l.Lb=function(t){return PKe(t)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).g.c.length!=0},O(uu,"LPort/lambda$1$Type",1284),M(1286,1,_d,JK),l.Lb=function(t){return Ku(),u(t,11).j==(ht(),An)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).j==(ht(),An)},O(uu,"LPort/lambda$2$Type",1286),M(1287,1,_d,R2),l.Lb=function(t){return Ku(),u(t,11).j==(ht(),$n)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).j==(ht(),$n)},O(uu,"LPort/lambda$3$Type",1287),M(1288,1,_d,eY),l.Lb=function(t){return Ku(),u(t,11).j==(ht(),xr)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).j==(ht(),xr)},O(uu,"LPort/lambda$4$Type",1288),M(1289,1,_d,tY),l.Lb=function(t){return Ku(),u(t,11).j==(ht(),Dn)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).j==(ht(),Dn)},O(uu,"LPort/lambda$5$Type",1289),M(29,299,{3:1,20:1,299:1,29:1,94:1,134:1},Bh),l.Jc=function(t){Da(this,t)},l.Kc=function(){return new C(this.a)},l.Ib=function(){return"L_"+Yo(this.b.b,this,0)+Yp(this.a)},O(uu,"Layer",29),M(1342,1,{},hHe),O(Rg,lft,1342),M(1346,1,{},R5),l.Kb=function(t){return zo(u(t,82))},O(Rg,"ElkGraphImporter/0methodref$connectableShapeToNode$Type",1346),M(1349,1,{},x9),l.Kb=function(t){return zo(u(t,82))},O(Rg,"ElkGraphImporter/1methodref$connectableShapeToNode$Type",1349),M(1343,1,Un,On),l.td=function(t){Yat(this.a,u(t,118))},O(Rg,hft,1343),M(1344,1,Un,Ir),l.td=function(t){Yat(this.a,u(t,118))},O(Rg,fft,1344),M(1345,1,{},VP),l.Kb=function(t){return new vn(null,new mn(oJt(u(t,79)),16))},O(Rg,dft,1345),M(1347,1,vi,ar),l.Mb=function(t){return cWt(this.a,u(t,33))},O(Rg,gft,1347),M(1348,1,{},dx),l.Kb=function(t){return new vn(null,new mn(cJt(u(t,79)),16))},O(Rg,"ElkGraphImporter/lambda$5$Type",1348),M(1350,1,vi,or),l.Mb=function(t){return uWt(this.a,u(t,33))},O(Rg,"ElkGraphImporter/lambda$7$Type",1350),M(1351,1,vi,nY),l.Mb=function(t){return _Jt(u(t,79))},O(Rg,"ElkGraphImporter/lambda$8$Type",1351),M(1278,1,{},PJ);var Wpt;O(Rg,"ElkGraphLayoutTransferrer",1278),M(1279,1,vi,qa),l.Mb=function(t){return QKt(this.a,u(t,17))},O(Rg,"ElkGraphLayoutTransferrer/lambda$0$Type",1279),M(1280,1,Un,qr),l.td=function(t){bM(),it(this.a,u(t,17))},O(Rg,"ElkGraphLayoutTransferrer/lambda$1$Type",1280),M(1281,1,vi,is),l.Mb=function(t){return BKt(this.a,u(t,17))},O(Rg,"ElkGraphLayoutTransferrer/lambda$2$Type",1281),M(1282,1,Un,Uo),l.td=function(t){bM(),it(this.a,u(t,17))},O(Rg,"ElkGraphLayoutTransferrer/lambda$3$Type",1282),M(1485,1,ps,gx),l.pf=function(t,n){Fin(u(t,37),n)},O(Pn,"CommentNodeMarginCalculator",1485),M(1486,1,{},rY),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"CommentNodeMarginCalculator/lambda$0$Type",1486),M(1487,1,Un,iY),l.td=function(t){wvn(u(t,10))},O(Pn,"CommentNodeMarginCalculator/lambda$1$Type",1487),M(1488,1,ps,sY),l.pf=function(t,n){Dpn(u(t,37),n)},O(Pn,"CommentPostprocessor",1488),M(1489,1,ps,aY),l.pf=function(t,n){Fmn(u(t,37),n)},O(Pn,"CommentPreprocessor",1489),M(1490,1,ps,oY),l.pf=function(t,n){egn(u(t,37),n)},O(Pn,"ConstraintsPostprocessor",1490),M(1491,1,ps,cY),l.pf=function(t,n){osn(u(t,37),n)},O(Pn,"EdgeAndLayerConstraintEdgeReverser",1491),M(1492,1,ps,uY),l.pf=function(t,n){Yon(u(t,37),n)},O(Pn,"EndLabelPostprocessor",1492),M(1493,1,{},lY),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"EndLabelPostprocessor/lambda$0$Type",1493),M(1494,1,vi,hY),l.Mb=function(t){return GJt(u(t,10))},O(Pn,"EndLabelPostprocessor/lambda$1$Type",1494),M(1495,1,Un,fY),l.td=function(t){Bln(u(t,10))},O(Pn,"EndLabelPostprocessor/lambda$2$Type",1495),M(1496,1,ps,dY),l.pf=function(t,n){_1n(u(t,37),n)},O(Pn,"EndLabelPreprocessor",1496),M(1497,1,{},mL),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"EndLabelPreprocessor/lambda$0$Type",1497),M(1498,1,Un,_We),l.td=function(t){_Ut(this.a,this.b,this.c,u(t,10))},l.a=0,l.b=0,l.c=!1,O(Pn,"EndLabelPreprocessor/lambda$1$Type",1498),M(1499,1,vi,gY),l.Mb=function(t){return je(K(u(t,70),(pt(),Rd)))===je((P1(),TE))},O(Pn,"EndLabelPreprocessor/lambda$2$Type",1499),M(1500,1,Un,qc),l.td=function(t){ci(this.a,u(t,70))},O(Pn,"EndLabelPreprocessor/lambda$3$Type",1500),M(1501,1,vi,pY),l.Mb=function(t){return je(K(u(t,70),(pt(),Rd)))===je((P1(),zy))},O(Pn,"EndLabelPreprocessor/lambda$4$Type",1501),M(1502,1,Un,uo),l.td=function(t){ci(this.a,u(t,70))},O(Pn,"EndLabelPreprocessor/lambda$5$Type",1502),M(1551,1,ps,NJ),l.pf=function(t,n){ron(u(t,37),n)};var Kpt;O(Pn,"EndLabelSorter",1551),M(1552,1,ji,E9),l.ue=function(t,n){return Ocn(u(t,456),u(n,456))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"EndLabelSorter/1",1552),M(456,1,{456:1},VYe),O(Pn,"EndLabelSorter/LabelGroup",456),M(1553,1,{},UP),l.Kb=function(t){return vM(),new vn(null,new mn(u(t,29).a,16))},O(Pn,"EndLabelSorter/lambda$0$Type",1553),M(1554,1,vi,F5),l.Mb=function(t){return vM(),u(t,10).k==(zn(),Hs)},O(Pn,"EndLabelSorter/lambda$1$Type",1554),M(1555,1,Un,bY),l.td=function(t){Bfn(u(t,10))},O(Pn,"EndLabelSorter/lambda$2$Type",1555),M(1556,1,vi,vY),l.Mb=function(t){return vM(),je(K(u(t,70),(pt(),Rd)))===je((P1(),zy))},O(Pn,"EndLabelSorter/lambda$3$Type",1556),M(1557,1,vi,wY),l.Mb=function(t){return vM(),je(K(u(t,70),(pt(),Rd)))===je((P1(),TE))},O(Pn,"EndLabelSorter/lambda$4$Type",1557),M(1503,1,ps,mY),l.pf=function(t,n){Lvn(this,u(t,37))},l.b=0,l.c=0,O(Pn,"FinalSplineBendpointsCalculator",1503),M(1504,1,{},yY),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"FinalSplineBendpointsCalculator/lambda$0$Type",1504),M(1505,1,{},T9),l.Kb=function(t){return new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Pn,"FinalSplineBendpointsCalculator/lambda$1$Type",1505),M(1506,1,vi,yL),l.Mb=function(t){return!to(u(t,17))},O(Pn,"FinalSplineBendpointsCalculator/lambda$2$Type",1506),M(1507,1,vi,WP),l.Mb=function(t){return ta(u(t,17),(et(),Mb))},O(Pn,"FinalSplineBendpointsCalculator/lambda$3$Type",1507),M(1508,1,Un,Lc),l.td=function(t){z2n(this.a,u(t,128))},O(Pn,"FinalSplineBendpointsCalculator/lambda$4$Type",1508),M(1509,1,Un,v3),l.td=function(t){Nse(u(t,17).a)},O(Pn,"FinalSplineBendpointsCalculator/lambda$5$Type",1509),M(792,1,ps,Ra),l.pf=function(t,n){xwn(this,u(t,37),n)},O(Pn,"GraphTransformer",792),M(511,22,{3:1,35:1,22:1,511:1},f2e);var Jue,gO,Ypt=Gr(Pn,"GraphTransformer/Mode",511,Wr,hen,GXt),Xpt;M(1510,1,ps,w3),l.pf=function(t,n){Zgn(u(t,37),n)},O(Pn,"HierarchicalNodeResizingProcessor",1510),M(1511,1,ps,kY),l.pf=function(t,n){Oin(u(t,37),n)},O(Pn,"HierarchicalPortConstraintProcessor",1511),M(1512,1,ji,df),l.ue=function(t,n){return qcn(u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"HierarchicalPortConstraintProcessor/NodeComparator",1512),M(1513,1,ps,j5),l.pf=function(t,n){Jbn(u(t,37),n)},O(Pn,"HierarchicalPortDummySizeProcessor",1513),M(1514,1,ps,xY),l.pf=function(t,n){Xpn(this,u(t,37),n)},l.a=0,O(Pn,"HierarchicalPortOrthogonalEdgeRouter",1514),M(1515,1,ji,px),l.ue=function(t,n){return tKt(u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"HierarchicalPortOrthogonalEdgeRouter/1",1515),M(1516,1,ji,zd),l.ue=function(t,n){return prn(u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"HierarchicalPortOrthogonalEdgeRouter/2",1516),M(1517,1,ps,EY),l.pf=function(t,n){kfn(u(t,37),n)},O(Pn,"HierarchicalPortPositionProcessor",1517),M(1518,1,ps,BJ),l.pf=function(t,n){byn(this,u(t,37))},l.a=0,l.c=0;var rq,iq;O(Pn,"HighDegreeNodeLayeringProcessor",1518),M(571,1,{571:1},TY),l.b=-1,l.d=-1,O(Pn,"HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation",571),M(1519,1,{},_Y),l.Kb=function(t){return GM(),Xo(u(t,10))},l.Fb=function(t){return this===t},O(Pn,"HighDegreeNodeLayeringProcessor/lambda$0$Type",1519),M(1520,1,{},CY),l.Kb=function(t){return GM(),js(u(t,10))},l.Fb=function(t){return this===t},O(Pn,"HighDegreeNodeLayeringProcessor/lambda$1$Type",1520),M(1526,1,ps,_9),l.pf=function(t,n){Sbn(this,u(t,37),n)},O(Pn,"HyperedgeDummyMerger",1526),M(793,1,{},nve),l.a=!1,l.b=!1,l.c=!1,O(Pn,"HyperedgeDummyMerger/MergeState",793),M(1527,1,{},kL),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"HyperedgeDummyMerger/lambda$0$Type",1527),M(1528,1,{},KP),l.Kb=function(t){return new vn(null,new mn(u(t,10).j,16))},O(Pn,"HyperedgeDummyMerger/lambda$1$Type",1528),M(1529,1,Un,xL),l.td=function(t){u(t,11).p=-1},O(Pn,"HyperedgeDummyMerger/lambda$2$Type",1529),M(1530,1,ps,$5),l.pf=function(t,n){_bn(u(t,37),n)},O(Pn,"HypernodesProcessor",1530),M(1531,1,ps,SY),l.pf=function(t,n){Cbn(u(t,37),n)},O(Pn,"InLayerConstraintProcessor",1531),M(1532,1,ps,YP),l.pf=function(t,n){nsn(u(t,37),n)},O(Pn,"InnermostNodeMarginCalculator",1532),M(1533,1,ps,XP),l.pf=function(t,n){Omn(this,u(t,37))},l.a=Ds,l.b=Ds,l.c=gs,l.d=gs;var w3n=O(Pn,"InteractiveExternalPortPositioner",1533);M(1534,1,{},AY),l.Kb=function(t){return u(t,17).d.i},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$0$Type",1534),M(1535,1,{},lo),l.Kb=function(t){return iKt(this.a,ft(t))},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$1$Type",1535),M(1536,1,{},LY),l.Kb=function(t){return u(t,17).c.i},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$2$Type",1536),M(1537,1,{},Sl),l.Kb=function(t){return sKt(this.a,ft(t))},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$3$Type",1537),M(1538,1,{},Yf),l.Kb=function(t){return KKt(this.a,ft(t))},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$4$Type",1538),M(1539,1,{},mp),l.Kb=function(t){return YKt(this.a,ft(t))},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$5$Type",1539),M(77,22,{3:1,35:1,22:1,77:1,234:1},Cs),l.Kf=function(){switch(this.g){case 15:return new VX;case 22:return new UX;case 47:return new YX;case 28:case 35:return new m3;case 32:return new gx;case 42:return new sY;case 1:return new aY;case 41:return new oY;case 56:return new Ra((j8(),gO));case 0:return new Ra((j8(),Jue));case 2:return new cY;case 54:return new uY;case 33:return new dY;case 51:return new mY;case 55:return new w3;case 13:return new kY;case 38:return new j5;case 44:return new xY;case 40:return new EY;case 9:return new BJ;case 49:return new hUe;case 37:return new _9;case 43:return new $5;case 27:return new SY;case 30:return new YP;case 3:return new XP;case 18:return new DY;case 29:return new IY;case 5:return new _R;case 50:return new MY;case 34:return new RJ;case 36:return new bx;case 52:return new NJ;case 11:return new lm;case 7:return new jJ;case 39:return new vx;case 45:return new BY;case 16:return new C9;case 10:return new ud;case 48:return new TL;case 21:return new wx;case 23:return new ete((Gv(),xS));case 8:return new eB;case 12:return new CL;case 4:return new FY;case 19:return new iT;case 17:return new GY;case 53:return new qY;case 6:return new oB;case 25:return new pHe;case 46:return new KY;case 31:return new YUe;case 14:return new AL;case 26:return new ZX;case 20:return new nX;case 24:return new ete((Gv(),cV));default:throw J(new Ln(Noe+(this.f!=null?this.f:""+this.g)))}};var kEe,xEe,EEe,TEe,_Ee,CEe,SEe,AEe,LEe,MEe,tS,sq,aq,DEe,IEe,OEe,NEe,PEe,BEe,REe,nS,FEe,jEe,$Ee,HEe,zEe,ele,oq,cq,GEe,uq,lq,hq,Z7,J7,eE,qEe,fq,dq,VEe,gq,pq,UEe,WEe,KEe,YEe,bq,tle,pO,vq,wq,mq,yq,XEe,QEe,ZEe,JEe,m3n=Gr(Pn,tke,77,Wr,Hot,zXt),Qpt;M(1540,1,ps,DY),l.pf=function(t,n){Pmn(u(t,37),n)},O(Pn,"InvertedPortProcessor",1540),M(1541,1,ps,IY),l.pf=function(t,n){P2n(u(t,37),n)},O(Pn,"LabelAndNodeSizeProcessor",1541),M(1542,1,vi,OY),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"LabelAndNodeSizeProcessor/lambda$0$Type",1542),M(1543,1,vi,Gd),l.Mb=function(t){return u(t,10).k==(zn(),Ls)},O(Pn,"LabelAndNodeSizeProcessor/lambda$1$Type",1543),M(1544,1,Un,CWe),l.td=function(t){CUt(this.b,this.a,this.c,u(t,10))},l.a=!1,l.c=!1,O(Pn,"LabelAndNodeSizeProcessor/lambda$2$Type",1544),M(1545,1,ps,_R),l.pf=function(t,n){smn(u(t,37),n)};var Zpt;O(Pn,"LabelDummyInserter",1545),M(1546,1,_d,tv),l.Lb=function(t){return je(K(u(t,70),(pt(),Rd)))===je((P1(),EE))},l.Fb=function(t){return this===t},l.Mb=function(t){return je(K(u(t,70),(pt(),Rd)))===je((P1(),EE))},O(Pn,"LabelDummyInserter/1",1546),M(1547,1,ps,MY),l.pf=function(t,n){own(u(t,37),n)},O(Pn,"LabelDummyRemover",1547),M(1548,1,vi,NY),l.Mb=function(t){return It(Mt(K(u(t,70),(pt(),Gle))))},O(Pn,"LabelDummyRemover/lambda$0$Type",1548),M(1359,1,ps,RJ),l.pf=function(t,n){Bwn(this,u(t,37),n)},l.a=null;var nle;O(Pn,"LabelDummySwitcher",1359),M(286,1,{286:1},jct),l.c=0,l.d=null,l.f=0,O(Pn,"LabelDummySwitcher/LabelDummyInfo",286),M(1360,1,{},QP),l.Kb=function(t){return U6(),new vn(null,new mn(u(t,29).a,16))},O(Pn,"LabelDummySwitcher/lambda$0$Type",1360),M(1361,1,vi,ZP),l.Mb=function(t){return U6(),u(t,10).k==(zn(),Rl)},O(Pn,"LabelDummySwitcher/lambda$1$Type",1361),M(1362,1,{},gg),l.Kb=function(t){return RKt(this.a,u(t,10))},O(Pn,"LabelDummySwitcher/lambda$2$Type",1362),M(1363,1,Un,fd),l.td=function(t){BZt(this.a,u(t,286))},O(Pn,"LabelDummySwitcher/lambda$3$Type",1363),M(1364,1,ji,PY),l.ue=function(t,n){return lZt(u(t,286),u(n,286))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"LabelDummySwitcher/lambda$4$Type",1364),M(791,1,ps,m3),l.pf=function(t,n){Wnn(u(t,37),n)},O(Pn,"LabelManagementProcessor",791),M(1549,1,ps,bx),l.pf=function(t,n){wpn(u(t,37),n)},O(Pn,"LabelSideSelector",1549),M(1550,1,vi,EL),l.Mb=function(t){return It(Mt(K(u(t,70),(pt(),Gle))))},O(Pn,"LabelSideSelector/lambda$0$Type",1550),M(1558,1,ps,lm),l.pf=function(t,n){evn(u(t,37),n)},O(Pn,"LayerConstraintPostprocessor",1558),M(1559,1,ps,jJ),l.pf=function(t,n){g0n(u(t,37),n)};var e9e;O(Pn,"LayerConstraintPreprocessor",1559),M(360,22,{3:1,35:1,22:1,360:1},FF);var bO,kq,xq,rle,Jpt=Gr(Pn,"LayerConstraintPreprocessor/HiddenNodeConnections",360,Wr,$tn,OYt),e2t;M(1560,1,ps,vx),l.pf=function(t,n){iwn(u(t,37),n)},O(Pn,"LayerSizeAndGraphHeightCalculator",1560),M(1561,1,ps,BY),l.pf=function(t,n){ogn(u(t,37),n)},O(Pn,"LongEdgeJoiner",1561),M(1562,1,ps,C9),l.pf=function(t,n){jvn(u(t,37),n)},O(Pn,"LongEdgeSplitter",1562),M(1563,1,ps,ud),l.pf=function(t,n){jwn(this,u(t,37),n)},l.d=0,l.e=0,l.i=0,l.j=0,l.k=0,l.n=0,O(Pn,"NodePromotion",1563),M(1564,1,{},JP),l.Kb=function(t){return u(t,46),Mn(),!0},l.Fb=function(t){return this===t},O(Pn,"NodePromotion/lambda$0$Type",1564),M(1565,1,{},yp),l.Kb=function(t){return rJt(this.a,u(t,46))},l.Fb=function(t){return this===t},l.a=0,O(Pn,"NodePromotion/lambda$1$Type",1565),M(1566,1,{},Xf),l.Kb=function(t){return iJt(this.a,u(t,46))},l.Fb=function(t){return this===t},l.a=0,O(Pn,"NodePromotion/lambda$2$Type",1566),M(1567,1,ps,TL),l.pf=function(t,n){uyn(u(t,37),n)},O(Pn,"NorthSouthPortPostprocessor",1567),M(1568,1,ps,wx),l.pf=function(t,n){Kmn(u(t,37),n)},O(Pn,"NorthSouthPortPreprocessor",1568),M(1569,1,ji,_L),l.ue=function(t,n){return Esn(u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"NorthSouthPortPreprocessor/lambda$0$Type",1569),M(1570,1,ps,eB),l.pf=function(t,n){hbn(u(t,37),n)},O(Pn,"PartitionMidprocessor",1570),M(1571,1,vi,RY),l.Mb=function(t){return ta(u(t,10),(pt(),dE))},O(Pn,"PartitionMidprocessor/lambda$0$Type",1571),M(1572,1,Un,ov),l.td=function(t){CJt(this.a,u(t,10))},O(Pn,"PartitionMidprocessor/lambda$1$Type",1572),M(1573,1,ps,CL),l.pf=function(t,n){Sgn(u(t,37),n)},O(Pn,"PartitionPostprocessor",1573),M(1574,1,ps,FY),l.pf=function(t,n){Rdn(u(t,37),n)},O(Pn,"PartitionPreprocessor",1574),M(1575,1,vi,jY),l.Mb=function(t){return ta(u(t,10),(pt(),dE))},O(Pn,"PartitionPreprocessor/lambda$0$Type",1575),M(1576,1,{},tB),l.Kb=function(t){return new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Pn,"PartitionPreprocessor/lambda$1$Type",1576),M(1577,1,vi,H5),l.Mb=function(t){return Mcn(u(t,17))},O(Pn,"PartitionPreprocessor/lambda$2$Type",1577),M(1578,1,Un,nB),l.td=function(t){Osn(u(t,17))},O(Pn,"PartitionPreprocessor/lambda$3$Type",1578),M(1579,1,ps,iT),l.pf=function(t,n){Y2n(u(t,37),n)};var t9e,t2t,n2t,r2t,n9e,r9e;O(Pn,"PortListSorter",1579),M(1580,1,{},z5),l.Kb=function(t){return X8(),u(t,11).e},O(Pn,"PortListSorter/lambda$0$Type",1580),M(1581,1,{},$Y),l.Kb=function(t){return X8(),u(t,11).g},O(Pn,"PortListSorter/lambda$1$Type",1581),M(1582,1,ji,SL),l.ue=function(t,n){return QQe(u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"PortListSorter/lambda$2$Type",1582),M(1583,1,ji,HY),l.ue=function(t,n){return eln(u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"PortListSorter/lambda$3$Type",1583),M(1584,1,ji,zY),l.ue=function(t,n){return cut(u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"PortListSorter/lambda$4$Type",1584),M(1585,1,ps,GY),l.pf=function(t,n){c0n(u(t,37),n)},O(Pn,"PortSideProcessor",1585),M(1586,1,ps,qY),l.pf=function(t,n){u2n(u(t,37),n)},O(Pn,"ReversedEdgeRestorer",1586),M(1591,1,ps,pHe),l.pf=function(t,n){Fun(this,u(t,37),n)},O(Pn,"SelfLoopPortRestorer",1591),M(1592,1,{},rB),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"SelfLoopPortRestorer/lambda$0$Type",1592),M(1593,1,vi,VY),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"SelfLoopPortRestorer/lambda$1$Type",1593),M(1594,1,vi,UY),l.Mb=function(t){return ta(u(t,10),(et(),lE))},O(Pn,"SelfLoopPortRestorer/lambda$2$Type",1594),M(1595,1,{},WY),l.Kb=function(t){return u(K(u(t,10),(et(),lE)),403)},O(Pn,"SelfLoopPortRestorer/lambda$3$Type",1595),M(1596,1,Un,mm),l.td=function(t){Wfn(this.a,u(t,403))},O(Pn,"SelfLoopPortRestorer/lambda$4$Type",1596),M(794,1,Un,iB),l.td=function(t){c1n(u(t,101))},O(Pn,"SelfLoopPortRestorer/lambda$5$Type",794),M(1597,1,ps,KY),l.pf=function(t,n){Wcn(u(t,37),n)},O(Pn,"SelfLoopPostProcessor",1597),M(1598,1,{},YY),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"SelfLoopPostProcessor/lambda$0$Type",1598),M(1599,1,vi,XY),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"SelfLoopPostProcessor/lambda$1$Type",1599),M(1600,1,vi,sB),l.Mb=function(t){return ta(u(t,10),(et(),lE))},O(Pn,"SelfLoopPostProcessor/lambda$2$Type",1600),M(1601,1,Un,QY),l.td=function(t){ehn(u(t,10))},O(Pn,"SelfLoopPostProcessor/lambda$3$Type",1601),M(1602,1,{},ZY),l.Kb=function(t){return new vn(null,new mn(u(t,101).f,1))},O(Pn,"SelfLoopPostProcessor/lambda$4$Type",1602),M(1603,1,Un,l6),l.td=function(t){Gtn(this.a,u(t,409))},O(Pn,"SelfLoopPostProcessor/lambda$5$Type",1603),M(1604,1,vi,aB),l.Mb=function(t){return!!u(t,101).i},O(Pn,"SelfLoopPostProcessor/lambda$6$Type",1604),M(1605,1,Un,S3),l.td=function(t){SVt(this.a,u(t,101))},O(Pn,"SelfLoopPostProcessor/lambda$7$Type",1605),M(1587,1,ps,oB),l.pf=function(t,n){$0n(u(t,37),n)},O(Pn,"SelfLoopPreProcessor",1587),M(1588,1,{},cB),l.Kb=function(t){return new vn(null,new mn(u(t,101).f,1))},O(Pn,"SelfLoopPreProcessor/lambda$0$Type",1588),M(1589,1,{},JY),l.Kb=function(t){return u(t,409).a},O(Pn,"SelfLoopPreProcessor/lambda$1$Type",1589),M(1590,1,Un,eX),l.td=function(t){IWt(u(t,17))},O(Pn,"SelfLoopPreProcessor/lambda$2$Type",1590),M(1606,1,ps,YUe),l.pf=function(t,n){Rfn(this,u(t,37),n)},O(Pn,"SelfLoopRouter",1606),M(1607,1,{},mx),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"SelfLoopRouter/lambda$0$Type",1607),M(1608,1,vi,G5),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"SelfLoopRouter/lambda$1$Type",1608),M(1609,1,vi,S9),l.Mb=function(t){return ta(u(t,10),(et(),lE))},O(Pn,"SelfLoopRouter/lambda$2$Type",1609),M(1610,1,{},tX),l.Kb=function(t){return u(K(u(t,10),(et(),lE)),403)},O(Pn,"SelfLoopRouter/lambda$3$Type",1610),M(1611,1,Un,VGe),l.td=function(t){vJt(this.a,this.b,u(t,403))},O(Pn,"SelfLoopRouter/lambda$4$Type",1611),M(1612,1,ps,AL),l.pf=function(t,n){apn(u(t,37),n)},O(Pn,"SemiInteractiveCrossMinProcessor",1612),M(1613,1,vi,A9),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"SemiInteractiveCrossMinProcessor/lambda$0$Type",1613),M(1614,1,vi,LL),l.Mb=function(t){return hKe(u(t,10))._b((pt(),By))},O(Pn,"SemiInteractiveCrossMinProcessor/lambda$1$Type",1614),M(1615,1,ji,uB),l.ue=function(t,n){return Pin(u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"SemiInteractiveCrossMinProcessor/lambda$2$Type",1615),M(1616,1,{},lB),l.Ce=function(t,n){return NJt(u(t,10),u(n,10))},O(Pn,"SemiInteractiveCrossMinProcessor/lambda$3$Type",1616),M(1618,1,ps,nX),l.pf=function(t,n){tvn(u(t,37),n)},O(Pn,"SortByInputModelProcessor",1618),M(1619,1,vi,rX),l.Mb=function(t){return u(t,11).g.c.length!=0},O(Pn,"SortByInputModelProcessor/lambda$0$Type",1619),M(1620,1,Un,h6),l.td=function(t){d1n(this.a,u(t,11))},O(Pn,"SortByInputModelProcessor/lambda$1$Type",1620),M(1693,803,{},ctt),l.Me=function(t){var n,r,s,o;switch(this.c=t,this.a.g){case 2:n=new st,ms(Vi(new vn(null,new mn(this.c.a.b,16)),new gB),new XGe(this,n)),sI(this,new fB),Mu(n,new sX),n.c=Me(Yn,yt,1,0,5,1),ms(Vi(new vn(null,new mn(this.c.a.b,16)),new aX),new A3(n)),sI(this,new oX),Mu(n,new cX),n.c=Me(Yn,yt,1,0,5,1),r=LVe(ktt(Kj(new vn(null,new mn(this.c.a.b,16)),new qd(this))),new uX),ms(new vn(null,new mn(this.c.a.a,16)),new WGe(r,n)),sI(this,new lX),Mu(n,new iX),n.c=Me(Yn,yt,1,0,5,1);break;case 3:s=new st,sI(this,new hB),o=LVe(ktt(Kj(new vn(null,new mn(this.c.a.b,16)),new gT(this))),new dB),ms(Vi(new vn(null,new mn(this.c.a.b,16)),new hX),new YGe(o,s)),sI(this,new fX),Mu(s,new dX),s.c=Me(Yn,yt,1,0,5,1);break;default:throw J(new eHe)}},l.b=0,O(Is,"EdgeAwareScanlineConstraintCalculation",1693),M(1694,1,_d,hB),l.Lb=function(t){return we(u(t,57).g,145)},l.Fb=function(t){return this===t},l.Mb=function(t){return we(u(t,57).g,145)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$0$Type",1694),M(1695,1,{},gT),l.Fe=function(t){return U1n(this.a,u(t,57))},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$1$Type",1695),M(1703,1,Az,UGe),l.Vd=function(){Z_(this.a,this.b,-1)},l.b=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$10$Type",1703),M(1705,1,_d,fB),l.Lb=function(t){return we(u(t,57).g,145)},l.Fb=function(t){return this===t},l.Mb=function(t){return we(u(t,57).g,145)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$11$Type",1705),M(1706,1,Un,sX),l.td=function(t){u(t,365).Vd()},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$12$Type",1706),M(1707,1,vi,aX),l.Mb=function(t){return we(u(t,57).g,10)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$13$Type",1707),M(1709,1,Un,A3),l.td=function(t){mon(this.a,u(t,57))},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$14$Type",1709),M(1708,1,Az,eqe),l.Vd=function(){Z_(this.b,this.a,-1)},l.a=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$15$Type",1708),M(1710,1,_d,oX),l.Lb=function(t){return we(u(t,57).g,10)},l.Fb=function(t){return this===t},l.Mb=function(t){return we(u(t,57).g,10)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$16$Type",1710),M(1711,1,Un,cX),l.td=function(t){u(t,365).Vd()},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$17$Type",1711),M(1712,1,{},qd),l.Fe=function(t){return W1n(this.a,u(t,57))},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$18$Type",1712),M(1713,1,{},uX),l.De=function(){return 0},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$19$Type",1713),M(1696,1,{},dB),l.De=function(){return 0},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$2$Type",1696),M(1715,1,Un,WGe),l.td=function(t){eZt(this.a,this.b,u(t,307))},l.a=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$20$Type",1715),M(1714,1,Az,KGe),l.Vd=function(){wot(this.a,this.b,-1)},l.b=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$21$Type",1714),M(1716,1,_d,lX),l.Lb=function(t){return u(t,57),!0},l.Fb=function(t){return this===t},l.Mb=function(t){return u(t,57),!0},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$22$Type",1716),M(1717,1,Un,iX),l.td=function(t){u(t,365).Vd()},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$23$Type",1717),M(1697,1,vi,hX),l.Mb=function(t){return we(u(t,57).g,10)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$3$Type",1697),M(1699,1,Un,YGe),l.td=function(t){tZt(this.a,this.b,u(t,57))},l.a=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$4$Type",1699),M(1698,1,Az,tqe),l.Vd=function(){Z_(this.b,this.a,-1)},l.a=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$5$Type",1698),M(1700,1,_d,fX),l.Lb=function(t){return u(t,57),!0},l.Fb=function(t){return this===t},l.Mb=function(t){return u(t,57),!0},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$6$Type",1700),M(1701,1,Un,dX),l.td=function(t){u(t,365).Vd()},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$7$Type",1701),M(1702,1,vi,gB),l.Mb=function(t){return we(u(t,57).g,145)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$8$Type",1702),M(1704,1,Un,XGe),l.td=function(t){Zrn(this.a,this.b,u(t,57))},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$9$Type",1704),M(1521,1,ps,hUe),l.pf=function(t,n){Uvn(this,u(t,37),n)};var i2t;O(Is,"HorizontalGraphCompactor",1521),M(1522,1,{},_1),l.Oe=function(t,n){var r,s,o;return mme(t,n)||(r=U3(t),s=U3(n),r&&r.k==(zn(),Ls)||s&&s.k==(zn(),Ls))?0:(o=u(K(this.a.a,(et(),G4)),304),aKt(o,r?r.k:(zn(),ca),s?s.k:(zn(),ca)))},l.Pe=function(t,n){var r,s,o;return mme(t,n)?1:(r=U3(t),s=U3(n),o=u(K(this.a.a,(et(),G4)),304),gbe(o,r?r.k:(zn(),ca),s?s.k:(zn(),ca)))},O(Is,"HorizontalGraphCompactor/1",1522),M(1523,1,{},L9),l.Ne=function(t,n){return IT(),t.a.i==0},O(Is,"HorizontalGraphCompactor/lambda$0$Type",1523),M(1524,1,{},Vd),l.Ne=function(t,n){return MJt(this.a,t,n)},O(Is,"HorizontalGraphCompactor/lambda$1$Type",1524),M(1664,1,{},VJe);var s2t,a2t;O(Is,"LGraphToCGraphTransformer",1664),M(1672,1,vi,gX),l.Mb=function(t){return t!=null},O(Is,"LGraphToCGraphTransformer/0methodref$nonNull$Type",1672),M(1665,1,{},pX),l.Kb=function(t){return mf(),Qo(K(u(u(t,57).g,10),(et(),Mi)))},O(Is,"LGraphToCGraphTransformer/lambda$0$Type",1665),M(1666,1,{},pB),l.Kb=function(t){return mf(),Xnt(u(u(t,57).g,145))},O(Is,"LGraphToCGraphTransformer/lambda$1$Type",1666),M(1675,1,vi,bX),l.Mb=function(t){return mf(),we(u(t,57).g,10)},O(Is,"LGraphToCGraphTransformer/lambda$10$Type",1675),M(1676,1,Un,vX),l.td=function(t){LJt(u(t,57))},O(Is,"LGraphToCGraphTransformer/lambda$11$Type",1676),M(1677,1,vi,wX),l.Mb=function(t){return mf(),we(u(t,57).g,145)},O(Is,"LGraphToCGraphTransformer/lambda$12$Type",1677),M(1681,1,Un,mX),l.td=function(t){Nan(u(t,57))},O(Is,"LGraphToCGraphTransformer/lambda$13$Type",1681),M(1678,1,Un,pT),l.td=function(t){iWt(this.a,u(t,8))},l.a=0,O(Is,"LGraphToCGraphTransformer/lambda$14$Type",1678),M(1679,1,Un,$2),l.td=function(t){aWt(this.a,u(t,110))},l.a=0,O(Is,"LGraphToCGraphTransformer/lambda$15$Type",1679),M(1680,1,Un,QR),l.td=function(t){sWt(this.a,u(t,8))},l.a=0,O(Is,"LGraphToCGraphTransformer/lambda$16$Type",1680),M(1682,1,{},yX),l.Kb=function(t){return mf(),new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Is,"LGraphToCGraphTransformer/lambda$17$Type",1682),M(1683,1,vi,kX),l.Mb=function(t){return mf(),to(u(t,17))},O(Is,"LGraphToCGraphTransformer/lambda$18$Type",1683),M(1684,1,Un,Dee),l.td=function(t){$rn(this.a,u(t,17))},O(Is,"LGraphToCGraphTransformer/lambda$19$Type",1684),M(1668,1,Un,Iee),l.td=function(t){ytn(this.a,u(t,145))},O(Is,"LGraphToCGraphTransformer/lambda$2$Type",1668),M(1685,1,{},bB),l.Kb=function(t){return mf(),new vn(null,new mn(u(t,29).a,16))},O(Is,"LGraphToCGraphTransformer/lambda$20$Type",1685),M(1686,1,{},xX),l.Kb=function(t){return mf(),new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Is,"LGraphToCGraphTransformer/lambda$21$Type",1686),M(1687,1,{},vB),l.Kb=function(t){return mf(),u(K(u(t,17),(et(),Mb)),15)},O(Is,"LGraphToCGraphTransformer/lambda$22$Type",1687),M(1688,1,vi,EX),l.Mb=function(t){return cKt(u(t,15))},O(Is,"LGraphToCGraphTransformer/lambda$23$Type",1688),M(1689,1,Un,Oee),l.td=function(t){R1n(this.a,u(t,15))},O(Is,"LGraphToCGraphTransformer/lambda$24$Type",1689),M(1667,1,Un,QGe),l.td=function(t){onn(this.a,this.b,u(t,145))},O(Is,"LGraphToCGraphTransformer/lambda$3$Type",1667),M(1669,1,{},TX),l.Kb=function(t){return mf(),new vn(null,new mn(u(t,29).a,16))},O(Is,"LGraphToCGraphTransformer/lambda$4$Type",1669),M(1670,1,{},_X),l.Kb=function(t){return mf(),new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Is,"LGraphToCGraphTransformer/lambda$5$Type",1670),M(1671,1,{},M9),l.Kb=function(t){return mf(),u(K(u(t,17),(et(),Mb)),15)},O(Is,"LGraphToCGraphTransformer/lambda$6$Type",1671),M(1673,1,Un,Nee),l.td=function(t){pdn(this.a,u(t,15))},O(Is,"LGraphToCGraphTransformer/lambda$8$Type",1673),M(1674,1,Un,ZGe),l.td=function(t){AWt(this.a,this.b,u(t,145))},O(Is,"LGraphToCGraphTransformer/lambda$9$Type",1674),M(1663,1,{},CX),l.Le=function(t){var n,r,s,o,h;for(this.a=t,this.d=new Gee,this.c=Me(R7e,yt,121,this.a.a.a.c.length,0,1),this.b=0,r=new C(this.a.a.a);r.a=X&&(it(h,ct(L)),Ee=b.Math.max(Ee,Ne[L-1]-P),v+=W,le+=Ne[L-1]-le,P=Ne[L-1],W=x[L]),W=b.Math.max(W,x[L]),++L;v+=W}q=b.Math.min(1/Ee,1/n.b/v),q>s&&(s=q,r=h)}return r},l.Wf=function(){return!1},O(Ld,"MSDCutIndexHeuristic",802),M(1617,1,ps,ZX),l.pf=function(t,n){Wbn(u(t,37),n)},O(Ld,"SingleEdgeGraphWrapper",1617),M(227,22,{3:1,35:1,22:1,227:1},jT);var B4,rE,iE,Cy,rS,R4,sE=Gr(Ic,"CenterEdgeLabelPlacementStrategy",227,Wr,irn,BYt),w2t;M(422,22,{3:1,35:1,22:1,422:1},g2e);var s9e,gle,a9e=Gr(Ic,"ConstraintCalculationStrategy",422,Wr,KJt,RYt),m2t;M(314,22,{3:1,35:1,22:1,314:1,246:1,234:1},yte),l.Kf=function(){return Lat(this)},l.Xf=function(){return Lat(this)};var vO,Ek,o9e,c9e=Gr(Ic,"CrossingMinimizationStrategy",314,Wr,$en,FYt),y2t;M(337,22,{3:1,35:1,22:1,337:1},kte);var u9e,ple,Aq,l9e=Gr(Ic,"CuttingStrategy",337,Wr,Hen,HYt),k2t;M(335,22,{3:1,35:1,22:1,335:1,246:1,234:1},xM),l.Kf=function(){return pot(this)},l.Xf=function(){return pot(this)};var h9e,ble,iS,vle,sS,f9e=Gr(Ic,"CycleBreakingStrategy",335,Wr,Mnn,zYt),x2t;M(419,22,{3:1,35:1,22:1,419:1},p2e);var Lq,d9e,g9e=Gr(Ic,"DirectionCongruency",419,Wr,WJt,GYt),E2t;M(450,22,{3:1,35:1,22:1,450:1},xte);var aE,wle,F4,T2t=Gr(Ic,"EdgeConstraint",450,Wr,zen,qYt),_2t;M(276,22,{3:1,35:1,22:1,276:1},$T);var mle,yle,kle,xle,Mq,Ele,p9e=Gr(Ic,"EdgeLabelSideSelection",276,Wr,crn,VYt),C2t;M(479,22,{3:1,35:1,22:1,479:1},b2e);var Dq,b9e,v9e=Gr(Ic,"EdgeStraighteningStrategy",479,Wr,UJt,UYt),S2t;M(274,22,{3:1,35:1,22:1,274:1},HT);var Tle,w9e,m9e,Iq,y9e,k9e,x9e=Gr(Ic,"FixedAlignment",274,Wr,arn,WYt),A2t;M(275,22,{3:1,35:1,22:1,275:1},zT);var E9e,T9e,_9e,C9e,aS,S9e,A9e=Gr(Ic,"GraphCompactionStrategy",275,Wr,srn,KYt),L2t;M(256,22,{3:1,35:1,22:1,256:1},_m);var oE,Oq,cE,Th,oS,Nq,uE,j4,Pq,cS,_le=Gr(Ic,"GraphProperties",256,Wr,Win,YYt),M2t;M(292,22,{3:1,35:1,22:1,292:1},Ete);var wO,Cle,Sle,Ale=Gr(Ic,"GreedySwitchType",292,Wr,Ven,XYt),D2t;M(303,22,{3:1,35:1,22:1,303:1},Tte);var Tk,mO,$4,I2t=Gr(Ic,"InLayerConstraint",303,Wr,qen,QYt),O2t;M(420,22,{3:1,35:1,22:1,420:1},v2e);var Lle,L9e,M9e=Gr(Ic,"InteractiveReferencePoint",420,Wr,YJt,ZYt),N2t,D9e,_k,yw,Bq,I9e,O9e,Rq,N9e,yO,Fq,uS,Ck,Sy,Mle,jq,vc,P9e,kw,eu,Dle,Ile,kO,Lb,xw,Sk,B9e,Ak,xO,Ay,l1,Yh,Ole,H4,Nc,Mi,R9e,F9e,j9e,$9e,H9e,Nle,$q,cl,Ew,Ple,Lk,EO,W1,z4,lE,G4,q4,hE,Mb,z9e,Ble,Rle,Mk;M(163,22,{3:1,35:1,22:1,163:1},TM);var lS,l2,hS,Ly,TO,G9e=Gr(Ic,"LayerConstraint",163,Wr,Onn,JYt),P2t;M(848,1,zh,VJ),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,nke),""),"Direction Congruency"),"Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other."),J9e),(Ng(),vs)),g9e),rn((i1(),Fn))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,rke),""),"Feedback Edges"),"Whether feedback edges should be highlighted by routing around the nodes."),(Mn(),!1)),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Gz),""),"Interactive Reference Point"),"Determines which point of a node is considered by interactive layout phases."),sTe),vs),M9e),rn(Fn)))),va(t,Gz,Roe,Cbt),va(t,Gz,MC,_bt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ike),""),"Merge Edges"),"Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ske),""),"Merge Hierarchy-Crossing Edges"),"If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port."),!0),za),Us),rn(Fn)))),en(t,new Vt(sUt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ake),""),"Allow Non-Flow Ports To Switch Sides"),"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."),!1),za),Us),rn(Bb)),ie(re(mt,1),Qe,2,6,["org.eclipse.elk.layered.northOrSouthPort"])))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,oke),""),"Port Sorting Strategy"),"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."),dTe),vs),k_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,cke),""),"Thoroughness"),"How much effort should be spent to produce a nice layout."),ct(7)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,uke),""),"Add Unnecessary Bendpoints"),"Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,lke),""),"Generate Position and Layer IDs"),"If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Roe),"cycleBreaking"),"Cycle Breaking Strategy"),"Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right)."),Z9e),vs),f9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,GI),oce),"Node Layering Strategy"),"Strategy for node layering."),cTe),vs),u_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,hke),oce),"Layer Constraint"),"Determines a constraint on the placement of the node regarding the layering."),aTe),vs),G9e),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,fke),oce),"Layer Choice Constraint"),"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),ct(-1)),Cc),Za),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,dke),oce),"Layer ID"),"Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),ct(-1)),Cc),Za),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Foe),_ft),"Upper Bound On Width [MinWidth Layerer]"),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),ct(4)),Cc),Za),rn(Fn)))),va(t,Foe,GI,Obt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,joe),_ft),"Upper Layer Estimation Scaling Factor [MinWidth Layerer]"),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),ct(2)),Cc),Za),rn(Fn)))),va(t,joe,GI,Pbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,$oe),Cft),"Node Promotion Strategy"),"Reduces number of dummy nodes after layering phase (if possible)."),oTe),vs),w_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Hoe),Cft),"Max Node Promotion Iterations"),"Limits the number of iterations for node promotion."),ct(0)),Cc),Za),rn(Fn)))),va(t,Hoe,$oe,null),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,zoe),"layering.coffmanGraham"),"Layer Bound"),"The maximum number of nodes allowed per layer."),ct(Ei)),Cc),Za),rn(Fn)))),va(t,zoe,GI,Abt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,MC),qI),"Crossing Minimization Strategy"),"Strategy for crossing minimization."),Q9e),vs),c9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,gke),qI),"Force Node Model Order"),"The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Goe),qI),"Hierarchical Sweepiness"),"How likely it is to use cross-hierarchy (1) vs bottom-up (-1)."),.1),qo),ma),rn(Fn)))),va(t,Goe,nG,ebt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,qoe),qI),"Semi-Interactive Crossing Minimization"),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),!1),za),Us),rn(Fn)))),va(t,qoe,MC,ibt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,pke),qI),"Position Choice Constraint"),"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),ct(-1)),Cc),Za),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,bke),qI),"Position ID"),"Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),ct(-1)),Cc),Za),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,vke),Sft),"Greedy Switch Activation Threshold"),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),ct(40)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Voe),Sft),"Greedy Switch Crossing Minimization"),"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."),X9e),vs),Ale),rn(Fn)))),va(t,Voe,MC,Z2t),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,qz),"crossingMinimization.greedySwitchHierarchical"),"Greedy Switch Crossing Minimization (hierarchical)"),"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."),Y9e),vs),Ale),rn(Fn)))),va(t,qz,MC,Y2t),va(t,qz,nG,X2t),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,T4),Aft),"Node Placement Strategy"),"Strategy for node placement."),fTe),vs),d_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Vz),Aft),"Favor Straight Edges Over Balancing"),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),za),Us),rn(Fn)))),va(t,Vz,T4,Ubt),va(t,Vz,T4,Wbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Uoe),Lft),"BK Edge Straightening"),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),uTe),vs),v9e),rn(Fn)))),va(t,Uoe,T4,zbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Woe),Lft),"BK Fixed Alignment"),"Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four."),lTe),vs),x9e),rn(Fn)))),va(t,Woe,T4,qbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Koe),"nodePlacement.linearSegments"),"Linear Segments Deflection Dampening"),"Dampens the movement of nodes to keep the diagram from getting too large."),.3),qo),ma),rn(Fn)))),va(t,Koe,T4,Ybt),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Yoe),"nodePlacement.networkSimplex"),"Node Flexibility"),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),vs),ahe),rn(ua)))),va(t,Yoe,T4,Jbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Xoe),"nodePlacement.networkSimplex.nodeFlexibility"),"Node Flexibility Default"),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),hTe),vs),ahe),rn(Fn)))),va(t,Xoe,T4,Zbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,wke),Mft),"Self-Loop Distribution"),"Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE."),nTe),vs),T_e),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,mke),Mft),"Self-Loop Ordering"),"Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE."),rTe),vs),__e),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Uz),"edgeRouting.splines"),"Spline Routing Mode"),"Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes."),iTe),vs),S_e),rn(Fn)))),va(t,Uz,VI,pbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Wz),"edgeRouting.splines.sloppy"),"Sloppy Spline Layer Spacing Factor"),"Spacing factor for routing area between layers when using sloppy spline routing."),.2),qo),ma),rn(Fn)))),va(t,Wz,VI,vbt),va(t,Wz,Uz,wbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Qoe),"edgeRouting.polyline"),"Sloped Edge Zone Width"),"Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer."),2),qo),ma),rn(Fn)))),va(t,Qoe,VI,hbt),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,yke),G1),"Spacing Base Value"),"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,kke),G1),"Edge Node Between Layers Spacing"),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,xke),G1),"Edge Edge Between Layer Spacing"),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Eke),G1),"Node Node Between Layers Spacing"),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Tke),Oke),"Direction Priority"),"Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase."),ct(0)),Cc),Za),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,_ke),Oke),"Shortness Priority"),"Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase."),ct(0)),Cc),Za),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Cke),Oke),"Straightness Priority"),"Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement."),ct(0)),Cc),Za),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Zoe),Nke),Uht),"Tries to further compact components (disconnected sub-graphs)."),!1),za),Us),rn(Fn)))),va(t,Zoe,_C,!0),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Ske),Dft),"Post Compaction Strategy"),Ift),V9e),vs),A9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Ake),Dft),"Post Compaction Constraint Calculation"),Ift),q9e),vs),a9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Kz),Pke),"High Degree Node Treatment"),"Makes room around high degree nodes to place leafs and trees."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Joe),Pke),"High Degree Node Threshold"),"Whether a node is considered to have a high degree."),ct(16)),Cc),Za),rn(Fn)))),va(t,Joe,Kz,!0),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ece),Pke),"High Degree Node Maximum Tree Height"),"Maximum height of a subtree connected to a high degree node to be moved to separate layers."),ct(5)),Cc),Za),rn(Fn)))),va(t,ece,Kz,!0),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,W0),Bke),"Graph Wrapping Strategy"),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),bTe),vs),D_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Yz),Bke),"Additional Wrapped Edges Spacing"),"To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing."),10),qo),ma),rn(Fn)))),va(t,Yz,W0,fvt),va(t,Yz,W0,dvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Xz),Bke),"Correction Factor for Wrapping"),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."),1),qo),ma),rn(Fn)))),va(t,Xz,W0,pvt),va(t,Xz,W0,bvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,DC),Oft),"Cutting Strategy"),"The strategy by which the layer indexes are determined at which the layering crumbles into chunks."),pTe),vs),l9e),rn(Fn)))),va(t,DC,W0,xvt),va(t,DC,W0,Evt),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,tce),Oft),"Manually Specified Cuts"),"Allows the user to specify her own cuts for a certain graph."),Y1),Eh),rn(Fn)))),va(t,tce,DC,wvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,nce),"wrapping.cutting.msd"),"MSD Freedom"),"The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts."),gTe),Cc),Za),rn(Fn)))),va(t,nce,DC,yvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Qz),Nft),"Validification Strategy"),"When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed."),vTe),vs),M_e),rn(Fn)))),va(t,Qz,W0,Pvt),va(t,Qz,W0,Bvt),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Zz),Nft),"Valid Indices for Wrapping"),null),Y1),Eh),rn(Fn)))),va(t,Zz,W0,Ivt),va(t,Zz,W0,Ovt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Jz),Rke),"Improve Cuts"),"For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought."),!0),za),Us),rn(Fn)))),va(t,Jz,W0,Svt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,eG),Rke),"Distance Penalty When Improving Cuts"),null),2),qo),ma),rn(Fn)))),va(t,eG,W0,_vt),va(t,eG,Jz,!0),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,rce),Rke),"Improve Wrapped Edges"),"The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges."),!0),za),Us),rn(Fn)))),va(t,rce,W0,Lvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Lke),cce),"Edge Label Side Selection"),"Method to decide on edge label sides."),tTe),vs),p9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Mke),cce),"Edge Center Label Placement Strategy"),"Determines in which layer center labels of long edges should be placed."),eTe),vs),sE),Ui(Fn,ie(re(Ug,1),tt,175,0,[Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,tG),UI),"Consider Model Order"),"Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting."),K9e),vs),y_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Dke),UI),"No Model Order"),"Set on a node to not set a model order for this node even though it is a real node."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ice),UI),"Consider Model Order for Components"),"If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected."),U9e),vs),fEe),rn(Fn)))),va(t,ice,_C,null),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Ike),UI),"Long Edge Ordering Strategy"),"Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout."),W9e),vs),h_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,sce),UI),"Crossing Counter Node Order Influence"),"Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0)."),0),qo),ma),rn(Fn)))),va(t,sce,tG,null),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ace),UI),"Crossing Counter Port Order Influence"),"Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0)."),0),qo),ma),rn(Fn)))),va(t,ace,tG,null),Qlt((new SR,t))};var B2t,R2t,F2t,q9e,j2t,V9e,$2t,U9e,H2t,z2t,G2t,W9e,q2t,V2t,K9e,U2t,W2t,K2t,Y9e,Y2t,X2t,Q2t,X9e,Z2t,J2t,ebt,tbt,nbt,rbt,ibt,sbt,Q9e,abt,Z9e,obt,J9e,cbt,eTe,ubt,tTe,lbt,hbt,fbt,nTe,dbt,rTe,gbt,iTe,pbt,bbt,vbt,wbt,mbt,ybt,kbt,xbt,Ebt,Tbt,sTe,_bt,Cbt,Sbt,Abt,Lbt,Mbt,aTe,Dbt,Ibt,Obt,Nbt,Pbt,Bbt,Rbt,oTe,Fbt,cTe,jbt,$bt,Hbt,uTe,zbt,Gbt,lTe,qbt,Vbt,Ubt,Wbt,Kbt,Ybt,Xbt,Qbt,hTe,Zbt,Jbt,evt,fTe,tvt,dTe,nvt,rvt,ivt,svt,avt,ovt,cvt,uvt,lvt,hvt,fvt,dvt,gvt,pvt,bvt,vvt,wvt,mvt,gTe,yvt,kvt,pTe,xvt,Evt,Tvt,_vt,Cvt,Svt,Avt,Lvt,Mvt,bTe,Dvt,Ivt,Ovt,Nvt,vTe,Pvt,Bvt;O(Ic,"LayeredMetaDataProvider",848),M(986,1,zh,SR),l.Qe=function(t){Qlt(t)};var Bd,Fle,Hq,fS,zq,wTe,Gq,Dk,qq,mTe,yTe,jle,h2,$le,My,kTe,_O,Hle,xTe,Rvt,Vq,zle,dS,Dy,Fvt,Zl,ETe,TTe,Uq,Gle,Rd,Wq,K0,_Te,CTe,STe,qle,Vle,ATe,Hg,Ule,LTe,Iy,MTe,DTe,ITe,Kq,Oy,Db,OTe,NTe,Fo,PTe,jvt,vu,Yq,BTe,RTe,FTe,Wle,jTe,Xq,$Te,HTe,Qq,Tw,zTe,Kle,gS,GTe,_w,pS,Zq,Ib,Yle,fE,Jq,Ob,qTe,VTe,UTe,dE,WTe,$vt,Hvt,zvt,Gvt,Cw,Ny,bs,zg,qvt,Py,KTe,gE,YTe,By,Vvt,pE,XTe,Ik,Uvt,Wvt,CO,Xle,QTe,SO,Mf,V4,Ok,Sw,Nb,eV,Ry,Qle,bE,vE,Aw,U4,Zle,AO,bS,vS,Jle,ZTe,JTe,e_e,t_e,ehe,n_e,r_e,i_e,s_e,the,tV;O(Ic,"LayeredOptions",986),M(987,1,{},eQ),l.$e=function(){var t;return t=new sHe,t},l._e=function(t){},O(Ic,"LayeredOptions/LayeredFactory",987),M(1372,1,{}),l.a=0;var Kvt;O(Oc,"ElkSpacings/AbstractSpacingsBuilder",1372),M(779,1372,{},Kye);var nV,Yvt;O(Ic,"LayeredSpacings/LayeredSpacingsBuilder",779),M(313,22,{3:1,35:1,22:1,313:1,246:1,234:1},GT),l.Kf=function(){return Mot(this)},l.Xf=function(){return Mot(this)};var nhe,a_e,o_e,rV,rhe,c_e,u_e=Gr(Ic,"LayeringStrategy",313,Wr,orn,eXt),Xvt;M(378,22,{3:1,35:1,22:1,378:1},_te);var ihe,l_e,iV,h_e=Gr(Ic,"LongEdgeOrderingStrategy",378,Wr,jen,tXt),Qvt;M(197,22,{3:1,35:1,22:1,197:1},$F);var W4,K4,sV,she,ahe=Gr(Ic,"NodeFlexibility",197,Wr,Utn,nXt),Zvt;M(315,22,{3:1,35:1,22:1,315:1,246:1,234:1},EM),l.Kf=function(){return got(this)},l.Xf=function(){return got(this)};var wS,ohe,che,mS,f_e,d_e=Gr(Ic,"NodePlacementStrategy",315,Wr,Lnn,cXt),Jvt;M(260,22,{3:1,35:1,22:1,260:1},k6);var g_e,LO,p_e,b_e,MO,v_e,aV,oV,w_e=Gr(Ic,"NodePromotionStrategy",260,Wr,ain,iXt),ewt;M(339,22,{3:1,35:1,22:1,339:1},Cte);var m_e,f2,uhe,y_e=Gr(Ic,"OrderingStrategy",339,Wr,Wen,sXt),twt;M(421,22,{3:1,35:1,22:1,421:1},w2e);var lhe,hhe,k_e=Gr(Ic,"PortSortingStrategy",421,Wr,XJt,aXt),nwt;M(452,22,{3:1,35:1,22:1,452:1},Ste);var ul,hu,yS,rwt=Gr(Ic,"PortType",452,Wr,Uen,rXt),iwt;M(375,22,{3:1,35:1,22:1,375:1},Ate);var x_e,fhe,E_e,T_e=Gr(Ic,"SelfLoopDistributionStrategy",375,Wr,Ken,oXt),swt;M(376,22,{3:1,35:1,22:1,376:1},m2e);var DO,dhe,__e=Gr(Ic,"SelfLoopOrderingStrategy",376,Wr,VJt,uXt),awt;M(304,1,{304:1},Jut),O(Ic,"Spacings",304),M(336,22,{3:1,35:1,22:1,336:1},Lte);var ghe,C_e,kS,S_e=Gr(Ic,"SplineRoutingMode",336,Wr,Xen,lXt),owt;M(338,22,{3:1,35:1,22:1,338:1},Mte);var phe,A_e,L_e,M_e=Gr(Ic,"ValidifyStrategy",338,Wr,Qen,hXt),cwt;M(377,22,{3:1,35:1,22:1,377:1},Dte);var Fy,bhe,wE,D_e=Gr(Ic,"WrappingStrategy",377,Wr,Yen,fXt),uwt;M(1383,1,Qc,KJ),l.Yf=function(t){return u(t,37),lwt},l.pf=function(t,n){Hvn(this,u(t,37),n)};var lwt;O(sG,"DepthFirstCycleBreaker",1383),M(782,1,Qc,Ive),l.Yf=function(t){return u(t,37),hwt},l.pf=function(t,n){jyn(this,u(t,37),n)},l.Zf=function(t){return u(St(t,BH(this.d,t.c.length)),10)};var hwt;O(sG,"GreedyCycleBreaker",782),M(1386,782,Qc,Fqe),l.Zf=function(t){var n,r,s,o;for(o=null,n=Ei,s=new C(t);s.a1&&(It(Mt(K(Ya((xn(0,t.c.length),u(t.c[0],10))),(pt(),My))))?Tot(t,this.d,u(this,660)):(hn(),aa(t,this.d)),qtt(this.e,t))},l.Sf=function(t,n,r,s){var o,h,d,v,x,_,L;for(n!=dKe(r,t.length)&&(h=t[n-(r?1:-1)],rme(this.f,h,r?(vo(),hu):(vo(),ul))),o=t[n][0],L=!s||o.k==(zn(),Ls),_=O1(t[n]),this.ag(_,L,!1,r),d=0,x=new C(_);x.a"),t0?hre(this.a,t[n-1],t[n]):!r&&n1&&(It(Mt(K(Ya((xn(0,t.c.length),u(t.c[0],10))),(pt(),My))))?Tot(t,this.d,this):(hn(),aa(t,this.d)),It(Mt(K(Ya((xn(0,t.c.length),u(t.c[0],10))),My)))||qtt(this.e,t))},O(Qu,"ModelOrderBarycenterHeuristic",660),M(1803,1,ji,xje),l.ue=function(t,n){return t1n(this.a,u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Qu,"ModelOrderBarycenterHeuristic/lambda$0$Type",1803),M(1403,1,Qc,ZJ),l.Yf=function(t){var n;return u(t,37),n=JF(Twt),xi(n,(ro(),bu),(po(),bq)),n},l.pf=function(t,n){$Jt((u(t,37),n))};var Twt;O(Qu,"NoCrossingMinimizer",1403),M(796,402,mxe,zpe),l.$f=function(t,n,r){var s,o,h,d,v,x,_,L,P,z,q;switch(P=this.g,r.g){case 1:{for(o=0,h=0,L=new C(t.j);L.a1&&(o.j==(ht(),$n)?this.b[t]=!0:o.j==Dn&&t>0&&(this.b[t-1]=!0))},l.f=0,O(u0,"AllCrossingsCounter",1798),M(587,1,{},Z$),l.b=0,l.d=0,O(u0,"BinaryIndexedTree",587),M(524,1,{},zM);var N_e,uV;O(u0,"CrossingsCounter",524),M(1906,1,ji,Eje),l.ue=function(t,n){return GQt(this.a,u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(u0,"CrossingsCounter/lambda$0$Type",1906),M(1907,1,ji,Tje),l.ue=function(t,n){return qQt(this.a,u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(u0,"CrossingsCounter/lambda$1$Type",1907),M(1908,1,ji,_je),l.ue=function(t,n){return VQt(this.a,u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(u0,"CrossingsCounter/lambda$2$Type",1908),M(1909,1,ji,Cje),l.ue=function(t,n){return UQt(this.a,u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(u0,"CrossingsCounter/lambda$3$Type",1909),M(1910,1,Un,Sje),l.td=function(t){Srn(this.a,u(t,11))},O(u0,"CrossingsCounter/lambda$4$Type",1910),M(1911,1,vi,Aje),l.Mb=function(t){return HUt(this.a,u(t,11))},O(u0,"CrossingsCounter/lambda$5$Type",1911),M(1912,1,Un,Lje),l.td=function(t){Nqe(this,t)},O(u0,"CrossingsCounter/lambda$6$Type",1912),M(1913,1,Un,aqe),l.td=function(t){var n;h8(),$p(this.b,(n=this.a,u(t,11),n))},O(u0,"CrossingsCounter/lambda$7$Type",1913),M(826,1,_d,IB),l.Lb=function(t){return h8(),ta(u(t,11),(et(),cl))},l.Fb=function(t){return this===t},l.Mb=function(t){return h8(),ta(u(t,11),(et(),cl))},O(u0,"CrossingsCounter/lambda$8$Type",826),M(1905,1,{},Mje),O(u0,"HyperedgeCrossingsCounter",1905),M(467,1,{35:1,467:1},XUe),l.wd=function(t){return Tcn(this,u(t,467))},l.b=0,l.c=0,l.e=0,l.f=0;var y3n=O(u0,"HyperedgeCrossingsCounter/Hyperedge",467);M(362,1,{35:1,362:1},Xj),l.wd=function(t){return x0n(this,u(t,362))},l.b=0,l.c=0;var _wt=O(u0,"HyperedgeCrossingsCounter/HyperedgeCorner",362);M(523,22,{3:1,35:1,22:1,523:1},y2e);var ES,TS,Cwt=Gr(u0,"HyperedgeCrossingsCounter/HyperedgeCorner/Type",523,Wr,QJt,gXt),Swt;M(1405,1,Qc,WJ),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Awt:null},l.pf=function(t,n){Gln(this,u(t,37),n)};var Awt;O(ko,"InteractiveNodePlacer",1405),M(1406,1,Qc,UJ),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Lwt:null},l.pf=function(t,n){Sun(this,u(t,37),n)};var Lwt,lV,hV;O(ko,"LinearSegmentsNodePlacer",1406),M(257,1,{35:1,257:1},wpe),l.wd=function(t){return JVt(this,u(t,257))},l.Fb=function(t){var n;return we(t,257)?(n=u(t,257),this.b==n.b):!1},l.Hb=function(){return this.b},l.Ib=function(){return"ls"+Yp(this.e)},l.a=0,l.b=0,l.c=-1,l.d=-1,l.g=0;var Mwt=O(ko,"LinearSegmentsNodePlacer/LinearSegment",257);M(1408,1,Qc,EKe),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Dwt:null},l.pf=function(t,n){Dyn(this,u(t,37),n)},l.b=0,l.g=0;var Dwt;O(ko,"NetworkSimplexPlacer",1408),M(1427,1,ji,sQ),l.ue=function(t,n){return Tu(u(t,19).a,u(n,19).a)},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(ko,"NetworkSimplexPlacer/0methodref$compare$Type",1427),M(1429,1,ji,aQ),l.ue=function(t,n){return Tu(u(t,19).a,u(n,19).a)},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(ko,"NetworkSimplexPlacer/1methodref$compare$Type",1429),M(649,1,{649:1},oqe);var k3n=O(ko,"NetworkSimplexPlacer/EdgeRep",649);M(401,1,{401:1},lwe),l.b=!1;var x3n=O(ko,"NetworkSimplexPlacer/NodeRep",401);M(508,12,{3:1,4:1,20:1,28:1,52:1,12:1,14:1,15:1,54:1,508:1},bHe),O(ko,"NetworkSimplexPlacer/Path",508),M(1409,1,{},oQ),l.Kb=function(t){return u(t,17).d.i.k},O(ko,"NetworkSimplexPlacer/Path/lambda$0$Type",1409),M(1410,1,vi,cQ),l.Mb=function(t){return u(t,267)==(zn(),ca)},O(ko,"NetworkSimplexPlacer/Path/lambda$1$Type",1410),M(1411,1,{},uQ),l.Kb=function(t){return u(t,17).d.i},O(ko,"NetworkSimplexPlacer/Path/lambda$2$Type",1411),M(1412,1,vi,Dje),l.Mb=function(t){return NUe(krt(u(t,10)))},O(ko,"NetworkSimplexPlacer/Path/lambda$3$Type",1412),M(1413,1,vi,lQ),l.Mb=function(t){return IQt(u(t,11))},O(ko,"NetworkSimplexPlacer/lambda$0$Type",1413),M(1414,1,Un,cqe),l.td=function(t){LWt(this.a,this.b,u(t,11))},O(ko,"NetworkSimplexPlacer/lambda$1$Type",1414),M(1423,1,Un,Ije),l.td=function(t){Y1n(this.a,u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$10$Type",1423),M(1424,1,{},hQ),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$11$Type",1424),M(1425,1,Un,Oje),l.td=function(t){Vpn(this.a,u(t,10))},O(ko,"NetworkSimplexPlacer/lambda$12$Type",1425),M(1426,1,{},fQ),l.Kb=function(t){return $l(),ct(u(t,121).e)},O(ko,"NetworkSimplexPlacer/lambda$13$Type",1426),M(1428,1,{},dQ),l.Kb=function(t){return $l(),ct(u(t,121).e)},O(ko,"NetworkSimplexPlacer/lambda$15$Type",1428),M(1430,1,vi,gQ),l.Mb=function(t){return $l(),u(t,401).c.k==(zn(),Hs)},O(ko,"NetworkSimplexPlacer/lambda$17$Type",1430),M(1431,1,vi,pQ),l.Mb=function(t){return $l(),u(t,401).c.j.c.length>1},O(ko,"NetworkSimplexPlacer/lambda$18$Type",1431),M(1432,1,Un,MYe),l.td=function(t){Pon(this.c,this.b,this.d,this.a,u(t,401))},l.c=0,l.d=0,O(ko,"NetworkSimplexPlacer/lambda$19$Type",1432),M(1415,1,{},bQ),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$2$Type",1415),M(1433,1,Un,Nje),l.td=function(t){SWt(this.a,u(t,11))},l.a=0,O(ko,"NetworkSimplexPlacer/lambda$20$Type",1433),M(1434,1,{},V5),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$21$Type",1434),M(1435,1,Un,Pje),l.td=function(t){zWt(this.a,u(t,10))},O(ko,"NetworkSimplexPlacer/lambda$22$Type",1435),M(1436,1,vi,OB),l.Mb=function(t){return NUe(t)},O(ko,"NetworkSimplexPlacer/lambda$23$Type",1436),M(1437,1,{},vQ),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$24$Type",1437),M(1438,1,vi,Bje),l.Mb=function(t){return KUt(this.a,u(t,10))},O(ko,"NetworkSimplexPlacer/lambda$25$Type",1438),M(1439,1,Un,uqe),l.td=function(t){v1n(this.a,this.b,u(t,10))},O(ko,"NetworkSimplexPlacer/lambda$26$Type",1439),M(1440,1,vi,wQ),l.Mb=function(t){return $l(),!to(u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$27$Type",1440),M(1441,1,vi,mQ),l.Mb=function(t){return $l(),!to(u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$28$Type",1441),M(1442,1,{},Rje),l.Ce=function(t,n){return jWt(this.a,u(t,29),u(n,29))},O(ko,"NetworkSimplexPlacer/lambda$29$Type",1442),M(1416,1,{},NB),l.Kb=function(t){return $l(),new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(ko,"NetworkSimplexPlacer/lambda$3$Type",1416),M(1417,1,vi,yQ),l.Mb=function(t){return $l(),Ctn(u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$4$Type",1417),M(1418,1,Un,Fje),l.td=function(t){qbn(this.a,u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$5$Type",1418),M(1419,1,{},N9),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$6$Type",1419),M(1420,1,vi,kQ),l.Mb=function(t){return $l(),u(t,10).k==(zn(),Hs)},O(ko,"NetworkSimplexPlacer/lambda$7$Type",1420),M(1421,1,{},xQ),l.Kb=function(t){return $l(),new vn(null,new Sv(new cr(fr(j0(u(t,10)).a.Kc(),new V))))},O(ko,"NetworkSimplexPlacer/lambda$8$Type",1421),M(1422,1,vi,EQ),l.Mb=function(t){return $l(),CQt(u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$9$Type",1422),M(1404,1,Qc,sT),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Iwt:null},l.pf=function(t,n){_vn(u(t,37),n)};var Iwt;O(ko,"SimpleNodePlacer",1404),M(180,1,{180:1},p4),l.Ib=function(){var t;return t="",this.c==(yd(),Lw)?t+=lk:this.c==Gg&&(t+=uk),this.o==(M1(),Pb)?t+=voe:this.o==K1?t+="UP":t+="BALANCED",t},O(r2,"BKAlignedLayout",180),M(516,22,{3:1,35:1,22:1,516:1},x2e);var Gg,Lw,Owt=Gr(r2,"BKAlignedLayout/HDirection",516,Wr,JJt,pXt),Nwt;M(515,22,{3:1,35:1,22:1,515:1},k2e);var Pb,K1,Pwt=Gr(r2,"BKAlignedLayout/VDirection",515,Wr,een,bXt),Bwt;M(1634,1,{},lqe),O(r2,"BKAligner",1634),M(1637,1,{},Vit),O(r2,"BKCompactor",1637),M(654,1,{654:1},TQ),l.a=0,O(r2,"BKCompactor/ClassEdge",654),M(458,1,{458:1},gHe),l.a=null,l.b=0,O(r2,"BKCompactor/ClassNode",458),M(1407,1,Qc,Bqe),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Rwt:null},l.pf=function(t,n){Uyn(this,u(t,37),n)},l.d=!1;var Rwt;O(r2,"BKNodePlacer",1407),M(1635,1,{},_Q),l.d=0,O(r2,"NeighborhoodInformation",1635),M(1636,1,ji,jje),l.ue=function(t,n){return Jrn(this,u(t,46),u(n,46))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(r2,"NeighborhoodInformation/NeighborComparator",1636),M(808,1,{}),O(r2,"ThresholdStrategy",808),M(1763,808,{},mHe),l.bg=function(t,n,r){return this.a.o==(M1(),K1)?gs:Ds},l.cg=function(){},O(r2,"ThresholdStrategy/NullThresholdStrategy",1763),M(579,1,{579:1},hqe),l.c=!1,l.d=!1,O(r2,"ThresholdStrategy/Postprocessable",579),M(1764,808,{},yHe),l.bg=function(t,n,r){var s,o,h;return o=n==r,s=this.a.a[r.p]==n,o||s?(h=t,this.a.c==(yd(),Lw)?(o&&(h=vae(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=vae(this,r,!1))):(o&&(h=vae(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=vae(this,r,!1))),h):t},l.cg=function(){for(var t,n,r,s,o;this.d.b!=0;)o=u(ben(this.d),579),s=fut(this,o),s.a&&(t=s.a,r=It(this.a.f[this.a.g[o.b.p].p]),!(!r&&!to(t)&&t.c.i.c==t.d.i.c)&&(n=mot(this,o),n||nWt(this.e,o)));for(;this.e.a.c.length!=0;)mot(this,u(Lnt(this.e),579))},O(r2,"ThresholdStrategy/SimpleThresholdStrategy",1764),M(635,1,{635:1,246:1,234:1},CQ),l.Kf=function(){return jtt(this)},l.Xf=function(){return jtt(this)};var vhe;O(dce,"EdgeRouterFactory",635),M(1458,1,Qc,hd),l.Yf=function(t){return Tpn(u(t,37))},l.pf=function(t,n){Ivn(u(t,37),n)};var Fwt,jwt,$wt,Hwt,zwt,P_e,Gwt,qwt;O(dce,"OrthogonalEdgeRouter",1458),M(1451,1,Qc,Rqe),l.Yf=function(t){return Kln(u(t,37))},l.pf=function(t,n){Zmn(this,u(t,37),n)};var Vwt,Uwt,Wwt,Kwt,OO,Ywt;O(dce,"PolylineEdgeRouter",1451),M(1452,1,_d,SQ),l.Lb=function(t){return Qme(u(t,10))},l.Fb=function(t){return this===t},l.Mb=function(t){return Qme(u(t,10))},O(dce,"PolylineEdgeRouter/1",1452),M(1809,1,vi,AQ),l.Mb=function(t){return u(t,129).c==(Jf(),d2)},O(o1,"HyperEdgeCycleDetector/lambda$0$Type",1809),M(1810,1,{},LQ),l.Ge=function(t){return u(t,129).d},O(o1,"HyperEdgeCycleDetector/lambda$1$Type",1810),M(1811,1,vi,MQ),l.Mb=function(t){return u(t,129).c==(Jf(),d2)},O(o1,"HyperEdgeCycleDetector/lambda$2$Type",1811),M(1812,1,{},U5),l.Ge=function(t){return u(t,129).d},O(o1,"HyperEdgeCycleDetector/lambda$3$Type",1812),M(1813,1,{},DQ),l.Ge=function(t){return u(t,129).d},O(o1,"HyperEdgeCycleDetector/lambda$4$Type",1813),M(1814,1,{},IQ),l.Ge=function(t){return u(t,129).d},O(o1,"HyperEdgeCycleDetector/lambda$5$Type",1814),M(112,1,{35:1,112:1},AD),l.wd=function(t){return eUt(this,u(t,112))},l.Fb=function(t){var n;return we(t,112)?(n=u(t,112),this.g==n.g):!1},l.Hb=function(){return this.g},l.Ib=function(){var t,n,r,s;for(t=new Fl("{"),s=new C(this.n);s.a"+this.b+" ("+hKt(this.c)+")"},l.d=0,O(o1,"HyperEdgeSegmentDependency",129),M(520,22,{3:1,35:1,22:1,520:1},E2e);var d2,jy,Xwt=Gr(o1,"HyperEdgeSegmentDependency/DependencyType",520,Wr,ZJt,vXt),Qwt;M(1815,1,{},$je),O(o1,"HyperEdgeSegmentSplitter",1815),M(1816,1,{},vze),l.a=0,l.b=0,O(o1,"HyperEdgeSegmentSplitter/AreaRating",1816),M(329,1,{329:1},vne),l.a=0,l.b=0,l.c=0,O(o1,"HyperEdgeSegmentSplitter/FreeArea",329),M(1817,1,ji,jQ),l.ue=function(t,n){return oYt(u(t,112),u(n,112))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(o1,"HyperEdgeSegmentSplitter/lambda$0$Type",1817),M(1818,1,Un,DYe),l.td=function(t){fnn(this.a,this.d,this.c,this.b,u(t,112))},l.b=0,O(o1,"HyperEdgeSegmentSplitter/lambda$1$Type",1818),M(1819,1,{},$Q),l.Kb=function(t){return new vn(null,new mn(u(t,112).e,16))},O(o1,"HyperEdgeSegmentSplitter/lambda$2$Type",1819),M(1820,1,{},HQ),l.Kb=function(t){return new vn(null,new mn(u(t,112).j,16))},O(o1,"HyperEdgeSegmentSplitter/lambda$3$Type",1820),M(1821,1,{},zQ),l.Fe=function(t){return Ue(ft(t))},O(o1,"HyperEdgeSegmentSplitter/lambda$4$Type",1821),M(655,1,{},Hne),l.a=0,l.b=0,l.c=0,O(o1,"OrthogonalRoutingGenerator",655),M(1638,1,{},GQ),l.Kb=function(t){return new vn(null,new mn(u(t,112).e,16))},O(o1,"OrthogonalRoutingGenerator/lambda$0$Type",1638),M(1639,1,{},qQ),l.Kb=function(t){return new vn(null,new mn(u(t,112).j,16))},O(o1,"OrthogonalRoutingGenerator/lambda$1$Type",1639),M(661,1,{}),O(gce,"BaseRoutingDirectionStrategy",661),M(1807,661,{},kHe),l.dg=function(t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X;if(!(t.r&&!t.q))for(L=n+t.o*r,_=new C(t.n);_.a<_.c.c.length;)for(x=u(Y(_),11),P=sc(ie(re(na,1),Qe,8,0,[x.i.n,x.n,x.a])).a,v=new C(x.g);v.aSd&&(h=L,o=t,s=new Pt(P,h),ci(d.a,s),rw(this,d,o,s,!1),z=t.r,z&&(q=Ue(ft(s1(z.e,0))),s=new Pt(q,h),ci(d.a,s),rw(this,d,o,s,!1),h=n+z.o*r,o=z,s=new Pt(q,h),ci(d.a,s),rw(this,d,o,s,!1)),s=new Pt(X,h),ci(d.a,s),rw(this,d,o,s,!1)))},l.eg=function(t){return t.i.n.a+t.n.a+t.a.a},l.fg=function(){return ht(),xr},l.gg=function(){return ht(),An},O(gce,"NorthToSouthRoutingStrategy",1807),M(1808,661,{},xHe),l.dg=function(t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X;if(!(t.r&&!t.q))for(L=n-t.o*r,_=new C(t.n);_.a<_.c.c.length;)for(x=u(Y(_),11),P=sc(ie(re(na,1),Qe,8,0,[x.i.n,x.n,x.a])).a,v=new C(x.g);v.aSd&&(h=L,o=t,s=new Pt(P,h),ci(d.a,s),rw(this,d,o,s,!1),z=t.r,z&&(q=Ue(ft(s1(z.e,0))),s=new Pt(q,h),ci(d.a,s),rw(this,d,o,s,!1),h=n-z.o*r,o=z,s=new Pt(q,h),ci(d.a,s),rw(this,d,o,s,!1)),s=new Pt(X,h),ci(d.a,s),rw(this,d,o,s,!1)))},l.eg=function(t){return t.i.n.a+t.n.a+t.a.a},l.fg=function(){return ht(),An},l.gg=function(){return ht(),xr},O(gce,"SouthToNorthRoutingStrategy",1808),M(1806,661,{},EHe),l.dg=function(t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X;if(!(t.r&&!t.q))for(L=n+t.o*r,_=new C(t.n);_.a<_.c.c.length;)for(x=u(Y(_),11),P=sc(ie(re(na,1),Qe,8,0,[x.i.n,x.n,x.a])).b,v=new C(x.g);v.aSd&&(h=L,o=t,s=new Pt(h,P),ci(d.a,s),rw(this,d,o,s,!0),z=t.r,z&&(q=Ue(ft(s1(z.e,0))),s=new Pt(h,q),ci(d.a,s),rw(this,d,o,s,!0),h=n+z.o*r,o=z,s=new Pt(h,q),ci(d.a,s),rw(this,d,o,s,!0)),s=new Pt(h,X),ci(d.a,s),rw(this,d,o,s,!0)))},l.eg=function(t){return t.i.n.b+t.n.b+t.a.b},l.fg=function(){return ht(),$n},l.gg=function(){return ht(),Dn},O(gce,"WestToEastRoutingStrategy",1806),M(813,1,{},G5e),l.Ib=function(){return Yp(this.a)},l.b=0,l.c=!1,l.d=!1,l.f=0,O(vy,"NubSpline",813),M(407,1,{407:1},Kot,hXe),O(vy,"NubSpline/PolarCP",407),M(1453,1,Qc,Rit),l.Yf=function(t){return Rhn(u(t,37))},l.pf=function(t,n){vyn(this,u(t,37),n)};var Zwt,Jwt,emt,tmt,nmt;O(vy,"SplineEdgeRouter",1453),M(268,1,{268:1},x$),l.Ib=function(){return this.a+" ->("+this.c+") "+this.b},l.c=0,O(vy,"SplineEdgeRouter/Dependency",268),M(455,22,{3:1,35:1,22:1,455:1},T2e);var g2,Y4,rmt=Gr(vy,"SplineEdgeRouter/SideToProcess",455,Wr,ten,wXt),imt;M(1454,1,vi,FQ),l.Mb=function(t){return aC(),!u(t,128).o},O(vy,"SplineEdgeRouter/lambda$0$Type",1454),M(1455,1,{},RQ),l.Ge=function(t){return aC(),u(t,128).v+1},O(vy,"SplineEdgeRouter/lambda$1$Type",1455),M(1456,1,Un,fqe),l.td=function(t){AQt(this.a,this.b,u(t,46))},O(vy,"SplineEdgeRouter/lambda$2$Type",1456),M(1457,1,Un,dqe),l.td=function(t){LQt(this.a,this.b,u(t,46))},O(vy,"SplineEdgeRouter/lambda$3$Type",1457),M(128,1,{35:1,128:1},hat,Y5e),l.wd=function(t){return tUt(this,u(t,128))},l.b=0,l.e=!1,l.f=0,l.g=0,l.j=!1,l.k=!1,l.n=0,l.o=!1,l.p=!1,l.q=!1,l.s=0,l.u=0,l.v=0,l.F=0,O(vy,"SplineSegment",128),M(459,1,{459:1},P9),l.a=0,l.b=!1,l.c=!1,l.d=!1,l.e=!1,l.f=0,O(vy,"SplineSegment/EdgeInformation",459),M(1234,1,{},OQ),O(IC,q6e,1234),M(1235,1,ji,NQ),l.ue=function(t,n){return hdn(u(t,135),u(n,135))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(IC,Yht,1235),M(1233,1,{},Oze),O(IC,"MrTree",1233),M(393,22,{3:1,35:1,22:1,393:1,246:1,234:1},HF),l.Kf=function(){return Bat(this)},l.Xf=function(){return Bat(this)};var fV,_S,NO,CS,B_e=Gr(IC,"TreeLayoutPhases",393,Wr,Wtn,mXt),smt;M(1130,209,mb,JUe),l.Ze=function(t,n){var r,s,o,h,d,v,x;for(It(Mt(Ft(t,(nw(),z_e))))||i$((r=new sr((Tm(),new ym(t))),r)),d=(v=new E$,Ho(v,t),Ye(v,(Tc(),LS),t),x=new Mr,nbn(t,v,x),mbn(t,v,x),v),h=fbn(this.a,d),o=new C(h);o.a"+h$(this.c):"e_"+Xi(this)},O(OC,"TEdge",188),M(135,134,{3:1,135:1,94:1,134:1},E$),l.Ib=function(){var t,n,r,s,o;for(o=null,s=ii(this.b,0);s.b!=s.d.c;)r=u(ri(s),86),o+=(r.c==null||r.c.length==0?"n_"+r.g:"n_"+r.c)+` +`;for(n=ii(this.a,0);n.b!=n.d.c;)t=u(ri(n),188),o+=(t.b&&t.c?h$(t.b)+"->"+h$(t.c):"e_"+Xi(t))+` +`;return o};var E3n=O(OC,"TGraph",135);M(633,502,{3:1,502:1,633:1,94:1,134:1}),O(OC,"TShape",633),M(86,633,{3:1,502:1,86:1,633:1,94:1,134:1},vie),l.Ib=function(){return h$(this)};var T3n=O(OC,"TNode",86);M(255,1,i0,Ep),l.Jc=function(t){Da(this,t)},l.Kc=function(){var t;return t=ii(this.a.d,0),new f6(t)},O(OC,"TNode/2",255),M(358,1,ga,f6),l.Nb=function(t){La(this,t)},l.Pb=function(){return u(ri(this.a),188).c},l.Ob=function(){return vF(this.a)},l.Qb=function(){F$(this.a)},O(OC,"TNode/2/1",358),M(1840,1,ps,ZUe),l.pf=function(t,n){Pbn(this,u(t,135),n)},O(vk,"FanProcessor",1840),M(327,22,{3:1,35:1,22:1,327:1,234:1},qT),l.Kf=function(){switch(this.g){case 0:return new FHe;case 1:return new ZUe;case 2:return new W5;case 3:return new VQ;case 4:return new WQ;case 5:return new IL;default:throw J(new Ln(Noe+(this.f!=null?this.f:""+this.g)))}};var whe,mhe,yhe,khe,xhe,dV,amt=Gr(vk,tke,327,Wr,urn,yXt),omt;M(1843,1,ps,VQ),l.pf=function(t,n){v0n(this,u(t,135),n)},l.a=0,O(vk,"LevelHeightProcessor",1843),M(1844,1,i0,UQ),l.Jc=function(t){Da(this,t)},l.Kc=function(){return hn(),e8(),Y7},O(vk,"LevelHeightProcessor/1",1844),M(1841,1,ps,W5),l.pf=function(t,n){T1n(this,u(t,135),n)},l.a=0,O(vk,"NeighborsProcessor",1841),M(1842,1,i0,PB),l.Jc=function(t){Da(this,t)},l.Kc=function(){return hn(),e8(),Y7},O(vk,"NeighborsProcessor/1",1842),M(1845,1,ps,WQ),l.pf=function(t,n){b0n(this,u(t,135),n)},l.a=0,O(vk,"NodePositionProcessor",1845),M(1839,1,ps,FHe),l.pf=function(t,n){zvn(this,u(t,135))},O(vk,"RootProcessor",1839),M(1846,1,ps,IL),l.pf=function(t,n){Qan(u(t,135))},O(vk,"Untreeifyer",1846);var PO,SS,cmt,Ehe,gV,AS,The,pV,bV,mE,LS,vV,qg,R_e,umt,_he,$y,Che,F_e;M(851,1,zh,E3),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,yxe),""),"Weighting of Nodes"),"Which weighting to use when computing a node order."),$_e),(Ng(),vs)),W_e),rn((i1(),Fn))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,kxe),""),"Search Order"),"Which search order to use when computing a spanning tree."),j_e),vs),Y_e),rn(Fn)))),clt((new WL,t))};var lmt,j_e,hmt,$_e;O(oG,"MrTreeMetaDataProvider",851),M(994,1,zh,WL),l.Qe=function(t){clt(t)};var fmt,H_e,dmt,gmt,pmt,bmt,z_e,vmt,G_e,wmt,wV,q_e,mmt,V_e,ymt;O(oG,"MrTreeOptions",994),M(995,1,{},KQ),l.$e=function(){var t;return t=new JUe,t},l._e=function(t){},O(oG,"MrTreeOptions/MrtreeFactory",995),M(480,22,{3:1,35:1,22:1,480:1},_2e);var She,U_e,W_e=Gr(oG,"OrderWeighting",480,Wr,ren,kXt),kmt;M(425,22,{3:1,35:1,22:1,425:1},C2e);var K_e,Ahe,Y_e=Gr(oG,"TreeifyingOrder",425,Wr,nen,EXt),xmt;M(1459,1,Qc,UL),l.Yf=function(t){return u(t,135),Emt},l.pf=function(t,n){Xin(this,u(t,135),n)};var Emt;O("org.eclipse.elk.alg.mrtree.p1treeify","DFSTreeifyer",1459),M(1460,1,Qc,XJ),l.Yf=function(t){return u(t,135),Tmt},l.pf=function(t,n){N1n(this,u(t,135),n)};var Tmt;O("org.eclipse.elk.alg.mrtree.p2order","NodeOrderer",1460),M(1461,1,Qc,YJ),l.Yf=function(t){return u(t,135),_mt},l.pf=function(t,n){Qpn(this,u(t,135),n)},l.a=0;var _mt;O("org.eclipse.elk.alg.mrtree.p3place","NodePlacer",1461),M(1462,1,Qc,LR),l.Yf=function(t){return u(t,135),Cmt},l.pf=function(t,n){Eln(u(t,135),n)};var Cmt;O("org.eclipse.elk.alg.mrtree.p4route","EdgeRouter",1462);var MS;M(495,22,{3:1,35:1,22:1,495:1,246:1,234:1},S2e),l.Kf=function(){return grt(this)},l.Xf=function(){return grt(this)};var mV,yE,X_e=Gr(xxe,"RadialLayoutPhases",495,Wr,ien,xXt),Smt;M(1131,209,mb,Ize),l.Ze=function(t,n){var r,s,o,h,d,v;if(r=vat(this,t),kr(n,"Radial layout",r.c.length),It(Mt(Ft(t,(Jm(),aCe))))||i$((s=new sr((Tm(),new ym(t))),s)),v=$hn(t),So(t,(a_(),MS),v),!v)throw J(new Ln("The given graph is not a tree!"));for(o=Ue(ft(Ft(t,xV))),o==0&&(o=Dat(t)),So(t,xV,o),d=new C(vat(this,t));d.a0&&jnt((zr(n-1,t.length),t.charCodeAt(n-1)),aft);)--n;if(s>=n)throw J(new Ln("The given string does not contain any numbers."));if(o=cy(t.substr(s,n-s),`,|;|\r| +`),o.length!=2)throw J(new Ln("Exactly two numbers are expected, "+o.length+" were found."));try{this.a=ry(ny(o[0])),this.b=ry(ny(o[1]))}catch(h){throw h=ts(h),we(h,127)?(r=h,J(new Ln(oft+r))):J(h)}},l.Ib=function(){return"("+this.a+","+this.b+")"},l.a=0,l.b=0;var na=O(HI,"KVector",8);M(74,68,{3:1,4:1,20:1,28:1,52:1,14:1,68:1,15:1,74:1,414:1},Gu,pF,kUe),l.Pc=function(){return uan(this)},l.Jf=function(t){var n,r,s,o,h,d;s=cy(t,`,|;|\\(|\\)|\\[|\\]|\\{|\\}| | | +`),Rh(this);try{for(r=0,h=0,o=0,d=0;r0&&(h%2==0?o=ry(s[r]):d=ry(s[r]),h>0&&h%2!=0&&ci(this,new Pt(o,d)),++h),++r}catch(v){throw v=ts(v),we(v,127)?(n=v,J(new Ln("The given string does not match the expected format for vectors."+n))):J(v)}},l.Ib=function(){var t,n,r;for(t=new Fl("("),n=ii(this,0);n.b!=n.d.c;)r=u(ri(n),8),Yr(t,r.a+","+r.b),n.b!=n.d.c&&(t.a+="; ");return(t.a+=")",t).a};var sSe=O(HI,"KVectorChain",74);M(248,22,{3:1,35:1,22:1,248:1},VT);var Yhe,LV,MV,jO,$O,DV,aSe=Gr(qh,"Alignment",248,Wr,rrn,$Xt),Uyt;M(979,1,zh,JJ),l.Qe=function(t){rut(t)};var oSe,Xhe,Wyt,cSe,uSe,Kyt,lSe,Yyt,Xyt,hSe,fSe,Qyt;O(qh,"BoxLayouterOptions",979),M(980,1,{},MZ),l.$e=function(){var t;return t=new BZ,t},l._e=function(t){},O(qh,"BoxLayouterOptions/BoxFactory",980),M(291,22,{3:1,35:1,22:1,291:1},UT);var HO,Qhe,zO,GO,qO,Zhe,Jhe=Gr(qh,"ContentAlignment",291,Wr,nrn,HXt),Zyt;M(684,1,zh,wp),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,n1t),""),"Layout Algorithm"),"Select a specific layout algorithm."),(Ng(),kE)),mt),rn((i1(),Fn))))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,r1t),""),"Resolved Layout Algorithm"),"Meta data associated with the selected algorithm."),Y1),S3n),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Zke),""),"Alignment"),"Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm."),dSe),vs),aSe),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,fk),""),"Aspect Ratio"),"The desired aspect ratio of the drawing, that is the quotient of width by height."),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Uxe),""),"Bend Points"),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),Y1),sSe),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,rG),""),"Content Alignment"),"Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option."),pSe),Pk),Jhe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,WI),""),"Debug Mode"),"Whether additional debug information shall be generated."),(Mn(),!1)),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,txe),""),P6e),"Overall direction of edges: horizontal (right / left) or vertical (down / up)."),bSe),vs),RS),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,VI),""),"Edge Routing"),"What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline."),mSe),vs),ffe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,uG),""),"Expand Nodes"),"If active, nodes are expanded to fill the area of their parent."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,nG),""),"Hierarchy Handling"),"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."),ESe),vs),cAe),Ui(Fn,ie(re(Ug,1),tt,175,0,[ua]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,uw),""),"Padding"),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),OSe),Y1),gEe),Ui(Fn,ie(re(Ug,1),tt,175,0,[ua]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,jI),""),"Interactive"),"Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,fce),""),"interactive Layout"),"Whether the graph should be changeable interactively and by setting constraints"),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,CC),""),"Omit Node Micro Layout"),"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Doe),""),"Port Constraints"),"Defines constraints of the position of the ports of a node."),FSe),vs),hAe),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,iG),""),"Position"),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),Y1),na),Ui(ua,ie(re(Ug,1),tt,175,0,[Bb,Vg]))))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,FI),""),"Priority"),"Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used."),Cc),Za),Ui(ua,ie(re(Ug,1),tt,175,0,[Fd]))))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Fz),""),"Randomization Seed"),"Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time)."),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,_C),""),"Separate Connected Components"),"Whether each connected component should be processed separately."),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,lxe),""),"Junction Points"),"This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order."),_Se),Y1),sSe),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,dxe),""),"Comment Box"),"Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,gxe),""),"Hypernode"),"Whether the node should be handled as a hypernode."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,t3n),""),"Label Manager"),"Label managers can shorten labels upon a layout algorithm's request."),Y1),I3n),Ui(Fn,ie(re(Ug,1),tt,175,0,[Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,bxe),""),"Margins"),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),CSe),Y1),dEe),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Xke),""),"No Layout"),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),!1),za),Us),Ui(ua,ie(re(Ug,1),tt,175,0,[Fd,Bb,Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,i1t),""),"Scale Factor"),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),qo),ma),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,s1t),""),"Animate"),"Whether the shift from the old layout to the new computed layout shall be animated."),!0),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,a1t),""),"Animation Time Factor"),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),ct(100)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,o1t),""),"Layout Ancestors"),"Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,c1t),""),"Maximal Animation Time"),"The maximal time for animations, in milliseconds."),ct(4e3)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,u1t),""),"Minimal Animation Time"),"The minimal time for animations, in milliseconds."),ct(400)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,l1t),""),"Progress Bar"),"Whether a progress bar shall be displayed during layout computations."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,h1t),""),"Validate Graph"),"Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,f1t),""),"Validate Options"),"Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!0),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,d1t),""),"Zoom to Fit"),"Whether the zoom level shall be set to view the whole diagram after layout."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Vxe),"box"),"Box Layout Mode"),"Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better."),gSe),vs),vAe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Fke),G1),"Comment Comment Spacing"),"Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,jke),G1),"Comment Node Spacing"),"Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,_oe),G1),"Components Spacing"),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),20),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,$ke),G1),"Edge Spacing"),"Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Moe),G1),"Edge Label Spacing"),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Hke),G1),"Edge Node Spacing"),"Spacing to be preserved between nodes and edges."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,zke),G1),"Label Spacing"),"Determines the amount of space to be left between two labels of the same graph element."),0),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Vke),G1),"Label Node Spacing"),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Gke),G1),"Horizontal spacing between Label and Port"),"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,qke),G1),"Vertical spacing between Label and Port"),"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,py),G1),"Node Spacing"),"The minimal distance to be preserved between each two nodes."),20),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Uke),G1),"Node Self Loop Spacing"),"Spacing to be preserved between a node and its self loops."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Wke),G1),"Port Spacing"),"Spacing between pairs of ports of the same node."),10),qo),ma),Ui(Fn,ie(re(Ug,1),tt,175,0,[ua]))))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Kke),G1),"Individual Spacing"),"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."),Y1),O3t),Ui(ua,ie(re(Ug,1),tt,175,0,[Fd,Bb,Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,vxe),G1),"Additional Port Space"),"Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border."),KSe),Y1),dEe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,hce),b1t),"Layout Partition"),"Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction)."),Cc),Za),Ui(Fn,ie(re(Ug,1),tt,175,0,[ua]))))),va(t,hce,lce,a3t),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,lce),b1t),"Layout Partitioning"),"Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle."),NSe),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,nxe),v1t),"Node Label Padding"),"Define padding for node labels that are placed inside of a node."),ASe),Y1),gEe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,P7),v1t),"Node Label Placement"),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),LSe),Pk),xo),Ui(ua,ie(re(Ug,1),tt,175,0,[Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,sxe),hG),"Port Alignment"),"Defines the default port distribution for a node. May be overridden for each side individually."),BSe),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,axe),hG),"Port Alignment (North)"),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,oxe),hG),"Port Alignment (South)"),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,cxe),hG),"Port Alignment (West)"),"Defines how ports on the western side are placed, overriding the node's general port alignment."),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,uxe),hG),"Port Alignment (East)"),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,E4),Dce),"Node Size Constraints"),"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."),MSe),Pk),qS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,dk),Dce),"Node Size Options"),"Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications."),ISe),Pk),dAe),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,gk),Dce),"Node Size Minimum"),"The minimal size to which a node can be reduced."),DSe),Y1),na),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,uce),Dce),"Fixed Graph Size"),"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,hxe),cce),"Edge Label Placement"),"Gives a hint on where to put edge labels."),vSe),vs),XSe),rn(Vg)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,jz),cce),"Inline Edge Labels"),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),!1),za),Us),rn(Vg)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,n3n),"font"),"Font Name"),"Font name used for a label."),kE),mt),rn(Vg)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,g1t),"font"),"Font Size"),"Font size used for a label."),Cc),Za),rn(Vg)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,pxe),Ice),"Port Anchor Offset"),"The offset to the port position where connections shall be attached."),Y1),na),rn(Bb)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,fxe),Ice),"Port Index"),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),Cc),Za),rn(Bb)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Qke),Ice),"Port Side"),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),HSe),vs),ao),rn(Bb)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Yke),Ice),"Port Border Offset"),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),qo),ma),rn(Bb)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,B7),Wxe),"Port Label Placement"),"Decides on a placement method for port labels; if empty, the node label's position is not modified."),jSe),Pk),jV),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,rxe),Wxe),"Port Labels Next to Port"),"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ixe),Wxe),"Treat Port Labels as Group"),"If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port."),!0),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Jke),w1t),"Activate Inside Self Loops"),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,exe),w1t),"Inside Self Loop"),"Whether a self loop should be routed inside a node instead of around that node."),!1),za),Us),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Coe),"edge"),"Edge Thickness"),"The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it."),1),qo),ma),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,p1t),"edge"),"Edge Type"),"The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations."),kSe),vs),nAe),rn(Fd)))),NT(t,new R6(AT(Xx(Yx(new hm,qn),"Layered"),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.'))),NT(t,new R6(AT(Xx(Yx(new hm,"org.eclipse.elk.orthogonal"),"Orthogonal"),`Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia '86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.`))),NT(t,new R6(AT(Xx(Yx(new hm,Yl),"Force"),"Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984."))),NT(t,new R6(AT(Xx(Yx(new hm,"org.eclipse.elk.circle"),"Circle"),"Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph."))),NT(t,new R6(AT(Xx(Yx(new hm,zft),"Tree"),"Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type."))),NT(t,new R6(AT(Xx(Yx(new hm,"org.eclipse.elk.planar"),"Planar"),"Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable."))),NT(t,new R6(AT(Xx(Yx(new hm,Dd),"Radial"),"Radial layout algorithms usually position the nodes of the graph on concentric circles."))),zct((new PR,t)),rut((new JJ,t)),wct((new BR,t))};var PS,Jyt,dSe,Bk,e3t,t3t,gSe,n3t,IV,pSe,VO,Mw,bSe,efe,tfe,vSe,wSe,mSe,ySe,kSe,xSe,Q4,ESe,r3t,UO,nfe,OV,TSe,Z4,_Se,WO,CSe,SSe,ASe,J4,LSe,Rb,MSe,NV,e5,DSe,p2,ISe,PV,KO,Fb,OSe,i3t,NSe,s3t,a3t,PSe,BSe,rfe,ife,sfe,afe,RSe,kl,BS,FSe,ofe,cfe,Hy,jSe,$Se,t5,HSe,Rk,BV,ufe,xE,o3t,lfe,c3t,u3t,zSe,l3t,GSe,h3t,Fk,qSe,RV,VSe,USe,jb,f3t,WSe,KSe,YSe;O(qh,"CoreOptions",684),M(103,22,{3:1,35:1,22:1,103:1},AM);var Y0,Xh,Df,f0,X0,RS=Gr(qh,P6e,103,Wr,_nn,qXt),d3t;M(272,22,{3:1,35:1,22:1,272:1},Fte);var EE,zy,TE,XSe=Gr(qh,"EdgeLabelPlacement",272,Wr,stn,VXt),g3t;M(218,22,{3:1,35:1,22:1,218:1},GF);var _E,YO,jk,hfe,ffe=Gr(qh,"EdgeRouting",218,Wr,Qtn,UXt),p3t;M(312,22,{3:1,35:1,22:1,312:1},WT);var QSe,ZSe,JSe,eAe,dfe,tAe,nAe=Gr(qh,"EdgeType",312,Wr,hrn,WXt),b3t;M(977,1,zh,PR),l.Qe=function(t){zct(t)};var rAe,iAe,sAe,aAe,v3t,oAe,FS;O(qh,"FixedLayouterOptions",977),M(978,1,{},BL),l.$e=function(){var t;return t=new NZ,t},l._e=function(t){},O(qh,"FixedLayouterOptions/FixedFactory",978),M(334,22,{3:1,35:1,22:1,334:1},jte);var Wg,FV,jS,cAe=Gr(qh,"HierarchyHandling",334,Wr,itn,KXt),w3t;M(285,22,{3:1,35:1,22:1,285:1},qF);var d0,b2,XO,QO,m3t=Gr(qh,"LabelSide",285,Wr,Xtn,YXt),y3t;M(93,22,{3:1,35:1,22:1,93:1},N3);var Q0,If,Qh,Of,Jl,Nf,Zh,g0,Pf,xo=Gr(qh,"NodeLabelPlacement",93,Wr,gin,XXt),k3t;M(249,22,{3:1,35:1,22:1,249:1},LM);var uAe,$S,v2,lAe,ZO,HS=Gr(qh,"PortAlignment",249,Wr,Cnn,QXt),x3t;M(98,22,{3:1,35:1,22:1,98:1},KT);var $b,tu,p0,CE,X1,w2,hAe=Gr(qh,"PortConstraints",98,Wr,Knn,ZXt),E3t;M(273,22,{3:1,35:1,22:1,273:1},YT);var zS,GS,Z0,JO,m2,$k,jV=Gr(qh,"PortLabelPlacement",273,Wr,lrn,JXt),T3t;M(61,22,{3:1,35:1,22:1,61:1},MM);var $n,An,_h,Ch,Bu,wu,Q1,Bf,ll,Ju,nu,hl,Ru,Fu,Rf,eh,th,Jh,xr,uc,Dn,ao=Gr(qh,"PortSide",61,Wr,xnn,nQt),_3t;M(981,1,zh,BR),l.Qe=function(t){wct(t)};var C3t,S3t,fAe,A3t,L3t;O(qh,"RandomLayouterOptions",981),M(982,1,{},$Z),l.$e=function(){var t;return t=new zZ,t},l._e=function(t){},O(qh,"RandomLayouterOptions/RandomFactory",982),M(374,22,{3:1,35:1,22:1,374:1},VF);var Gy,eN,tN,Hb,qS=Gr(qh,"SizeConstraint",374,Wr,Ytn,eQt),M3t;M(259,22,{3:1,35:1,22:1,259:1},P3);var nN,$V,SE,gfe,rN,VS,HV,zV,GV,dAe=Gr(qh,"SizeOptions",259,Wr,kin,tQt),D3t;M(370,1,{1949:1},Ux),l.b=!1,l.c=0,l.d=-1,l.e=null,l.f=null,l.g=-1,l.j=!1,l.k=!1,l.n=!1,l.o=0,l.q=0,l.r=0,O(Oc,"BasicProgressMonitor",370),M(972,209,mb,BZ),l.Ze=function(t,n){var r,s,o,h,d,v,x,_,L;switch(kr(n,"Box layout",2),o=uM(ft(Ft(t,(XH(),Qyt)))),h=u(Ft(t,Xyt),116),r=It(Mt(Ft(t,cSe))),s=It(Mt(Ft(t,uSe))),u(Ft(t,Xhe),311).g){case 0:d=(v=new Uu((!t.a&&(t.a=new at(hs,t,10,11)),t.a)),hn(),aa(v,new Zje(s)),v),x=A4e(t),_=ft(Ft(t,oSe)),(_==null||(Sn(_),_<=0))&&(_=1.3),L=ayn(d,o,h,x.a,x.b,r,(Sn(_),_)),sw(t,L.a,L.b,!1,!0);break;default:nwn(t,o,h,r)}ur(n)},O(Oc,"BoxLayoutProvider",972),M(973,1,ji,Zje),l.ue=function(t,n){return Tgn(this,u(t,33),u(n,33))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},l.a=!1,O(Oc,"BoxLayoutProvider/1",973),M(157,1,{157:1},H$,yUe),l.Ib=function(){return this.c?S5e(this.c):Yp(this.b)},O(Oc,"BoxLayoutProvider/Group",157),M(311,22,{3:1,35:1,22:1,311:1},UF);var gAe,pAe,bAe,pfe,vAe=Gr(Oc,"BoxLayoutProvider/PackingMode",311,Wr,Ztn,rQt),I3t;M(974,1,ji,RZ),l.ue=function(t,n){return SJt(u(t,157),u(n,157))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Oc,"BoxLayoutProvider/lambda$0$Type",974),M(975,1,ji,GB),l.ue=function(t,n){return yJt(u(t,157),u(n,157))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Oc,"BoxLayoutProvider/lambda$1$Type",975),M(976,1,ji,FZ),l.ue=function(t,n){return kJt(u(t,157),u(n,157))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Oc,"BoxLayoutProvider/lambda$2$Type",976),M(1365,1,{831:1},jZ),l.qg=function(t,n){return SF(),!we(n,160)||Mze((W6(),u(t,160)),n)},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type",1365),M(1366,1,Un,Jje),l.td=function(t){han(this.a,u(t,146))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type",1366),M(1367,1,Un,PZ),l.td=function(t){u(t,94),SF()},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type",1367),M(1371,1,Un,e$e),l.td=function(t){Bin(this.a,u(t,94))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type",1371),M(1369,1,vi,bqe),l.Mb=function(t){return Qsn(this.a,this.b,u(t,146))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type",1369),M(1368,1,vi,vqe),l.Mb=function(t){return gKt(this.a,this.b,u(t,831))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type",1368),M(1370,1,Un,wqe),l.td=function(t){gZt(this.a,this.b,u(t,146))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type",1370),M(935,1,{},OZ),l.Kb=function(t){return wVe(t)},l.Fb=function(t){return this===t},O(Oc,"ElkUtil/lambda$0$Type",935),M(936,1,Un,mqe),l.td=function(t){Cdn(this.a,this.b,u(t,79))},l.a=0,l.b=0,O(Oc,"ElkUtil/lambda$1$Type",936),M(937,1,Un,yqe),l.td=function(t){CVt(this.a,this.b,u(t,202))},l.a=0,l.b=0,O(Oc,"ElkUtil/lambda$2$Type",937),M(938,1,Un,kqe),l.td=function(t){vWt(this.a,this.b,u(t,137))},l.a=0,l.b=0,O(Oc,"ElkUtil/lambda$3$Type",938),M(939,1,Un,t$e),l.td=function(t){MQt(this.a,u(t,469))},O(Oc,"ElkUtil/lambda$4$Type",939),M(342,1,{35:1,342:1},nVt),l.wd=function(t){return VWt(this,u(t,236))},l.Fb=function(t){var n;return we(t,342)?(n=u(t,342),this.a==n.a):!1},l.Hb=function(){return _s(this.a)},l.Ib=function(){return this.a+" (exclusive)"},l.a=0,O(Oc,"ExclusiveBounds/ExclusiveLowerBound",342),M(1138,209,mb,NZ),l.Ze=function(t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut;for(kr(n,"Fixed Layout",1),h=u(Ft(t,(bi(),wSe)),218),P=0,z=0,Ee=new rr((!t.a&&(t.a=new at(hs,t,10,11)),t.a));Ee.e!=Ee.i.gc();){for(le=u(pr(Ee),33),Ut=u(Ft(le,(hH(),FS)),8),Ut&&(C1(le,Ut.a,Ut.b),u(Ft(le,iAe),174).Hc((Bl(),Gy))&&(q=u(Ft(le,aAe),8),q.a>0&&q.b>0&&sw(le,q.a,q.b,!0,!0))),P=b.Math.max(P,le.i+le.g),z=b.Math.max(z,le.j+le.f),_=new rr((!le.n&&(le.n=new at(Jo,le,1,7)),le.n));_.e!=_.i.gc();)v=u(pr(_),137),Ut=u(Ft(v,FS),8),Ut&&C1(v,Ut.a,Ut.b),P=b.Math.max(P,le.i+v.i+v.g),z=b.Math.max(z,le.j+v.j+v.f);for(nt=new rr((!le.c&&(le.c=new at(xl,le,9,9)),le.c));nt.e!=nt.i.gc();)for(Ve=u(pr(nt),118),Ut=u(Ft(Ve,FS),8),Ut&&C1(Ve,Ut.a,Ut.b),bt=le.i+Ve.i,zt=le.j+Ve.j,P=b.Math.max(P,bt+Ve.g),z=b.Math.max(z,zt+Ve.f),x=new rr((!Ve.n&&(Ve.n=new at(Jo,Ve,1,7)),Ve.n));x.e!=x.i.gc();)v=u(pr(x),137),Ut=u(Ft(v,FS),8),Ut&&C1(v,Ut.a,Ut.b),P=b.Math.max(P,bt+v.i+v.g),z=b.Math.max(z,zt+v.j+v.f);for(o=new cr(fr(z0(le).a.Kc(),new V));Vr(o);)r=u(Pr(o),79),L=Olt(r),P=b.Math.max(P,L.a),z=b.Math.max(z,L.b);for(s=new cr(fr(hI(le).a.Kc(),new V));Vr(s);)r=u(Pr(s),79),us(n0(r))!=t&&(L=Olt(r),P=b.Math.max(P,L.a),z=b.Math.max(z,L.b))}if(h==($0(),_E))for(Ce=new rr((!t.a&&(t.a=new at(hs,t,10,11)),t.a));Ce.e!=Ce.i.gc();)for(le=u(pr(Ce),33),s=new cr(fr(z0(le).a.Kc(),new V));Vr(s);)r=u(Pr(s),79),d=Ebn(r),d.b==0?So(r,Z4,null):So(r,Z4,d);It(Mt(Ft(t,(hH(),sAe))))||(Ne=u(Ft(t,v3t),116),X=P+Ne.b+Ne.c,W=z+Ne.d+Ne.a,sw(t,X,W,!0,!0)),ur(n)},O(Oc,"FixedLayoutProvider",1138),M(373,134,{3:1,414:1,373:1,94:1,134:1},rl,KJe),l.Jf=function(t){var n,r,s,o,h,d,v,x,_;if(t)try{for(x=cy(t,";,;"),h=x,d=0,v=h.length;d>16&Ss|n^s<<16},l.Kc=function(){return new n$e(this)},l.Ib=function(){return this.a==null&&this.b==null?"pair(null,null)":this.a==null?"pair(null,"+Qo(this.b)+")":this.b==null?"pair("+Qo(this.a)+",null)":"pair("+Qo(this.a)+","+Qo(this.b)+")"},O(Oc,"Pair",46),M(983,1,ga,n$e),l.Nb=function(t){La(this,t)},l.Ob=function(){return!this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)},l.Pb=function(){if(!this.c&&!this.b&&this.a.a!=null)return this.b=!0,this.a.a;if(!this.c&&this.a.b!=null)return this.c=!0,this.a.b;throw J(new xc)},l.Qb=function(){throw this.c&&this.a.b!=null?this.a.b=null:this.b&&this.a.a!=null&&(this.a.a=null),J(new zu)},l.b=!1,l.c=!1,O(Oc,"Pair/1",983),M(448,1,{448:1},IYe),l.Fb=function(t){return Vc(this.a,u(t,448).a)&&Vc(this.c,u(t,448).c)&&Vc(this.d,u(t,448).d)&&Vc(this.b,u(t,448).b)},l.Hb=function(){return fH(ie(re(Yn,1),yt,1,5,[this.a,this.c,this.d,this.b]))},l.Ib=function(){return"("+this.a+io+this.c+io+this.d+io+this.b+")"},O(Oc,"Quadruple",448),M(1126,209,mb,zZ),l.Ze=function(t,n){var r,s,o,h,d;if(kr(n,"Random Layout",1),(!t.a&&(t.a=new at(hs,t,10,11)),t.a).i==0){ur(n);return}h=u(Ft(t,(i3e(),A3t)),19),h&&h.a!=0?o=new m$(h.a):o=new Fie,r=uM(ft(Ft(t,C3t))),d=uM(ft(Ft(t,L3t))),s=u(Ft(t,S3t),116),Rmn(t,o,r,d,s),ur(n)},O(Oc,"RandomLayoutProvider",1126);var B3t;M(553,1,{}),l.qf=function(){return new Pt(this.f.i,this.f.j)},l.We=function(t){return iXe(t,(bi(),kl))?Ft(this.f,R3t):Ft(this.f,t)},l.rf=function(){return new Pt(this.f.g,this.f.f)},l.sf=function(){return this.g},l.Xe=function(t){return J2(this.f,t)},l.tf=function(t){Du(this.f,t.a),Iu(this.f,t.b)},l.uf=function(t){zv(this.f,t.a),Hv(this.f,t.b)},l.vf=function(t){this.g=t},l.g=0;var R3t;O(BC,"ElkGraphAdapters/AbstractElkGraphElementAdapter",553),M(554,1,{839:1},tF),l.wf=function(){var t,n;if(!this.b)for(this.b=p$(Wj(this.a).i),n=new rr(Wj(this.a));n.e!=n.i.gc();)t=u(pr(n),137),it(this.b,new tte(t));return this.b},l.b=null,O(BC,"ElkGraphAdapters/ElkEdgeAdapter",554),M(301,553,{},ym),l.xf=function(){return Nit(this)},l.a=null,O(BC,"ElkGraphAdapters/ElkGraphAdapter",301),M(630,553,{181:1},tte),O(BC,"ElkGraphAdapters/ElkLabelAdapter",630),M(629,553,{680:1},ene),l.wf=function(){return jun(this)},l.Af=function(){var t;return t=u(Ft(this.f,(bi(),WO)),142),!t&&(t=new yT),t},l.Cf=function(){return $un(this)},l.Ef=function(t){var n;n=new pne(t),So(this.f,(bi(),WO),n)},l.Ff=function(t){So(this.f,(bi(),Fb),new Jbe(t))},l.yf=function(){return this.d},l.zf=function(){var t,n;if(!this.a)for(this.a=new st,n=new cr(fr(hI(u(this.f,33)).a.Kc(),new V));Vr(n);)t=u(Pr(n),79),it(this.a,new tF(t));return this.a},l.Bf=function(){var t,n;if(!this.c)for(this.c=new st,n=new cr(fr(z0(u(this.f,33)).a.Kc(),new V));Vr(n);)t=u(Pr(n),79),it(this.c,new tF(t));return this.c},l.Df=function(){return Jj(u(this.f,33)).i!=0||It(Mt(u(this.f,33).We((bi(),UO))))},l.Gf=function(){Mrn(this,(Tm(),B3t))},l.a=null,l.b=null,l.c=null,l.d=null,l.e=null,O(BC,"ElkGraphAdapters/ElkNodeAdapter",629),M(1266,553,{838:1},D$e),l.wf=function(){return Kun(this)},l.zf=function(){var t,n;if(!this.a)for(this.a=Wd(u(this.f,118).xg().i),n=new rr(u(this.f,118).xg());n.e!=n.i.gc();)t=u(pr(n),79),it(this.a,new tF(t));return this.a},l.Bf=function(){var t,n;if(!this.c)for(this.c=Wd(u(this.f,118).yg().i),n=new rr(u(this.f,118).yg());n.e!=n.i.gc();)t=u(pr(n),79),it(this.c,new tF(t));return this.c},l.Hf=function(){return u(u(this.f,118).We((bi(),t5)),61)},l.If=function(){var t,n,r,s,o,h,d,v;for(s=L1(u(this.f,118)),r=new rr(u(this.f,118).yg());r.e!=r.i.gc();)for(t=u(pr(r),79),v=new rr((!t.c&&(t.c=new wn(mr,t,5,8)),t.c));v.e!=v.i.gc();){if(d=u(pr(v),82),Vm(zo(d),s))return!0;if(zo(d)==s&&It(Mt(Ft(t,(bi(),nfe)))))return!0}for(n=new rr(u(this.f,118).xg());n.e!=n.i.gc();)for(t=u(pr(n),79),h=new rr((!t.b&&(t.b=new wn(mr,t,4,7)),t.b));h.e!=h.i.gc();)if(o=u(pr(h),82),Vm(zo(o),s))return!0;return!1},l.a=null,l.b=null,l.c=null,O(BC,"ElkGraphAdapters/ElkPortAdapter",1266),M(1267,1,ji,GZ),l.ue=function(t,n){return b2n(u(t,118),u(n,118))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(BC,"ElkGraphAdapters/PortComparator",1267);var y2=ss(kh,"EObject"),AE=ss(S4,k1t),ef=ss(S4,x1t),iN=ss(S4,E1t),sN=ss(S4,"ElkShape"),mr=ss(S4,T1t),ra=ss(S4,Kxe),os=ss(S4,_1t),aN=ss(kh,C1t),US=ss(kh,"EFactory"),F3t,bfe=ss(kh,S1t),h1=ss(kh,"EPackage"),la,j3t,$3t,kAe,qV,H3t,xAe,EAe,TAe,k2,z3t,G3t,Jo=ss(S4,Yxe),hs=ss(S4,Xxe),xl=ss(S4,Qxe);M(90,1,A1t),l.Jg=function(){return this.Kg(),null},l.Kg=function(){return null},l.Lg=function(){return this.Kg(),!1},l.Mg=function(){return!1},l.Ng=function(t){_i(this,t)},O(wk,"BasicNotifierImpl",90),M(97,90,I1t),l.nh=function(){return Ll(this)},l.Og=function(t,n){return t},l.Pg=function(){throw J(new Fr)},l.Qg=function(t){var n;return n=go(u(gn(this.Tg(),this.Vg()),18)),this.eh().ih(this,n.n,n.f,t)},l.Rg=function(t,n){throw J(new Fr)},l.Sg=function(t,n,r){return Kl(this,t,n,r)},l.Tg=function(){var t;return this.Pg()&&(t=this.Pg().ck(),t)?t:this.zh()},l.Ug=function(){return Hse(this)},l.Vg=function(){throw J(new Fr)},l.Wg=function(){var t,n;return n=this.ph().dk(),!n&&this.Pg().ik(n=(PT(),t=bwe(xd(this.Tg())),t==null?Tfe:new OM(this,t))),n},l.Xg=function(t,n){return t},l.Yg=function(t){var n;return n=t.Gj(),n?t.aj():Ji(this.Tg(),t)},l.Zg=function(){var t;return t=this.Pg(),t?t.fk():null},l.$g=function(){return this.Pg()?this.Pg().ck():null},l._g=function(t,n,r){return NH(this,t,n,r)},l.ah=function(t){return A8(this,t)},l.bh=function(t,n){return Ire(this,t,n)},l.dh=function(){var t;return t=this.Pg(),!!t&&t.gk()},l.eh=function(){throw J(new Fr)},l.fh=function(){return SH(this)},l.gh=function(t,n,r,s){return Q6(this,t,n,s)},l.hh=function(t,n,r){var s;return s=u(gn(this.Tg(),n),66),s.Nj().Qj(this,this.yh(),n-this.Ah(),t,r)},l.ih=function(t,n,r,s){return r$(this,t,n,s)},l.jh=function(t,n,r){var s;return s=u(gn(this.Tg(),n),66),s.Nj().Rj(this,this.yh(),n-this.Ah(),t,r)},l.kh=function(){return!!this.Pg()&&!!this.Pg().ek()},l.lh=function(t){return Zie(this,t)},l.mh=function(t){return kXe(this,t)},l.oh=function(t){return Kut(this,t)},l.ph=function(){throw J(new Fr)},l.qh=function(){return this.Pg()?this.Pg().ek():null},l.rh=function(){return SH(this)},l.sh=function(t,n){Bse(this,t,n)},l.th=function(t){this.ph().hk(t)},l.uh=function(t){this.ph().kk(t)},l.vh=function(t){this.ph().jk(t)},l.wh=function(t,n){var r,s,o,h;return h=this.Zg(),h&&t&&(n=Xa(h.Vk(),this,n),h.Zk(this)),s=this.eh(),s&&(rae(this,this.eh(),this.Vg()).Bb&so?(o=s.fh(),o&&(t?!h&&o.Zk(this):o.Yk(this))):(n=(r=this.Vg(),r>=0?this.Qg(n):this.eh().ih(this,-1-r,null,n)),n=this.Sg(null,-1,n))),this.uh(t),n},l.xh=function(t){var n,r,s,o,h,d,v,x;if(r=this.Tg(),h=Ji(r,t),n=this.Ah(),h>=n)return u(t,66).Nj().Uj(this,this.yh(),h-n);if(h<=-1)if(d=v4((Yu(),Oa),r,t),d){if(ho(),u(d,66).Oj()||(d=F6(Po(Oa,d))),o=(s=this.Yg(d),u(s>=0?this._g(s,!0,!0):tw(this,d,!0),153)),x=d.Zj(),x>1||x==-1)return u(u(o,215).hl(t,!1),76)}else throw J(new Ln(i2+t.ne()+Oce));else if(t.$j())return s=this.Yg(t),u(s>=0?this._g(s,!1,!0):tw(this,t,!1),76);return v=new Hqe(this,t),v},l.yh=function(){return vme(this)},l.zh=function(){return(Rp(),En).S},l.Ah=function(){return Jn(this.zh())},l.Bh=function(t){Dse(this,t)},l.Ib=function(){return _f(this)},O(Tn,"BasicEObjectImpl",97);var q3t;M(114,97,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1}),l.Ch=function(t){var n;return n=wme(this),n[t]},l.Dh=function(t,n){var r;r=wme(this),cs(r,t,n)},l.Eh=function(t){var n;n=wme(this),cs(n,t,null)},l.Jg=function(){return u(_n(this,4),126)},l.Kg=function(){throw J(new Fr)},l.Lg=function(){return(this.Db&4)!=0},l.Pg=function(){throw J(new Fr)},l.Fh=function(t){X6(this,2,t)},l.Rg=function(t,n){this.Db=n<<16|this.Db&255,this.Fh(t)},l.Tg=function(){return Su(this)},l.Vg=function(){return this.Db>>16},l.Wg=function(){var t,n;return PT(),n=bwe(xd((t=u(_n(this,16),26),t||this.zh()))),n==null?Tfe:new OM(this,n)},l.Mg=function(){return(this.Db&1)==0},l.Zg=function(){return u(_n(this,128),1935)},l.$g=function(){return u(_n(this,16),26)},l.dh=function(){return(this.Db&32)!=0},l.eh=function(){return u(_n(this,2),49)},l.kh=function(){return(this.Db&64)!=0},l.ph=function(){throw J(new Fr)},l.qh=function(){return u(_n(this,64),281)},l.th=function(t){X6(this,16,t)},l.uh=function(t){X6(this,128,t)},l.vh=function(t){X6(this,64,t)},l.yh=function(){return du(this)},l.Db=0,O(Tn,"MinimalEObjectImpl",114),M(115,114,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l.Fh=function(t){this.Cb=t},l.eh=function(){return this.Cb},O(Tn,"MinimalEObjectImpl/Container",115),M(1985,115,{105:1,413:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l._g=function(t,n,r){return L3e(this,t,n,r)},l.jh=function(t,n,r){return v4e(this,t,n,r)},l.lh=function(t){return Awe(this,t)},l.sh=function(t,n){gye(this,t,n)},l.zh=function(){return cu(),G3t},l.Bh=function(t){rye(this,t)},l.Ve=function(){return tit(this)},l.We=function(t){return Ft(this,t)},l.Xe=function(t){return J2(this,t)},l.Ye=function(t,n){return So(this,t,n)},O(xb,"EMapPropertyHolderImpl",1985),M(567,115,{105:1,469:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},pp),l._g=function(t,n,r){switch(t){case 0:return this.a;case 1:return this.b}return NH(this,t,n,r)},l.lh=function(t){switch(t){case 0:return this.a!=0;case 1:return this.b!=0}return Zie(this,t)},l.sh=function(t,n){switch(t){case 0:z$(this,Ue(ft(n)));return;case 1:G$(this,Ue(ft(n)));return}Bse(this,t,n)},l.zh=function(){return cu(),j3t},l.Bh=function(t){switch(t){case 0:z$(this,0);return;case 1:G$(this,0);return}Dse(this,t)},l.Ib=function(){var t;return this.Db&64?_f(this):(t=new Ph(_f(this)),t.a+=" (x: ",I3(t,this.a),t.a+=", y: ",I3(t,this.b),t.a+=")",t.a)},l.a=0,l.b=0,O(xb,"ElkBendPointImpl",567),M(723,1985,{105:1,413:1,160:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l._g=function(t,n,r){return Oye(this,t,n,r)},l.hh=function(t,n,r){return _se(this,t,n,r)},l.jh=function(t,n,r){return uie(this,t,n,r)},l.lh=function(t){return Yme(this,t)},l.sh=function(t,n){K3e(this,t,n)},l.zh=function(){return cu(),H3t},l.Bh=function(t){Lye(this,t)},l.zg=function(){return this.k},l.Ag=function(){return Wj(this)},l.Ib=function(){return Bie(this)},l.k=null,O(xb,"ElkGraphElementImpl",723),M(724,723,{105:1,413:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l._g=function(t,n,r){return Gye(this,t,n,r)},l.lh=function(t){return Xye(this,t)},l.sh=function(t,n){Y3e(this,t,n)},l.zh=function(){return cu(),z3t},l.Bh=function(t){t3e(this,t)},l.Bg=function(){return this.f},l.Cg=function(){return this.g},l.Dg=function(){return this.i},l.Eg=function(){return this.j},l.Fg=function(t,n){ej(this,t,n)},l.Gg=function(t,n){C1(this,t,n)},l.Hg=function(t){Du(this,t)},l.Ig=function(t){Iu(this,t)},l.Ib=function(){return Mse(this)},l.f=0,l.g=0,l.i=0,l.j=0,O(xb,"ElkShapeImpl",724),M(725,724,{105:1,413:1,82:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l._g=function(t,n,r){return E3e(this,t,n,r)},l.hh=function(t,n,r){return z3e(this,t,n,r)},l.jh=function(t,n,r){return G3e(this,t,n,r)},l.lh=function(t){return fye(this,t)},l.sh=function(t,n){Z4e(this,t,n)},l.zh=function(){return cu(),$3t},l.Bh=function(t){p3e(this,t)},l.xg=function(){return!this.d&&(this.d=new wn(ra,this,8,5)),this.d},l.yg=function(){return!this.e&&(this.e=new wn(ra,this,7,4)),this.e},O(xb,"ElkConnectableShapeImpl",725),M(352,723,{105:1,413:1,79:1,160:1,352:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},rv),l.Qg=function(t){return F3e(this,t)},l._g=function(t,n,r){switch(t){case 3:return nD(this);case 4:return!this.b&&(this.b=new wn(mr,this,4,7)),this.b;case 5:return!this.c&&(this.c=new wn(mr,this,5,8)),this.c;case 6:return!this.a&&(this.a=new at(os,this,6,6)),this.a;case 7:return Mn(),!this.b&&(this.b=new wn(mr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new wn(mr,this,5,8)),this.c.i<=1));case 8:return Mn(),!!iC(this);case 9:return Mn(),!!ew(this);case 10:return Mn(),!this.b&&(this.b=new wn(mr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new wn(mr,this,5,8)),this.c.i!=0)}return Oye(this,t,n,r)},l.hh=function(t,n,r){var s;switch(n){case 3:return this.Cb&&(r=(s=this.Db>>16,s>=0?F3e(this,r):this.Cb.ih(this,-1-s,null,r))),Dbe(this,u(t,33),r);case 4:return!this.b&&(this.b=new wn(mr,this,4,7)),ou(this.b,t,r);case 5:return!this.c&&(this.c=new wn(mr,this,5,8)),ou(this.c,t,r);case 6:return!this.a&&(this.a=new at(os,this,6,6)),ou(this.a,t,r)}return _se(this,t,n,r)},l.jh=function(t,n,r){switch(n){case 3:return Dbe(this,null,r);case 4:return!this.b&&(this.b=new wn(mr,this,4,7)),Xa(this.b,t,r);case 5:return!this.c&&(this.c=new wn(mr,this,5,8)),Xa(this.c,t,r);case 6:return!this.a&&(this.a=new at(os,this,6,6)),Xa(this.a,t,r)}return uie(this,t,n,r)},l.lh=function(t){switch(t){case 3:return!!nD(this);case 4:return!!this.b&&this.b.i!=0;case 5:return!!this.c&&this.c.i!=0;case 6:return!!this.a&&this.a.i!=0;case 7:return!this.b&&(this.b=new wn(mr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new wn(mr,this,5,8)),this.c.i<=1));case 8:return iC(this);case 9:return ew(this);case 10:return!this.b&&(this.b=new wn(mr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new wn(mr,this,5,8)),this.c.i!=0)}return Yme(this,t)},l.sh=function(t,n){switch(t){case 3:Wse(this,u(n,33));return;case 4:!this.b&&(this.b=new wn(mr,this,4,7)),_r(this.b),!this.b&&(this.b=new wn(mr,this,4,7)),fs(this.b,u(n,14));return;case 5:!this.c&&(this.c=new wn(mr,this,5,8)),_r(this.c),!this.c&&(this.c=new wn(mr,this,5,8)),fs(this.c,u(n,14));return;case 6:!this.a&&(this.a=new at(os,this,6,6)),_r(this.a),!this.a&&(this.a=new at(os,this,6,6)),fs(this.a,u(n,14));return}K3e(this,t,n)},l.zh=function(){return cu(),kAe},l.Bh=function(t){switch(t){case 3:Wse(this,null);return;case 4:!this.b&&(this.b=new wn(mr,this,4,7)),_r(this.b);return;case 5:!this.c&&(this.c=new wn(mr,this,5,8)),_r(this.c);return;case 6:!this.a&&(this.a=new at(os,this,6,6)),_r(this.a);return}Lye(this,t)},l.Ib=function(){return Out(this)},O(xb,"ElkEdgeImpl",352),M(439,1985,{105:1,413:1,202:1,439:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},ld),l.Qg=function(t){return N3e(this,t)},l._g=function(t,n,r){switch(t){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return!this.a&&(this.a=new Bs(ef,this,5)),this.a;case 6:return wXe(this);case 7:return n?rse(this):this.i;case 8:return n?nse(this):this.f;case 9:return!this.g&&(this.g=new wn(os,this,9,10)),this.g;case 10:return!this.e&&(this.e=new wn(os,this,10,9)),this.e;case 11:return this.d}return L3e(this,t,n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?N3e(this,r):this.Cb.ih(this,-1-o,null,r))),Ibe(this,u(t,79),r);case 9:return!this.g&&(this.g=new wn(os,this,9,10)),ou(this.g,t,r);case 10:return!this.e&&(this.e=new wn(os,this,10,9)),ou(this.e,t,r)}return h=u(gn((s=u(_n(this,16),26),s||(cu(),qV)),n),66),h.Nj().Qj(this,du(this),n-Jn((cu(),qV)),t,r)},l.jh=function(t,n,r){switch(n){case 5:return!this.a&&(this.a=new Bs(ef,this,5)),Xa(this.a,t,r);case 6:return Ibe(this,null,r);case 9:return!this.g&&(this.g=new wn(os,this,9,10)),Xa(this.g,t,r);case 10:return!this.e&&(this.e=new wn(os,this,10,9)),Xa(this.e,t,r)}return v4e(this,t,n,r)},l.lh=function(t){switch(t){case 1:return this.j!=0;case 2:return this.k!=0;case 3:return this.b!=0;case 4:return this.c!=0;case 5:return!!this.a&&this.a.i!=0;case 6:return!!wXe(this);case 7:return!!this.i;case 8:return!!this.f;case 9:return!!this.g&&this.g.i!=0;case 10:return!!this.e&&this.e.i!=0;case 11:return this.d!=null}return Awe(this,t)},l.sh=function(t,n){switch(t){case 1:N8(this,Ue(ft(n)));return;case 2:B8(this,Ue(ft(n)));return;case 3:O8(this,Ue(ft(n)));return;case 4:P8(this,Ue(ft(n)));return;case 5:!this.a&&(this.a=new Bs(ef,this,5)),_r(this.a),!this.a&&(this.a=new Bs(ef,this,5)),fs(this.a,u(n,14));return;case 6:Not(this,u(n,79));return;case 7:K$(this,u(n,82));return;case 8:W$(this,u(n,82));return;case 9:!this.g&&(this.g=new wn(os,this,9,10)),_r(this.g),!this.g&&(this.g=new wn(os,this,9,10)),fs(this.g,u(n,14));return;case 10:!this.e&&(this.e=new wn(os,this,10,9)),_r(this.e),!this.e&&(this.e=new wn(os,this,10,9)),fs(this.e,u(n,14));return;case 11:$me(this,Hr(n));return}gye(this,t,n)},l.zh=function(){return cu(),qV},l.Bh=function(t){switch(t){case 1:N8(this,0);return;case 2:B8(this,0);return;case 3:O8(this,0);return;case 4:P8(this,0);return;case 5:!this.a&&(this.a=new Bs(ef,this,5)),_r(this.a);return;case 6:Not(this,null);return;case 7:K$(this,null);return;case 8:W$(this,null);return;case 9:!this.g&&(this.g=new wn(os,this,9,10)),_r(this.g);return;case 10:!this.e&&(this.e=new wn(os,this,10,9)),_r(this.e);return;case 11:$me(this,null);return}rye(this,t)},l.Ib=function(){return Zat(this)},l.b=0,l.c=0,l.d=null,l.j=0,l.k=0,O(xb,"ElkEdgeSectionImpl",439),M(150,115,{105:1,92:1,90:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),l._g=function(t,n,r){var s;return t==0?(!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab):ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.hh=function(t,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r)):(o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Qj(this,du(this),n-Jn(this.zh()),t,r))},l.jh=function(t,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r)):(o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Rj(this,du(this),n-Jn(this.zh()),t,r))},l.lh=function(t){var n;return t==0?!!this.Ab&&this.Ab.i!=0:dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.oh=function(t){return a6e(this,t)},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.uh=function(t){X6(this,128,t)},l.zh=function(){return on(),c4t},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.Gh=function(){this.Bb|=1},l.Hh=function(t){return uC(this,t)},l.Bb=0,O(Tn,"EModelElementImpl",150),M(704,150,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},RR),l.Ih=function(t,n){return ult(this,t,n)},l.Jh=function(t){var n,r,s,o,h;if(this.a!=Gl(t)||t.Bb&256)throw J(new Ln(Pce+t.zb+dw));for(s=jo(t);jc(s.a).i!=0;){if(r=u(xI(s,0,(n=u(Te(jc(s.a),0),87),h=n.c,we(h,88)?u(h,26):(on(),sf))),26),Jv(r))return o=Gl(r).Nh().Jh(r),u(o,49).th(t),o;s=jo(r)}return(t.D!=null?t.D:t.B)=="java.util.Map$Entry"?new nKe(t):new wve(t)},l.Kh=function(t,n){return aw(this,t,n)},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.a}return ph(this,t-Jn((on(),_2)),gn((s=u(_n(this,16),26),s||_2),t),n,r)},l.hh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 1:return this.a&&(r=u(this.a,49).ih(this,4,h1,r)),Sye(this,u(t,235),r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),_2)),n),66),o.Nj().Qj(this,du(this),n-Jn((on(),_2)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 1:return Sye(this,null,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),_2)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),_2)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return!!this.a}return dh(this,t-Jn((on(),_2)),gn((n=u(_n(this,16),26),n||_2),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:Nst(this,u(n,235));return}yh(this,t-Jn((on(),_2)),gn((r=u(_n(this,16),26),r||_2),t),n)},l.zh=function(){return on(),_2},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:Nst(this,null);return}wh(this,t-Jn((on(),_2)),gn((n=u(_n(this,16),26),n||_2),t))};var WS,_Ae,V3t;O(Tn,"EFactoryImpl",704),M(Sf,704,{105:1,2014:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},Y5),l.Ih=function(t,n){switch(t.yj()){case 12:return u(n,146).tg();case 13:return Qo(n);default:throw J(new Ln($7+t.ne()+dw))}},l.Jh=function(t){var n,r,s,o,h,d,v,x;switch(t.G==-1&&(t.G=(n=Gl(t),n?Dg(n.Mh(),t):-1)),t.G){case 4:return h=new j9,h;case 6:return d=new kpe,d;case 7:return v=new xpe,v;case 8:return s=new rv,s;case 9:return r=new pp,r;case 10:return o=new ld,o;case 11:return x=new qB,x;default:throw J(new Ln(Pce+t.zb+dw))}},l.Kh=function(t,n){switch(t.yj()){case 13:case 12:return null;default:throw J(new Ln($7+t.ne()+dw))}},O(xb,"ElkGraphFactoryImpl",Sf),M(438,150,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),l.Wg=function(){var t,n;return n=(t=u(_n(this,16),26),bwe(xd(t||this.zh()))),n==null?(PT(),PT(),Tfe):new EUe(this,n)},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.ne()}return ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null}return dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:this.Lh(Hr(n));return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.zh=function(){return on(),u4t},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:this.Lh(null);return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.ne=function(){return this.zb},l.Lh=function(t){au(this,t)},l.Ib=function(){return $_(this)},l.zb=null,O(Tn,"ENamedElementImpl",438),M(179,438,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},rXe),l.Qg=function(t){return Kit(this,t)},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return!this.rb&&(this.rb=new Pm(this,f1,this)),this.rb;case 6:return!this.vb&&(this.vb=new S6(h1,this,6,7)),this.vb;case 7:return n?this.Db>>16==7?u(this.Cb,235):null:mXe(this)}return ph(this,t-Jn((on(),Qg)),gn((s=u(_n(this,16),26),s||Qg),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 4:return this.sb&&(r=u(this.sb,49).ih(this,1,US,r)),Dye(this,u(t,471),r);case 5:return!this.rb&&(this.rb=new Pm(this,f1,this)),ou(this.rb,t,r);case 6:return!this.vb&&(this.vb=new S6(h1,this,6,7)),ou(this.vb,t,r);case 7:return this.Cb&&(r=(o=this.Db>>16,o>=0?Kit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,7,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Qg)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Qg)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 4:return Dye(this,null,r);case 5:return!this.rb&&(this.rb=new Pm(this,f1,this)),Xa(this.rb,t,r);case 6:return!this.vb&&(this.vb=new S6(h1,this,6,7)),Xa(this.vb,t,r);case 7:return Kl(this,null,7,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Qg)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Qg)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.yb!=null;case 3:return this.xb!=null;case 4:return!!this.sb;case 5:return!!this.rb&&this.rb.i!=0;case 6:return!!this.vb&&this.vb.i!=0;case 7:return!!mXe(this)}return dh(this,t-Jn((on(),Qg)),gn((n=u(_n(this,16),26),n||Qg),t))},l.oh=function(t){var n;return n=Fgn(this,t),n||a6e(this,t)},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:au(this,Hr(n));return;case 2:tH(this,Hr(n));return;case 3:eH(this,Hr(n));return;case 4:Lse(this,u(n,471));return;case 5:!this.rb&&(this.rb=new Pm(this,f1,this)),_r(this.rb),!this.rb&&(this.rb=new Pm(this,f1,this)),fs(this.rb,u(n,14));return;case 6:!this.vb&&(this.vb=new S6(h1,this,6,7)),_r(this.vb),!this.vb&&(this.vb=new S6(h1,this,6,7)),fs(this.vb,u(n,14));return}yh(this,t-Jn((on(),Qg)),gn((r=u(_n(this,16),26),r||Qg),t),n)},l.vh=function(t){var n,r;if(t&&this.rb)for(r=new rr(this.rb);r.e!=r.i.gc();)n=pr(r),we(n,351)&&(u(n,351).w=null);X6(this,64,t)},l.zh=function(){return on(),Qg},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:au(this,null);return;case 2:tH(this,null);return;case 3:eH(this,null);return;case 4:Lse(this,null);return;case 5:!this.rb&&(this.rb=new Pm(this,f1,this)),_r(this.rb);return;case 6:!this.vb&&(this.vb=new S6(h1,this,6,7)),_r(this.vb);return}wh(this,t-Jn((on(),Qg)),gn((n=u(_n(this,16),26),n||Qg),t))},l.Gh=function(){bse(this)},l.Mh=function(){return!this.rb&&(this.rb=new Pm(this,f1,this)),this.rb},l.Nh=function(){return this.sb},l.Oh=function(){return this.ub},l.Ph=function(){return this.xb},l.Qh=function(){return this.yb},l.Rh=function(t){this.ub=t},l.Ib=function(){var t;return this.Db&64?$_(this):(t=new Ph($_(this)),t.a+=" (nsURI: ",To(t,this.yb),t.a+=", nsPrefix: ",To(t,this.xb),t.a+=")",t.a)},l.xb=null,l.yb=null,O(Tn,"EPackageImpl",179),M(555,179,{105:1,2016:1,555:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},oot),l.q=!1,l.r=!1;var U3t=!1;O(xb,"ElkGraphPackageImpl",555),M(354,724,{105:1,413:1,160:1,137:1,470:1,354:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},j9),l.Qg=function(t){return P3e(this,t)},l._g=function(t,n,r){switch(t){case 7:return yXe(this);case 8:return this.a}return Gye(this,t,n,r)},l.hh=function(t,n,r){var s;switch(n){case 7:return this.Cb&&(r=(s=this.Db>>16,s>=0?P3e(this,r):this.Cb.ih(this,-1-s,null,r))),Ove(this,u(t,160),r)}return _se(this,t,n,r)},l.jh=function(t,n,r){return n==7?Ove(this,null,r):uie(this,t,n,r)},l.lh=function(t){switch(t){case 7:return!!yXe(this);case 8:return!an("",this.a)}return Xye(this,t)},l.sh=function(t,n){switch(t){case 7:f5e(this,u(n,160));return;case 8:Ome(this,Hr(n));return}Y3e(this,t,n)},l.zh=function(){return cu(),xAe},l.Bh=function(t){switch(t){case 7:f5e(this,null);return;case 8:Ome(this,"");return}t3e(this,t)},l.Ib=function(){return Kst(this)},l.a="",O(xb,"ElkLabelImpl",354),M(239,725,{105:1,413:1,82:1,160:1,33:1,470:1,239:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},kpe),l.Qg=function(t){return j3e(this,t)},l._g=function(t,n,r){switch(t){case 9:return!this.c&&(this.c=new at(xl,this,9,9)),this.c;case 10:return!this.a&&(this.a=new at(hs,this,10,11)),this.a;case 11:return us(this);case 12:return!this.b&&(this.b=new at(ra,this,12,3)),this.b;case 13:return Mn(),!this.a&&(this.a=new at(hs,this,10,11)),this.a.i>0}return E3e(this,t,n,r)},l.hh=function(t,n,r){var s;switch(n){case 9:return!this.c&&(this.c=new at(xl,this,9,9)),ou(this.c,t,r);case 10:return!this.a&&(this.a=new at(hs,this,10,11)),ou(this.a,t,r);case 11:return this.Cb&&(r=(s=this.Db>>16,s>=0?j3e(this,r):this.Cb.ih(this,-1-s,null,r))),Hbe(this,u(t,33),r);case 12:return!this.b&&(this.b=new at(ra,this,12,3)),ou(this.b,t,r)}return z3e(this,t,n,r)},l.jh=function(t,n,r){switch(n){case 9:return!this.c&&(this.c=new at(xl,this,9,9)),Xa(this.c,t,r);case 10:return!this.a&&(this.a=new at(hs,this,10,11)),Xa(this.a,t,r);case 11:return Hbe(this,null,r);case 12:return!this.b&&(this.b=new at(ra,this,12,3)),Xa(this.b,t,r)}return G3e(this,t,n,r)},l.lh=function(t){switch(t){case 9:return!!this.c&&this.c.i!=0;case 10:return!!this.a&&this.a.i!=0;case 11:return!!us(this);case 12:return!!this.b&&this.b.i!=0;case 13:return!this.a&&(this.a=new at(hs,this,10,11)),this.a.i>0}return fye(this,t)},l.sh=function(t,n){switch(t){case 9:!this.c&&(this.c=new at(xl,this,9,9)),_r(this.c),!this.c&&(this.c=new at(xl,this,9,9)),fs(this.c,u(n,14));return;case 10:!this.a&&(this.a=new at(hs,this,10,11)),_r(this.a),!this.a&&(this.a=new at(hs,this,10,11)),fs(this.a,u(n,14));return;case 11:u5e(this,u(n,33));return;case 12:!this.b&&(this.b=new at(ra,this,12,3)),_r(this.b),!this.b&&(this.b=new at(ra,this,12,3)),fs(this.b,u(n,14));return}Z4e(this,t,n)},l.zh=function(){return cu(),EAe},l.Bh=function(t){switch(t){case 9:!this.c&&(this.c=new at(xl,this,9,9)),_r(this.c);return;case 10:!this.a&&(this.a=new at(hs,this,10,11)),_r(this.a);return;case 11:u5e(this,null);return;case 12:!this.b&&(this.b=new at(ra,this,12,3)),_r(this.b);return}p3e(this,t)},l.Ib=function(){return S5e(this)},O(xb,"ElkNodeImpl",239),M(186,725,{105:1,413:1,82:1,160:1,118:1,470:1,186:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},xpe),l.Qg=function(t){return B3e(this,t)},l._g=function(t,n,r){return t==9?L1(this):E3e(this,t,n,r)},l.hh=function(t,n,r){var s;switch(n){case 9:return this.Cb&&(r=(s=this.Db>>16,s>=0?B3e(this,r):this.Cb.ih(this,-1-s,null,r))),Obe(this,u(t,33),r)}return z3e(this,t,n,r)},l.jh=function(t,n,r){return n==9?Obe(this,null,r):G3e(this,t,n,r)},l.lh=function(t){return t==9?!!L1(this):fye(this,t)},l.sh=function(t,n){switch(t){case 9:c5e(this,u(n,33));return}Z4e(this,t,n)},l.zh=function(){return cu(),TAe},l.Bh=function(t){switch(t){case 9:c5e(this,null);return}p3e(this,t)},l.Ib=function(){return Nct(this)},O(xb,"ElkPortImpl",186);var W3t=ss(Qa,"BasicEMap/Entry");M(1092,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,114:1,115:1},qB),l.Fb=function(t){return this===t},l.cd=function(){return this.b},l.Hb=function(){return xv(this)},l.Uh=function(t){Nme(this,u(t,146))},l._g=function(t,n,r){switch(t){case 0:return this.b;case 1:return this.c}return NH(this,t,n,r)},l.lh=function(t){switch(t){case 0:return!!this.b;case 1:return this.c!=null}return Zie(this,t)},l.sh=function(t,n){switch(t){case 0:Nme(this,u(n,146));return;case 1:Rme(this,n);return}Bse(this,t,n)},l.zh=function(){return cu(),k2},l.Bh=function(t){switch(t){case 0:Nme(this,null);return;case 1:Rme(this,null);return}Dse(this,t)},l.Sh=function(){var t;return this.a==-1&&(t=this.b,this.a=t?Xi(t):0),this.a},l.dd=function(){return this.c},l.Th=function(t){this.a=t},l.ed=function(t){var n;return n=this.c,Rme(this,t),n},l.Ib=function(){var t;return this.Db&64?_f(this):(t=new Tp,Yr(Yr(Yr(t,this.b?this.b.tg():Pu),Ioe),r_(this.c)),t.a)},l.a=-1,l.c=null;var Dw=O(xb,"ElkPropertyToValueMapEntryImpl",1092);M(984,1,{},VB),O(Ia,"JsonAdapter",984),M(210,60,q0,dd),O(Ia,"JsonImportException",210),M(857,1,{},Yit),O(Ia,"JsonImporter",857),M(891,1,{},xqe),O(Ia,"JsonImporter/lambda$0$Type",891),M(892,1,{},Eqe),O(Ia,"JsonImporter/lambda$1$Type",892),M(900,1,{},r$e),O(Ia,"JsonImporter/lambda$10$Type",900),M(902,1,{},Tqe),O(Ia,"JsonImporter/lambda$11$Type",902),M(903,1,{},_qe),O(Ia,"JsonImporter/lambda$12$Type",903),M(909,1,{},RYe),O(Ia,"JsonImporter/lambda$13$Type",909),M(908,1,{},BYe),O(Ia,"JsonImporter/lambda$14$Type",908),M(904,1,{},Cqe),O(Ia,"JsonImporter/lambda$15$Type",904),M(905,1,{},Sqe),O(Ia,"JsonImporter/lambda$16$Type",905),M(906,1,{},Aqe),O(Ia,"JsonImporter/lambda$17$Type",906),M(907,1,{},Lqe),O(Ia,"JsonImporter/lambda$18$Type",907),M(912,1,{},i$e),O(Ia,"JsonImporter/lambda$19$Type",912),M(893,1,{},s$e),O(Ia,"JsonImporter/lambda$2$Type",893),M(910,1,{},a$e),O(Ia,"JsonImporter/lambda$20$Type",910),M(911,1,{},o$e),O(Ia,"JsonImporter/lambda$21$Type",911),M(915,1,{},c$e),O(Ia,"JsonImporter/lambda$22$Type",915),M(913,1,{},u$e),O(Ia,"JsonImporter/lambda$23$Type",913),M(914,1,{},l$e),O(Ia,"JsonImporter/lambda$24$Type",914),M(917,1,{},h$e),O(Ia,"JsonImporter/lambda$25$Type",917),M(916,1,{},f$e),O(Ia,"JsonImporter/lambda$26$Type",916),M(918,1,Un,Mqe),l.td=function(t){drn(this.b,this.a,Hr(t))},O(Ia,"JsonImporter/lambda$27$Type",918),M(919,1,Un,Dqe),l.td=function(t){grn(this.b,this.a,Hr(t))},O(Ia,"JsonImporter/lambda$28$Type",919),M(920,1,{},Iqe),O(Ia,"JsonImporter/lambda$29$Type",920),M(896,1,{},d$e),O(Ia,"JsonImporter/lambda$3$Type",896),M(921,1,{},Oqe),O(Ia,"JsonImporter/lambda$30$Type",921),M(922,1,{},g$e),O(Ia,"JsonImporter/lambda$31$Type",922),M(923,1,{},p$e),O(Ia,"JsonImporter/lambda$32$Type",923),M(924,1,{},b$e),O(Ia,"JsonImporter/lambda$33$Type",924),M(925,1,{},v$e),O(Ia,"JsonImporter/lambda$34$Type",925),M(859,1,{},w$e),O(Ia,"JsonImporter/lambda$35$Type",859),M(929,1,{},AWe),O(Ia,"JsonImporter/lambda$36$Type",929),M(926,1,Un,m$e),l.td=function(t){vnn(this.a,u(t,469))},O(Ia,"JsonImporter/lambda$37$Type",926),M(927,1,Un,jqe),l.td=function(t){VUt(this.a,this.b,u(t,202))},O(Ia,"JsonImporter/lambda$38$Type",927),M(928,1,Un,$qe),l.td=function(t){UUt(this.a,this.b,u(t,202))},O(Ia,"JsonImporter/lambda$39$Type",928),M(894,1,{},y$e),O(Ia,"JsonImporter/lambda$4$Type",894),M(930,1,Un,k$e),l.td=function(t){wnn(this.a,u(t,8))},O(Ia,"JsonImporter/lambda$40$Type",930),M(895,1,{},x$e),O(Ia,"JsonImporter/lambda$5$Type",895),M(899,1,{},E$e),O(Ia,"JsonImporter/lambda$6$Type",899),M(897,1,{},T$e),O(Ia,"JsonImporter/lambda$7$Type",897),M(898,1,{},_$e),O(Ia,"JsonImporter/lambda$8$Type",898),M(901,1,{},C$e),O(Ia,"JsonImporter/lambda$9$Type",901),M(948,1,Un,S$e),l.td=function(t){O6(this.a,new Bm(Hr(t)))},O(Ia,"JsonMetaDataConverter/lambda$0$Type",948),M(949,1,Un,A$e),l.td=function(t){NZt(this.a,u(t,237))},O(Ia,"JsonMetaDataConverter/lambda$1$Type",949),M(950,1,Un,L$e),l.td=function(t){Den(this.a,u(t,149))},O(Ia,"JsonMetaDataConverter/lambda$2$Type",950),M(951,1,Un,M$e),l.td=function(t){PZt(this.a,u(t,175))},O(Ia,"JsonMetaDataConverter/lambda$3$Type",951),M(237,22,{3:1,35:1,22:1,237:1},E6);var VV,UV,vfe,WV,KV,YV,wfe,mfe,XV=Gr(BI,"GraphFeature",237,Wr,rin,sQt),K3t;M(13,1,{35:1,146:1},Zi,zs,dn,fo),l.wd=function(t){return qWt(this,u(t,146))},l.Fb=function(t){return iXe(this,t)},l.wg=function(){return xt(this)},l.tg=function(){return this.b},l.Hb=function(){return Ig(this.b)},l.Ib=function(){return this.b},O(BI,"Property",13),M(818,1,ji,epe),l.ue=function(t,n){return con(this,u(t,94),u(n,94))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(BI,"PropertyHolderComparator",818),M(695,1,ga,tpe),l.Nb=function(t){La(this,t)},l.Pb=function(){return wrn(this)},l.Qb=function(){Eze()},l.Ob=function(){return!!this.a},O(pG,"ElkGraphUtil/AncestorIterator",695);var CAe=ss(Qa,"EList");M(67,52,{20:1,28:1,52:1,14:1,15:1,67:1,58:1}),l.Vc=function(t,n){G_(this,t,n)},l.Fc=function(t){return Br(this,t)},l.Wc=function(t,n){return iye(this,t,n)},l.Gc=function(t){return fs(this,t)},l.Zh=function(){return new C6(this)},l.$h=function(){return new NM(this)},l._h=function(t){return _D(this,t)},l.ai=function(){return!0},l.bi=function(t,n){},l.ci=function(){},l.di=function(t,n){Nre(this,t,n)},l.ei=function(t,n,r){},l.fi=function(t,n){},l.gi=function(t,n,r){},l.Fb=function(t){return yct(this,t)},l.Hb=function(){return Jme(this)},l.hi=function(){return!1},l.Kc=function(){return new rr(this)},l.Yc=function(){return new _6(this)},l.Zc=function(t){var n;if(n=this.gc(),t<0||t>n)throw J(new Im(t,n));return new jne(this,t)},l.ji=function(t,n){this.ii(t,this.Xc(n))},l.Mc=function(t){return N$(this,t)},l.li=function(t,n){return n},l._c=function(t,n){return r4(this,t,n)},l.Ib=function(){return Vye(this)},l.ni=function(){return!0},l.oi=function(t,n){return K8(this,n)},O(Qa,"AbstractEList",67),M(63,67,Od,X5,jv,Vme),l.Vh=function(t,n){return Cse(this,t,n)},l.Wh=function(t){return xit(this,t)},l.Xh=function(t,n){$D(this,t,n)},l.Yh=function(t){cD(this,t)},l.pi=function(t){return fme(this,t)},l.$b=function(){A_(this)},l.Hc=function(t){return u7(this,t)},l.Xb=function(t){return Te(this,t)},l.qi=function(t){var n,r,s;++this.j,r=this.g==null?0:this.g.length,t>r&&(s=this.g,n=r+(r/2|0)+4,n=0?(this.$c(n),!0):!1},l.mi=function(t,n){return this.Ui(t,this.oi(t,n))},l.gc=function(){return this.Vi()},l.Pc=function(){return this.Wi()},l.Qc=function(t){return this.Xi(t)},l.Ib=function(){return this.Yi()},O(Qa,"DelegatingEList",1995),M(1996,1995,bdt),l.Vh=function(t,n){return B5e(this,t,n)},l.Wh=function(t){return this.Vh(this.Vi(),t)},l.Xh=function(t,n){sot(this,t,n)},l.Yh=function(t){Xat(this,t)},l.ai=function(){return!this.bj()},l.$b=function(){pC(this)},l.Zi=function(t,n,r,s,o){return new aXe(this,t,n,r,s,o)},l.$i=function(t){_i(this.Ai(),t)},l._i=function(){return null},l.aj=function(){return-1},l.Ai=function(){return null},l.bj=function(){return!1},l.cj=function(t,n){return n},l.dj=function(t,n){return n},l.ej=function(){return!1},l.fj=function(){return!this.Ri()},l.ii=function(t,n){var r,s;return this.ej()?(s=this.fj(),r=g4e(this,t,n),this.$i(this.Zi(7,ct(n),r,t,s)),r):g4e(this,t,n)},l.$c=function(t){var n,r,s,o;return this.ej()?(r=null,s=this.fj(),n=this.Zi(4,o=Sj(this,t),null,t,s),this.bj()&&o?(r=this.dj(o,r),r?(r.Ei(n),r.Fi()):this.$i(n)):r?(r.Ei(n),r.Fi()):this.$i(n),o):(o=Sj(this,t),this.bj()&&o&&(r=this.dj(o,null),r&&r.Fi()),o)},l.mi=function(t,n){return dut(this,t,n)},O(wk,"DelegatingNotifyingListImpl",1996),M(143,1,XI),l.Ei=function(t){return t4e(this,t)},l.Fi=function(){Gre(this)},l.xi=function(){return this.d},l._i=function(){return null},l.gj=function(){return null},l.yi=function(t){return-1},l.zi=function(){return Jot(this)},l.Ai=function(){return null},l.Bi=function(){return v5e(this)},l.Ci=function(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o},l.hj=function(){return!1},l.Di=function(t){var n,r,s,o,h,d,v,x,_,L,P;switch(this.d){case 1:case 2:switch(o=t.xi(),o){case 1:case 2:if(h=t.Ai(),je(h)===je(this.Ai())&&this.yi(null)==t.yi(null))return this.g=t.zi(),t.xi()==1&&(this.d=1),!0}case 4:{switch(o=t.xi(),o){case 4:{if(h=t.Ai(),je(h)===je(this.Ai())&&this.yi(null)==t.yi(null))return _=J5e(this),x=this.o<0?this.o<-2?-2-this.o-1:-1:this.o,d=t.Ci(),this.d=6,P=new jv(2),x<=d?(Br(P,this.n),Br(P,t.Bi()),this.g=ie(re(Lr,1),Jr,25,15,[this.o=x,d+1])):(Br(P,t.Bi()),Br(P,this.n),this.g=ie(re(Lr,1),Jr,25,15,[this.o=d,x])),this.n=P,_||(this.o=-2-this.o-1),!0;break}}break}case 6:{switch(o=t.xi(),o){case 4:{if(h=t.Ai(),je(h)===je(this.Ai())&&this.yi(null)==t.yi(null)){for(_=J5e(this),d=t.Ci(),L=u(this.g,48),s=Me(Lr,Jr,25,L.length+1,15,1),n=0;n>>0,n.toString(16))),s.a+=" (eventType: ",this.d){case 1:{s.a+="SET";break}case 2:{s.a+="UNSET";break}case 3:{s.a+="ADD";break}case 5:{s.a+="ADD_MANY";break}case 4:{s.a+="REMOVE";break}case 6:{s.a+="REMOVE_MANY";break}case 7:{s.a+="MOVE";break}case 8:{s.a+="REMOVING_ADAPTER";break}case 9:{s.a+="RESOLVE";break}default:{cte(s,this.d);break}}if(Hct(this)&&(s.a+=", touch: true"),s.a+=", position: ",cte(s,this.o<0?this.o<-2?-2-this.o-1:-1:this.o),s.a+=", notifier: ",QT(s,this.Ai()),s.a+=", feature: ",QT(s,this._i()),s.a+=", oldValue: ",QT(s,v5e(this)),s.a+=", newValue: ",this.d==6&&we(this.g,48)){for(r=u(this.g,48),s.a+="[",t=0;t10?((!this.b||this.c.j!=this.a)&&(this.b=new l_(this),this.a=this.j),_0(this.b,t)):u7(this,t)},l.ni=function(){return!0},l.a=0,O(Qa,"AbstractEList/1",953),M(295,73,noe,Im),O(Qa,"AbstractEList/BasicIndexOutOfBoundsException",295),M(40,1,ga,rr),l.Nb=function(t){La(this,t)},l.mj=function(){if(this.i.j!=this.f)throw J(new uh)},l.nj=function(){return pr(this)},l.Ob=function(){return this.e!=this.i.gc()},l.Pb=function(){return this.nj()},l.Qb=function(){J_(this)},l.e=0,l.f=0,l.g=-1,O(Qa,"AbstractEList/EIterator",40),M(278,40,r0,_6,jne),l.Qb=function(){J_(this)},l.Rb=function(t){Trt(this,t)},l.oj=function(){var t;try{return t=this.d.Xb(--this.e),this.mj(),this.g=this.e,t}catch(n){throw n=ts(n),we(n,73)?(this.mj(),J(new xc)):J(n)}},l.pj=function(t){_it(this,t)},l.Sb=function(){return this.e!=0},l.Tb=function(){return this.e},l.Ub=function(){return this.oj()},l.Vb=function(){return this.e-1},l.Wb=function(t){this.pj(t)},O(Qa,"AbstractEList/EListIterator",278),M(341,40,ga,C6),l.nj=function(){return Jie(this)},l.Qb=function(){throw J(new Fr)},O(Qa,"AbstractEList/NonResolvingEIterator",341),M(385,278,r0,NM,Kbe),l.Rb=function(t){throw J(new Fr)},l.nj=function(){var t;try{return t=this.c.ki(this.e),this.mj(),this.g=this.e++,t}catch(n){throw n=ts(n),we(n,73)?(this.mj(),J(new xc)):J(n)}},l.oj=function(){var t;try{return t=this.c.ki(--this.e),this.mj(),this.g=this.e,t}catch(n){throw n=ts(n),we(n,73)?(this.mj(),J(new xc)):J(n)}},l.Qb=function(){throw J(new Fr)},l.Wb=function(t){throw J(new Fr)},O(Qa,"AbstractEList/NonResolvingEListIterator",385),M(1982,67,vdt),l.Vh=function(t,n){var r,s,o,h,d,v,x,_,L,P,z;if(o=n.gc(),o!=0){for(_=u(_n(this.a,4),126),L=_==null?0:_.length,z=L+o,s=kie(this,z),P=L-t,P>0&&Hc(_,t,s,t+o,P),x=n.Kc(),d=0;dr)throw J(new Im(t,r));return new vYe(this,t)},l.$b=function(){var t,n;++this.j,t=u(_n(this.a,4),126),n=t==null?0:t.length,s7(this,null),Nre(this,n,t)},l.Hc=function(t){var n,r,s,o,h;if(n=u(_n(this.a,4),126),n!=null){if(t!=null){for(s=n,o=0,h=s.length;o=r)throw J(new Im(t,r));return n[t]},l.Xc=function(t){var n,r,s;if(n=u(_n(this.a,4),126),n!=null){if(t!=null){for(r=0,s=n.length;rr)throw J(new Im(t,r));return new bYe(this,t)},l.ii=function(t,n){var r,s,o;if(r=Irt(this),o=r==null?0:r.length,t>=o)throw J(new Do(qce+t+Eb+o));if(n>=o)throw J(new Do(Vce+n+Eb+o));return s=r[n],t!=n&&(t0&&Hc(t,0,n,0,r),n},l.Qc=function(t){var n,r,s;return n=u(_n(this.a,4),126),s=n==null?0:n.length,s>0&&(t.lengths&&cs(t,s,null),t};var Y3t;O(Qa,"ArrayDelegatingEList",1982),M(1038,40,ga,CZe),l.mj=function(){if(this.b.j!=this.f||je(u(_n(this.b.a,4),126))!==je(this.a))throw J(new uh)},l.Qb=function(){J_(this),this.a=u(_n(this.b.a,4),126)},O(Qa,"ArrayDelegatingEList/EIterator",1038),M(706,278,r0,$Ke,bYe),l.mj=function(){if(this.b.j!=this.f||je(u(_n(this.b.a,4),126))!==je(this.a))throw J(new uh)},l.pj=function(t){_it(this,t),this.a=u(_n(this.b.a,4),126)},l.Qb=function(){J_(this),this.a=u(_n(this.b.a,4),126)},O(Qa,"ArrayDelegatingEList/EListIterator",706),M(1039,341,ga,SZe),l.mj=function(){if(this.b.j!=this.f||je(u(_n(this.b.a,4),126))!==je(this.a))throw J(new uh)},O(Qa,"ArrayDelegatingEList/NonResolvingEIterator",1039),M(707,385,r0,HKe,vYe),l.mj=function(){if(this.b.j!=this.f||je(u(_n(this.b.a,4),126))!==je(this.a))throw J(new uh)},O(Qa,"ArrayDelegatingEList/NonResolvingEListIterator",707),M(606,295,noe,zte),O(Qa,"BasicEList/BasicIndexOutOfBoundsException",606),M(696,63,Od,O2e),l.Vc=function(t,n){throw J(new Fr)},l.Fc=function(t){throw J(new Fr)},l.Wc=function(t,n){throw J(new Fr)},l.Gc=function(t){throw J(new Fr)},l.$b=function(){throw J(new Fr)},l.qi=function(t){throw J(new Fr)},l.Kc=function(){return this.Zh()},l.Yc=function(){return this.$h()},l.Zc=function(t){return this._h(t)},l.ii=function(t,n){throw J(new Fr)},l.ji=function(t,n){throw J(new Fr)},l.$c=function(t){throw J(new Fr)},l.Mc=function(t){throw J(new Fr)},l._c=function(t,n){throw J(new Fr)},O(Qa,"BasicEList/UnmodifiableEList",696),M(705,1,{3:1,20:1,14:1,15:1,58:1,589:1}),l.Vc=function(t,n){NWt(this,t,u(n,42))},l.Fc=function(t){return yKt(this,u(t,42))},l.Jc=function(t){Da(this,t)},l.Xb=function(t){return u(Te(this.c,t),133)},l.ii=function(t,n){return u(this.c.ii(t,n),42)},l.ji=function(t,n){PWt(this,t,u(n,42))},l.Lc=function(){return new vn(null,new mn(this,16))},l.$c=function(t){return u(this.c.$c(t),42)},l._c=function(t,n){return AZt(this,t,u(n,42))},l.ad=function(t){Y3(this,t)},l.Nc=function(){return new mn(this,16)},l.Oc=function(){return new vn(null,new mn(this,16))},l.Wc=function(t,n){return this.c.Wc(t,n)},l.Gc=function(t){return this.c.Gc(t)},l.$b=function(){this.c.$b()},l.Hc=function(t){return this.c.Hc(t)},l.Ic=function(t){return MD(this.c,t)},l.qj=function(){var t,n,r;if(this.d==null){for(this.d=Me(SAe,p8e,63,2*this.f+1,0,1),r=this.e,this.f=0,n=this.c.Kc();n.e!=n.i.gc();)t=u(n.nj(),133),RH(this,t);this.e=r}},l.Fb=function(t){return fWe(this,t)},l.Hb=function(){return Jme(this.c)},l.Xc=function(t){return this.c.Xc(t)},l.rj=function(){this.c=new I$e(this)},l.dc=function(){return this.f==0},l.Kc=function(){return this.c.Kc()},l.Yc=function(){return this.c.Yc()},l.Zc=function(t){return this.c.Zc(t)},l.sj=function(){return hD(this)},l.tj=function(t,n,r){return new LWe(t,n,r)},l.uj=function(){return new bp},l.Mc=function(t){return Wet(this,t)},l.gc=function(){return this.f},l.bd=function(t,n){return new Zd(this.c,t,n)},l.Pc=function(){return this.c.Pc()},l.Qc=function(t){return this.c.Qc(t)},l.Ib=function(){return Vye(this.c)},l.e=0,l.f=0,O(Qa,"BasicEMap",705),M(1033,63,Od,I$e),l.bi=function(t,n){vVt(this,u(n,133))},l.ei=function(t,n,r){var s;++(s=this,u(n,133),s).a.e},l.fi=function(t,n){wVt(this,u(n,133))},l.gi=function(t,n,r){oKt(this,u(n,133),u(r,133))},l.di=function(t,n){Rtt(this.a)},O(Qa,"BasicEMap/1",1033),M(1034,63,Od,bp),l.ri=function(t){return Me(L3n,wdt,612,t,0,1)},O(Qa,"BasicEMap/2",1034),M(1035,H1,Xu,O$e),l.$b=function(){this.a.c.$b()},l.Hc=function(t){return qie(this.a,t)},l.Kc=function(){return this.a.f==0?(u8(),uN.a):new gze(this.a)},l.Mc=function(t){var n;return n=this.a.f,CH(this.a,t),this.a.f!=n},l.gc=function(){return this.a.f},O(Qa,"BasicEMap/3",1035),M(1036,28,hy,N$e),l.$b=function(){this.a.c.$b()},l.Hc=function(t){return kct(this.a,t)},l.Kc=function(){return this.a.f==0?(u8(),uN.a):new pze(this.a)},l.gc=function(){return this.a.f},O(Qa,"BasicEMap/4",1036),M(1037,H1,Xu,P$e),l.$b=function(){this.a.c.$b()},l.Hc=function(t){var n,r,s,o,h,d,v,x,_;if(this.a.f>0&&we(t,42)&&(this.a.qj(),x=u(t,42),v=x.cd(),o=v==null?0:Xi(v),h=Nbe(this.a,o),n=this.a.d[h],n)){for(r=u(n.g,367),_=n.i,d=0;d<_;++d)if(s=r[d],s.Sh()==o&&s.Fb(x))return!0}return!1},l.Kc=function(){return this.a.f==0?(u8(),uN.a):new tre(this.a)},l.Mc=function(t){return dot(this,t)},l.gc=function(){return this.a.f},O(Qa,"BasicEMap/5",1037),M(613,1,ga,tre),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.b!=-1},l.Pb=function(){var t;if(this.f.e!=this.c)throw J(new uh);if(this.b==-1)throw J(new xc);return this.d=this.a,this.e=this.b,tst(this),t=u(this.f.d[this.d].g[this.e],133),this.vj(t)},l.Qb=function(){if(this.f.e!=this.c)throw J(new uh);if(this.e==-1)throw J(new zu);this.f.c.Mc(Te(this.f.d[this.d],this.e)),this.c=this.f.e,this.e=-1,this.a==this.d&&this.b!=-1&&--this.b},l.vj=function(t){return t},l.a=0,l.b=-1,l.c=0,l.d=0,l.e=0,O(Qa,"BasicEMap/BasicEMapIterator",613),M(1031,613,ga,gze),l.vj=function(t){return t.cd()},O(Qa,"BasicEMap/BasicEMapKeyIterator",1031),M(1032,613,ga,pze),l.vj=function(t){return t.dd()},O(Qa,"BasicEMap/BasicEMapValueIterator",1032),M(1030,1,ow,B$e),l.wc=function(t){B_(this,t)},l.yc=function(t,n,r){return Rie(this,t,n,r)},l.$b=function(){this.a.c.$b()},l._b=function(t){return Kqe(this,t)},l.uc=function(t){return kct(this.a,t)},l.vc=function(){return Xnn(this.a)},l.Fb=function(t){return fWe(this.a,t)},l.xc=function(t){return r1(this.a,t)},l.Hb=function(){return Jme(this.a.c)},l.dc=function(){return this.a.f==0},l.ec=function(){return Qnn(this.a)},l.zc=function(t,n){return qH(this.a,t,n)},l.Bc=function(t){return CH(this.a,t)},l.gc=function(){return this.a.f},l.Ib=function(){return Vye(this.a.c)},l.Cc=function(){return Ynn(this.a)},O(Qa,"BasicEMap/DelegatingMap",1030),M(612,1,{42:1,133:1,612:1},LWe),l.Fb=function(t){var n;return we(t,42)?(n=u(t,42),(this.b!=null?Ci(this.b,n.cd()):je(this.b)===je(n.cd()))&&(this.c!=null?Ci(this.c,n.dd()):je(this.c)===je(n.dd()))):!1},l.Sh=function(){return this.a},l.cd=function(){return this.b},l.dd=function(){return this.c},l.Hb=function(){return this.a^(this.c==null?0:Xi(this.c))},l.Th=function(t){this.a=t},l.Uh=function(t){throw J(new H2)},l.ed=function(t){var n;return n=this.c,this.c=t,n},l.Ib=function(){return this.b+"->"+this.c},l.a=0;var L3n=O(Qa,"BasicEMap/EntryImpl",612);M(536,1,{},kx),O(Qa,"BasicEMap/View",536);var uN;M(768,1,{}),l.Fb=function(t){return J4e((hn(),bo),t)},l.Hb=function(){return hye((hn(),bo))},l.Ib=function(){return Yp((hn(),bo))},O(Qa,"ECollections/BasicEmptyUnmodifiableEList",768),M(1312,1,r0,UB),l.Nb=function(t){La(this,t)},l.Rb=function(t){throw J(new Fr)},l.Ob=function(){return!1},l.Sb=function(){return!1},l.Pb=function(){throw J(new xc)},l.Tb=function(){return 0},l.Ub=function(){throw J(new xc)},l.Vb=function(){return-1},l.Qb=function(){throw J(new Fr)},l.Wb=function(t){throw J(new Fr)},O(Qa,"ECollections/BasicEmptyUnmodifiableEList/1",1312),M(1310,768,{20:1,14:1,15:1,58:1},_He),l.Vc=function(t,n){Bze()},l.Fc=function(t){return Rze()},l.Wc=function(t,n){return Fze()},l.Gc=function(t){return jze()},l.$b=function(){$ze()},l.Hc=function(t){return!1},l.Ic=function(t){return!1},l.Jc=function(t){Da(this,t)},l.Xb=function(t){return B2e((hn(),t)),null},l.Xc=function(t){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.Yc=function(){return this.a},l.Zc=function(t){return this.a},l.ii=function(t,n){return Hze()},l.ji=function(t,n){zze()},l.Lc=function(){return new vn(null,new mn(this,16))},l.$c=function(t){return Gze()},l.Mc=function(t){return qze()},l._c=function(t,n){return Vze()},l.gc=function(){return 0},l.ad=function(t){Y3(this,t)},l.Nc=function(){return new mn(this,16)},l.Oc=function(){return new vn(null,new mn(this,16))},l.bd=function(t,n){return hn(),new Zd(bo,t,n)},l.Pc=function(){return Bve((hn(),bo))},l.Qc=function(t){return hn(),YD(bo,t)},O(Qa,"ECollections/EmptyUnmodifiableEList",1310),M(1311,768,{20:1,14:1,15:1,58:1,589:1},CHe),l.Vc=function(t,n){Bze()},l.Fc=function(t){return Rze()},l.Wc=function(t,n){return Fze()},l.Gc=function(t){return jze()},l.$b=function(){$ze()},l.Hc=function(t){return!1},l.Ic=function(t){return!1},l.Jc=function(t){Da(this,t)},l.Xb=function(t){return B2e((hn(),t)),null},l.Xc=function(t){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.Yc=function(){return this.a},l.Zc=function(t){return this.a},l.ii=function(t,n){return Hze()},l.ji=function(t,n){zze()},l.Lc=function(){return new vn(null,new mn(this,16))},l.$c=function(t){return Gze()},l.Mc=function(t){return qze()},l._c=function(t,n){return Vze()},l.gc=function(){return 0},l.ad=function(t){Y3(this,t)},l.Nc=function(){return new mn(this,16)},l.Oc=function(){return new vn(null,new mn(this,16))},l.bd=function(t,n){return hn(),new Zd(bo,t,n)},l.Pc=function(){return Bve((hn(),bo))},l.Qc=function(t){return hn(),YD(bo,t)},l.sj=function(){return hn(),hn(),l0},O(Qa,"ECollections/EmptyUnmodifiableEMap",1311);var LAe=ss(Qa,"Enumerator"),QV;M(281,1,{281:1},Zse),l.Fb=function(t){var n;return this===t?!0:we(t,281)?(n=u(t,281),this.f==n.f&&YQt(this.i,n.i)&&_ne(this.a,this.f&256?n.f&256?n.a:null:n.f&256?null:n.a)&&_ne(this.d,n.d)&&_ne(this.g,n.g)&&_ne(this.e,n.e)&&Gcn(this,n)):!1},l.Hb=function(){return this.f},l.Ib=function(){return Zct(this)},l.f=0;var X3t=0,Q3t=0,Z3t=0,J3t=0,MAe=0,DAe=0,IAe=0,OAe=0,NAe=0,e4t,KS=0,YS=0,t4t=0,n4t=0,ZV,PAe;O(Qa,"URI",281),M(1091,43,y4,SHe),l.zc=function(t,n){return u(Oo(this,Hr(t),u(n,281)),281)},O(Qa,"URI/URICache",1091),M(497,63,Od,xx,Lj),l.hi=function(){return!0},O(Qa,"UniqueEList",497),M(581,60,q0,D$),O(Qa,"WrappedException",581);var ti=ss(kh,kdt),qy=ss(kh,xdt),ju=ss(kh,Edt),Vy=ss(kh,Tdt),f1=ss(kh,_dt),tf=ss(kh,"EClass"),xfe=ss(kh,"EDataType"),r4t;M(1183,43,y4,AHe),l.xc=function(t){return fa(t)?Uc(this,t):hc($o(this.f,t))},O(kh,"EDataType/Internal/ConversionDelegate/Factory/Registry/Impl",1183);var JV=ss(kh,"EEnum"),J0=ss(kh,Cdt),Eo=ss(kh,Sdt),nf=ss(kh,Adt),rf,Iw=ss(kh,Ldt),Uy=ss(kh,Mdt);M(1029,1,{},qZ),l.Ib=function(){return"NIL"},O(kh,"EStructuralFeature/Internal/DynamicValueHolder/1",1029);var i4t;M(1028,43,y4,LHe),l.xc=function(t){return fa(t)?Uc(this,t):hc($o(this.f,t))},O(kh,"EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl",1028);var mu=ss(kh,Ddt),Hk=ss(kh,"EValidator/PatternMatcher"),BAe,RAe,En,Kg,Wy,E2,s4t,a4t,o4t,T2,Yg,_2,Ow,Z1,c4t,u4t,sf,Xg,l4t,Qg,Ky,n5,oo,h4t,f4t,Nw,eU=ss(Wi,"FeatureMap/Entry");M(535,1,{72:1},KF),l.ak=function(){return this.a},l.dd=function(){return this.b},O(Tn,"BasicEObjectImpl/1",535),M(1027,1,Qce,Hqe),l.Wj=function(t){return Ire(this.a,this.b,t)},l.fj=function(){return kXe(this.a,this.b)},l.Wb=function(t){wwe(this.a,this.b,t)},l.Xj=function(){VZt(this.a,this.b)},O(Tn,"BasicEObjectImpl/4",1027),M(1983,1,{108:1}),l.bk=function(t){this.e=t==0?d4t:Me(Yn,yt,1,t,5,1)},l.Ch=function(t){return this.e[t]},l.Dh=function(t,n){this.e[t]=n},l.Eh=function(t){this.e[t]=null},l.ck=function(){return this.c},l.dk=function(){throw J(new Fr)},l.ek=function(){throw J(new Fr)},l.fk=function(){return this.d},l.gk=function(){return this.e!=null},l.hk=function(t){this.c=t},l.ik=function(t){throw J(new Fr)},l.jk=function(t){throw J(new Fr)},l.kk=function(t){this.d=t};var d4t;O(Tn,"BasicEObjectImpl/EPropertiesHolderBaseImpl",1983),M(185,1983,{108:1},ch),l.dk=function(){return this.a},l.ek=function(){return this.b},l.ik=function(t){this.a=t},l.jk=function(t){this.b=t},O(Tn,"BasicEObjectImpl/EPropertiesHolderImpl",185),M(506,97,I1t,Ex),l.Kg=function(){return this.f},l.Pg=function(){return this.k},l.Rg=function(t,n){this.g=t,this.i=n},l.Tg=function(){return this.j&2?this.ph().ck():this.zh()},l.Vg=function(){return this.i},l.Mg=function(){return(this.j&1)!=0},l.eh=function(){return this.g},l.kh=function(){return(this.j&4)!=0},l.ph=function(){return!this.k&&(this.k=new ch),this.k},l.th=function(t){this.ph().hk(t),t?this.j|=2:this.j&=-3},l.vh=function(t){this.ph().jk(t),t?this.j|=4:this.j&=-5},l.zh=function(){return(Rp(),En).S},l.i=0,l.j=1,O(Tn,"EObjectImpl",506),M(780,506,{105:1,92:1,90:1,56:1,108:1,49:1,97:1},wve),l.Ch=function(t){return this.e[t]},l.Dh=function(t,n){this.e[t]=n},l.Eh=function(t){this.e[t]=null},l.Tg=function(){return this.d},l.Yg=function(t){return Ji(this.d,t)},l.$g=function(){return this.d},l.dh=function(){return this.e!=null},l.ph=function(){return!this.k&&(this.k=new WB),this.k},l.th=function(t){this.d=t},l.yh=function(){var t;return this.e==null&&(t=Jn(this.d),this.e=t==0?g4t:Me(Yn,yt,1,t,5,1)),this},l.Ah=function(){return 0};var g4t;O(Tn,"DynamicEObjectImpl",780),M(1376,780,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1},nKe),l.Fb=function(t){return this===t},l.Hb=function(){return xv(this)},l.th=function(t){this.d=t,this.b=dI(t,"key"),this.c=dI(t,jC)},l.Sh=function(){var t;return this.a==-1&&(t=qre(this,this.b),this.a=t==null?0:Xi(t)),this.a},l.cd=function(){return qre(this,this.b)},l.dd=function(){return qre(this,this.c)},l.Th=function(t){this.a=t},l.Uh=function(t){wwe(this,this.b,t)},l.ed=function(t){var n;return n=qre(this,this.c),wwe(this,this.c,t),n},l.a=0,O(Tn,"DynamicEObjectImpl/BasicEMapEntry",1376),M(1377,1,{108:1},WB),l.bk=function(t){throw J(new Fr)},l.Ch=function(t){throw J(new Fr)},l.Dh=function(t,n){throw J(new Fr)},l.Eh=function(t){throw J(new Fr)},l.ck=function(){throw J(new Fr)},l.dk=function(){return this.a},l.ek=function(){return this.b},l.fk=function(){return this.c},l.gk=function(){throw J(new Fr)},l.hk=function(t){throw J(new Fr)},l.ik=function(t){this.a=t},l.jk=function(t){this.b=t},l.kk=function(t){this.c=t},O(Tn,"DynamicEObjectImpl/DynamicEPropertiesHolderImpl",1377),M(510,150,{105:1,92:1,90:1,590:1,147:1,56:1,108:1,49:1,97:1,510:1,150:1,114:1,115:1},KB),l.Qg=function(t){return R3e(this,t)},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.d;case 2:return r?(!this.b&&(this.b=new Ml((on(),oo),wc,this)),this.b):(!this.b&&(this.b=new Ml((on(),oo),wc,this)),hD(this.b));case 3:return CXe(this);case 4:return!this.a&&(this.a=new Bs(y2,this,4)),this.a;case 5:return!this.c&&(this.c=new $3(y2,this,5)),this.c}return ph(this,t-Jn((on(),Kg)),gn((s=u(_n(this,16),26),s||Kg),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 3:return this.Cb&&(r=(o=this.Db>>16,o>=0?R3e(this,r):this.Cb.ih(this,-1-o,null,r))),Nve(this,u(t,147),r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Kg)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Kg)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 2:return!this.b&&(this.b=new Ml((on(),oo),wc,this)),vj(this.b,t,r);case 3:return Nve(this,null,r);case 4:return!this.a&&(this.a=new Bs(y2,this,4)),Xa(this.a,t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Kg)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Kg)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.d!=null;case 2:return!!this.b&&this.b.f!=0;case 3:return!!CXe(this);case 4:return!!this.a&&this.a.i!=0;case 5:return!!this.c&&this.c.i!=0}return dh(this,t-Jn((on(),Kg)),gn((n=u(_n(this,16),26),n||Kg),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:NQt(this,Hr(n));return;case 2:!this.b&&(this.b=new Ml((on(),oo),wc,this)),sH(this.b,n);return;case 3:zot(this,u(n,147));return;case 4:!this.a&&(this.a=new Bs(y2,this,4)),_r(this.a),!this.a&&(this.a=new Bs(y2,this,4)),fs(this.a,u(n,14));return;case 5:!this.c&&(this.c=new $3(y2,this,5)),_r(this.c),!this.c&&(this.c=new $3(y2,this,5)),fs(this.c,u(n,14));return}yh(this,t-Jn((on(),Kg)),gn((r=u(_n(this,16),26),r||Kg),t),n)},l.zh=function(){return on(),Kg},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:Fme(this,null);return;case 2:!this.b&&(this.b=new Ml((on(),oo),wc,this)),this.b.c.$b();return;case 3:zot(this,null);return;case 4:!this.a&&(this.a=new Bs(y2,this,4)),_r(this.a);return;case 5:!this.c&&(this.c=new $3(y2,this,5)),_r(this.c);return}wh(this,t-Jn((on(),Kg)),gn((n=u(_n(this,16),26),n||Kg),t))},l.Ib=function(){return rrt(this)},l.d=null,O(Tn,"EAnnotationImpl",510),M(151,705,b8e,Nl),l.Xh=function(t,n){bWt(this,t,u(n,42))},l.lk=function(t,n){return lYt(this,u(t,42),n)},l.pi=function(t){return u(u(this.c,69).pi(t),133)},l.Zh=function(){return u(this.c,69).Zh()},l.$h=function(){return u(this.c,69).$h()},l._h=function(t){return u(this.c,69)._h(t)},l.mk=function(t,n){return vj(this,t,n)},l.Wj=function(t){return u(this.c,76).Wj(t)},l.rj=function(){},l.fj=function(){return u(this.c,76).fj()},l.tj=function(t,n,r){var s;return s=u(Gl(this.b).Nh().Jh(this.b),133),s.Th(t),s.Uh(n),s.ed(r),s},l.uj=function(){return new rpe(this)},l.Wb=function(t){sH(this,t)},l.Xj=function(){u(this.c,76).Xj()},O(Wi,"EcoreEMap",151),M(158,151,b8e,Ml),l.qj=function(){var t,n,r,s,o,h;if(this.d==null){for(h=Me(SAe,p8e,63,2*this.f+1,0,1),r=this.c.Kc();r.e!=r.i.gc();)n=u(r.nj(),133),s=n.Sh(),o=(s&Ei)%h.length,t=h[o],!t&&(t=h[o]=new rpe(this)),t.Fc(n);this.d=h}},O(Tn,"EAnnotationImpl/1",158),M(284,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,472:1,49:1,97:1,150:1,284:1,114:1,115:1}),l._g=function(t,n,r){var s,o;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),!!this.$j();case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q}return ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 9:return zne(this,r)}return o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Rj(this,du(this),n-Jn(this.zh()),t,r)},l.lh=function(t){var n,r;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.$j();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0)}return dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:this.Lh(Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:this.ok(u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.zh=function(){return on(),f4t},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:this.Lh(null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:this.ok(1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.Gh=function(){$h(this),this.Bb|=1},l.Yj=function(){return $h(this)},l.Zj=function(){return this.t},l.$j=function(){var t;return t=this.t,t>1||t==-1},l.hi=function(){return(this.Bb&512)!=0},l.nk=function(t,n){return Iye(this,t,n)},l.ok=function(t){Wm(this,t)},l.Ib=function(){return G4e(this)},l.s=0,l.t=1,O(Tn,"ETypedElementImpl",284),M(449,284,{105:1,92:1,90:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,449:1,284:1,114:1,115:1,677:1}),l.Qg=function(t){return jit(this,t)},l._g=function(t,n,r){var s,o;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),!!this.$j();case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return Mn(),!!(this.Bb&Sf);case 11:return Mn(),!!(this.Bb&ky);case 12:return Mn(),!!(this.Bb&dy);case 13:return this.j;case 14:return b7(this);case 15:return Mn(),!!(this.Bb&Zu);case 16:return Mn(),!!(this.Bb&Ed);case 17:return Fm(this)}return ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 17:return this.Cb&&(r=(o=this.Db>>16,o>=0?jit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,17,r)}return h=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),h.Nj().Qj(this,du(this),n-Jn(this.zh()),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 9:return zne(this,r);case 17:return Kl(this,null,17,r)}return o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Rj(this,du(this),n-Jn(this.zh()),t,r)},l.lh=function(t){var n,r;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.$j();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return(this.Bb&Sf)==0;case 11:return(this.Bb&ky)!=0;case 12:return(this.Bb&dy)!=0;case 13:return this.j!=null;case 14:return b7(this)!=null;case 15:return(this.Bb&Zu)!=0;case 16:return(this.Bb&Ed)!=0;case 17:return!!Fm(this)}return dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:bre(this,Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:this.ok(u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return;case 10:J8(this,It(Mt(n)));return;case 11:n7(this,It(Mt(n)));return;case 12:e7(this,It(Mt(n)));return;case 13:N2e(this,Hr(n));return;case 15:t7(this,It(Mt(n)));return;case 16:r7(this,It(Mt(n)));return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.zh=function(){return on(),h4t},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,88)&&iy(dl(u(this.Cb,88)),4),au(this,null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:this.ok(1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return;case 10:J8(this,!0);return;case 11:n7(this,!1);return;case 12:e7(this,!1);return;case 13:this.i=null,X$(this,null);return;case 15:t7(this,!1);return;case 16:r7(this,!1);return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.Gh=function(){m8(Po((Yu(),Oa),this)),$h(this),this.Bb|=1},l.Gj=function(){return this.f},l.zj=function(){return b7(this)},l.Hj=function(){return Fm(this)},l.Lj=function(){return null},l.pk=function(){return this.k},l.aj=function(){return this.n},l.Mj=function(){return UH(this)},l.Nj=function(){var t,n,r,s,o,h,d,v,x;return this.p||(r=Fm(this),(r.i==null&&xd(r),r.i).length,s=this.Lj(),s&&Jn(Fm(s)),o=$h(this),d=o.Bj(),t=d?d.i&1?d==El?Us:d==Lr?Za:d==Xy?W7:d==pa?ma:d==S2?pw:d==a5?bw:d==el?mk:XC:d:null,n=b7(this),v=o.zj(),gon(this),this.Bb&Ed&&((h=q3e((Yu(),Oa),r))&&h!=this||(h=F6(Po(Oa,this))))?this.p=new Gqe(this,h):this.$j()?this.rk()?s?this.Bb&Zu?t?this.sk()?this.p=new K2(47,t,this,s):this.p=new K2(5,t,this,s):this.sk()?this.p=new Q2(46,this,s):this.p=new Q2(4,this,s):t?this.sk()?this.p=new K2(49,t,this,s):this.p=new K2(7,t,this,s):this.sk()?this.p=new Q2(48,this,s):this.p=new Q2(6,this,s):this.Bb&Zu?t?t==Cb?this.p=new yg(50,W3t,this):this.sk()?this.p=new yg(43,t,this):this.p=new yg(1,t,this):this.sk()?this.p=new xg(42,this):this.p=new xg(0,this):t?t==Cb?this.p=new yg(41,W3t,this):this.sk()?this.p=new yg(45,t,this):this.p=new yg(3,t,this):this.sk()?this.p=new xg(44,this):this.p=new xg(2,this):we(o,148)?t==eU?this.p=new xg(40,this):this.Bb&512?this.Bb&Zu?t?this.p=new yg(9,t,this):this.p=new xg(8,this):t?this.p=new yg(11,t,this):this.p=new xg(10,this):this.Bb&Zu?t?this.p=new yg(13,t,this):this.p=new xg(12,this):t?this.p=new yg(15,t,this):this.p=new xg(14,this):s?(x=s.t,x>1||x==-1?this.sk()?this.Bb&Zu?t?this.p=new K2(25,t,this,s):this.p=new Q2(24,this,s):t?this.p=new K2(27,t,this,s):this.p=new Q2(26,this,s):this.Bb&Zu?t?this.p=new K2(29,t,this,s):this.p=new Q2(28,this,s):t?this.p=new K2(31,t,this,s):this.p=new Q2(30,this,s):this.sk()?this.Bb&Zu?t?this.p=new K2(33,t,this,s):this.p=new Q2(32,this,s):t?this.p=new K2(35,t,this,s):this.p=new Q2(34,this,s):this.Bb&Zu?t?this.p=new K2(37,t,this,s):this.p=new Q2(36,this,s):t?this.p=new K2(39,t,this,s):this.p=new Q2(38,this,s)):this.sk()?this.Bb&Zu?t?this.p=new yg(17,t,this):this.p=new xg(16,this):t?this.p=new yg(19,t,this):this.p=new xg(18,this):this.Bb&Zu?t?this.p=new yg(21,t,this):this.p=new xg(20,this):t?this.p=new yg(23,t,this):this.p=new xg(22,this):this.qk()?this.sk()?this.p=new MWe(u(o,26),this,s):this.p=new vwe(u(o,26),this,s):we(o,148)?t==eU?this.p=new xg(40,this):this.Bb&Zu?t?this.p=new AKe(n,v,this,(Gie(),d==Lr?qAe:d==El?jAe:d==S2?VAe:d==Xy?GAe:d==pa?zAe:d==a5?UAe:d==el?$Ae:d==Sh?HAe:_fe)):this.p=new $Ye(u(o,148),n,v,this):t?this.p=new SKe(n,v,this,(Gie(),d==Lr?qAe:d==El?jAe:d==S2?VAe:d==Xy?GAe:d==pa?zAe:d==a5?UAe:d==el?$Ae:d==Sh?HAe:_fe)):this.p=new jYe(u(o,148),n,v,this):this.rk()?s?this.Bb&Zu?this.sk()?this.p=new IWe(u(o,26),this,s):this.p=new cve(u(o,26),this,s):this.sk()?this.p=new DWe(u(o,26),this,s):this.p=new wne(u(o,26),this,s):this.Bb&Zu?this.sk()?this.p=new SUe(u(o,26),this):this.p=new xbe(u(o,26),this):this.sk()?this.p=new CUe(u(o,26),this):this.p=new ine(u(o,26),this):this.sk()?s?this.Bb&Zu?this.p=new OWe(u(o,26),this,s):this.p=new ave(u(o,26),this,s):this.Bb&Zu?this.p=new AUe(u(o,26),this):this.p=new Ebe(u(o,26),this):s?this.Bb&Zu?this.p=new NWe(u(o,26),this,s):this.p=new ove(u(o,26),this,s):this.Bb&Zu?this.p=new LUe(u(o,26),this):this.p=new Mj(u(o,26),this)),this.p},l.Ij=function(){return(this.Bb&Sf)!=0},l.qk=function(){return!1},l.rk=function(){return!1},l.Jj=function(){return(this.Bb&Ed)!=0},l.Oj=function(){return Ure(this)},l.sk=function(){return!1},l.Kj=function(){return(this.Bb&Zu)!=0},l.tk=function(t){this.k=t},l.Lh=function(t){bre(this,t)},l.Ib=function(){return lz(this)},l.e=!1,l.n=0,O(Tn,"EStructuralFeatureImpl",449),M(322,449,{105:1,92:1,90:1,34:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,322:1,150:1,449:1,284:1,114:1,115:1,677:1},Vee),l._g=function(t,n,r){var s,o;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),!!j4e(this);case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return Mn(),!!(this.Bb&Sf);case 11:return Mn(),!!(this.Bb&ky);case 12:return Mn(),!!(this.Bb&dy);case 13:return this.j;case 14:return b7(this);case 15:return Mn(),!!(this.Bb&Zu);case 16:return Mn(),!!(this.Bb&Ed);case 17:return Fm(this);case 18:return Mn(),!!(this.Bb&_c);case 19:return n?lie(this):$Ze(this)}return ph(this,t-Jn((on(),Wy)),gn((s=u(_n(this,16),26),s||Wy),t),n,r)},l.lh=function(t){var n,r;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return j4e(this);case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return(this.Bb&Sf)==0;case 11:return(this.Bb&ky)!=0;case 12:return(this.Bb&dy)!=0;case 13:return this.j!=null;case 14:return b7(this)!=null;case 15:return(this.Bb&Zu)!=0;case 16:return(this.Bb&Ed)!=0;case 17:return!!Fm(this);case 18:return(this.Bb&_c)!=0;case 19:return!!$Ze(this)}return dh(this,t-Jn((on(),Wy)),gn((n=u(_n(this,16),26),n||Wy),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:bre(this,Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:wze(this,u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return;case 10:J8(this,It(Mt(n)));return;case 11:n7(this,It(Mt(n)));return;case 12:e7(this,It(Mt(n)));return;case 13:N2e(this,Hr(n));return;case 15:t7(this,It(Mt(n)));return;case 16:r7(this,It(Mt(n)));return;case 18:Pie(this,It(Mt(n)));return}yh(this,t-Jn((on(),Wy)),gn((r=u(_n(this,16),26),r||Wy),t),n)},l.zh=function(){return on(),Wy},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,88)&&iy(dl(u(this.Cb,88)),4),au(this,null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:this.b=0,Wm(this,1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return;case 10:J8(this,!0);return;case 11:n7(this,!1);return;case 12:e7(this,!1);return;case 13:this.i=null,X$(this,null);return;case 15:t7(this,!1);return;case 16:r7(this,!1);return;case 18:Pie(this,!1);return}wh(this,t-Jn((on(),Wy)),gn((n=u(_n(this,16),26),n||Wy),t))},l.Gh=function(){lie(this),m8(Po((Yu(),Oa),this)),$h(this),this.Bb|=1},l.$j=function(){return j4e(this)},l.nk=function(t,n){return this.b=0,this.a=null,Iye(this,t,n)},l.ok=function(t){wze(this,t)},l.Ib=function(){var t;return this.Db&64?lz(this):(t=new Ph(lz(this)),t.a+=" (iD: ",vg(t,(this.Bb&_c)!=0),t.a+=")",t.a)},l.b=0,O(Tn,"EAttributeImpl",322),M(351,438,{105:1,92:1,90:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,351:1,150:1,114:1,115:1,676:1}),l.uk=function(t){return t.Tg()==this},l.Qg=function(t){return pse(this,t)},l.Rg=function(t,n){this.w=null,this.Db=n<<16|this.Db&255,this.Cb=t},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Jv(this);case 4:return this.zj();case 5:return this.F;case 6:return n?Gl(this):x8(this);case 7:return!this.A&&(this.A=new qu(mu,this,7)),this.A}return ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?pse(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,6,r)}return h=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),h.Nj().Qj(this,du(this),n-Jn(this.zh()),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 6:return Kl(this,null,6,r);case 7:return!this.A&&(this.A=new qu(mu,this,7)),Xa(this.A,t,r)}return o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Rj(this,du(this),n-Jn(this.zh()),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jv(this);case 4:return this.zj()!=null;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!x8(this);case 7:return!!this.A&&this.A.i!=0}return dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:l$(this,Hr(n));return;case 2:Vte(this,Hr(n));return;case 5:x7(this,Hr(n));return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A),!this.A&&(this.A=new qu(mu,this,7)),fs(this.A,u(n,14));return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.zh=function(){return on(),s4t},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,179)&&(u(this.Cb,179).tb=null),au(this,null);return;case 2:Y8(this,null),R8(this,this.D);return;case 5:x7(this,null);return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A);return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.yj=function(){var t;return this.G==-1&&(this.G=(t=Gl(this),t?Dg(t.Mh(),this):-1)),this.G},l.zj=function(){return null},l.Aj=function(){return Gl(this)},l.vk=function(){return this.v},l.Bj=function(){return Jv(this)},l.Cj=function(){return this.D!=null?this.D:this.B},l.Dj=function(){return this.F},l.wj=function(t){return oae(this,t)},l.wk=function(t){this.v=t},l.xk=function(t){wtt(this,t)},l.yk=function(t){this.C=t},l.Lh=function(t){l$(this,t)},l.Ib=function(){return xH(this)},l.C=null,l.D=null,l.G=-1,O(Tn,"EClassifierImpl",351),M(88,351,{105:1,92:1,90:1,26:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,88:1,351:1,150:1,473:1,114:1,115:1,676:1},YL),l.uk=function(t){return XKt(this,t.Tg())},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Jv(this);case 4:return null;case 5:return this.F;case 6:return n?Gl(this):x8(this);case 7:return!this.A&&(this.A=new qu(mu,this,7)),this.A;case 8:return Mn(),!!(this.Bb&256);case 9:return Mn(),!!(this.Bb&512);case 10:return jo(this);case 11:return!this.q&&(this.q=new at(nf,this,11,10)),this.q;case 12:return b4(this);case 13:return fC(this);case 14:return fC(this),this.r;case 15:return b4(this),this.k;case 16:return L4e(this);case 17:return fae(this);case 18:return xd(this);case 19:return rz(this);case 20:return b4(this),this.o;case 21:return!this.s&&(this.s=new at(ju,this,21,17)),this.s;case 22:return jc(this);case 23:return Qse(this)}return ph(this,t-Jn((on(),E2)),gn((s=u(_n(this,16),26),s||E2),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?pse(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,6,r);case 11:return!this.q&&(this.q=new at(nf,this,11,10)),ou(this.q,t,r);case 21:return!this.s&&(this.s=new at(ju,this,21,17)),ou(this.s,t,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),E2)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),E2)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 6:return Kl(this,null,6,r);case 7:return!this.A&&(this.A=new qu(mu,this,7)),Xa(this.A,t,r);case 11:return!this.q&&(this.q=new at(nf,this,11,10)),Xa(this.q,t,r);case 21:return!this.s&&(this.s=new at(ju,this,21,17)),Xa(this.s,t,r);case 22:return Xa(jc(this),t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),E2)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),E2)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jv(this);case 4:return!1;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!x8(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)!=0;case 9:return(this.Bb&512)!=0;case 10:return!!this.u&&jc(this.u.a).i!=0&&!(this.n&&ise(this.n));case 11:return!!this.q&&this.q.i!=0;case 12:return b4(this).i!=0;case 13:return fC(this).i!=0;case 14:return fC(this),this.r.i!=0;case 15:return b4(this),this.k.i!=0;case 16:return L4e(this).i!=0;case 17:return fae(this).i!=0;case 18:return xd(this).i!=0;case 19:return rz(this).i!=0;case 20:return b4(this),!!this.o;case 21:return!!this.s&&this.s.i!=0;case 22:return!!this.n&&ise(this.n);case 23:return Qse(this).i!=0}return dh(this,t-Jn((on(),E2)),gn((n=u(_n(this,16),26),n||E2),t))},l.oh=function(t){var n;return n=this.i==null||this.q&&this.q.i!=0?null:dI(this,t),n||a6e(this,t)},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:l$(this,Hr(n));return;case 2:Vte(this,Hr(n));return;case 5:x7(this,Hr(n));return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A),!this.A&&(this.A=new qu(mu,this,7)),fs(this.A,u(n,14));return;case 8:Nye(this,It(Mt(n)));return;case 9:Pye(this,It(Mt(n)));return;case 10:pC(jo(this)),fs(jo(this),u(n,14));return;case 11:!this.q&&(this.q=new at(nf,this,11,10)),_r(this.q),!this.q&&(this.q=new at(nf,this,11,10)),fs(this.q,u(n,14));return;case 21:!this.s&&(this.s=new at(ju,this,21,17)),_r(this.s),!this.s&&(this.s=new at(ju,this,21,17)),fs(this.s,u(n,14));return;case 22:_r(jc(this)),fs(jc(this),u(n,14));return}yh(this,t-Jn((on(),E2)),gn((r=u(_n(this,16),26),r||E2),t),n)},l.zh=function(){return on(),E2},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,179)&&(u(this.Cb,179).tb=null),au(this,null);return;case 2:Y8(this,null),R8(this,this.D);return;case 5:x7(this,null);return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A);return;case 8:Nye(this,!1);return;case 9:Pye(this,!1);return;case 10:this.u&&pC(this.u);return;case 11:!this.q&&(this.q=new at(nf,this,11,10)),_r(this.q);return;case 21:!this.s&&(this.s=new at(ju,this,21,17)),_r(this.s);return;case 22:this.n&&_r(this.n);return}wh(this,t-Jn((on(),E2)),gn((n=u(_n(this,16),26),n||E2),t))},l.Gh=function(){var t,n;if(b4(this),fC(this),L4e(this),fae(this),xd(this),rz(this),Qse(this),A_(dQt(dl(this))),this.s)for(t=0,n=this.s.i;t=0;--n)Te(this,n);return r3e(this,t)},l.Xj=function(){_r(this)},l.oi=function(t,n){return Het(this,t,n)},O(Wi,"EcoreEList",622),M(496,622,Zo,UM),l.ai=function(){return!1},l.aj=function(){return this.c},l.bj=function(){return!1},l.Fk=function(){return!0},l.hi=function(){return!0},l.li=function(t,n){return n},l.ni=function(){return!1},l.c=0,O(Wi,"EObjectEList",496),M(85,496,Zo,Bs),l.bj=function(){return!0},l.Dk=function(){return!1},l.rk=function(){return!0},O(Wi,"EObjectContainmentEList",85),M(545,85,Zo,aj),l.ci=function(){this.b=!0},l.fj=function(){return this.b},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.b,this.b=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.b=!1},l.b=!1,O(Wi,"EObjectContainmentEList/Unsettable",545),M(1140,545,Zo,_Ke),l.ii=function(t,n){var r,s;return r=u(q_(this,t,n),87),Ll(this.e)&&Vx(this,new dD(this.a,7,(on(),a4t),ct(n),(s=r.c,we(s,88)?u(s,26):sf),t)),r},l.jj=function(t,n){return tcn(this,u(t,87),n)},l.kj=function(t,n){return ecn(this,u(t,87),n)},l.lj=function(t,n,r){return nhn(this,u(t,87),u(n,87),r)},l.Zi=function(t,n,r,s,o){switch(t){case 3:return x_(this,t,n,r,s,this.i>1);case 5:return x_(this,t,n,r,s,this.i-u(r,15).gc()>0);default:return new N0(this.e,t,this.c,n,r,s,!0)}},l.ij=function(){return!0},l.fj=function(){return ise(this)},l.Xj=function(){_r(this)},O(Tn,"EClassImpl/1",1140),M(1154,1153,g8e),l.ui=function(t){var n,r,s,o,h,d,v;if(r=t.xi(),r!=8){if(s=Fcn(t),s==0)switch(r){case 1:case 9:{v=t.Bi(),v!=null&&(n=dl(u(v,473)),!n.c&&(n.c=new gm),N$(n.c,t.Ai())),d=t.zi(),d!=null&&(o=u(d,473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),Br(n.c,u(t.Ai(),26))));break}case 3:{d=t.zi(),d!=null&&(o=u(d,473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),Br(n.c,u(t.Ai(),26))));break}case 5:{if(d=t.zi(),d!=null)for(h=u(d,14).Kc();h.Ob();)o=u(h.Pb(),473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),Br(n.c,u(t.Ai(),26)));break}case 4:{v=t.Bi(),v!=null&&(o=u(v,473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),N$(n.c,t.Ai())));break}case 6:{if(v=t.Bi(),v!=null)for(h=u(v,14).Kc();h.Ob();)o=u(h.Pb(),473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),N$(n.c,t.Ai()));break}}this.Hk(s)}},l.Hk=function(t){Cct(this,t)},l.b=63,O(Tn,"ESuperAdapter",1154),M(1155,1154,g8e,R$e),l.Hk=function(t){iy(this,t)},O(Tn,"EClassImpl/10",1155),M(1144,696,Zo),l.Vh=function(t,n){return Cse(this,t,n)},l.Wh=function(t){return xit(this,t)},l.Xh=function(t,n){$D(this,t,n)},l.Yh=function(t){cD(this,t)},l.pi=function(t){return fme(this,t)},l.mi=function(t,n){return Vre(this,t,n)},l.lk=function(t,n){throw J(new Fr)},l.Zh=function(){return new C6(this)},l.$h=function(){return new NM(this)},l._h=function(t){return _D(this,t)},l.mk=function(t,n){throw J(new Fr)},l.Wj=function(t){return this},l.fj=function(){return this.i!=0},l.Wb=function(t){throw J(new Fr)},l.Xj=function(){throw J(new Fr)},O(Wi,"EcoreEList/UnmodifiableEList",1144),M(319,1144,Zo,B3),l.ni=function(){return!1},O(Wi,"EcoreEList/UnmodifiableEList/FastCompare",319),M(1147,319,Zo,lnt),l.Xc=function(t){var n,r,s;if(we(t,170)&&(n=u(t,170),r=n.aj(),r!=-1)){for(s=this.i;r4)if(this.wj(t)){if(this.rk()){if(s=u(t,49),r=s.Ug(),v=r==this.b&&(this.Dk()?s.Og(s.Vg(),u(gn(Su(this.b),this.aj()).Yj(),26).Bj())==go(u(gn(Su(this.b),this.aj()),18)).n:-1-s.Vg()==this.aj()),this.Ek()&&!v&&!r&&s.Zg()){for(o=0;o1||s==-1)):!1},l.Dk=function(){var t,n,r;return n=gn(Su(this.b),this.aj()),we(n,99)?(t=u(n,18),r=go(t),!!r):!1},l.Ek=function(){var t,n;return n=gn(Su(this.b),this.aj()),we(n,99)?(t=u(n,18),(t.Bb&so)!=0):!1},l.Xc=function(t){var n,r,s,o;if(s=this.Qi(t),s>=0)return s;if(this.Fk()){for(r=0,o=this.Vi();r=0;--t)xI(this,t,this.Oi(t));return this.Wi()},l.Qc=function(t){var n;if(this.Ek())for(n=this.Vi()-1;n>=0;--n)xI(this,n,this.Oi(n));return this.Xi(t)},l.Xj=function(){pC(this)},l.oi=function(t,n){return EJe(this,t,n)},O(Wi,"DelegatingEcoreEList",742),M(1150,742,w8e,$Ue),l.Hi=function(t,n){TKt(this,t,u(n,26))},l.Ii=function(t){wWt(this,u(t,26))},l.Oi=function(t){var n,r;return n=u(Te(jc(this.a),t),87),r=n.c,we(r,88)?u(r,26):(on(),sf)},l.Ti=function(t){var n,r;return n=u(ay(jc(this.a),t),87),r=n.c,we(r,88)?u(r,26):(on(),sf)},l.Ui=function(t,n){return _un(this,t,u(n,26))},l.ai=function(){return!1},l.Zi=function(t,n,r,s,o){return null},l.Ji=function(){return new j$e(this)},l.Ki=function(){_r(jc(this.a))},l.Li=function(t){return trt(this,t)},l.Mi=function(t){var n,r;for(r=t.Kc();r.Ob();)if(n=r.Pb(),!trt(this,n))return!1;return!0},l.Ni=function(t){var n,r,s;if(we(t,15)&&(s=u(t,15),s.gc()==jc(this.a).i)){for(n=s.Kc(),r=new rr(this);n.Ob();)if(je(n.Pb())!==je(pr(r)))return!1;return!0}return!1},l.Pi=function(){var t,n,r,s,o;for(r=1,n=new rr(jc(this.a));n.e!=n.i.gc();)t=u(pr(n),87),s=(o=t.c,we(o,88)?u(o,26):(on(),sf)),r=31*r+(s?xv(s):0);return r},l.Qi=function(t){var n,r,s,o;for(s=0,r=new rr(jc(this.a));r.e!=r.i.gc();){if(n=u(pr(r),87),je(t)===je((o=n.c,we(o,88)?u(o,26):(on(),sf))))return s;++s}return-1},l.Ri=function(){return jc(this.a).i==0},l.Si=function(){return null},l.Vi=function(){return jc(this.a).i},l.Wi=function(){var t,n,r,s,o,h;for(h=jc(this.a).i,o=Me(Yn,yt,1,h,5,1),r=0,n=new rr(jc(this.a));n.e!=n.i.gc();)t=u(pr(n),87),o[r++]=(s=t.c,we(s,88)?u(s,26):(on(),sf));return o},l.Xi=function(t){var n,r,s,o,h,d,v;for(v=jc(this.a).i,t.lengthv&&cs(t,v,null),s=0,r=new rr(jc(this.a));r.e!=r.i.gc();)n=u(pr(r),87),h=(d=n.c,we(d,88)?u(d,26):(on(),sf)),cs(t,s++,h);return t},l.Yi=function(){var t,n,r,s,o;for(o=new bg,o.a+="[",t=jc(this.a),n=0,s=jc(this.a).i;n>16,o>=0?pse(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,6,r);case 9:return!this.a&&(this.a=new at(J0,this,9,5)),ou(this.a,t,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),T2)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),T2)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 6:return Kl(this,null,6,r);case 7:return!this.A&&(this.A=new qu(mu,this,7)),Xa(this.A,t,r);case 9:return!this.a&&(this.a=new at(J0,this,9,5)),Xa(this.a,t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),T2)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),T2)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jv(this);case 4:return!!yye(this);case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!x8(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)==0;case 9:return!!this.a&&this.a.i!=0}return dh(this,t-Jn((on(),T2)),gn((n=u(_n(this,16),26),n||T2),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:l$(this,Hr(n));return;case 2:Vte(this,Hr(n));return;case 5:x7(this,Hr(n));return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A),!this.A&&(this.A=new qu(mu,this,7)),fs(this.A,u(n,14));return;case 8:bH(this,It(Mt(n)));return;case 9:!this.a&&(this.a=new at(J0,this,9,5)),_r(this.a),!this.a&&(this.a=new at(J0,this,9,5)),fs(this.a,u(n,14));return}yh(this,t-Jn((on(),T2)),gn((r=u(_n(this,16),26),r||T2),t),n)},l.zh=function(){return on(),T2},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,179)&&(u(this.Cb,179).tb=null),au(this,null);return;case 2:Y8(this,null),R8(this,this.D);return;case 5:x7(this,null);return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A);return;case 8:bH(this,!0);return;case 9:!this.a&&(this.a=new at(J0,this,9,5)),_r(this.a);return}wh(this,t-Jn((on(),T2)),gn((n=u(_n(this,16),26),n||T2),t))},l.Gh=function(){var t,n;if(this.a)for(t=0,n=this.a.i;t>16==5?u(this.Cb,671):null}return ph(this,t-Jn((on(),Yg)),gn((s=u(_n(this,16),26),s||Yg),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 5:return this.Cb&&(r=(o=this.Db>>16,o>=0?Wit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,5,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Yg)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Yg)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 5:return Kl(this,null,5,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Yg)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Yg)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.d!=0;case 3:return!!this.b;case 4:return this.c!=null;case 5:return!!(this.Db>>16==5&&u(this.Cb,671))}return dh(this,t-Jn((on(),Yg)),gn((n=u(_n(this,16),26),n||Yg),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:au(this,Hr(n));return;case 2:Qre(this,u(n,19).a);return;case 3:zat(this,u(n,1940));return;case 4:Jre(this,Hr(n));return}yh(this,t-Jn((on(),Yg)),gn((r=u(_n(this,16),26),r||Yg),t),n)},l.zh=function(){return on(),Yg},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:au(this,null);return;case 2:Qre(this,0);return;case 3:zat(this,null);return;case 4:Jre(this,null);return}wh(this,t-Jn((on(),Yg)),gn((n=u(_n(this,16),26),n||Yg),t))},l.Ib=function(){var t;return t=this.c,t??this.zb},l.b=null,l.c=null,l.d=0,O(Tn,"EEnumLiteralImpl",573);var M3n=ss(Tn,"EFactoryImpl/InternalEDateTimeFormat");M(489,1,{2015:1},aM),O(Tn,"EFactoryImpl/1ClientInternalEDateTimeFormat",489),M(241,115,{105:1,92:1,90:1,87:1,56:1,108:1,49:1,97:1,241:1,114:1,115:1},uv),l.Sg=function(t,n,r){var s;return r=Kl(this,t,n,r),this.e&&we(t,170)&&(s=nz(this,this.e),s!=this.c&&(r=E7(this,s,r))),r},l._g=function(t,n,r){var s;switch(t){case 0:return this.f;case 1:return!this.d&&(this.d=new Bs(Eo,this,1)),this.d;case 2:return n?dz(this):this.c;case 3:return this.b;case 4:return this.e;case 5:return n?ose(this):this.a}return ph(this,t-Jn((on(),Ow)),gn((s=u(_n(this,16),26),s||Ow),t),n,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return Vnt(this,null,r);case 1:return!this.d&&(this.d=new Bs(Eo,this,1)),Xa(this.d,t,r);case 3:return qnt(this,null,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Ow)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Ow)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.f;case 1:return!!this.d&&this.d.i!=0;case 2:return!!this.c;case 3:return!!this.b;case 4:return!!this.e;case 5:return!!this.a}return dh(this,t-Jn((on(),Ow)),gn((n=u(_n(this,16),26),n||Ow),t))},l.sh=function(t,n){var r;switch(t){case 0:hst(this,u(n,87));return;case 1:!this.d&&(this.d=new Bs(Eo,this,1)),_r(this.d),!this.d&&(this.d=new Bs(Eo,this,1)),fs(this.d,u(n,14));return;case 3:J3e(this,u(n,87));return;case 4:b4e(this,u(n,836));return;case 5:I8(this,u(n,138));return}yh(this,t-Jn((on(),Ow)),gn((r=u(_n(this,16),26),r||Ow),t),n)},l.zh=function(){return on(),Ow},l.Bh=function(t){var n;switch(t){case 0:hst(this,null);return;case 1:!this.d&&(this.d=new Bs(Eo,this,1)),_r(this.d);return;case 3:J3e(this,null);return;case 4:b4e(this,null);return;case 5:I8(this,null);return}wh(this,t-Jn((on(),Ow)),gn((n=u(_n(this,16),26),n||Ow),t))},l.Ib=function(){var t;return t=new Fl(_f(this)),t.a+=" (expression: ",bae(this,t),t.a+=")",t.a};var FAe;O(Tn,"EGenericTypeImpl",241),M(1969,1964,yG),l.Xh=function(t,n){RUe(this,t,n)},l.lk=function(t,n){return RUe(this,this.gc(),t),n},l.pi=function(t){return s1(this.Gi(),t)},l.Zh=function(){return this.$h()},l.Gi=function(){return new G$e(this)},l.$h=function(){return this._h(0)},l._h=function(t){return this.Gi().Zc(t)},l.mk=function(t,n){return Xm(this,t,!0),n},l.ii=function(t,n){var r,s;return s=vse(this,n),r=this.Zc(t),r.Rb(s),s},l.ji=function(t,n){var r;Xm(this,n,!0),r=this.Zc(t),r.Rb(n)},O(Wi,"AbstractSequentialInternalEList",1969),M(486,1969,yG,OM),l.pi=function(t){return s1(this.Gi(),t)},l.Zh=function(){return this.b==null?(wg(),wg(),lN):this.Jk()},l.Gi=function(){return new cVe(this.a,this.b)},l.$h=function(){return this.b==null?(wg(),wg(),lN):this.Jk()},l._h=function(t){var n,r;if(this.b==null){if(t<0||t>1)throw J(new Do($C+t+", size=0"));return wg(),wg(),lN}for(r=this.Jk(),n=0;n0;)if(n=this.c[--this.d],(!this.e||n.Gj()!=AE||n.aj()!=0)&&(!this.Mk()||this.b.mh(n))){if(h=this.b.bh(n,this.Lk()),this.f=(ho(),u(n,66).Oj()),this.f||n.$j()){if(this.Lk()?(s=u(h,15),this.k=s):(s=u(h,69),this.k=this.j=s),we(this.k,54)?(this.o=this.k.gc(),this.n=this.o):this.p=this.j?this.j._h(this.k.gc()):this.k.Zc(this.k.gc()),this.p?rat(this,this.p):pat(this))return o=this.p?this.p.Ub():this.j?this.j.pi(--this.n):this.k.Xb(--this.n),this.f?(t=u(o,72),t.ak(),r=t.dd(),this.i=r):(r=o,this.i=r),this.g=-3,!0}else if(h!=null)return this.k=null,this.p=null,r=h,this.i=r,this.g=-2,!0}return this.k=null,this.p=null,this.g=-1,!1}else return o=this.p?this.p.Ub():this.j?this.j.pi(--this.n):this.k.Xb(--this.n),this.f?(t=u(o,72),t.ak(),r=t.dd(),this.i=r):(r=o,this.i=r),this.g=-3,!0}},l.Pb=function(){return aH(this)},l.Tb=function(){return this.a},l.Ub=function(){var t;if(this.g<-1||this.Sb())return--this.a,this.g=0,t=this.i,this.Sb(),t;throw J(new xc)},l.Vb=function(){return this.a-1},l.Qb=function(){throw J(new Fr)},l.Lk=function(){return!1},l.Wb=function(t){throw J(new Fr)},l.Mk=function(){return!0},l.a=0,l.d=0,l.f=!1,l.g=0,l.n=0,l.o=0;var lN;O(Wi,"EContentsEList/FeatureIteratorImpl",279),M(697,279,kG,kbe),l.Lk=function(){return!0},O(Wi,"EContentsEList/ResolvingFeatureIteratorImpl",697),M(1157,697,kG,_Ue),l.Mk=function(){return!1},O(Tn,"ENamedElementImpl/1/1",1157),M(1158,279,kG,TUe),l.Mk=function(){return!1},O(Tn,"ENamedElementImpl/1/2",1158),M(36,143,XI,Hm,Tre,oa,jre,N0,xf,_me,JXe,Cme,eQe,Xwe,tQe,Lme,nQe,Qwe,rQe,Sme,iQe,p_,dD,nre,Ame,sQe,Zwe,aQe),l._i=function(){return ume(this)},l.gj=function(){var t;return t=ume(this),t?t.zj():null},l.yi=function(t){return this.b==-1&&this.a&&(this.b=this.c.Xg(this.a.aj(),this.a.Gj())),this.c.Og(this.b,t)},l.Ai=function(){return this.c},l.hj=function(){var t;return t=ume(this),t?t.Kj():!1},l.b=-1,O(Tn,"ENotificationImpl",36),M(399,284,{105:1,92:1,90:1,147:1,191:1,56:1,59:1,108:1,472:1,49:1,97:1,150:1,399:1,284:1,114:1,115:1},Uee),l.Qg=function(t){return Xit(this,t)},l._g=function(t,n,r){var s,o,h;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),h=this.t,h>1||h==-1;case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,26):null;case 11:return!this.d&&(this.d=new qu(mu,this,11)),this.d;case 12:return!this.c&&(this.c=new at(Iw,this,12,10)),this.c;case 13:return!this.a&&(this.a=new jM(this,this)),this.a;case 14:return gl(this)}return ph(this,t-Jn((on(),Xg)),gn((s=u(_n(this,16),26),s||Xg),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?Xit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,10,r);case 12:return!this.c&&(this.c=new at(Iw,this,12,10)),ou(this.c,t,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Xg)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Xg)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 9:return zne(this,r);case 10:return Kl(this,null,10,r);case 11:return!this.d&&(this.d=new qu(mu,this,11)),Xa(this.d,t,r);case 12:return!this.c&&(this.c=new at(Iw,this,12,10)),Xa(this.c,t,r);case 14:return Xa(gl(this),t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Xg)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Xg)),t,r)},l.lh=function(t){var n,r,s;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,26));case 11:return!!this.d&&this.d.i!=0;case 12:return!!this.c&&this.c.i!=0;case 13:return!!this.a&&gl(this.a.a).i!=0&&!(this.b&&sse(this.b));case 14:return!!this.b&&sse(this.b)}return dh(this,t-Jn((on(),Xg)),gn((n=u(_n(this,16),26),n||Xg),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:au(this,Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:Wm(this,u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return;case 11:!this.d&&(this.d=new qu(mu,this,11)),_r(this.d),!this.d&&(this.d=new qu(mu,this,11)),fs(this.d,u(n,14));return;case 12:!this.c&&(this.c=new at(Iw,this,12,10)),_r(this.c),!this.c&&(this.c=new at(Iw,this,12,10)),fs(this.c,u(n,14));return;case 13:!this.a&&(this.a=new jM(this,this)),pC(this.a),!this.a&&(this.a=new jM(this,this)),fs(this.a,u(n,14));return;case 14:_r(gl(this)),fs(gl(this),u(n,14));return}yh(this,t-Jn((on(),Xg)),gn((r=u(_n(this,16),26),r||Xg),t),n)},l.zh=function(){return on(),Xg},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:au(this,null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:Wm(this,1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return;case 11:!this.d&&(this.d=new qu(mu,this,11)),_r(this.d);return;case 12:!this.c&&(this.c=new at(Iw,this,12,10)),_r(this.c);return;case 13:this.a&&pC(this.a);return;case 14:this.b&&_r(this.b);return}wh(this,t-Jn((on(),Xg)),gn((n=u(_n(this,16),26),n||Xg),t))},l.Gh=function(){var t,n;if(this.c)for(t=0,n=this.c.i;tv&&cs(t,v,null),s=0,r=new rr(gl(this.a));r.e!=r.i.gc();)n=u(pr(r),87),h=(d=n.c,d||(on(),Z1)),cs(t,s++,h);return t},l.Yi=function(){var t,n,r,s,o;for(o=new bg,o.a+="[",t=gl(this.a),n=0,s=gl(this.a).i;n1);case 5:return x_(this,t,n,r,s,this.i-u(r,15).gc()>0);default:return new N0(this.e,t,this.c,n,r,s,!0)}},l.ij=function(){return!0},l.fj=function(){return sse(this)},l.Xj=function(){_r(this)},O(Tn,"EOperationImpl/2",1341),M(498,1,{1938:1,498:1},zqe),O(Tn,"EPackageImpl/1",498),M(16,85,Zo,at),l.zk=function(){return this.d},l.Ak=function(){return this.b},l.Dk=function(){return!0},l.b=0,O(Wi,"EObjectContainmentWithInverseEList",16),M(353,16,Zo,S6),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectContainmentWithInverseEList/Resolving",353),M(298,353,Zo,Pm),l.ci=function(){this.a.tb=null},O(Tn,"EPackageImpl/2",298),M(1228,1,{},YB),O(Tn,"EPackageImpl/3",1228),M(718,43,y4,Epe),l._b=function(t){return fa(t)?rre(this,t):!!$o(this.f,t)},O(Tn,"EPackageRegistryImpl",718),M(509,284,{105:1,92:1,90:1,147:1,191:1,56:1,2017:1,108:1,472:1,49:1,97:1,150:1,509:1,284:1,114:1,115:1},Wee),l.Qg=function(t){return Qit(this,t)},l._g=function(t,n,r){var s,o,h;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),h=this.t,h>1||h==-1;case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,59):null}return ph(this,t-Jn((on(),Ky)),gn((s=u(_n(this,16),26),s||Ky),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?Qit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,10,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Ky)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Ky)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 9:return zne(this,r);case 10:return Kl(this,null,10,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Ky)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Ky)),t,r)},l.lh=function(t){var n,r,s;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,59))}return dh(this,t-Jn((on(),Ky)),gn((n=u(_n(this,16),26),n||Ky),t))},l.zh=function(){return on(),Ky},O(Tn,"EParameterImpl",509),M(99,449,{105:1,92:1,90:1,147:1,191:1,56:1,18:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,99:1,449:1,284:1,114:1,115:1,677:1},Cbe),l._g=function(t,n,r){var s,o,h,d;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),d=this.t,d>1||d==-1;case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return Mn(),!!(this.Bb&Sf);case 11:return Mn(),!!(this.Bb&ky);case 12:return Mn(),!!(this.Bb&dy);case 13:return this.j;case 14:return b7(this);case 15:return Mn(),!!(this.Bb&Zu);case 16:return Mn(),!!(this.Bb&Ed);case 17:return Fm(this);case 18:return Mn(),!!(this.Bb&_c);case 19:return Mn(),h=go(this),!!(h&&h.Bb&_c);case 20:return Mn(),!!(this.Bb&so);case 21:return n?go(this):this.b;case 22:return n?uye(this):AZe(this);case 23:return!this.a&&(this.a=new $3(Vy,this,23)),this.a}return ph(this,t-Jn((on(),n5)),gn((s=u(_n(this,16),26),s||n5),t),n,r)},l.lh=function(t){var n,r,s,o;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return o=this.t,o>1||o==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return(this.Bb&Sf)==0;case 11:return(this.Bb&ky)!=0;case 12:return(this.Bb&dy)!=0;case 13:return this.j!=null;case 14:return b7(this)!=null;case 15:return(this.Bb&Zu)!=0;case 16:return(this.Bb&Ed)!=0;case 17:return!!Fm(this);case 18:return(this.Bb&_c)!=0;case 19:return s=go(this),!!s&&(s.Bb&_c)!=0;case 20:return(this.Bb&so)==0;case 21:return!!this.b;case 22:return!!AZe(this);case 23:return!!this.a&&this.a.i!=0}return dh(this,t-Jn((on(),n5)),gn((n=u(_n(this,16),26),n||n5),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:bre(this,Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:Wm(this,u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return;case 10:J8(this,It(Mt(n)));return;case 11:n7(this,It(Mt(n)));return;case 12:e7(this,It(Mt(n)));return;case 13:N2e(this,Hr(n));return;case 15:t7(this,It(Mt(n)));return;case 16:r7(this,It(Mt(n)));return;case 18:Men(this,It(Mt(n)));return;case 20:$ye(this,It(Mt(n)));return;case 21:jme(this,u(n,18));return;case 23:!this.a&&(this.a=new $3(Vy,this,23)),_r(this.a),!this.a&&(this.a=new $3(Vy,this,23)),fs(this.a,u(n,14));return}yh(this,t-Jn((on(),n5)),gn((r=u(_n(this,16),26),r||n5),t),n)},l.zh=function(){return on(),n5},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,88)&&iy(dl(u(this.Cb,88)),4),au(this,null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:Wm(this,1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return;case 10:J8(this,!0);return;case 11:n7(this,!1);return;case 12:e7(this,!1);return;case 13:this.i=null,X$(this,null);return;case 15:t7(this,!1);return;case 16:r7(this,!1);return;case 18:jye(this,!1),we(this.Cb,88)&&iy(dl(u(this.Cb,88)),2);return;case 20:$ye(this,!0);return;case 21:jme(this,null);return;case 23:!this.a&&(this.a=new $3(Vy,this,23)),_r(this.a);return}wh(this,t-Jn((on(),n5)),gn((n=u(_n(this,16),26),n||n5),t))},l.Gh=function(){uye(this),m8(Po((Yu(),Oa),this)),$h(this),this.Bb|=1},l.Lj=function(){return go(this)},l.qk=function(){var t;return t=go(this),!!t&&(t.Bb&_c)!=0},l.rk=function(){return(this.Bb&_c)!=0},l.sk=function(){return(this.Bb&so)!=0},l.nk=function(t,n){return this.c=null,Iye(this,t,n)},l.Ib=function(){var t;return this.Db&64?lz(this):(t=new Ph(lz(this)),t.a+=" (containment: ",vg(t,(this.Bb&_c)!=0),t.a+=", resolveProxies: ",vg(t,(this.Bb&so)!=0),t.a+=")",t.a)},O(Tn,"EReferenceImpl",99),M(548,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,548:1,114:1,115:1},UZ),l.Fb=function(t){return this===t},l.cd=function(){return this.b},l.dd=function(){return this.c},l.Hb=function(){return xv(this)},l.Uh=function(t){PQt(this,Hr(t))},l.ed=function(t){return EQt(this,Hr(t))},l._g=function(t,n,r){var s;switch(t){case 0:return this.b;case 1:return this.c}return ph(this,t-Jn((on(),oo)),gn((s=u(_n(this,16),26),s||oo),t),n,r)},l.lh=function(t){var n;switch(t){case 0:return this.b!=null;case 1:return this.c!=null}return dh(this,t-Jn((on(),oo)),gn((n=u(_n(this,16),26),n||oo),t))},l.sh=function(t,n){var r;switch(t){case 0:BQt(this,Hr(n));return;case 1:Bme(this,Hr(n));return}yh(this,t-Jn((on(),oo)),gn((r=u(_n(this,16),26),r||oo),t),n)},l.zh=function(){return on(),oo},l.Bh=function(t){var n;switch(t){case 0:Pme(this,null);return;case 1:Bme(this,null);return}wh(this,t-Jn((on(),oo)),gn((n=u(_n(this,16),26),n||oo),t))},l.Sh=function(){var t;return this.a==-1&&(t=this.b,this.a=t==null?0:Ig(t)),this.a},l.Th=function(t){this.a=t},l.Ib=function(){var t;return this.Db&64?_f(this):(t=new Ph(_f(this)),t.a+=" (key: ",To(t,this.b),t.a+=", value: ",To(t,this.c),t.a+=")",t.a)},l.a=-1,l.b=null,l.c=null;var wc=O(Tn,"EStringToStringMapEntryImpl",548),b4t=ss(Wi,"FeatureMap/Entry/Internal");M(565,1,xG),l.Ok=function(t){return this.Pk(u(t,49))},l.Pk=function(t){return this.Ok(t)},l.Fb=function(t){var n,r;return this===t?!0:we(t,72)?(n=u(t,72),n.ak()==this.c?(r=this.dd(),r==null?n.dd()==null:Ci(r,n.dd())):!1):!1},l.ak=function(){return this.c},l.Hb=function(){var t;return t=this.dd(),Xi(this.c)^(t==null?0:Xi(t))},l.Ib=function(){var t,n;return t=this.c,n=Gl(t.Hj()).Ph(),t.ne(),(n!=null&&n.length!=0?n+":"+t.ne():t.ne())+"="+this.dd()},O(Tn,"EStructuralFeatureImpl/BasicFeatureMapEntry",565),M(776,565,xG,Pbe),l.Pk=function(t){return new Pbe(this.c,t)},l.dd=function(){return this.a},l.Qk=function(t,n,r){return Zin(this,t,this.a,n,r)},l.Rk=function(t,n,r){return Jin(this,t,this.a,n,r)},O(Tn,"EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry",776),M(1314,1,{},Gqe),l.Pj=function(t,n,r,s,o){var h;return h=u(A8(t,this.b),215),h.nl(this.a).Wj(s)},l.Qj=function(t,n,r,s,o){var h;return h=u(A8(t,this.b),215),h.el(this.a,s,o)},l.Rj=function(t,n,r,s,o){var h;return h=u(A8(t,this.b),215),h.fl(this.a,s,o)},l.Sj=function(t,n,r){var s;return s=u(A8(t,this.b),215),s.nl(this.a).fj()},l.Tj=function(t,n,r,s){var o;o=u(A8(t,this.b),215),o.nl(this.a).Wb(s)},l.Uj=function(t,n,r){return u(A8(t,this.b),215).nl(this.a)},l.Vj=function(t,n,r){var s;s=u(A8(t,this.b),215),s.nl(this.a).Xj()},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator",1314),M(89,1,{},yg,K2,xg,Q2),l.Pj=function(t,n,r,s,o){var h;if(h=n.Ch(r),h==null&&n.Dh(r,h=Ez(this,t)),!o)switch(this.e){case 50:case 41:return u(h,589).sj();case 40:return u(h,215).kl()}return h},l.Qj=function(t,n,r,s,o){var h,d;return d=n.Ch(r),d==null&&n.Dh(r,d=Ez(this,t)),h=u(d,69).lk(s,o),h},l.Rj=function(t,n,r,s,o){var h;return h=n.Ch(r),h!=null&&(o=u(h,69).mk(s,o)),o},l.Sj=function(t,n,r){var s;return s=n.Ch(r),s!=null&&u(s,76).fj()},l.Tj=function(t,n,r,s){var o;o=u(n.Ch(r),76),!o&&n.Dh(r,o=Ez(this,t)),o.Wb(s)},l.Uj=function(t,n,r){var s,o;return o=n.Ch(r),o==null&&n.Dh(r,o=Ez(this,t)),we(o,76)?u(o,76):(s=u(n.Ch(r),15),new z$e(s))},l.Vj=function(t,n,r){var s;s=u(n.Ch(r),76),!s&&n.Dh(r,s=Ez(this,t)),s.Xj()},l.b=0,l.e=0,O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateMany",89),M(504,1,{}),l.Qj=function(t,n,r,s,o){throw J(new Fr)},l.Rj=function(t,n,r,s,o){throw J(new Fr)},l.Uj=function(t,n,r){return new FYe(this,t,n,r)};var b0;O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingle",504),M(1331,1,Qce,FYe),l.Wj=function(t){return this.a.Pj(this.c,this.d,this.b,t,!0)},l.fj=function(){return this.a.Sj(this.c,this.d,this.b)},l.Wb=function(t){this.a.Tj(this.c,this.d,this.b,t)},l.Xj=function(){this.a.Vj(this.c,this.d,this.b)},l.b=0,O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingle/1",1331),M(769,504,{},vwe),l.Pj=function(t,n,r,s,o){return rae(t,t.eh(),t.Vg())==this.b?this.sk()&&s?Hse(t):t.eh():null},l.Qj=function(t,n,r,s,o){var h,d;return t.eh()&&(o=(h=t.Vg(),h>=0?t.Qg(o):t.eh().ih(t,-1-h,null,o))),d=Ji(t.Tg(),this.e),t.Sg(s,d,o)},l.Rj=function(t,n,r,s,o){var h;return h=Ji(t.Tg(),this.e),t.Sg(null,h,o)},l.Sj=function(t,n,r){var s;return s=Ji(t.Tg(),this.e),!!t.eh()&&t.Vg()==s},l.Tj=function(t,n,r,s){var o,h,d,v,x;if(s!=null&&!oae(this.a,s))throw J(new Wx(EG+(we(s,56)?Q3e(u(s,56).Tg()):kme(pl(s)))+TG+this.a+"'"));if(o=t.eh(),d=Ji(t.Tg(),this.e),je(s)!==je(o)||t.Vg()!=d&&s!=null){if(o7(t,u(s,56)))throw J(new Ln(FC+t.Ib()));x=null,o&&(x=(h=t.Vg(),h>=0?t.Qg(x):t.eh().ih(t,-1-h,null,x))),v=u(s,49),v&&(x=v.gh(t,Ji(v.Tg(),this.b),null,x)),x=t.Sg(v,d,x),x&&x.Fi()}else t.Lg()&&t.Mg()&&_i(t,new oa(t,1,d,s,s))},l.Vj=function(t,n,r){var s,o,h,d;s=t.eh(),s?(d=(o=t.Vg(),o>=0?t.Qg(null):t.eh().ih(t,-1-o,null,null)),h=Ji(t.Tg(),this.e),d=t.Sg(null,h,d),d&&d.Fi()):t.Lg()&&t.Mg()&&_i(t,new p_(t,1,this.e,null,null))},l.sk=function(){return!1},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainer",769),M(1315,769,{},MWe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving",1315),M(563,504,{}),l.Pj=function(t,n,r,s,o){var h;return h=n.Ch(r),h==null?this.b:je(h)===je(b0)?null:h},l.Sj=function(t,n,r){var s;return s=n.Ch(r),s!=null&&(je(s)===je(b0)||!Ci(s,this.b))},l.Tj=function(t,n,r,s){var o,h;t.Lg()&&t.Mg()?(o=(h=n.Ch(r),h==null?this.b:je(h)===je(b0)?null:h),s==null?this.c!=null?(n.Dh(r,null),s=this.b):this.b!=null?n.Dh(r,b0):n.Dh(r,null):(this.Sk(s),n.Dh(r,s)),_i(t,this.d.Tk(t,1,this.e,o,s))):s==null?this.c!=null?n.Dh(r,null):this.b!=null?n.Dh(r,b0):n.Dh(r,null):(this.Sk(s),n.Dh(r,s))},l.Vj=function(t,n,r){var s,o;t.Lg()&&t.Mg()?(s=(o=n.Ch(r),o==null?this.b:je(o)===je(b0)?null:o),n.Eh(r),_i(t,this.d.Tk(t,1,this.e,s,this.b))):n.Eh(r)},l.Sk=function(t){throw J(new Z$e)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData",563),M(M4,1,{},XB),l.Tk=function(t,n,r,s,o){return new p_(t,n,r,s,o)},l.Uk=function(t,n,r,s,o,h){return new nre(t,n,r,s,o,h)};var jAe,$Ae,HAe,zAe,GAe,qAe,VAe,_fe,UAe;O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator",M4),M(1332,M4,{},QB),l.Tk=function(t,n,r,s,o){return new Zwe(t,n,r,It(Mt(s)),It(Mt(o)))},l.Uk=function(t,n,r,s,o,h){return new aQe(t,n,r,It(Mt(s)),It(Mt(o)),h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1",1332),M(1333,M4,{},ZB),l.Tk=function(t,n,r,s,o){return new _me(t,n,r,u(s,217).a,u(o,217).a)},l.Uk=function(t,n,r,s,o,h){return new JXe(t,n,r,u(s,217).a,u(o,217).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2",1333),M(1334,M4,{},_x),l.Tk=function(t,n,r,s,o){return new Cme(t,n,r,u(s,172).a,u(o,172).a)},l.Uk=function(t,n,r,s,o,h){return new eQe(t,n,r,u(s,172).a,u(o,172).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3",1334),M(1335,M4,{},JB),l.Tk=function(t,n,r,s,o){return new Xwe(t,n,r,Ue(ft(s)),Ue(ft(o)))},l.Uk=function(t,n,r,s,o,h){return new tQe(t,n,r,Ue(ft(s)),Ue(ft(o)),h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4",1335),M(1336,M4,{},eR),l.Tk=function(t,n,r,s,o){return new Lme(t,n,r,u(s,155).a,u(o,155).a)},l.Uk=function(t,n,r,s,o,h){return new nQe(t,n,r,u(s,155).a,u(o,155).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5",1336),M(1337,M4,{},WZ),l.Tk=function(t,n,r,s,o){return new Qwe(t,n,r,u(s,19).a,u(o,19).a)},l.Uk=function(t,n,r,s,o,h){return new rQe(t,n,r,u(s,19).a,u(o,19).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6",1337),M(1338,M4,{},Cx),l.Tk=function(t,n,r,s,o){return new Sme(t,n,r,u(s,162).a,u(o,162).a)},l.Uk=function(t,n,r,s,o,h){return new iQe(t,n,r,u(s,162).a,u(o,162).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7",1338),M(1339,M4,{},Sx),l.Tk=function(t,n,r,s,o){return new Ame(t,n,r,u(s,184).a,u(o,184).a)},l.Uk=function(t,n,r,s,o,h){return new sQe(t,n,r,u(s,184).a,u(o,184).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8",1339),M(1317,563,{},jYe),l.Sk=function(t){if(!this.a.wj(t))throw J(new Wx(EG+pl(t)+TG+this.a+"'"))},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic",1317),M(1318,563,{},SKe),l.Sk=function(t){},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic",1318),M(770,563,{}),l.Sj=function(t,n,r){var s;return s=n.Ch(r),s!=null},l.Tj=function(t,n,r,s){var o,h;t.Lg()&&t.Mg()?(o=!0,h=n.Ch(r),h==null?(o=!1,h=this.b):je(h)===je(b0)&&(h=null),s==null?this.c!=null?(n.Dh(r,null),s=this.b):n.Dh(r,b0):(this.Sk(s),n.Dh(r,s)),_i(t,this.d.Uk(t,1,this.e,h,s,!o))):s==null?this.c!=null?n.Dh(r,null):n.Dh(r,b0):(this.Sk(s),n.Dh(r,s))},l.Vj=function(t,n,r){var s,o;t.Lg()&&t.Mg()?(s=!0,o=n.Ch(r),o==null?(s=!1,o=this.b):je(o)===je(b0)&&(o=null),n.Eh(r),_i(t,this.d.Uk(t,2,this.e,o,this.b,s))):n.Eh(r)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable",770),M(1319,770,{},$Ye),l.Sk=function(t){if(!this.a.wj(t))throw J(new Wx(EG+pl(t)+TG+this.a+"'"))},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic",1319),M(1320,770,{},AKe),l.Sk=function(t){},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic",1320),M(398,504,{},Mj),l.Pj=function(t,n,r,s,o){var h,d,v,x,_;if(_=n.Ch(r),this.Kj()&&je(_)===je(b0))return null;if(this.sk()&&s&&_!=null){if(v=u(_,49),v.kh()&&(x=Up(t,v),v!=x)){if(!oae(this.a,x))throw J(new Wx(EG+pl(x)+TG+this.a+"'"));n.Dh(r,_=x),this.rk()&&(h=u(x,49),d=v.ih(t,this.b?Ji(v.Tg(),this.b):-1-Ji(t.Tg(),this.e),null,null),!h.eh()&&(d=h.gh(t,this.b?Ji(h.Tg(),this.b):-1-Ji(t.Tg(),this.e),null,d)),d&&d.Fi()),t.Lg()&&t.Mg()&&_i(t,new p_(t,9,this.e,v,x))}return _}else return _},l.Qj=function(t,n,r,s,o){var h,d;return d=n.Ch(r),je(d)===je(b0)&&(d=null),n.Dh(r,s),this.bj()?je(d)!==je(s)&&d!=null&&(h=u(d,49),o=h.ih(t,Ji(h.Tg(),this.b),null,o)):this.rk()&&d!=null&&(o=u(d,49).ih(t,-1-Ji(t.Tg(),this.e),null,o)),t.Lg()&&t.Mg()&&(!o&&(o=new _p(4)),o.Ei(new p_(t,1,this.e,d,s))),o},l.Rj=function(t,n,r,s,o){var h;return h=n.Ch(r),je(h)===je(b0)&&(h=null),n.Eh(r),t.Lg()&&t.Mg()&&(!o&&(o=new _p(4)),this.Kj()?o.Ei(new p_(t,2,this.e,h,null)):o.Ei(new p_(t,1,this.e,h,null))),o},l.Sj=function(t,n,r){var s;return s=n.Ch(r),s!=null},l.Tj=function(t,n,r,s){var o,h,d,v,x;if(s!=null&&!oae(this.a,s))throw J(new Wx(EG+(we(s,56)?Q3e(u(s,56).Tg()):kme(pl(s)))+TG+this.a+"'"));x=n.Ch(r),v=x!=null,this.Kj()&&je(x)===je(b0)&&(x=null),d=null,this.bj()?je(x)!==je(s)&&(x!=null&&(o=u(x,49),d=o.ih(t,Ji(o.Tg(),this.b),null,d)),s!=null&&(o=u(s,49),d=o.gh(t,Ji(o.Tg(),this.b),null,d))):this.rk()&&je(x)!==je(s)&&(x!=null&&(d=u(x,49).ih(t,-1-Ji(t.Tg(),this.e),null,d)),s!=null&&(d=u(s,49).gh(t,-1-Ji(t.Tg(),this.e),null,d))),s==null&&this.Kj()?n.Dh(r,b0):n.Dh(r,s),t.Lg()&&t.Mg()?(h=new nre(t,1,this.e,x,s,this.Kj()&&!v),d?(d.Ei(h),d.Fi()):_i(t,h)):d&&d.Fi()},l.Vj=function(t,n,r){var s,o,h,d,v;v=n.Ch(r),d=v!=null,this.Kj()&&je(v)===je(b0)&&(v=null),h=null,v!=null&&(this.bj()?(s=u(v,49),h=s.ih(t,Ji(s.Tg(),this.b),null,h)):this.rk()&&(h=u(v,49).ih(t,-1-Ji(t.Tg(),this.e),null,h))),n.Eh(r),t.Lg()&&t.Mg()?(o=new nre(t,this.Kj()?2:1,this.e,v,null,d),h?(h.Ei(o),h.Fi()):_i(t,o)):h&&h.Fi()},l.bj=function(){return!1},l.rk=function(){return!1},l.sk=function(){return!1},l.Kj=function(){return!1},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObject",398),M(564,398,{},ine),l.rk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment",564),M(1323,564,{},CUe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving",1323),M(772,564,{},xbe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable",772),M(1325,772,{},SUe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving",1325),M(640,564,{},wne),l.bj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse",640),M(1324,640,{},DWe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving",1324),M(773,640,{},cve),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable",773),M(1326,773,{},IWe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving",1326),M(641,398,{},Ebe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving",641),M(1327,641,{},AUe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable",1327),M(774,641,{},ave),l.bj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse",774),M(1328,774,{},OWe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable",1328),M(1321,398,{},LUe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable",1321),M(771,398,{},ove),l.bj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse",771),M(1322,771,{},NWe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable",1322),M(775,565,xG,rwe),l.Pk=function(t){return new rwe(this.a,this.c,t)},l.dd=function(){return this.b},l.Qk=function(t,n,r){return Jnn(this,t,this.b,r)},l.Rk=function(t,n,r){return ern(this,t,this.b,r)},O(Tn,"EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry",775),M(1329,1,Qce,z$e),l.Wj=function(t){return this.a},l.fj=function(){return we(this.a,95)?u(this.a,95).fj():!this.a.dc()},l.Wb=function(t){this.a.$b(),this.a.Gc(u(t,15))},l.Xj=function(){we(this.a,95)?u(this.a,95).Xj():this.a.$b()},O(Tn,"EStructuralFeatureImpl/SettingMany",1329),M(1330,565,xG,KQe),l.Ok=function(t){return new one((Fi(),JS),this.b.Ih(this.a,t))},l.dd=function(){return null},l.Qk=function(t,n,r){return r},l.Rk=function(t,n,r){return r},O(Tn,"EStructuralFeatureImpl/SimpleContentFeatureMapEntry",1330),M(642,565,xG,one),l.Ok=function(t){return new one(this.c,t)},l.dd=function(){return this.a},l.Qk=function(t,n,r){return r},l.Rk=function(t,n,r){return r},O(Tn,"EStructuralFeatureImpl/SimpleFeatureMapEntry",642),M(391,497,Od,gm),l.ri=function(t){return Me(tf,yt,26,t,0,1)},l.ni=function(){return!1},O(Tn,"ESuperAdapter/1",391),M(444,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,836:1,49:1,97:1,150:1,444:1,114:1,115:1},RL),l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return!this.a&&(this.a=new h_(this,Eo,this)),this.a}return ph(this,t-Jn((on(),Nw)),gn((s=u(_n(this,16),26),s||Nw),t),n,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 2:return!this.a&&(this.a=new h_(this,Eo,this)),Xa(this.a,t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Nw)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Nw)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return!!this.a&&this.a.i!=0}return dh(this,t-Jn((on(),Nw)),gn((n=u(_n(this,16),26),n||Nw),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:au(this,Hr(n));return;case 2:!this.a&&(this.a=new h_(this,Eo,this)),_r(this.a),!this.a&&(this.a=new h_(this,Eo,this)),fs(this.a,u(n,14));return}yh(this,t-Jn((on(),Nw)),gn((r=u(_n(this,16),26),r||Nw),t),n)},l.zh=function(){return on(),Nw},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:au(this,null);return;case 2:!this.a&&(this.a=new h_(this,Eo,this)),_r(this.a);return}wh(this,t-Jn((on(),Nw)),gn((n=u(_n(this,16),26),n||Nw),t))},O(Tn,"ETypeParameterImpl",444),M(445,85,Zo,h_),l.cj=function(t,n){return efn(this,u(t,87),n)},l.dj=function(t,n){return tfn(this,u(t,87),n)},O(Tn,"ETypeParameterImpl/1",445),M(634,43,y4,Kee),l.ec=function(){return new rF(this)},O(Tn,"ETypeParameterImpl/2",634),M(556,H1,Xu,rF),l.Fc=function(t){return tWe(this,u(t,87))},l.Gc=function(t){var n,r,s;for(s=!1,r=t.Kc();r.Ob();)n=u(r.Pb(),87),Si(this.a,n,"")==null&&(s=!0);return s},l.$b=function(){sl(this.a)},l.Hc=function(t){return Il(this.a,t)},l.Kc=function(){var t;return t=new ob(new dg(this.a).a),new iF(t)},l.Mc=function(t){return HZe(this,t)},l.gc=function(){return MT(this.a)},O(Tn,"ETypeParameterImpl/2/1",556),M(557,1,ga,iF),l.Nb=function(t){La(this,t)},l.Pb=function(){return u($v(this.a).cd(),87)},l.Ob=function(){return this.a.b},l.Qb=function(){wJe(this.a)},O(Tn,"ETypeParameterImpl/2/1/1",557),M(1276,43,y4,IHe),l._b=function(t){return fa(t)?rre(this,t):!!$o(this.f,t)},l.xc=function(t){var n,r;return n=fa(t)?Uc(this,t):hc($o(this.f,t)),we(n,837)?(r=u(n,837),n=r._j(),Si(this,u(t,235),n),n):n??(t==null?(hte(),w4t):null)},O(Tn,"EValidatorRegistryImpl",1276),M(1313,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,1941:1,49:1,97:1,150:1,114:1,115:1},KZ),l.Ih=function(t,n){switch(t.yj()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return n==null?null:Qo(n);case 25:return cin(n);case 27:return _rn(n);case 28:return Crn(n);case 29:return n==null?null:PVe(WS[0],u(n,199));case 41:return n==null?"":Cp(u(n,290));case 42:return Qo(n);case 50:return Hr(n);default:throw J(new Ln($7+t.ne()+dw))}},l.Jh=function(t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le;switch(t.G==-1&&(t.G=(z=Gl(t),z?Dg(z.Mh(),t):-1)),t.G){case 0:return r=new Vee,r;case 1:return n=new KB,n;case 2:return s=new YL,s;case 4:return o=new sF,o;case 5:return h=new DHe,h;case 6:return d=new tHe,d;case 7:return v=new RR,v;case 10:return _=new Ex,_;case 11:return L=new Uee,L;case 12:return P=new rXe,P;case 13:return q=new Wee,q;case 14:return W=new Cbe,W;case 17:return X=new UZ,X;case 18:return x=new uv,x;case 19:return le=new RL,le;default:throw J(new Ln(Pce+t.zb+dw))}},l.Kh=function(t,n){switch(t.yj()){case 20:return n==null?null:new Vpe(n);case 21:return n==null?null:new Ip(n);case 23:case 22:return n==null?null:dcn(n);case 26:case 24:return n==null?null:xD(Wl(n,-128,127)<<24>>24);case 25:return T0n(n);case 27:return Xun(n);case 28:return Qun(n);case 29:return mfn(n);case 32:case 31:return n==null?null:ry(n);case 38:case 37:return n==null?null:new hpe(n);case 40:case 39:return n==null?null:ct(Wl(n,$a,Ei));case 41:return null;case 42:return n==null,null;case 44:case 43:return n==null?null:lb(xz(n));case 49:case 48:return n==null?null:Z8(Wl(n,_G,32767)<<16>>16);case 50:return n;default:throw J(new Ln($7+t.ne()+dw))}},O(Tn,"EcoreFactoryImpl",1313),M(547,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,1939:1,49:1,97:1,150:1,179:1,547:1,114:1,115:1,675:1},yYe),l.gb=!1,l.hb=!1;var WAe,v4t=!1;O(Tn,"EcorePackageImpl",547),M(1184,1,{837:1},YZ),l._j=function(){return sUe(),m4t},O(Tn,"EcorePackageImpl/1",1184),M(1193,1,li,XZ),l.wj=function(t){return we(t,147)},l.xj=function(t){return Me(aN,yt,147,t,0,1)},O(Tn,"EcorePackageImpl/10",1193),M(1194,1,li,QZ),l.wj=function(t){return we(t,191)},l.xj=function(t){return Me(bfe,yt,191,t,0,1)},O(Tn,"EcorePackageImpl/11",1194),M(1195,1,li,ZZ),l.wj=function(t){return we(t,56)},l.xj=function(t){return Me(y2,yt,56,t,0,1)},O(Tn,"EcorePackageImpl/12",1195),M(1196,1,li,JZ),l.wj=function(t){return we(t,399)},l.xj=function(t){return Me(nf,v8e,59,t,0,1)},O(Tn,"EcorePackageImpl/13",1196),M(1197,1,li,eJ),l.wj=function(t){return we(t,235)},l.xj=function(t){return Me(h1,yt,235,t,0,1)},O(Tn,"EcorePackageImpl/14",1197),M(1198,1,li,tJ),l.wj=function(t){return we(t,509)},l.xj=function(t){return Me(Iw,yt,2017,t,0,1)},O(Tn,"EcorePackageImpl/15",1198),M(1199,1,li,tR),l.wj=function(t){return we(t,99)},l.xj=function(t){return Me(Uy,L4,18,t,0,1)},O(Tn,"EcorePackageImpl/16",1199),M(1200,1,li,nJ),l.wj=function(t){return we(t,170)},l.xj=function(t){return Me(ju,L4,170,t,0,1)},O(Tn,"EcorePackageImpl/17",1200),M(1201,1,li,rJ),l.wj=function(t){return we(t,472)},l.xj=function(t){return Me(qy,yt,472,t,0,1)},O(Tn,"EcorePackageImpl/18",1201),M(1202,1,li,iJ),l.wj=function(t){return we(t,548)},l.xj=function(t){return Me(wc,wdt,548,t,0,1)},O(Tn,"EcorePackageImpl/19",1202),M(1185,1,li,nR),l.wj=function(t){return we(t,322)},l.xj=function(t){return Me(Vy,L4,34,t,0,1)},O(Tn,"EcorePackageImpl/2",1185),M(1203,1,li,Ax),l.wj=function(t){return we(t,241)},l.xj=function(t){return Me(Eo,Pdt,87,t,0,1)},O(Tn,"EcorePackageImpl/20",1203),M(1204,1,li,z9),l.wj=function(t){return we(t,444)},l.xj=function(t){return Me(mu,yt,836,t,0,1)},O(Tn,"EcorePackageImpl/21",1204),M(1205,1,li,rR),l.wj=function(t){return Cm(t)},l.xj=function(t){return Me(Us,Qe,476,t,8,1)},O(Tn,"EcorePackageImpl/22",1205),M(1206,1,li,sJ),l.wj=function(t){return we(t,190)},l.xj=function(t){return Me(el,Qe,190,t,0,2)},O(Tn,"EcorePackageImpl/23",1206),M(1207,1,li,iR),l.wj=function(t){return we(t,217)},l.xj=function(t){return Me(mk,Qe,217,t,0,1)},O(Tn,"EcorePackageImpl/24",1207),M(1208,1,li,sR),l.wj=function(t){return we(t,172)},l.xj=function(t){return Me(XC,Qe,172,t,0,1)},O(Tn,"EcorePackageImpl/25",1208),M(1209,1,li,aJ),l.wj=function(t){return we(t,199)},l.xj=function(t){return Me(FG,Qe,199,t,0,1)},O(Tn,"EcorePackageImpl/26",1209),M(1210,1,li,G9),l.wj=function(t){return!1},l.xj=function(t){return Me(hLe,yt,2110,t,0,1)},O(Tn,"EcorePackageImpl/27",1210),M(1211,1,li,pm),l.wj=function(t){return Sm(t)},l.xj=function(t){return Me(ma,Qe,333,t,7,1)},O(Tn,"EcorePackageImpl/28",1211),M(1212,1,li,aR),l.wj=function(t){return we(t,58)},l.xj=function(t){return Me(CAe,gy,58,t,0,1)},O(Tn,"EcorePackageImpl/29",1212),M(1186,1,li,oR),l.wj=function(t){return we(t,510)},l.xj=function(t){return Me(ti,{3:1,4:1,5:1,1934:1},590,t,0,1)},O(Tn,"EcorePackageImpl/3",1186),M(1213,1,li,oJ),l.wj=function(t){return we(t,573)},l.xj=function(t){return Me(LAe,yt,1940,t,0,1)},O(Tn,"EcorePackageImpl/30",1213),M(1214,1,li,cJ),l.wj=function(t){return we(t,153)},l.xj=function(t){return Me(ZAe,gy,153,t,0,1)},O(Tn,"EcorePackageImpl/31",1214),M(1215,1,li,q9),l.wj=function(t){return we(t,72)},l.xj=function(t){return Me(eU,qdt,72,t,0,1)},O(Tn,"EcorePackageImpl/32",1215),M(1216,1,li,cR),l.wj=function(t){return we(t,155)},l.xj=function(t){return Me(W7,Qe,155,t,0,1)},O(Tn,"EcorePackageImpl/33",1216),M(1217,1,li,uR),l.wj=function(t){return we(t,19)},l.xj=function(t){return Me(Za,Qe,19,t,0,1)},O(Tn,"EcorePackageImpl/34",1217),M(1218,1,li,kc),l.wj=function(t){return we(t,290)},l.xj=function(t){return Me(M8e,yt,290,t,0,1)},O(Tn,"EcorePackageImpl/35",1218),M(1219,1,li,uJ),l.wj=function(t){return we(t,162)},l.xj=function(t){return Me(pw,Qe,162,t,0,1)},O(Tn,"EcorePackageImpl/36",1219),M(1220,1,li,lR),l.wj=function(t){return we(t,83)},l.xj=function(t){return Me(D8e,yt,83,t,0,1)},O(Tn,"EcorePackageImpl/37",1220),M(1221,1,li,V9),l.wj=function(t){return we(t,591)},l.xj=function(t){return Me(KAe,yt,591,t,0,1)},O(Tn,"EcorePackageImpl/38",1221),M(1222,1,li,lJ),l.wj=function(t){return!1},l.xj=function(t){return Me(fLe,yt,2111,t,0,1)},O(Tn,"EcorePackageImpl/39",1222),M(1187,1,li,hJ),l.wj=function(t){return we(t,88)},l.xj=function(t){return Me(tf,yt,26,t,0,1)},O(Tn,"EcorePackageImpl/4",1187),M(1223,1,li,U9),l.wj=function(t){return we(t,184)},l.xj=function(t){return Me(bw,Qe,184,t,0,1)},O(Tn,"EcorePackageImpl/40",1223),M(1224,1,li,hR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(Tn,"EcorePackageImpl/41",1224),M(1225,1,li,W9),l.wj=function(t){return we(t,588)},l.xj=function(t){return Me(AAe,yt,588,t,0,1)},O(Tn,"EcorePackageImpl/42",1225),M(1226,1,li,K9),l.wj=function(t){return!1},l.xj=function(t){return Me(dLe,Qe,2112,t,0,1)},O(Tn,"EcorePackageImpl/43",1226),M(1227,1,li,Uf),l.wj=function(t){return we(t,42)},l.xj=function(t){return Me(Cb,Sz,42,t,0,1)},O(Tn,"EcorePackageImpl/44",1227),M(1188,1,li,FL),l.wj=function(t){return we(t,138)},l.xj=function(t){return Me(f1,yt,138,t,0,1)},O(Tn,"EcorePackageImpl/5",1188),M(1189,1,li,jL),l.wj=function(t){return we(t,148)},l.xj=function(t){return Me(xfe,yt,148,t,0,1)},O(Tn,"EcorePackageImpl/6",1189),M(1190,1,li,J5),l.wj=function(t){return we(t,457)},l.xj=function(t){return Me(JV,yt,671,t,0,1)},O(Tn,"EcorePackageImpl/7",1190),M(1191,1,li,fJ),l.wj=function(t){return we(t,573)},l.xj=function(t){return Me(J0,yt,678,t,0,1)},O(Tn,"EcorePackageImpl/8",1191),M(1192,1,li,dJ),l.wj=function(t){return we(t,471)},l.xj=function(t){return Me(US,yt,471,t,0,1)},O(Tn,"EcorePackageImpl/9",1192),M(1025,1982,vdt,XHe),l.bi=function(t,n){jan(this,u(n,415))},l.fi=function(t,n){fat(this,t,u(n,415))},O(Tn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList",1025),M(1026,143,XI,hYe),l.Ai=function(){return this.a.a},O(Tn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList/1",1026),M(1053,1052,{},SVe),O("org.eclipse.emf.ecore.plugin","EcorePlugin",1053);var KAe=ss(Vdt,"Resource");M(781,1378,Udt),l.Yk=function(t){},l.Zk=function(t){},l.Vk=function(){return!this.a&&(this.a=new $ee(this)),this.a},l.Wk=function(t){var n,r,s,o,h;if(s=t.length,s>0)if(zr(0,t.length),t.charCodeAt(0)==47){for(h=new su(4),o=1,n=1;n0&&(t=t.substr(0,r)));return odn(this,t)},l.Xk=function(){return this.c},l.Ib=function(){var t;return Cp(this.gm)+"@"+(t=Xi(this)>>>0,t.toString(16))+" uri='"+this.d+"'"},l.b=!1,O(Zce,"ResourceImpl",781),M(1379,781,Udt,q$e),O(Zce,"BinaryResourceImpl",1379),M(1169,694,Uce),l.si=function(t){return we(t,56)?zJt(this,u(t,56)):we(t,591)?new rr(u(t,591).Vk()):je(t)===je(this.f)?u(t,14).Kc():(u8(),uN.a)},l.Ob=function(){return z4e(this)},l.a=!1,O(Wi,"EcoreUtil/ContentTreeIterator",1169),M(1380,1169,Uce,zKe),l.si=function(t){return je(t)===je(this.f)?u(t,15).Kc():new _Qe(u(t,56))},O(Zce,"ResourceImpl/5",1380),M(648,1994,Ndt,$ee),l.Hc=function(t){return this.i<=4?u7(this,t):we(t,49)&&u(t,49).Zg()==this.a},l.bi=function(t,n){t==this.i-1&&(this.a.b||(this.a.b=!0))},l.di=function(t,n){t==0?this.a.b||(this.a.b=!0):Nre(this,t,n)},l.fi=function(t,n){},l.gi=function(t,n,r){},l.aj=function(){return 2},l.Ai=function(){return this.a},l.bj=function(){return!0},l.cj=function(t,n){var r;return r=u(t,49),n=r.wh(this.a,n),n},l.dj=function(t,n){var r;return r=u(t,49),r.wh(null,n)},l.ej=function(){return!1},l.hi=function(){return!0},l.ri=function(t){return Me(y2,yt,56,t,0,1)},l.ni=function(){return!1},O(Zce,"ResourceImpl/ContentsEList",648),M(957,1964,A7,G$e),l.Zc=function(t){return this.a._h(t)},l.gc=function(){return this.a.gc()},O(Wi,"AbstractSequentialInternalEList/1",957);var YAe,XAe,Oa,QAe;M(624,1,{},qWe);var tU,nU;O(Wi,"BasicExtendedMetaData",624),M(1160,1,{},qqe),l.$k=function(){return null},l._k=function(){return this.a==-2&&fg(this,gfn(this.d,this.b)),this.a},l.al=function(){return null},l.bl=function(){return hn(),hn(),bo},l.ne=function(){return this.c==G7&&_3(this,Grt(this.d,this.b)),this.c},l.cl=function(){return 0},l.a=-2,l.c=G7,O(Wi,"BasicExtendedMetaData/EClassExtendedMetaDataImpl",1160),M(1161,1,{},hQe),l.$k=function(){return this.a==(C8(),tU)&&Qge(this,Mgn(this.f,this.b)),this.a},l._k=function(){return 0},l.al=function(){return this.c==(C8(),tU)&&Eee(this,Dgn(this.f,this.b)),this.c},l.bl=function(){return!this.d&&Tee(this,M2n(this.f,this.b)),this.d},l.ne=function(){return this.e==G7&&UR(this,Grt(this.f,this.b)),this.e},l.cl=function(){return this.g==-2&&WR(this,Ohn(this.f,this.b)),this.g},l.e=G7,l.g=-2,O(Wi,"BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl",1161),M(1159,1,{},Uqe),l.b=!1,l.c=!1,O(Wi,"BasicExtendedMetaData/EPackageExtendedMetaDataImpl",1159),M(1162,1,{},lQe),l.c=-2,l.e=G7,l.f=G7,O(Wi,"BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl",1162),M(585,622,Zo,xj),l.aj=function(){return this.c},l.Fk=function(){return!1},l.li=function(t,n){return n},l.c=0,O(Wi,"EDataTypeEList",585);var ZAe=ss(Wi,"FeatureMap");M(75,585,{3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},ds),l.Vc=function(t,n){Cgn(this,t,u(n,72))},l.Fc=function(t){return V0n(this,u(t,72))},l.Yh=function(t){DZt(this,u(t,72))},l.cj=function(t,n){return hYt(this,u(t,72),n)},l.dj=function(t,n){return Ybe(this,u(t,72),n)},l.ii=function(t,n){return K2n(this,t,n)},l.li=function(t,n){return Swn(this,t,u(n,72))},l._c=function(t,n){return bpn(this,t,u(n,72))},l.jj=function(t,n){return fYt(this,u(t,72),n)},l.kj=function(t,n){return pWe(this,u(t,72),n)},l.lj=function(t,n,r){return bhn(this,u(t,72),u(n,72),r)},l.oi=function(t,n){return Tse(this,t,u(n,72))},l.dl=function(t,n){return M5e(this,t,n)},l.Wc=function(t,n){var r,s,o,h,d,v,x,_,L;for(_=new jv(n.gc()),o=n.Kc();o.Ob();)if(s=u(o.Pb(),72),h=s.ak(),G0(this.e,h))(!h.hi()||!v$(this,h,s.dd())&&!u7(_,s))&&Br(_,s);else{for(L=pu(this.e.Tg(),h),r=u(this.g,119),d=!0,v=0;v=0;)if(n=t[this.c],this.k.rl(n.ak()))return this.j=this.f?n:n.dd(),this.i=-2,!0;return this.i=-1,this.g=-1,!1},O(Wi,"BasicFeatureMap/FeatureEIterator",410),M(662,410,r0,Gte),l.Lk=function(){return!0},O(Wi,"BasicFeatureMap/ResolvingFeatureEIterator",662),M(955,486,yG,RVe),l.Gi=function(){return this},O(Wi,"EContentsEList/1",955),M(956,486,yG,cVe),l.Lk=function(){return!1},O(Wi,"EContentsEList/2",956),M(954,279,kG,FVe),l.Nk=function(t){},l.Ob=function(){return!1},l.Sb=function(){return!1},O(Wi,"EContentsEList/FeatureIteratorImpl/1",954),M(825,585,Zo,ebe),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EDataTypeEList/Unsettable",825),M(1849,585,Zo,UVe),l.hi=function(){return!0},O(Wi,"EDataTypeUniqueEList",1849),M(1850,825,Zo,WVe),l.hi=function(){return!0},O(Wi,"EDataTypeUniqueEList/Unsettable",1850),M(139,85,Zo,qu),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectContainmentEList/Resolving",139),M(1163,545,Zo,VVe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectContainmentEList/Unsettable/Resolving",1163),M(748,16,Zo,zbe),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EObjectContainmentWithInverseEList/Unsettable",748),M(1173,748,Zo,nWe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectContainmentWithInverseEList/Unsettable/Resolving",1173),M(743,496,Zo,J2e),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EObjectEList/Unsettable",743),M(328,496,Zo,$3),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectResolvingEList",328),M(1641,743,Zo,KVe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectResolvingEList/Unsettable",1641),M(1381,1,{},gJ);var w4t;O(Wi,"EObjectValidator",1381),M(546,496,Zo,Hj),l.zk=function(){return this.d},l.Ak=function(){return this.b},l.bj=function(){return!0},l.Dk=function(){return!0},l.b=0,O(Wi,"EObjectWithInverseEList",546),M(1176,546,Zo,rWe),l.Ck=function(){return!0},O(Wi,"EObjectWithInverseEList/ManyInverse",1176),M(625,546,Zo,une),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EObjectWithInverseEList/Unsettable",625),M(1175,625,Zo,iWe),l.Ck=function(){return!0},O(Wi,"EObjectWithInverseEList/Unsettable/ManyInverse",1175),M(749,546,Zo,Gbe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectWithInverseResolvingEList",749),M(31,749,Zo,wn),l.Ck=function(){return!0},O(Wi,"EObjectWithInverseResolvingEList/ManyInverse",31),M(750,625,Zo,qbe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectWithInverseResolvingEList/Unsettable",750),M(1174,750,Zo,sWe),l.Ck=function(){return!0},O(Wi,"EObjectWithInverseResolvingEList/Unsettable/ManyInverse",1174),M(1164,622,Zo),l.ai=function(){return(this.b&1792)==0},l.ci=function(){this.b|=1},l.Bk=function(){return(this.b&4)!=0},l.bj=function(){return(this.b&40)!=0},l.Ck=function(){return(this.b&16)!=0},l.Dk=function(){return(this.b&8)!=0},l.Ek=function(){return(this.b&ky)!=0},l.rk=function(){return(this.b&32)!=0},l.Fk=function(){return(this.b&Sf)!=0},l.wj=function(t){return this.d?$Qe(this.d,t):this.ak().Yj().wj(t)},l.fj=function(){return this.b&2?(this.b&1)!=0:this.i!=0},l.hi=function(){return(this.b&128)!=0},l.Xj=function(){var t;_r(this),this.b&2&&(Ll(this.e)?(t=(this.b&1)!=0,this.b&=-2,Vx(this,new xf(this.e,2,Ji(this.e.Tg(),this.ak()),t,!1))):this.b&=-2)},l.ni=function(){return(this.b&1536)==0},l.b=0,O(Wi,"EcoreEList/Generic",1164),M(1165,1164,Zo,YYe),l.ak=function(){return this.a},O(Wi,"EcoreEList/Dynamic",1165),M(747,63,Od,rpe),l.ri=function(t){return TD(this.a.a,t)},O(Wi,"EcoreEMap/1",747),M(746,85,Zo,zve),l.bi=function(t,n){RH(this.b,u(n,133))},l.di=function(t,n){Rtt(this.b)},l.ei=function(t,n,r){var s;++(s=this.b,u(n,133),s).e},l.fi=function(t,n){Oie(this.b,u(n,133))},l.gi=function(t,n,r){Oie(this.b,u(r,133)),je(r)===je(n)&&u(r,133).Th(yWt(u(n,133).cd())),RH(this.b,u(n,133))},O(Wi,"EcoreEMap/DelegateEObjectContainmentEList",746),M(1171,151,b8e,Xet),O(Wi,"EcoreEMap/Unsettable",1171),M(1172,746,Zo,aWe),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList",1172),M(1168,228,y4,ZKe),l.a=!1,l.b=!1,O(Wi,"EcoreUtil/Copier",1168),M(745,1,ga,_Qe),l.Nb=function(t){La(this,t)},l.Ob=function(){return Ert(this)},l.Pb=function(){var t;return Ert(this),t=this.b,this.b=null,t},l.Qb=function(){this.a.Qb()},O(Wi,"EcoreUtil/ProperContentIterator",745),M(1382,1381,{},FR);var m4t;O(Wi,"EcoreValidator",1382);var y4t;ss(Wi,"FeatureMapUtil/Validator"),M(1260,1,{1942:1},pJ),l.rl=function(t){return!0},O(Wi,"FeatureMapUtil/1",1260),M(757,1,{1942:1},s6e),l.rl=function(t){var n;return this.c==t?!0:(n=Mt(er(this.a,t)),n==null?h2n(this,t)?(OZe(this.a,t,(Mn(),U7)),!0):(OZe(this.a,t,(Mn(),Sb)),!1):n==(Mn(),U7))},l.e=!1;var Cfe;O(Wi,"FeatureMapUtil/BasicValidator",757),M(758,43,y4,Y2e),O(Wi,"FeatureMapUtil/BasicValidator/Cache",758),M(501,52,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,69:1,95:1},DM),l.Vc=function(t,n){Zot(this.c,this.b,t,n)},l.Fc=function(t){return M5e(this.c,this.b,t)},l.Wc=function(t,n){return Cvn(this.c,this.b,t,n)},l.Gc=function(t){return t_(this,t)},l.Xh=function(t,n){Wrn(this.c,this.b,t,n)},l.lk=function(t,n){return T5e(this.c,this.b,t,n)},l.pi=function(t){return bz(this.c,this.b,t,!1)},l.Zh=function(){return mVe(this.c,this.b)},l.$h=function(){return oWt(this.c,this.b)},l._h=function(t){return Znn(this.c,this.b,t)},l.mk=function(t,n){return FUe(this,t,n)},l.$b=function(){d6(this)},l.Hc=function(t){return v$(this.c,this.b,t)},l.Ic=function(t){return Qin(this.c,this.b,t)},l.Xb=function(t){return bz(this.c,this.b,t,!0)},l.Wj=function(t){return this},l.Xc=function(t){return unn(this.c,this.b,t)},l.dc=function(){return YF(this)},l.fj=function(){return!qD(this.c,this.b)},l.Kc=function(){return Prn(this.c,this.b)},l.Yc=function(){return Brn(this.c,this.b)},l.Zc=function(t){return Kan(this.c,this.b,t)},l.ii=function(t,n){return but(this.c,this.b,t,n)},l.ji=function(t,n){Unn(this.c,this.b,t,n)},l.$c=function(t){return Yst(this.c,this.b,t)},l.Mc=function(t){return I2n(this.c,this.b,t)},l._c=function(t,n){return xut(this.c,this.b,t,n)},l.Wb=function(t){JH(this.c,this.b),t_(this,u(t,15))},l.gc=function(){return oon(this.c,this.b)},l.Pc=function(){return atn(this.c,this.b)},l.Qc=function(t){return lnn(this.c,this.b,t)},l.Ib=function(){var t,n;for(n=new bg,n.a+="[",t=mVe(this.c,this.b);Eie(t);)To(n,r_(PH(t))),Eie(t)&&(n.a+=io);return n.a+="]",n.a},l.Xj=function(){JH(this.c,this.b)},O(Wi,"FeatureMapUtil/FeatureEList",501),M(627,36,XI,_re),l.yi=function(t){return z_(this,t)},l.Di=function(t){var n,r,s,o,h,d,v;switch(this.d){case 1:case 2:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return this.g=t.zi(),t.xi()==1&&(this.d=1),!0;break}case 3:{switch(o=t.xi(),o){case 3:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return this.d=5,n=new jv(2),Br(n,this.g),Br(n,t.zi()),this.g=n,!0;break}}break}case 5:{switch(o=t.xi(),o){case 3:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return r=u(this.g,14),r.Fc(t.zi()),!0;break}}break}case 4:{switch(o=t.xi(),o){case 3:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return this.d=1,this.g=t.zi(),!0;break}case 4:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return this.d=6,v=new jv(2),Br(v,this.n),Br(v,t.Bi()),this.n=v,d=ie(re(Lr,1),Jr,25,15,[this.o,t.Ci()]),this.g=d,!0;break}}break}case 6:{switch(o=t.xi(),o){case 4:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return r=u(this.n,14),r.Fc(t.Bi()),d=u(this.g,48),s=Me(Lr,Jr,25,d.length+1,15,1),Hc(d,0,s,0,d.length),s[d.length]=t.Ci(),this.g=s,!0;break}}break}}return!1},O(Wi,"FeatureMapUtil/FeatureENotificationImpl",627),M(552,501,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},Cj),l.dl=function(t,n){return M5e(this.c,t,n)},l.el=function(t,n,r){return T5e(this.c,t,n,r)},l.fl=function(t,n,r){return W5e(this.c,t,n,r)},l.gl=function(){return this},l.hl=function(t,n){return kI(this.c,t,n)},l.il=function(t){return u(bz(this.c,this.b,t,!1),72).ak()},l.jl=function(t){return u(bz(this.c,this.b,t,!1),72).dd()},l.kl=function(){return this.a},l.ll=function(t){return!qD(this.c,t)},l.ml=function(t,n){vz(this.c,t,n)},l.nl=function(t){return rtt(this.c,t)},l.ol=function(t){Sit(this.c,t)},O(Wi,"FeatureMapUtil/FeatureFeatureMap",552),M(1259,1,Qce,Wqe),l.Wj=function(t){return bz(this.b,this.a,-1,t)},l.fj=function(){return!qD(this.b,this.a)},l.Wb=function(t){vz(this.b,this.a,t)},l.Xj=function(){JH(this.b,this.a)},O(Wi,"FeatureMapUtil/FeatureValue",1259);var zk,Sfe,Afe,Gk,k4t,hN=ss(LG,"AnyType");M(666,60,q0,nte),O(LG,"InvalidDatatypeValueException",666);var rU=ss(LG,Kdt),fN=ss(LG,Ydt),JAe=ss(LG,Xdt),x4t,Sc,eLe,zb,E4t,T4t,_4t,C4t,S4t,A4t,L4t,M4t,D4t,I4t,O4t,r5,N4t,i5,QS,P4t,Pw,dN,gN,B4t,ZS,JS;M(830,506,{105:1,92:1,90:1,56:1,49:1,97:1,843:1},Tpe),l._g=function(t,n,r){switch(t){case 0:return r?(!this.c&&(this.c=new ds(this,0)),this.c):(!this.c&&(this.c=new ds(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)):(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),215)).kl();case 2:return r?(!this.b&&(this.b=new ds(this,2)),this.b):(!this.b&&(this.b=new ds(this,2)),this.b.b)}return ph(this,t-Jn(this.zh()),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),t),n,r)},l.jh=function(t,n,r){var s;switch(n){case 0:return!this.c&&(this.c=new ds(this,0)),vI(this.c,t,r);case 1:return(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),69)).mk(t,r);case 2:return!this.b&&(this.b=new ds(this,2)),vI(this.b,t,r)}return s=u(gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),n),66),s.Nj().Rj(this,vme(this),n-Jn(this.zh()),t,r)},l.lh=function(t){switch(t){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)).dc();case 2:return!!this.b&&this.b.i!=0}return dh(this,t-Jn(this.zh()),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),t))},l.sh=function(t,n){switch(t){case 0:!this.c&&(this.c=new ds(this,0)),XM(this.c,n);return;case 1:(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),215)).Wb(n);return;case 2:!this.b&&(this.b=new ds(this,2)),XM(this.b,n);return}yh(this,t-Jn(this.zh()),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),t),n)},l.zh=function(){return Fi(),eLe},l.Bh=function(t){switch(t){case 0:!this.c&&(this.c=new ds(this,0)),_r(this.c);return;case 1:(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)).$b();return;case 2:!this.b&&(this.b=new ds(this,2)),_r(this.b);return}wh(this,t-Jn(this.zh()),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),t))},l.Ib=function(){var t;return this.j&4?_f(this):(t=new Ph(_f(this)),t.a+=" (mixed: ",QT(t,this.c),t.a+=", anyAttribute: ",QT(t,this.b),t.a+=")",t.a)},O(As,"AnyTypeImpl",830),M(667,506,{105:1,92:1,90:1,56:1,49:1,97:1,2021:1,667:1},fR),l._g=function(t,n,r){switch(t){case 0:return this.a;case 1:return this.b}return ph(this,t-Jn((Fi(),r5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():r5,t),n,r)},l.lh=function(t){switch(t){case 0:return this.a!=null;case 1:return this.b!=null}return dh(this,t-Jn((Fi(),r5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():r5,t))},l.sh=function(t,n){switch(t){case 0:Aee(this,Hr(n));return;case 1:Jge(this,Hr(n));return}yh(this,t-Jn((Fi(),r5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():r5,t),n)},l.zh=function(){return Fi(),r5},l.Bh=function(t){switch(t){case 0:this.a=null;return;case 1:this.b=null;return}wh(this,t-Jn((Fi(),r5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():r5,t))},l.Ib=function(){var t;return this.j&4?_f(this):(t=new Ph(_f(this)),t.a+=" (data: ",To(t,this.a),t.a+=", target: ",To(t,this.b),t.a+=")",t.a)},l.a=null,l.b=null,O(As,"ProcessingInstructionImpl",667),M(668,830,{105:1,92:1,90:1,56:1,49:1,97:1,843:1,2022:1,668:1},NHe),l._g=function(t,n,r){switch(t){case 0:return r?(!this.c&&(this.c=new ds(this,0)),this.c):(!this.c&&(this.c=new ds(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)):(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),215)).kl();case 2:return r?(!this.b&&(this.b=new ds(this,2)),this.b):(!this.b&&(this.b=new ds(this,2)),this.b.b);case 3:return!this.c&&(this.c=new ds(this,0)),Hr(kI(this.c,(Fi(),QS),!0));case 4:return Vbe(this.a,(!this.c&&(this.c=new ds(this,0)),Hr(kI(this.c,(Fi(),QS),!0))));case 5:return this.a}return ph(this,t-Jn((Fi(),i5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():i5,t),n,r)},l.lh=function(t){switch(t){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)).dc();case 2:return!!this.b&&this.b.i!=0;case 3:return!this.c&&(this.c=new ds(this,0)),Hr(kI(this.c,(Fi(),QS),!0))!=null;case 4:return Vbe(this.a,(!this.c&&(this.c=new ds(this,0)),Hr(kI(this.c,(Fi(),QS),!0))))!=null;case 5:return!!this.a}return dh(this,t-Jn((Fi(),i5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():i5,t))},l.sh=function(t,n){switch(t){case 0:!this.c&&(this.c=new ds(this,0)),XM(this.c,n);return;case 1:(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),215)).Wb(n);return;case 2:!this.b&&(this.b=new ds(this,2)),XM(this.b,n);return;case 3:Mwe(this,Hr(n));return;case 4:Mwe(this,Ube(this.a,n));return;case 5:Ac(this,u(n,148));return}yh(this,t-Jn((Fi(),i5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():i5,t),n)},l.zh=function(){return Fi(),i5},l.Bh=function(t){switch(t){case 0:!this.c&&(this.c=new ds(this,0)),_r(this.c);return;case 1:(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)).$b();return;case 2:!this.b&&(this.b=new ds(this,2)),_r(this.b);return;case 3:!this.c&&(this.c=new ds(this,0)),vz(this.c,(Fi(),QS),null);return;case 4:Mwe(this,Ube(this.a,null));return;case 5:this.a=null;return}wh(this,t-Jn((Fi(),i5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():i5,t))},O(As,"SimpleAnyTypeImpl",668),M(669,506,{105:1,92:1,90:1,56:1,49:1,97:1,2023:1,669:1},OHe),l._g=function(t,n,r){switch(t){case 0:return r?(!this.a&&(this.a=new ds(this,0)),this.a):(!this.a&&(this.a=new ds(this,0)),this.a.b);case 1:return r?(!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),this.b):(!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),hD(this.b));case 2:return r?(!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),this.c):(!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),hD(this.c));case 3:return!this.a&&(this.a=new ds(this,0)),Wc(this.a,(Fi(),dN));case 4:return!this.a&&(this.a=new ds(this,0)),Wc(this.a,(Fi(),gN));case 5:return!this.a&&(this.a=new ds(this,0)),Wc(this.a,(Fi(),ZS));case 6:return!this.a&&(this.a=new ds(this,0)),Wc(this.a,(Fi(),JS))}return ph(this,t-Jn((Fi(),Pw)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():Pw,t),n,r)},l.jh=function(t,n,r){var s;switch(n){case 0:return!this.a&&(this.a=new ds(this,0)),vI(this.a,t,r);case 1:return!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),vj(this.b,t,r);case 2:return!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),vj(this.c,t,r);case 5:return!this.a&&(this.a=new ds(this,0)),FUe(Wc(this.a,(Fi(),ZS)),t,r)}return s=u(gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():(Fi(),Pw),n),66),s.Nj().Rj(this,vme(this),n-Jn((Fi(),Pw)),t,r)},l.lh=function(t){switch(t){case 0:return!!this.a&&this.a.i!=0;case 1:return!!this.b&&this.b.f!=0;case 2:return!!this.c&&this.c.f!=0;case 3:return!this.a&&(this.a=new ds(this,0)),!YF(Wc(this.a,(Fi(),dN)));case 4:return!this.a&&(this.a=new ds(this,0)),!YF(Wc(this.a,(Fi(),gN)));case 5:return!this.a&&(this.a=new ds(this,0)),!YF(Wc(this.a,(Fi(),ZS)));case 6:return!this.a&&(this.a=new ds(this,0)),!YF(Wc(this.a,(Fi(),JS)))}return dh(this,t-Jn((Fi(),Pw)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():Pw,t))},l.sh=function(t,n){switch(t){case 0:!this.a&&(this.a=new ds(this,0)),XM(this.a,n);return;case 1:!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),sH(this.b,n);return;case 2:!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),sH(this.c,n);return;case 3:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),dN))),!this.a&&(this.a=new ds(this,0)),t_(Wc(this.a,dN),u(n,14));return;case 4:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),gN))),!this.a&&(this.a=new ds(this,0)),t_(Wc(this.a,gN),u(n,14));return;case 5:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),ZS))),!this.a&&(this.a=new ds(this,0)),t_(Wc(this.a,ZS),u(n,14));return;case 6:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),JS))),!this.a&&(this.a=new ds(this,0)),t_(Wc(this.a,JS),u(n,14));return}yh(this,t-Jn((Fi(),Pw)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():Pw,t),n)},l.zh=function(){return Fi(),Pw},l.Bh=function(t){switch(t){case 0:!this.a&&(this.a=new ds(this,0)),_r(this.a);return;case 1:!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),this.b.c.$b();return;case 2:!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),this.c.c.$b();return;case 3:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),dN)));return;case 4:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),gN)));return;case 5:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),ZS)));return;case 6:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),JS)));return}wh(this,t-Jn((Fi(),Pw)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():Pw,t))},l.Ib=function(){var t;return this.j&4?_f(this):(t=new Ph(_f(this)),t.a+=" (mixed: ",QT(t,this.a),t.a+=")",t.a)},O(As,"XMLTypeDocumentRootImpl",669),M(1919,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1,2024:1},bm),l.Ih=function(t,n){switch(t.yj()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return n==null?null:Qo(n);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return Hr(n);case 6:return _Kt(u(n,190));case 12:case 47:case 49:case 11:return ult(this,t,n);case 13:return n==null?null:fvn(u(n,240));case 15:case 14:return n==null?null:xZt(Ue(ft(n)));case 17:return fst((Fi(),n));case 18:return fst(n);case 21:case 20:return n==null?null:EZt(u(n,155).a);case 27:return CKt(u(n,190));case 30:return Ait((Fi(),u(n,15)));case 31:return Ait(u(n,15));case 40:return AKt((Fi(),n));case 42:return dst((Fi(),n));case 43:return dst(n);case 59:case 48:return SKt((Fi(),n));default:throw J(new Ln($7+t.ne()+dw))}},l.Jh=function(t){var n,r,s,o,h;switch(t.G==-1&&(t.G=(r=Gl(t),r?Dg(r.Mh(),t):-1)),t.G){case 0:return n=new Tpe,n;case 1:return s=new fR,s;case 2:return o=new NHe,o;case 3:return h=new OHe,h;default:throw J(new Ln(Pce+t.zb+dw))}},l.Kh=function(t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce;switch(t.yj()){case 5:case 52:case 4:return n;case 6:return zcn(n);case 8:case 7:return n==null?null:Lhn(n);case 9:return n==null?null:xD(Wl((s=Xc(n,!0),s.length>0&&(zr(0,s.length),s.charCodeAt(0)==43)?s.substr(1):s),-128,127)<<24>>24);case 10:return n==null?null:xD(Wl((o=Xc(n,!0),o.length>0&&(zr(0,o.length),o.charCodeAt(0)==43)?o.substr(1):o),-128,127)<<24>>24);case 11:return Hr(aw(this,(Fi(),_4t),n));case 12:return Hr(aw(this,(Fi(),C4t),n));case 13:return n==null?null:new Vpe(Xc(n,!0));case 15:case 14:return X0n(n);case 16:return Hr(aw(this,(Fi(),S4t),n));case 17:return Nrt((Fi(),n));case 18:return Nrt(n);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return Xc(n,!0);case 21:case 20:return sgn(n);case 22:return Hr(aw(this,(Fi(),A4t),n));case 23:return Hr(aw(this,(Fi(),L4t),n));case 24:return Hr(aw(this,(Fi(),M4t),n));case 25:return Hr(aw(this,(Fi(),D4t),n));case 26:return Hr(aw(this,(Fi(),I4t),n));case 27:return Rcn(n);case 30:return Prt((Fi(),n));case 31:return Prt(n);case 32:return n==null?null:ct(Wl((L=Xc(n,!0),L.length>0&&(zr(0,L.length),L.charCodeAt(0)==43)?L.substr(1):L),$a,Ei));case 33:return n==null?null:new Ip((P=Xc(n,!0),P.length>0&&(zr(0,P.length),P.charCodeAt(0)==43)?P.substr(1):P));case 34:return n==null?null:ct(Wl((z=Xc(n,!0),z.length>0&&(zr(0,z.length),z.charCodeAt(0)==43)?z.substr(1):z),$a,Ei));case 36:return n==null?null:lb(xz((q=Xc(n,!0),q.length>0&&(zr(0,q.length),q.charCodeAt(0)==43)?q.substr(1):q)));case 37:return n==null?null:lb(xz((W=Xc(n,!0),W.length>0&&(zr(0,W.length),W.charCodeAt(0)==43)?W.substr(1):W)));case 40:return Jon((Fi(),n));case 42:return Brt((Fi(),n));case 43:return Brt(n);case 44:return n==null?null:new Ip((X=Xc(n,!0),X.length>0&&(zr(0,X.length),X.charCodeAt(0)==43)?X.substr(1):X));case 45:return n==null?null:new Ip((le=Xc(n,!0),le.length>0&&(zr(0,le.length),le.charCodeAt(0)==43)?le.substr(1):le));case 46:return Xc(n,!1);case 47:return Hr(aw(this,(Fi(),O4t),n));case 59:case 48:return Zon((Fi(),n));case 49:return Hr(aw(this,(Fi(),N4t),n));case 50:return n==null?null:Z8(Wl((Ce=Xc(n,!0),Ce.length>0&&(zr(0,Ce.length),Ce.charCodeAt(0)==43)?Ce.substr(1):Ce),_G,32767)<<16>>16);case 51:return n==null?null:Z8(Wl((h=Xc(n,!0),h.length>0&&(zr(0,h.length),h.charCodeAt(0)==43)?h.substr(1):h),_G,32767)<<16>>16);case 53:return Hr(aw(this,(Fi(),P4t),n));case 55:return n==null?null:Z8(Wl((d=Xc(n,!0),d.length>0&&(zr(0,d.length),d.charCodeAt(0)==43)?d.substr(1):d),_G,32767)<<16>>16);case 56:return n==null?null:Z8(Wl((v=Xc(n,!0),v.length>0&&(zr(0,v.length),v.charCodeAt(0)==43)?v.substr(1):v),_G,32767)<<16>>16);case 57:return n==null?null:lb(xz((x=Xc(n,!0),x.length>0&&(zr(0,x.length),x.charCodeAt(0)==43)?x.substr(1):x)));case 58:return n==null?null:lb(xz((_=Xc(n,!0),_.length>0&&(zr(0,_.length),_.charCodeAt(0)==43)?_.substr(1):_)));case 60:return n==null?null:ct(Wl((r=Xc(n,!0),r.length>0&&(zr(0,r.length),r.charCodeAt(0)==43)?r.substr(1):r),$a,Ei));case 61:return n==null?null:ct(Wl(Xc(n,!0),$a,Ei));default:throw J(new Ln($7+t.ne()+dw))}};var R4t,tLe,F4t,nLe;O(As,"XMLTypeFactoryImpl",1919),M(586,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1,1945:1,586:1},mYe),l.N=!1,l.O=!1;var j4t=!1;O(As,"XMLTypePackageImpl",586),M(1852,1,{837:1},e6),l._j=function(){return F5e(),K4t},O(As,"XMLTypePackageImpl/1",1852),M(1861,1,li,w1),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/10",1861),M(1862,1,li,dR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/11",1862),M(1863,1,li,gR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/12",1863),M(1864,1,li,pR),l.wj=function(t){return Sm(t)},l.xj=function(t){return Me(ma,Qe,333,t,7,1)},O(As,"XMLTypePackageImpl/13",1864),M(1865,1,li,bR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/14",1865),M(1866,1,li,vR),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/15",1866),M(1867,1,li,wR),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/16",1867),M(1868,1,li,Wf),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/17",1868),M(1869,1,li,xu),l.wj=function(t){return we(t,155)},l.xj=function(t){return Me(W7,Qe,155,t,0,1)},O(As,"XMLTypePackageImpl/18",1869),M(1870,1,li,bJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/19",1870),M(1853,1,li,vJ),l.wj=function(t){return we(t,843)},l.xj=function(t){return Me(hN,yt,843,t,0,1)},O(As,"XMLTypePackageImpl/2",1853),M(1871,1,li,wJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/20",1871),M(1872,1,li,Eu),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/21",1872),M(1873,1,li,Y9),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/22",1873),M(1874,1,li,mR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/23",1874),M(1875,1,li,yR),l.wj=function(t){return we(t,190)},l.xj=function(t){return Me(el,Qe,190,t,0,2)},O(As,"XMLTypePackageImpl/24",1875),M(1876,1,li,t6),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/25",1876),M(1877,1,li,mJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/26",1877),M(1878,1,li,Lx),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/27",1878),M(1879,1,li,yJ),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/28",1879),M(1880,1,li,kR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/29",1880),M(1854,1,li,kJ),l.wj=function(t){return we(t,667)},l.xj=function(t){return Me(rU,yt,2021,t,0,1)},O(As,"XMLTypePackageImpl/3",1854),M(1881,1,li,xJ),l.wj=function(t){return we(t,19)},l.xj=function(t){return Me(Za,Qe,19,t,0,1)},O(As,"XMLTypePackageImpl/30",1881),M(1882,1,li,X9),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/31",1882),M(1883,1,li,xR),l.wj=function(t){return we(t,162)},l.xj=function(t){return Me(pw,Qe,162,t,0,1)},O(As,"XMLTypePackageImpl/32",1883),M(1884,1,li,$L),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/33",1884),M(1885,1,li,Q9),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/34",1885),M(1886,1,li,EJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/35",1886),M(1887,1,li,TJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/36",1887),M(1888,1,li,HL),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/37",1888),M(1889,1,li,Z9),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/38",1889),M(1890,1,li,m1),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/39",1890),M(1855,1,li,Mx),l.wj=function(t){return we(t,668)},l.xj=function(t){return Me(fN,yt,2022,t,0,1)},O(As,"XMLTypePackageImpl/4",1855),M(1891,1,li,_J),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/40",1891),M(1892,1,li,Dx),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/41",1892),M(1893,1,li,zL),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/42",1893),M(1894,1,li,j2),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/43",1894),M(1895,1,li,J9),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/44",1895),M(1896,1,li,GL),l.wj=function(t){return we(t,184)},l.xj=function(t){return Me(bw,Qe,184,t,0,1)},O(As,"XMLTypePackageImpl/45",1896),M(1897,1,li,Kf),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/46",1897),M(1898,1,li,eT),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/47",1898),M(1899,1,li,y1),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/48",1899),M(e2,1,li,k1),l.wj=function(t){return we(t,184)},l.xj=function(t){return Me(bw,Qe,184,t,0,1)},O(As,"XMLTypePackageImpl/49",e2),M(1856,1,li,CJ),l.wj=function(t){return we(t,669)},l.xj=function(t){return Me(JAe,yt,2023,t,0,1)},O(As,"XMLTypePackageImpl/5",1856),M(1901,1,li,SJ),l.wj=function(t){return we(t,162)},l.xj=function(t){return Me(pw,Qe,162,t,0,1)},O(As,"XMLTypePackageImpl/50",1901),M(1902,1,li,x3),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/51",1902),M(1903,1,li,Ix),l.wj=function(t){return we(t,19)},l.xj=function(t){return Me(Za,Qe,19,t,0,1)},O(As,"XMLTypePackageImpl/52",1903),M(1857,1,li,Ox),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/6",1857),M(1858,1,li,tT),l.wj=function(t){return we(t,190)},l.xj=function(t){return Me(el,Qe,190,t,0,2)},O(As,"XMLTypePackageImpl/7",1858),M(1859,1,li,AJ),l.wj=function(t){return Cm(t)},l.xj=function(t){return Me(Us,Qe,476,t,8,1)},O(As,"XMLTypePackageImpl/8",1859),M(1860,1,li,n6),l.wj=function(t){return we(t,217)},l.xj=function(t){return Me(mk,Qe,217,t,0,1)},O(As,"XMLTypePackageImpl/9",1860);var J1,Zg,eA,iU,fe;M(50,60,q0,$r),O($g,"RegEx/ParseException",50),M(820,1,{},qL),l.sl=function(t){return tr*16)throw J(new $r(Ur((jr(),odt))));r=r*16+o}while(!0);if(this.a!=125)throw J(new $r(Ur((jr(),cdt))));if(r>q7)throw J(new $r(Ur((jr(),udt))));t=r}else{if(o=0,this.c!=0||(o=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(r=o,mi(this),this.c!=0||(o=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));r=r*16+o,t=r}break;case 117:if(s=0,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));n=n*16+s,t=n;break;case 118:if(mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,n>q7)throw J(new $r(Ur((jr(),"parser.descappe.4"))));t=n;break;case 65:case 90:case 122:throw J(new $r(Ur((jr(),ldt))))}return t},l.ul=function(t){var n,r;switch(t){case 100:r=(this.e&32)==32?Zp("Nd",!0):(yi(),sU);break;case 68:r=(this.e&32)==32?Zp("Nd",!1):(yi(),cLe);break;case 119:r=(this.e&32)==32?Zp("IsWord",!0):(yi(),DE);break;case 87:r=(this.e&32)==32?Zp("IsWord",!1):(yi(),lLe);break;case 115:r=(this.e&32)==32?Zp("IsSpace",!0):(yi(),qk);break;case 83:r=(this.e&32)==32?Zp("IsSpace",!1):(yi(),uLe);break;default:throw J(new tc((n=t,l0t+n.toString(16))))}return r},l.vl=function(t){var n,r,s,o,h,d,v,x,_,L,P,z;for(this.b=1,mi(this),n=null,this.c==0&&this.a==94?(mi(this),t?L=(yi(),yi(),new Hl(5)):(n=(yi(),yi(),new Hl(4)),Yc(n,0,q7),L=new Hl(4))):L=(yi(),yi(),new Hl(4)),o=!0;(z=this.c)!=1&&!(z==0&&this.a==93&&!o);){if(o=!1,r=this.a,s=!1,z==10)switch(r){case 100:case 68:case 119:case 87:case 115:case 83:ly(L,this.ul(r)),s=!0;break;case 105:case 73:case 99:case 67:r=this.Ll(L,r),r<0&&(s=!0);break;case 112:case 80:if(P=$4e(this,r),!P)throw J(new $r(Ur((jr(),Kce))));ly(L,P),s=!0;break;default:r=this.tl()}else if(z==20){if(d=o8(this.i,58,this.d),d<0)throw J(new $r(Ur((jr(),l8e))));if(v=!0,Ma(this.i,this.d)==94&&(++this.d,v=!1),h=jl(this.i,this.d,d),x=yJe(h,v,(this.e&512)==512),!x)throw J(new $r(Ur((jr(),ndt))));if(ly(L,x),s=!0,d+1>=this.j||Ma(this.i,d+1)!=93)throw J(new $r(Ur((jr(),l8e))));this.d=d+2}if(mi(this),!s)if(this.c!=0||this.a!=45)Yc(L,r,r);else{if(mi(this),(z=this.c)==1)throw J(new $r(Ur((jr(),wG))));z==0&&this.a==93?(Yc(L,r,r),Yc(L,45,45)):(_=this.a,z==10&&(_=this.tl()),mi(this),Yc(L,r,_))}(this.e&Sf)==Sf&&this.c==0&&this.a==44&&mi(this)}if(this.c==1)throw J(new $r(Ur((jr(),wG))));return n&&(bC(n,L),L=n),l4(L),gC(L),this.b=0,mi(this),L},l.wl=function(){var t,n,r,s;for(r=this.vl(!1);(s=this.c)!=7;)if(t=this.a,s==0&&(t==45||t==38)||s==4){if(mi(this),this.c!=9)throw J(new $r(Ur((jr(),idt))));if(n=this.vl(!1),s==4)ly(r,n);else if(t==45)bC(r,n);else if(t==38)rlt(r,n);else throw J(new tc("ASSERT"))}else throw J(new $r(Ur((jr(),sdt))));return mi(this),r},l.xl=function(){var t,n;return t=this.a-48,n=(yi(),yi(),new cre(12,null,t)),!this.g&&(this.g=new oF),aF(this.g,new ipe(t)),mi(this),n},l.yl=function(){return mi(this),yi(),z4t},l.zl=function(){return mi(this),yi(),H4t},l.Al=function(){throw J(new $r(Ur((jr(),xh))))},l.Bl=function(){throw J(new $r(Ur((jr(),xh))))},l.Cl=function(){return mi(this),ean()},l.Dl=function(){return mi(this),yi(),q4t},l.El=function(){return mi(this),yi(),U4t},l.Fl=function(){var t;if(this.d>=this.j||((t=Ma(this.i,this.d++))&65504)!=64)throw J(new $r(Ur((jr(),J1t))));return mi(this),yi(),yi(),new Yd(0,t-64)},l.Gl=function(){return mi(this),Rbn()},l.Hl=function(){return mi(this),yi(),W4t},l.Il=function(){var t;return t=(yi(),yi(),new Yd(0,105)),mi(this),t},l.Jl=function(){return mi(this),yi(),V4t},l.Kl=function(){return mi(this),yi(),G4t},l.Ll=function(t,n){return this.tl()},l.Ml=function(){return mi(this),yi(),aLe},l.Nl=function(){var t,n,r,s,o;if(this.d+1>=this.j)throw J(new $r(Ur((jr(),X1t))));if(s=-1,n=null,t=Ma(this.i,this.d),49<=t&&t<=57){if(s=t-48,!this.g&&(this.g=new oF),aF(this.g,new ipe(s)),++this.d,Ma(this.i,this.d)!=41)throw J(new $r(Ur((jr(),Tb))));++this.d}else switch(t==63&&--this.d,mi(this),n=u6e(this),n.e){case 20:case 21:case 22:case 23:break;case 8:if(this.c!=7)throw J(new $r(Ur((jr(),Tb))));break;default:throw J(new $r(Ur((jr(),Q1t))))}if(mi(this),o=Xv(this),r=null,o.e==2){if(o.em()!=2)throw J(new $r(Ur((jr(),Z1t))));r=o.am(1),o=o.am(0)}if(this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),yi(),yi(),new ZJe(s,n,o,r)},l.Ol=function(){return mi(this),yi(),oLe},l.Pl=function(){var t;if(mi(this),t=zj(24,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Ql=function(){var t;if(mi(this),t=zj(20,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Rl=function(){var t;if(mi(this),t=zj(22,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Sl=function(){var t,n,r,s,o;for(t=0,r=0,n=-1;this.d=this.j)throw J(new $r(Ur((jr(),c8e))));if(n==45){for(++this.d;this.d=this.j)throw J(new $r(Ur((jr(),c8e))))}if(n==58){if(++this.d,mi(this),s=rYe(Xv(this),t,r),this.c!=7)throw J(new $r(Ur((jr(),Tb))));mi(this)}else if(n==41)++this.d,mi(this),s=rYe(Xv(this),t,r);else throw J(new $r(Ur((jr(),Y1t))));return s},l.Tl=function(){var t;if(mi(this),t=zj(21,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Ul=function(){var t;if(mi(this),t=zj(23,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Vl=function(){var t,n;if(mi(this),t=this.f++,n=Pne(Xv(this),t),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),n},l.Wl=function(){var t;if(mi(this),t=Pne(Xv(this),0),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Xl=function(t){return mi(this),this.c==5?(mi(this),Ij(t,(yi(),yi(),new $m(9,t)))):Ij(t,(yi(),yi(),new $m(3,t)))},l.Yl=function(t){var n;return mi(this),n=(yi(),yi(),new e_(2)),this.c==5?(mi(this),pb(n,nA),pb(n,t)):(pb(n,t),pb(n,nA)),n},l.Zl=function(t){return mi(this),this.c==5?(mi(this),yi(),yi(),new $m(9,t)):(yi(),yi(),new $m(3,t))},l.a=0,l.b=0,l.c=0,l.d=0,l.e=0,l.f=1,l.g=null,l.j=0,O($g,"RegEx/RegexParser",820),M(1824,820,{},PHe),l.sl=function(t){return!1},l.tl=function(){return y5e(this)},l.ul=function(t){return m7(t)},l.vl=function(t){return Ylt(this)},l.wl=function(){throw J(new $r(Ur((jr(),xh))))},l.xl=function(){throw J(new $r(Ur((jr(),xh))))},l.yl=function(){throw J(new $r(Ur((jr(),xh))))},l.zl=function(){throw J(new $r(Ur((jr(),xh))))},l.Al=function(){return mi(this),m7(67)},l.Bl=function(){return mi(this),m7(73)},l.Cl=function(){throw J(new $r(Ur((jr(),xh))))},l.Dl=function(){throw J(new $r(Ur((jr(),xh))))},l.El=function(){throw J(new $r(Ur((jr(),xh))))},l.Fl=function(){return mi(this),m7(99)},l.Gl=function(){throw J(new $r(Ur((jr(),xh))))},l.Hl=function(){throw J(new $r(Ur((jr(),xh))))},l.Il=function(){return mi(this),m7(105)},l.Jl=function(){throw J(new $r(Ur((jr(),xh))))},l.Kl=function(){throw J(new $r(Ur((jr(),xh))))},l.Ll=function(t,n){return ly(t,m7(n)),-1},l.Ml=function(){return mi(this),yi(),yi(),new Yd(0,94)},l.Nl=function(){throw J(new $r(Ur((jr(),xh))))},l.Ol=function(){return mi(this),yi(),yi(),new Yd(0,36)},l.Pl=function(){throw J(new $r(Ur((jr(),xh))))},l.Ql=function(){throw J(new $r(Ur((jr(),xh))))},l.Rl=function(){throw J(new $r(Ur((jr(),xh))))},l.Sl=function(){throw J(new $r(Ur((jr(),xh))))},l.Tl=function(){throw J(new $r(Ur((jr(),xh))))},l.Ul=function(){throw J(new $r(Ur((jr(),xh))))},l.Vl=function(){var t;if(mi(this),t=Pne(Xv(this),0),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Wl=function(){throw J(new $r(Ur((jr(),xh))))},l.Xl=function(t){return mi(this),Ij(t,(yi(),yi(),new $m(3,t)))},l.Yl=function(t){var n;return mi(this),n=(yi(),yi(),new e_(2)),pb(n,t),pb(n,nA),n},l.Zl=function(t){return mi(this),yi(),yi(),new $m(3,t)};var s5=null,LE=null;O($g,"RegEx/ParserForXMLSchema",1824),M(117,1,V7,cv),l.$l=function(t){throw J(new tc("Not supported."))},l._l=function(){return-1},l.am=function(t){return null},l.bm=function(){return null},l.cm=function(t){},l.dm=function(t){},l.em=function(){return 0},l.Ib=function(){return this.fm(0)},l.fm=function(t){return this.e==11?".":""},l.e=0;var rLe,ME,tA,$4t,iLe,Yy=null,sU,Lfe=null,sLe,nA,Mfe=null,aLe,oLe,cLe,uLe,lLe,H4t,qk,z4t,G4t,q4t,V4t,DE,U4t,W4t,D3n=O($g,"RegEx/Token",117);M(136,117,{3:1,136:1,117:1},Hl),l.fm=function(t){var n,r,s;if(this.e==4)if(this==sLe)r=".";else if(this==sU)r="\\d";else if(this==DE)r="\\w";else if(this==qk)r="\\s";else{for(s=new bg,s.a+="[",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?To(s,yI(this.b[n])):(To(s,yI(this.b[n])),s.a+="-",To(s,yI(this.b[n+1])));s.a+="]",r=s.a}else if(this==cLe)r="\\D";else if(this==lLe)r="\\W";else if(this==uLe)r="\\S";else{for(s=new bg,s.a+="[^",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?To(s,yI(this.b[n])):(To(s,yI(this.b[n])),s.a+="-",To(s,yI(this.b[n+1])));s.a+="]",r=s.a}return r},l.a=!1,l.c=!1,O($g,"RegEx/RangeToken",136),M(584,1,{584:1},ipe),l.a=0,O($g,"RegEx/RegexParser/ReferencePosition",584),M(583,1,{3:1,583:1},Uze),l.Fb=function(t){var n;return t==null||!we(t,583)?!1:(n=u(t,583),an(this.b,n.b)&&this.a==n.a)},l.Hb=function(){return Ig(this.b+"/"+g5e(this.a))},l.Ib=function(){return this.c.fm(this.a)},l.a=0,O($g,"RegEx/RegularExpression",583),M(223,117,V7,Yd),l._l=function(){return this.a},l.fm=function(t){var n,r,s;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:s="\\"+cne(this.a&Ss);break;case 12:s="\\f";break;case 10:s="\\n";break;case 13:s="\\r";break;case 9:s="\\t";break;case 27:s="\\e";break;default:this.a>=so?(r=(n=this.a>>>0,"0"+n.toString(16)),s="\\v"+jl(r,r.length-6,r.length)):s=""+cne(this.a&Ss)}break;case 8:this==aLe||this==oLe?s=""+cne(this.a&Ss):s="\\"+cne(this.a&Ss);break;default:s=null}return s},l.a=0,O($g,"RegEx/Token/CharToken",223),M(309,117,V7,$m),l.am=function(t){return this.a},l.cm=function(t){this.b=t},l.dm=function(t){this.c=t},l.em=function(){return 1},l.fm=function(t){var n;if(this.e==3)if(this.c<0&&this.b<0)n=this.a.fm(t)+"*";else if(this.c==this.b)n=this.a.fm(t)+"{"+this.c+"}";else if(this.c>=0&&this.b>=0)n=this.a.fm(t)+"{"+this.c+","+this.b+"}";else if(this.c>=0&&this.b<0)n=this.a.fm(t)+"{"+this.c+",}";else throw J(new tc("Token#toString(): CLOSURE "+this.c+io+this.b));else if(this.c<0&&this.b<0)n=this.a.fm(t)+"*?";else if(this.c==this.b)n=this.a.fm(t)+"{"+this.c+"}?";else if(this.c>=0&&this.b>=0)n=this.a.fm(t)+"{"+this.c+","+this.b+"}?";else if(this.c>=0&&this.b<0)n=this.a.fm(t)+"{"+this.c+",}?";else throw J(new tc("Token#toString(): NONGREEDYCLOSURE "+this.c+io+this.b));return n},l.b=0,l.c=0,O($g,"RegEx/Token/ClosureToken",309),M(821,117,V7,Xve),l.am=function(t){return t==0?this.a:this.b},l.em=function(){return 2},l.fm=function(t){var n;return this.b.e==3&&this.b.am(0)==this.a?n=this.a.fm(t)+"+":this.b.e==9&&this.b.am(0)==this.a?n=this.a.fm(t)+"+?":n=this.a.fm(t)+(""+this.b.fm(t)),n},O($g,"RegEx/Token/ConcatToken",821),M(1822,117,V7,ZJe),l.am=function(t){if(t==0)return this.d;if(t==1)return this.b;throw J(new tc("Internal Error: "+t))},l.em=function(){return this.b?2:1},l.fm=function(t){var n;return this.c>0?n="(?("+this.c+")":this.a.e==8?n="(?("+this.a+")":n="(?"+this.a,this.b?n+=this.d+"|"+this.b+")":n+=this.d+")",n},l.c=0,O($g,"RegEx/Token/ConditionToken",1822),M(1823,117,V7,ZXe),l.am=function(t){return this.b},l.em=function(){return 1},l.fm=function(t){return"(?"+(this.a==0?"":g5e(this.a))+(this.c==0?"":g5e(this.c))+":"+this.b.fm(t)+")"},l.a=0,l.c=0,O($g,"RegEx/Token/ModifierToken",1823),M(822,117,V7,nwe),l.am=function(t){return this.a},l.em=function(){return 1},l.fm=function(t){var n;switch(n=null,this.e){case 6:this.b==0?n="(?:"+this.a.fm(t)+")":n="("+this.a.fm(t)+")";break;case 20:n="(?="+this.a.fm(t)+")";break;case 21:n="(?!"+this.a.fm(t)+")";break;case 22:n="(?<="+this.a.fm(t)+")";break;case 23:n="(?"+this.a.fm(t)+")"}return n},l.b=0,O($g,"RegEx/Token/ParenToken",822),M(521,117,{3:1,117:1,521:1},cre),l.bm=function(){return this.b},l.fm=function(t){return this.e==12?"\\"+this.a:Vdn(this.b)},l.a=0,O($g,"RegEx/Token/StringToken",521),M(465,117,V7,e_),l.$l=function(t){pb(this,t)},l.am=function(t){return u(Lv(this.a,t),117)},l.em=function(){return this.a?this.a.a.c.length:0},l.fm=function(t){var n,r,s,o,h;if(this.e==1){if(this.a.a.c.length==2)n=u(Lv(this.a,0),117),r=u(Lv(this.a,1),117),r.e==3&&r.am(0)==n?o=n.fm(t)+"+":r.e==9&&r.am(0)==n?o=n.fm(t)+"+?":o=n.fm(t)+(""+r.fm(t));else{for(h=new bg,s=0;s=this.c.b:this.a<=this.c.b},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Vb=function(){return this.b-1},l.Qb=function(){throw J(new pg(v0t))},l.a=0,l.b=0,O(L8e,"ExclusiveRange/RangeIterator",254);var Sh=v8(mG,"C"),Lr=v8(qC,"I"),El=v8(sk,"Z"),S2=v8(VC,"J"),el=v8(HC,"B"),pa=v8(zC,"D"),Xy=v8(GC,"F"),a5=v8(UC,"S"),I3n=ss("org.eclipse.elk.core.labels","ILabelManager"),hLe=ss(Qa,"DiagnosticChain"),fLe=ss(Vdt,"ResourceSet"),dLe=O(Qa,"InvocationTargetException",null),Y4t=(fF(),Enn),X4t=X4t=fhn;win(hVt),qin("permProps",[[[IG,OG],[NG,"gecko1_8"]],[[IG,OG],[NG,"ie10"]],[[IG,OG],[NG,"ie8"]],[[IG,OG],[NG,"ie9"]],[[IG,OG],[NG,"safari"]]]),X4t(null,"elk",null)}).call(this)}).call(this,typeof Wk<"u"?Wk:typeof self<"u"?self:typeof window<"u"?window:{})},{}],3:[function(f,p,w){function y(B,R){if(!(B instanceof R))throw new TypeError("Cannot call a class as a function")}function b(B,R){if(!B)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return R&&(typeof R=="object"||typeof R=="function")?R:B}function E(B,R){if(typeof R!="function"&&R!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof R);B.prototype=Object.create(R&&R.prototype,{constructor:{value:B,enumerable:!1,writable:!0,configurable:!0}}),R&&(Object.setPrototypeOf?Object.setPrototypeOf(B,R):B.__proto__=R)}var S=f("./elk-api.js").default,N=function(B){E(R,B);function R(){var j=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};y(this,R);var $=Object.assign({},j),V=!1;try{f.resolve("web-worker"),V=!0}catch{}if(j.workerUrl)if(V){var Q=f("web-worker");$.workerFactory=function(se){return new Q(se)}}else console.warn(`Web worker requested but 'web-worker' package not installed. +Consider installing the package or pass your own 'workerFactory' to ELK's constructor. +... Falling back to non-web worker version.`);if(!$.workerFactory){var oe=f("./elk-worker.min.js"),ce=oe.Worker;$.workerFactory=function(se){return new ce(se)}}return b(this,(R.__proto__||Object.getPrototypeOf(R)).call(this,$))}return R}(S);Object.defineProperty(p.exports,"__esModule",{value:!0}),p.exports=N,N.default=N},{"./elk-api.js":1,"./elk-worker.min.js":2,"web-worker":4}],4:[function(f,p,w){p.exports=Worker},{}]},{},[3])(3)})})(qGt);const VGt=xLe(Mge),HFe=new VGt;let Zb={};const UGt={};let O5={};const WGt=async function(i,a,f,p,w,y,b){const S=f.select(`[id="${a}"]`).insert("g").attr("class","nodes"),N=Object.keys(i);return await Promise.all(N.map(async function(B){const R=i[B];let j="default";R.classes.length>0&&(j=R.classes.join(" ")),j=j+" flowchart-label";const $=Yw(R.styles);let V=R.text!==void 0?R.text:R.id;const Q={width:0,height:0},oe=[{id:R.id+"-west",layoutOptions:{"port.side":"WEST"}},{id:R.id+"-east",layoutOptions:{"port.side":"EAST"}},{id:R.id+"-south",layoutOptions:{"port.side":"SOUTH"}},{id:R.id+"-north",layoutOptions:{"port.side":"NORTH"}}];let ce=0,se="",ge={};switch(R.type){case"round":ce=5,se="rect";break;case"square":se="rect";break;case"diamond":se="question",ge={portConstraints:"FIXED_SIDE"};break;case"hexagon":se="hexagon";break;case"odd":se="rect_left_inv_arrow";break;case"lean_right":se="lean_right";break;case"lean_left":se="lean_left";break;case"trapezoid":se="trapezoid";break;case"inv_trapezoid":se="inv_trapezoid";break;case"odd_right":se="rect_left_inv_arrow";break;case"circle":se="circle";break;case"ellipse":se="ellipse";break;case"stadium":se="stadium";break;case"subroutine":se="subroutine";break;case"cylinder":se="cylinder";break;case"group":se="rect";break;case"doublecircle":se="doublecircle";break;default:se="rect"}const ye={labelStyle:$.labelStyle,shape:se,labelText:V,labelType:R.labelType,rx:ce,ry:ce,class:j,style:$.style,id:R.id,link:R.link,linkTarget:R.linkTarget,tooltip:w.db.getTooltip(R.id)||"",domId:w.db.lookUpDomId(R.id),haveCallback:R.haveCallback,width:R.type==="group"?500:void 0,dir:R.dir,type:R.type,props:R.props,padding:Tt().flowchart.padding};let ke,Ae;if(ye.type!=="group")Ae=await KBe(S,ye,R.dir),ke=Ae.node().getBBox();else{p.createElementNS("http://www.w3.org/2000/svg","text");const{shapeSvg:ve,bbox:te}=await jd(S,ye,void 0,!0);Q.width=te.width,Q.wrappingWidth=Tt().flowchart.wrappingWidth,Q.height=te.height,Q.labelNode=ve.node(),ye.labelData=Q}const de={id:R.id,ports:R.type==="diamond"?oe:[],layoutOptions:ge,labelText:V,labelData:Q,domId:w.db.lookUpDomId(R.id),width:ke==null?void 0:ke.width,height:ke==null?void 0:ke.height,type:R.type,el:Ae,parent:y.parentById[R.id]};O5[ye.id]=de})),b},zFe=(i,a,f)=>{const p={TB:{in:{north:"north"},out:{south:"west",west:"east",east:"south"}},LR:{in:{west:"west"},out:{east:"south",south:"north",north:"east"}},RL:{in:{east:"east"},out:{west:"north",north:"south",south:"west"}},BT:{in:{south:"south"},out:{north:"east",east:"west",west:"north"}}};return p.TD=p.TB,Fe.info("abc88",f,a,i),p[f][a][i]},GFe=(i,a,f)=>{if(Fe.info("getNextPort abc88",{node:i,edgeDirection:a,graphDirection:f}),!Zb[i])switch(f){case"TB":case"TD":Zb[i]={inPosition:"north",outPosition:"south"};break;case"BT":Zb[i]={inPosition:"south",outPosition:"north"};break;case"RL":Zb[i]={inPosition:"east",outPosition:"west"};break;case"LR":Zb[i]={inPosition:"west",outPosition:"east"};break}const p=a==="in"?Zb[i].inPosition:Zb[i].outPosition;return a==="in"?Zb[i].inPosition=zFe(Zb[i].inPosition,a,f):Zb[i].outPosition=zFe(Zb[i].outPosition,a,f),p},KGt=(i,a)=>{let f=i.start,p=i.end;const w=f,y=p,b=O5[f],E=O5[p];return!b||!E?{source:f,target:p}:(b.type==="diamond"&&(f=`${f}-${GFe(f,"out",a)}`),E.type==="diamond"&&(p=`${p}-${GFe(p,"in",a)}`),{source:f,target:p,sourceId:w,targetId:y})},YGt=function(i,a,f,p){Fe.info("abc78 edges = ",i);const w=p.insert("g").attr("class","edgeLabels");let y={},b=a.db.getDirection(),E,S;if(i.defaultStyle!==void 0){const N=Yw(i.defaultStyle);E=N.style,S=N.labelStyle}return i.forEach(function(N){var B="L-"+N.start+"-"+N.end;y[B]===void 0?(y[B]=0,Fe.info("abc78 new entry",B,y[B])):(y[B]++,Fe.info("abc78 new entry",B,y[B]));let R=B+"-"+y[B];Fe.info("abc78 new link id to be used is",B,R,y[B]);var j="LS-"+N.start,$="LE-"+N.end;const V={style:"",labelStyle:""};switch(V.minlen=N.length||1,N.type==="arrow_open"?V.arrowhead="none":V.arrowhead="normal",V.arrowTypeStart="arrow_open",V.arrowTypeEnd="arrow_open",N.type){case"double_arrow_cross":V.arrowTypeStart="arrow_cross";case"arrow_cross":V.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":V.arrowTypeStart="arrow_point";case"arrow_point":V.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":V.arrowTypeStart="arrow_circle";case"arrow_circle":V.arrowTypeEnd="arrow_circle";break}let Q="",oe="";switch(N.stroke){case"normal":Q="fill:none;",E!==void 0&&(Q=E),S!==void 0&&(oe=S),V.thickness="normal",V.pattern="solid";break;case"dotted":V.thickness="normal",V.pattern="dotted",V.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":V.thickness="thick",V.pattern="solid",V.style="stroke-width: 3.5px;fill:none;";break}if(N.style!==void 0){const Ae=Yw(N.style);Q=Ae.style,oe=Ae.labelStyle}V.style=V.style+=Q,V.labelStyle=V.labelStyle+=oe,N.interpolate!==void 0?V.curve=Ub(N.interpolate,ng):i.defaultInterpolate!==void 0?V.curve=Ub(i.defaultInterpolate,ng):V.curve=Ub(UGt.curve,ng),N.text===void 0?N.style!==void 0&&(V.arrowheadStyle="fill: #333"):(V.arrowheadStyle="fill: #333",V.labelpos="c"),V.labelType=N.labelType,V.label=N.text.replace(Wa.lineBreakRegex,` +`),N.style===void 0&&(V.style=V.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),V.labelStyle=V.labelStyle.replace("color:","fill:"),V.id=R,V.classes="flowchart-link "+j+" "+$;const ce=QBe(w,V),{source:se,target:ge,sourceId:ye,targetId:ke}=KGt(N,b);Fe.debug("abc78 source and target",se,ge),f.edges.push({id:"e"+N.start+N.end,sources:[se],targets:[ge],sourceId:ye,targetId:ke,labelEl:ce,labels:[{width:V.width,height:V.height,orgWidth:V.width,orgHeight:V.height,text:V.label,layoutOptions:{"edgeLabels.inline":"true","edgeLabels.placement":"CENTER"}}],edgeData:V})}),f},XGt=function(i,a,f,p){let w="";switch(p&&(w=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,w=w.replace(/\(/g,"\\("),w=w.replace(/\)/g,"\\)")),a.arrowTypeStart){case"arrow_cross":i.attr("marker-start","url("+w+"#"+f+"-crossStart)");break;case"arrow_point":i.attr("marker-start","url("+w+"#"+f+"-pointStart)");break;case"arrow_barb":i.attr("marker-start","url("+w+"#"+f+"-barbStart)");break;case"arrow_circle":i.attr("marker-start","url("+w+"#"+f+"-circleStart)");break;case"aggregation":i.attr("marker-start","url("+w+"#"+f+"-aggregationStart)");break;case"extension":i.attr("marker-start","url("+w+"#"+f+"-extensionStart)");break;case"composition":i.attr("marker-start","url("+w+"#"+f+"-compositionStart)");break;case"dependency":i.attr("marker-start","url("+w+"#"+f+"-dependencyStart)");break;case"lollipop":i.attr("marker-start","url("+w+"#"+f+"-lollipopStart)");break}switch(a.arrowTypeEnd){case"arrow_cross":i.attr("marker-end","url("+w+"#"+f+"-crossEnd)");break;case"arrow_point":i.attr("marker-end","url("+w+"#"+f+"-pointEnd)");break;case"arrow_barb":i.attr("marker-end","url("+w+"#"+f+"-barbEnd)");break;case"arrow_circle":i.attr("marker-end","url("+w+"#"+f+"-circleEnd)");break;case"aggregation":i.attr("marker-end","url("+w+"#"+f+"-aggregationEnd)");break;case"extension":i.attr("marker-end","url("+w+"#"+f+"-extensionEnd)");break;case"composition":i.attr("marker-end","url("+w+"#"+f+"-compositionEnd)");break;case"dependency":i.attr("marker-end","url("+w+"#"+f+"-dependencyEnd)");break;case"lollipop":i.attr("marker-end","url("+w+"#"+f+"-lollipopEnd)");break}},QGt=function(i,a){Fe.info("Extracting classes"),a.db.clear("ver-2");try{return a.parse(i),a.db.getClasses()}catch{return{}}},ZGt=function(i){const a={parentById:{},childrenById:{}},f=i.getSubGraphs();return Fe.info("Subgraphs - ",f),f.forEach(function(p){p.nodes.forEach(function(w){a.parentById[w]=p.id,a.childrenById[p.id]===void 0&&(a.childrenById[p.id]=[]),a.childrenById[p.id].push(w)})}),f.forEach(function(p){p.id,a.parentById[p.id]!==void 0&&a.parentById[p.id]}),a},JGt=function(i,a,f){const p=GGt(i,a,f);if(p===void 0||p==="root")return{x:0,y:0};const w=O5[p].offset;return{x:w.posX,y:w.posY}},eqt=function(i,a,f,p,w){const y=JGt(a.sourceId,a.targetId,w),b=a.sections[0].startPoint,E=a.sections[0].endPoint,N=(a.sections[0].bendPoints?a.sections[0].bendPoints:[]).map(oe=>[oe.x+y.x,oe.y+y.y]),B=[[b.x+y.x,b.y+y.y],...N,[E.x+y.x,E.y+y.y]],R=WE().curve(ng),j=i.insert("path").attr("d",R(B)).attr("class","path").attr("fill","none"),$=i.insert("g").attr("class","edgeLabel"),V=Cr($.node().appendChild(a.labelEl)),Q=V.node().firstChild.getBoundingClientRect();V.attr("width",Q.width),V.attr("height",Q.height),$.attr("transform",`translate(${a.labels[0].x+y.x}, ${a.labels[0].y+y.y})`),XGt(j,f,p.type,p.arrowMarkerAbsolute)},qFe=(i,a)=>{i.forEach(f=>{f.children||(f.children=[]);const p=a.childrenById[f.id];p&&p.forEach(w=>{f.children.push(O5[w])}),qFe(f.children,a)})},tqt=async function(i,a,f,p){var de;p.db.clear(),O5={},Zb={},p.db.setGen("gen-2"),p.parser.parse(i);const w=Cr("body").append("div").attr("style","height:400px").attr("id","cy");let y={id:"root",layoutOptions:{"elk.hierarchyHandling":"INCLUDE_CHILDREN","org.eclipse.elk.padding":"[top=100, left=100, bottom=110, right=110]","elk.layered.spacing.edgeNodeBetweenLayers":"30","elk.direction":"DOWN"},children:[],edges:[]};switch(Fe.info("Drawing flowchart using v3 renderer",HFe),p.db.getDirection()){case"BT":y.layoutOptions["elk.direction"]="UP";break;case"TB":y.layoutOptions["elk.direction"]="DOWN";break;case"LR":y.layoutOptions["elk.direction"]="RIGHT";break;case"RL":y.layoutOptions["elk.direction"]="LEFT";break}const{securityLevel:E,flowchart:S}=Tt();let N;E==="sandbox"&&(N=Cr("#i"+a));const B=Cr(E==="sandbox"?N.nodes()[0].contentDocument.body:"body"),R=E==="sandbox"?N.nodes()[0].contentDocument:document,j=B.select(`[id="${a}"]`);vBe(j,["point","circle","cross"],p.type,p.arrowMarkerAbsolute);const V=p.db.getVertices();let Q;const oe=p.db.getSubGraphs();Fe.info("Subgraphs - ",oe);for(let ve=oe.length-1;ve>=0;ve--)Q=oe[ve],p.db.addVertex(Q.id,{text:Q.title,type:Q.labelType},"group",void 0,Q.classes,Q.dir);const ce=j.insert("g").attr("class","subgraphs"),se=ZGt(p.db);y=await WGt(V,a,B,R,p,se,y);const ge=j.insert("g").attr("class","edges edgePath"),ye=p.db.getEdges();y=YGt(ye,p,y,j),Object.keys(O5).forEach(ve=>{const te=O5[ve];te.parent||y.children.push(te),se.childrenById[ve]!==void 0&&(te.labels=[{text:te.labelText,layoutOptions:{"nodeLabels.placement":"[H_CENTER, V_TOP, INSIDE]"},width:te.labelData.width,height:te.labelData.height}],delete te.x,delete te.y,delete te.width,delete te.height)}),qFe(y.children,se),Fe.info("after layout",JSON.stringify(y,null,2));const Ae=await HFe.layout(y);VFe(0,0,Ae.children,j,ce,p,0),Fe.info("after layout",Ae),(de=Ae.edges)==null||de.map(ve=>{eqt(ge,ve,ve.edgeData,p,se)}),YE({},j,S.diagramPadding,S.useMaxWidth),w.remove()},VFe=(i,a,f,p,w,y,b)=>{f.forEach(function(E){if(E)if(O5[E.id].offset={posX:E.x+i,posY:E.y+a,x:i,y:a,depth:b,width:E.width,height:E.height},E.type==="group"){const S=w.insert("g").attr("class","subgraph");S.insert("rect").attr("class","subgraph subgraph-lvl-"+b%5+" node").attr("x",E.x+i).attr("y",E.y+a).attr("width",E.width).attr("height",E.height);const N=S.insert("g").attr("class","label"),B=Tt().flowchart.htmlLabels?E.labelData.width/2:0;N.attr("transform",`translate(${E.labels[0].x+i+E.x+B}, ${E.labels[0].y+a+E.y+3})`),N.node().appendChild(E.labelData.labelNode),Fe.info("Id (UGH)= ",E.type,E.labels)}else Fe.info("Id (UGH)= ",E.id),E.el.attr("transform",`translate(${E.x+i+E.width/2}, ${E.y+a+E.height/2})`)}),f.forEach(function(E){E&&E.type==="group"&&VFe(i+E.x,a+E.y,E.children,p,w,y,b+1)})},nqt={getClasses:QGt,draw:tqt},rqt=i=>{let a="";for(let f=0;f<5;f++)a+=` + .subgraph-lvl-${f} { + fill: ${i[`surface${f}`]}; + stroke: ${i[`surfacePeer${f}`]}; + } + `;return a},iqt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{db:hMt,renderer:nqt,parser:Dde,styles:i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span { + color: ${i.titleColor}; + } + + .label text,span { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.85; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } + .subgraph { + stroke-width:2; + rx:3; + } + // .subgraph-lvl-1 { + // fill:#ccc; + // // stroke:black; + // } + + .flowchart-label text { + text-anchor: middle; + } + + ${rqt(i)} +`}},Symbol.toStringTag,{value:"Module"}));var Dge=function(){var i=function(oe,ce,se,ge){for(se=se||{},ge=oe.length;ge--;se[oe[ge]]=ce);return se},a=[1,2],f=[1,5],p=[6,9,11,17,18,20,22,23,26,27,28],w=[1,15],y=[1,16],b=[1,17],E=[1,18],S=[1,19],N=[1,23],B=[1,24],R=[1,27],j=[4,6,9,11,17,18,20,22,23,26,27,28],$={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,period_statement:24,event_statement:25,period:26,event:27,open_directive:28,type_directive:29,arg_directive:30,close_directive:31,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",26:"period",27:"event",28:"open_directive",29:"type_directive",30:"arg_directive",31:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[24,1],[25,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(ce,se,ge,ye,ke,Ae,de){var ve=Ae.length-1;switch(ke){case 1:return Ae[ve-1];case 3:this.$=[];break;case 4:Ae[ve-1].push(Ae[ve]),this.$=Ae[ve-1];break;case 5:case 6:this.$=Ae[ve];break;case 7:case 8:this.$=[];break;case 11:ye.getCommonDb().setDiagramTitle(Ae[ve].substr(6)),this.$=Ae[ve].substr(6);break;case 12:this.$=Ae[ve].trim(),ye.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=Ae[ve].trim(),ye.getCommonDb().setAccDescription(this.$);break;case 15:ye.addSection(Ae[ve].substr(8)),this.$=Ae[ve].substr(8);break;case 19:ye.addTask(Ae[ve],0,""),this.$=Ae[ve];break;case 20:ye.addEvent(Ae[ve].substr(2)),this.$=Ae[ve];break;case 21:ye.parseDirective("%%{","open_directive");break;case 22:ye.parseDirective(Ae[ve],"type_directive");break;case 23:Ae[ve]=Ae[ve].trim().replace(/'/g,'"'),ye.parseDirective(Ae[ve],"arg_directive");break;case 24:ye.parseDirective("}%%","close_directive","timeline");break}},table:[{3:1,4:a,7:3,12:4,28:f},{1:[3]},i(p,[2,3],{5:6}),{3:7,4:a,7:3,12:4,28:f},{13:8,29:[1,9]},{29:[2,21]},{6:[1,10],7:22,8:11,9:[1,12],10:13,11:[1,14],12:4,17:w,18:y,20:b,22:E,23:S,24:20,25:21,26:N,27:B,28:f},{1:[2,2]},{14:25,15:[1,26],31:R},i([15,31],[2,22]),i(p,[2,8],{1:[2,1]}),i(p,[2,4]),{7:22,10:28,12:4,17:w,18:y,20:b,22:E,23:S,24:20,25:21,26:N,27:B,28:f},i(p,[2,6]),i(p,[2,7]),i(p,[2,11]),{19:[1,29]},{21:[1,30]},i(p,[2,14]),i(p,[2,15]),i(p,[2,16]),i(p,[2,17]),i(p,[2,18]),i(p,[2,19]),i(p,[2,20]),{11:[1,31]},{16:32,30:[1,33]},{11:[2,24]},i(p,[2,5]),i(p,[2,12]),i(p,[2,13]),i(j,[2,9]),{14:34,31:R},{31:[2,23]},{11:[1,35]},i(j,[2,10])],defaultActions:{5:[2,21],7:[2,2],27:[2,24],33:[2,23]},parseError:function(ce,se){if(se.recoverable)this.trace(ce);else{var ge=new Error(ce);throw ge.hash=se,ge}},parse:function(ce){var se=this,ge=[0],ye=[],ke=[null],Ae=[],de=this.table,ve="",te=0,xe=0,De=2,he=1,Ie=Ae.slice.call(arguments,1),ee=Object.create(this.lexer),rt={yy:{}};for(var me in this.yy)Object.prototype.hasOwnProperty.call(this.yy,me)&&(rt.yy[me]=this.yy[me]);ee.setInput(ce,rt.yy),rt.yy.lexer=ee,rt.yy.parser=this,typeof ee.yylloc>"u"&&(ee.yylloc={});var gt=ee.yylloc;Ae.push(gt);var pe=ee.options&&ee.options.ranges;typeof rt.yy.parseError=="function"?this.parseError=rt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Et(){var vt;return vt=ye.pop()||ee.lex()||he,typeof vt!="number"&&(vt instanceof Array&&(ye=vt,vt=ye.pop()),vt=se.symbols_[vt]||vt),vt}for(var wt,jt,At,Bt,cn={},Nn,Ot,oi,kt;;){if(jt=ge[ge.length-1],this.defaultActions[jt]?At=this.defaultActions[jt]:((wt===null||typeof wt>"u")&&(wt=Et()),At=de[jt]&&de[jt][wt]),typeof At>"u"||!At.length||!At[0]){var Dt="";kt=[];for(Nn in de[jt])this.terminals_[Nn]&&Nn>De&&kt.push("'"+this.terminals_[Nn]+"'");ee.showPosition?Dt="Parse error on line "+(te+1)+`: +`+ee.showPosition()+` +Expecting `+kt.join(", ")+", got '"+(this.terminals_[wt]||wt)+"'":Dt="Parse error on line "+(te+1)+": Unexpected "+(wt==he?"end of input":"'"+(this.terminals_[wt]||wt)+"'"),this.parseError(Dt,{text:ee.match,token:this.terminals_[wt]||wt,line:ee.yylineno,loc:gt,expected:kt})}if(At[0]instanceof Array&&At.length>1)throw new Error("Parse Error: multiple actions possible at state: "+jt+", token: "+wt);switch(At[0]){case 1:ge.push(wt),ke.push(ee.yytext),Ae.push(ee.yylloc),ge.push(At[1]),wt=null,xe=ee.yyleng,ve=ee.yytext,te=ee.yylineno,gt=ee.yylloc;break;case 2:if(Ot=this.productions_[At[1]][1],cn.$=ke[ke.length-Ot],cn._$={first_line:Ae[Ae.length-(Ot||1)].first_line,last_line:Ae[Ae.length-1].last_line,first_column:Ae[Ae.length-(Ot||1)].first_column,last_column:Ae[Ae.length-1].last_column},pe&&(cn._$.range=[Ae[Ae.length-(Ot||1)].range[0],Ae[Ae.length-1].range[1]]),Bt=this.performAction.apply(cn,[ve,xe,te,rt.yy,At[1],ke,Ae].concat(Ie)),typeof Bt<"u")return Bt;Ot&&(ge=ge.slice(0,-1*Ot*2),ke=ke.slice(0,-1*Ot),Ae=Ae.slice(0,-1*Ot)),ge.push(this.productions_[At[1]][0]),ke.push(cn.$),Ae.push(cn._$),oi=de[ge[ge.length-2]][ge[ge.length-1]],ge.push(oi);break;case 3:return!0}}return!0}},V=function(){var oe={EOF:1,parseError:function(se,ge){if(this.yy.parser)this.yy.parser.parseError(se,ge);else throw new Error(se)},setInput:function(ce,se){return this.yy=se||this.yy||{},this._input=ce,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ce=this._input[0];this.yytext+=ce,this.yyleng++,this.offset++,this.match+=ce,this.matched+=ce;var se=ce.match(/(?:\r\n?|\n).*/g);return se?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ce},unput:function(ce){var se=ce.length,ge=ce.split(/(?:\r\n?|\n)/g);this._input=ce+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-se),this.offset-=se;var ye=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ge.length-1&&(this.yylineno-=ge.length-1);var ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ge?(ge.length===ye.length?this.yylloc.first_column:0)+ye[ye.length-ge.length].length-ge[0].length:this.yylloc.first_column-se},this.options.ranges&&(this.yylloc.range=[ke[0],ke[0]+this.yyleng-se]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ce){this.unput(this.match.slice(ce))},pastInput:function(){var ce=this.matched.substr(0,this.matched.length-this.match.length);return(ce.length>20?"...":"")+ce.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ce=this.match;return ce.length<20&&(ce+=this._input.substr(0,20-ce.length)),(ce.substr(0,20)+(ce.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ce=this.pastInput(),se=new Array(ce.length+1).join("-");return ce+this.upcomingInput()+` +`+se+"^"},test_match:function(ce,se){var ge,ye,ke;if(this.options.backtrack_lexer&&(ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ke.yylloc.range=this.yylloc.range.slice(0))),ye=ce[0].match(/(?:\r\n?|\n).*/g),ye&&(this.yylineno+=ye.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ye?ye[ye.length-1].length-ye[ye.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ce[0].length},this.yytext+=ce[0],this.match+=ce[0],this.matches=ce,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ce[0].length),this.matched+=ce[0],ge=this.performAction.call(this,this.yy,this,se,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ge)return ge;if(this._backtrack){for(var Ae in ke)this[Ae]=ke[Ae];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ce,se,ge,ye;this._more||(this.yytext="",this.match="");for(var ke=this._currentRules(),Ae=0;Aese[0].length)){if(se=ge,ye=Ae,this.options.backtrack_lexer){if(ce=this.test_match(ge,ke[Ae]),ce!==!1)return ce;if(this._backtrack){se=!1;continue}else return!1}else if(!this.options.flex)break}return se?(ce=this.test_match(se,ke[ye]),ce!==!1?ce:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var se=this.next();return se||this.lex()},begin:function(se){this.conditionStack.push(se)},popState:function(){var se=this.conditionStack.length-1;return se>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(se){return se=this.conditionStack.length-1-Math.abs(se||0),se>=0?this.conditionStack[se]:"INITIAL"},pushState:function(se){this.begin(se)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(se,ge,ye,ke){switch(ye){case 0:return this.begin("open_directive"),28;case 1:return this.begin("type_directive"),29;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),31;case 4:return 30;case 5:break;case 6:break;case 7:return 11;case 8:break;case 9:break;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 27;case 21:return 26;case 22:return 6;case 23:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?::\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23],inclusive:!0}}};return oe}();$.lexer=V;function Q(){this.yy={}}return Q.prototype=$,$.Parser=Q,new Q}();Dge.parser=Dge;const sqt=Dge;let gL="",UFe=0;const Ige=[],WK=[],pL=[],WFe=()=>kIe,KFe=(i,a,f)=>{rde(globalThis,i,a,f)},YFe=function(){Ige.length=0,WK.length=0,gL="",pL.length=0,rp()},XFe=function(i){gL=i,Ige.push(i)},QFe=function(){return Ige},ZFe=function(){let i=nje();const a=100;let f=0;for(;!i&&ff.id===UFe-1).events.push(i)},tje=function(i){const a={section:gL,type:gL,description:i,task:i,classes:[]};WK.push(a)},nje=function(){const i=function(f){return pL[f].processed};let a=!0;for(const[f,p]of pL.entries())i(f),a=a&&p.processed;return a},aqt=Object.freeze(Object.defineProperty({__proto__:null,addEvent:eje,addSection:XFe,addTask:JFe,addTaskOrg:tje,clear:YFe,default:{clear:YFe,getCommonDb:WFe,addSection:XFe,getSections:QFe,getTasks:ZFe,addTask:JFe,addTaskOrg:tje,addEvent:eje,parseDirective:KFe},getCommonDb:WFe,getSections:QFe,getTasks:ZFe,parseDirective:KFe},Symbol.toStringTag,{value:"Module"})),oqt=12,KK=function(i,a){const f=i.append("rect");return f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.class!==void 0&&f.attr("class",a.class),f},cqt=function(i,a){const p=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function y(S){const N=CA().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",N).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(S){const N=CA().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",N).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(S){S.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?y(w):a.score<3?b(w):E(w),p},uqt=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},rje=function(i,a){const f=a.text.replace(//gi," "),p=i.append("text");p.attr("x",a.x),p.attr("y",a.y),p.attr("class","legend"),p.style("text-anchor",a.anchor),a.class!==void 0&&p.attr("class",a.class);const w=p.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),p},lqt=function(i,a){function f(w,y,b,E,S){return w+","+y+" "+(w+b)+","+y+" "+(w+b)+","+(y+E-S)+" "+(w+b-S*1.2)+","+(y+E)+" "+w+","+(y+E)}const p=i.append("polygon");p.attr("points",f(a.x,a.y,50,20,7)),p.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,rje(i,a)},hqt=function(i,a,f){const p=i.append("g"),w=Oge();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width,w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,KK(p,w),sje(f)(a.text,p,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let ije=-1;const fqt=function(i,a,f){const p=a.x+f.width/2,w=i.append("g");ije++;const y=300+5*30;w.append("line").attr("id","task"+ije).attr("x1",p).attr("y1",a.y).attr("x2",p).attr("y2",y).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),cqt(w,{cx:p,cy:300+(5-a.score)*30,score:a.score});const b=Oge();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,KK(w,b),a.x+14,sje(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},dqt=function(i,a){KK(i,{x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,class:"rect"}).lower()},gqt=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},Oge=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},sje=function(){function i(w,y,b,E,S,N,B,R){const j=y.append("text").attr("x",b+S/2).attr("y",E+N/2+5).style("font-color",R).style("text-anchor","middle").text(w);p(j,B)}function a(w,y,b,E,S,N,B,R,j){const{taskFontSize:$,taskFontFamily:V}=R,Q=w.split(//gi);for(let oe=0;oe)/).reverse(),w,y=[],b=1.1,E=f.attr("y"),S=parseFloat(f.attr("dy")),N=f.text(null).append("tspan").attr("x",0).attr("y",E).attr("dy",S+"em");for(let B=0;Ba||w==="
")&&(y.pop(),N.text(y.join(" ").trim()),w==="
"?y=[""]:y=[w],N=f.append("tspan").attr("x",0).attr("y",E).attr("dy",b+"em").text(w))})}const bqt=function(i,a,f,p){const w=f%oqt-1,y=i.append("g");a.section=w,y.attr("class",(a.class?a.class+" ":"")+"timeline-node "+("section-"+w));const b=y.append("g"),E=y.append("g"),N=E.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(aje,a.width).node().getBBox(),B=p.fontSize&&p.fontSize.replace?p.fontSize.replace("px",""):p.fontSize;return a.height=N.height+B*1.1*.5+a.padding,a.height=Math.max(a.height,a.maxHeight),a.width=a.width+2*a.padding,E.attr("transform","translate("+a.width/2+", "+a.padding/2+")"),wqt(b,a,w),a},vqt=function(i,a,f){const p=i.append("g"),y=p.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(aje,a.width).node().getBBox(),b=f.fontSize&&f.fontSize.replace?f.fontSize.replace("px",""):f.fontSize;return p.remove(),y.height+b*1.1*.5+a.padding},wqt=function(i,a,f){i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+a.type).attr("d",`M0 ${a.height-5} v${-a.height+2*5} q0,-5 5,-5 h${a.width-2*5} q5,0 5,5 v${a.height-5} H0 Z`),i.append("line").attr("class","node-line-"+f).attr("x1",0).attr("y1",a.height).attr("x2",a.width).attr("y2",a.height)},v9={drawRect:KK,drawCircle:uqt,drawSection:hqt,drawText:rje,drawLabel:lqt,drawTask:fqt,drawBackgroundRect:dqt,getTextObj:gqt,getNoteRect:Oge,initGraphics:pqt,drawNode:bqt,getVirtualNodeHeight:vqt},mqt=function(i,a,f,p){var te,xe,De,he;const w=Tt(),y=w.leftMargin??50;(xe=(te=p.db).clear)==null||xe.call(te),p.parser.parse(i+` +`),Fe.debug("timeline",p.db);const b=w.securityLevel;let E;b==="sandbox"&&(E=Cr("#i"+a));const N=Cr(b==="sandbox"?E.nodes()[0].contentDocument.body:"body").select("#"+a);N.append("g");const B=p.db.getTasks(),R=p.db.getCommonDb().getDiagramTitle();Fe.debug("task",B),v9.initGraphics(N);const j=p.db.getSections();Fe.debug("sections",j);let $=0,V=0,Q=0,oe=0,ce=50+y,se=50;oe=50;let ge=0,ye=!0;j.forEach(function(Ie){const ee={number:ge,descr:Ie,section:ge,width:150,padding:20,maxHeight:$},rt=v9.getVirtualNodeHeight(N,ee,w);Fe.debug("sectionHeight before draw",rt),$=Math.max($,rt+20)});let ke=0,Ae=0;Fe.debug("tasks.length",B.length);for(const[Ie,ee]of B.entries()){const rt={number:Ie,descr:ee,section:ee.section,width:150,padding:20,maxHeight:V},me=v9.getVirtualNodeHeight(N,rt,w);Fe.debug("taskHeight before draw",me),V=Math.max(V,me+20),ke=Math.max(ke,ee.events.length);let gt=0;for(let pe=0;pe0?j.forEach(Ie=>{const ee=B.filter(pe=>pe.section===Ie),rt={number:ge,descr:Ie,section:ge,width:200*Math.max(ee.length,1)-50,padding:20,maxHeight:$};Fe.debug("sectionNode",rt);const me=N.append("g"),gt=v9.drawNode(me,rt,ge,w);Fe.debug("sectionNode output",gt),me.attr("transform",`translate(${ce}, ${oe})`),se+=$+50,ee.length>0&&oje(N,ee,ge,ce,se,V,w,ke,Ae,$,!1),ce+=200*Math.max(ee.length,1),se=oe,ge++}):(ye=!1,oje(N,B,ge,ce,se,V,w,ke,Ae,$,!0));const de=N.node().getBBox();Fe.debug("bounds",de),R&&N.append("text").text(R).attr("x",de.width/2-y).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),Q=ye?$+V+150:V+100,N.append("g").attr("class","lineWrapper").append("line").attr("x1",y).attr("y1",Q).attr("x2",de.width+3*y).attr("y2",Q).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),YE(void 0,N,((De=w.timeline)==null?void 0:De.padding)??50,((he=w.timeline)==null?void 0:he.useMaxWidth)??!1)},oje=function(i,a,f,p,w,y,b,E,S,N,B){var R;for(const j of a){const $={descr:j.task,section:f,number:f,width:150,padding:20,maxHeight:y};Fe.debug("taskNode",$);const V=i.append("g").attr("class","taskWrapper"),oe=v9.drawNode(V,$,f,b).height;if(Fe.debug("taskHeight after draw",oe),V.attr("transform",`translate(${p}, ${w})`),y=Math.max(y,oe),j.events){const ce=i.append("g").attr("class","lineWrapper");let se=y;w+=100,se=se+yqt(i,j.events,f,p,w,b),w-=100,ce.append("line").attr("x1",p+190/2).attr("y1",w+y).attr("x2",p+190/2).attr("y2",w+y+(B?y:N)+S+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}p=p+200,B&&!((R=b.timeline)!=null&&R.disableMulticolor)&&f++}w=w-10},yqt=function(i,a,f,p,w,y){let b=0;const E=w;w=w+100;for(const S of a){const N={descr:S,section:f,number:f,width:150,padding:20,maxHeight:50};Fe.debug("eventNode",N);const B=i.append("g").attr("class","eventWrapper"),j=v9.drawNode(B,N,f,y).height;b=b+j,B.attr("transform",`translate(${p}, ${w})`),w=w+10+j}return w=E,b},kqt={setConf:()=>{},draw:mqt},xqt=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${xqt(i)} + .section-root rect, .section-root path, .section-root circle { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`}},Symbol.toStringTag,{value:"Module"}));var Nge=function(){var i=function(ye,ke,Ae,de){for(Ae=Ae||{},de=ye.length;de--;Ae[ye[de]]=ke);return Ae},a=[1,4],f=[1,13],p=[1,12],w=[1,15],y=[1,16],b=[1,20],E=[1,19],S=[6,7,8],N=[1,26],B=[1,24],R=[1,25],j=[6,7,11],$=[1,6,13,15,16,19,22],V=[1,33],Q=[1,34],oe=[1,6,7,11,13,15,16,19,22],ce={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(ke,Ae,de,ve,te,xe,De){var he=xe.length-1;switch(te){case 6:case 7:return ve;case 8:ve.getLogger().trace("Stop NL ");break;case 9:ve.getLogger().trace("Stop EOF ");break;case 11:ve.getLogger().trace("Stop NL2 ");break;case 12:ve.getLogger().trace("Stop EOF2 ");break;case 15:ve.getLogger().info("Node: ",xe[he].id),ve.addNode(xe[he-1].length,xe[he].id,xe[he].descr,xe[he].type);break;case 16:ve.getLogger().trace("Icon: ",xe[he]),ve.decorateNode({icon:xe[he]});break;case 17:case 21:ve.decorateNode({class:xe[he]});break;case 18:ve.getLogger().trace("SPACELIST");break;case 19:ve.getLogger().trace("Node: ",xe[he].id),ve.addNode(0,xe[he].id,xe[he].descr,xe[he].type);break;case 20:ve.decorateNode({icon:xe[he]});break;case 25:ve.getLogger().trace("node found ..",xe[he-2]),this.$={id:xe[he-1],descr:xe[he-1],type:ve.getType(xe[he-2],xe[he])};break;case 26:this.$={id:xe[he],descr:xe[he],type:ve.nodeType.DEFAULT};break;case 27:ve.getLogger().trace("node found ..",xe[he-3]),this.$={id:xe[he-3],descr:xe[he-1],type:ve.getType(xe[he-2],xe[he])};break}},table:[{3:1,4:2,5:3,6:[1,5],8:a},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:a},{6:f,7:[1,10],9:9,12:11,13:p,14:14,15:w,16:y,17:17,18:18,19:b,22:E},i(S,[2,3]),{1:[2,2]},i(S,[2,4]),i(S,[2,5]),{1:[2,6],6:f,12:21,13:p,14:14,15:w,16:y,17:17,18:18,19:b,22:E},{6:f,9:22,12:11,13:p,14:14,15:w,16:y,17:17,18:18,19:b,22:E},{6:N,7:B,10:23,11:R},i(j,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:b,22:E}),i(j,[2,18]),i(j,[2,19]),i(j,[2,20]),i(j,[2,21]),i(j,[2,23]),i(j,[2,24]),i(j,[2,26],{19:[1,30]}),{20:[1,31]},{6:N,7:B,10:32,11:R},{1:[2,7],6:f,12:21,13:p,14:14,15:w,16:y,17:17,18:18,19:b,22:E},i($,[2,14],{7:V,11:Q}),i(oe,[2,8]),i(oe,[2,9]),i(oe,[2,10]),i(j,[2,15]),i(j,[2,16]),i(j,[2,17]),{20:[1,35]},{21:[1,36]},i($,[2,13],{7:V,11:Q}),i(oe,[2,11]),i(oe,[2,12]),{21:[1,37]},i(j,[2,25]),i(j,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(ke,Ae){if(Ae.recoverable)this.trace(ke);else{var de=new Error(ke);throw de.hash=Ae,de}},parse:function(ke){var Ae=this,de=[0],ve=[],te=[null],xe=[],De=this.table,he="",Ie=0,ee=0,rt=2,me=1,gt=xe.slice.call(arguments,1),pe=Object.create(this.lexer),Et={yy:{}};for(var wt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,wt)&&(Et.yy[wt]=this.yy[wt]);pe.setInput(ke,Et.yy),Et.yy.lexer=pe,Et.yy.parser=this,typeof pe.yylloc>"u"&&(pe.yylloc={});var jt=pe.yylloc;xe.push(jt);var At=pe.options&&pe.options.ranges;typeof Et.yy.parseError=="function"?this.parseError=Et.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Bt(){var Lt;return Lt=ve.pop()||pe.lex()||me,typeof Lt!="number"&&(Lt instanceof Array&&(ve=Lt,Lt=ve.pop()),Lt=Ae.symbols_[Lt]||Lt),Lt}for(var cn,Nn,Ot,oi,kt={},Dt,vt,Nt,ze;;){if(Nn=de[de.length-1],this.defaultActions[Nn]?Ot=this.defaultActions[Nn]:((cn===null||typeof cn>"u")&&(cn=Bt()),Ot=De[Nn]&&De[Nn][cn]),typeof Ot>"u"||!Ot.length||!Ot[0]){var Xe="";ze=[];for(Dt in De[Nn])this.terminals_[Dt]&&Dt>rt&&ze.push("'"+this.terminals_[Dt]+"'");pe.showPosition?Xe="Parse error on line "+(Ie+1)+`: +`+pe.showPosition()+` +Expecting `+ze.join(", ")+", got '"+(this.terminals_[cn]||cn)+"'":Xe="Parse error on line "+(Ie+1)+": Unexpected "+(cn==me?"end of input":"'"+(this.terminals_[cn]||cn)+"'"),this.parseError(Xe,{text:pe.match,token:this.terminals_[cn]||cn,line:pe.yylineno,loc:jt,expected:ze})}if(Ot[0]instanceof Array&&Ot.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Nn+", token: "+cn);switch(Ot[0]){case 1:de.push(cn),te.push(pe.yytext),xe.push(pe.yylloc),de.push(Ot[1]),cn=null,ee=pe.yyleng,he=pe.yytext,Ie=pe.yylineno,jt=pe.yylloc;break;case 2:if(vt=this.productions_[Ot[1]][1],kt.$=te[te.length-vt],kt._$={first_line:xe[xe.length-(vt||1)].first_line,last_line:xe[xe.length-1].last_line,first_column:xe[xe.length-(vt||1)].first_column,last_column:xe[xe.length-1].last_column},At&&(kt._$.range=[xe[xe.length-(vt||1)].range[0],xe[xe.length-1].range[1]]),oi=this.performAction.apply(kt,[he,ee,Ie,Et.yy,Ot[1],te,xe].concat(gt)),typeof oi<"u")return oi;vt&&(de=de.slice(0,-1*vt*2),te=te.slice(0,-1*vt),xe=xe.slice(0,-1*vt)),de.push(this.productions_[Ot[1]][0]),te.push(kt.$),xe.push(kt._$),Nt=De[de[de.length-2]][de[de.length-1]],de.push(Nt);break;case 3:return!0}}return!0}},se=function(){var ye={EOF:1,parseError:function(Ae,de){if(this.yy.parser)this.yy.parser.parseError(Ae,de);else throw new Error(Ae)},setInput:function(ke,Ae){return this.yy=Ae||this.yy||{},this._input=ke,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ke=this._input[0];this.yytext+=ke,this.yyleng++,this.offset++,this.match+=ke,this.matched+=ke;var Ae=ke.match(/(?:\r\n?|\n).*/g);return Ae?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ke},unput:function(ke){var Ae=ke.length,de=ke.split(/(?:\r\n?|\n)/g);this._input=ke+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ae),this.offset-=Ae;var ve=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),de.length-1&&(this.yylineno-=de.length-1);var te=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:de?(de.length===ve.length?this.yylloc.first_column:0)+ve[ve.length-de.length].length-de[0].length:this.yylloc.first_column-Ae},this.options.ranges&&(this.yylloc.range=[te[0],te[0]+this.yyleng-Ae]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ke){this.unput(this.match.slice(ke))},pastInput:function(){var ke=this.matched.substr(0,this.matched.length-this.match.length);return(ke.length>20?"...":"")+ke.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ke=this.match;return ke.length<20&&(ke+=this._input.substr(0,20-ke.length)),(ke.substr(0,20)+(ke.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ke=this.pastInput(),Ae=new Array(ke.length+1).join("-");return ke+this.upcomingInput()+` +`+Ae+"^"},test_match:function(ke,Ae){var de,ve,te;if(this.options.backtrack_lexer&&(te={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(te.yylloc.range=this.yylloc.range.slice(0))),ve=ke[0].match(/(?:\r\n?|\n).*/g),ve&&(this.yylineno+=ve.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ve?ve[ve.length-1].length-ve[ve.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ke[0].length},this.yytext+=ke[0],this.match+=ke[0],this.matches=ke,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ke[0].length),this.matched+=ke[0],de=this.performAction.call(this,this.yy,this,Ae,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),de)return de;if(this._backtrack){for(var xe in te)this[xe]=te[xe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ke,Ae,de,ve;this._more||(this.yytext="",this.match="");for(var te=this._currentRules(),xe=0;xeAe[0].length)){if(Ae=de,ve=xe,this.options.backtrack_lexer){if(ke=this.test_match(de,te[xe]),ke!==!1)return ke;if(this._backtrack){Ae=!1;continue}else return!1}else if(!this.options.flex)break}return Ae?(ke=this.test_match(Ae,te[ve]),ke!==!1?ke:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ae=this.next();return Ae||this.lex()},begin:function(Ae){this.conditionStack.push(Ae)},popState:function(){var Ae=this.conditionStack.length-1;return Ae>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ae){return Ae=this.conditionStack.length-1-Math.abs(Ae||0),Ae>=0?this.conditionStack[Ae]:"INITIAL"},pushState:function(Ae){this.begin(Ae)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Ae,de,ve,te){switch(ve){case 0:return Ae.getLogger().trace("Found comment",de.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:this.popState();break;case 5:Ae.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return Ae.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:Ae.getLogger().trace("end icon"),this.popState();break;case 10:return Ae.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return Ae.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return Ae.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return Ae.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:return this.begin("NODE"),19;case 15:return this.begin("NODE"),19;case 16:return this.begin("NODE"),19;case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:Ae.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return Ae.getLogger().trace("description:",de.yytext),"NODE_DESCR";case 26:this.popState();break;case 27:return this.popState(),Ae.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),Ae.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),Ae.getLogger().trace("node end ...",de.yytext),"NODE_DEND";case 30:return this.popState(),Ae.getLogger().trace("node end (("),"NODE_DEND";case 31:return this.popState(),Ae.getLogger().trace("node end (-"),"NODE_DEND";case 32:return this.popState(),Ae.getLogger().trace("node end (-"),"NODE_DEND";case 33:return this.popState(),Ae.getLogger().trace("node end (("),"NODE_DEND";case 34:return this.popState(),Ae.getLogger().trace("node end (("),"NODE_DEND";case 35:return Ae.getLogger().trace("Long description:",de.yytext),20;case 36:return Ae.getLogger().trace("Long description:",de.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\-\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return ye}();ce.lexer=se;function ge(){this.yy={}}return ge.prototype=ce,ce.Parser=ge,new ge}();Nge.parser=Nge;const Tqt=Nge,zP=i=>ep(i,Tt());let Jb=[],cje=0,Pge={};const _qt=()=>{Jb=[],cje=0,Pge={}},Cqt=function(i){for(let a=Jb.length-1;a>=0;a--)if(Jb[a].levelJb.length>0?Jb[0]:null,Aqt=(i,a,f,p)=>{Fe.info("addNode",i,a,f,p);const w=Tt(),y={id:cje++,nodeId:zP(a),level:i,descr:zP(f),type:p,children:[],width:Tt().mindmap.maxNodeWidth};switch(y.type){case nl.ROUNDED_RECT:y.padding=2*w.mindmap.padding;break;case nl.RECT:y.padding=2*w.mindmap.padding;break;case nl.HEXAGON:y.padding=2*w.mindmap.padding;break;default:y.padding=w.mindmap.padding}const b=Cqt(i);if(b)b.children.push(y),Jb.push(y);else if(Jb.length===0)Jb.push(y);else{let E=new Error('There can be only one root. No parent could be found for ("'+y.descr+'")');throw E.hash={text:"branch "+name,token:"branch "+name,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+name+'"']},E}},nl={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Lqt=(i,a)=>{switch(Fe.debug("In get type",i,a),i){case"[":return nl.RECT;case"(":return a===")"?nl.ROUNDED_RECT:nl.CLOUD;case"((":return nl.CIRCLE;case")":return nl.CLOUD;case"))":return nl.BANG;case"{{":return nl.HEXAGON;default:return nl.DEFAULT}},uje=(i,a)=>{Pge[i]=a},Mqt=i=>{const a=Jb[Jb.length-1];i&&i.icon&&(a.icon=zP(i.icon)),i&&i.class&&(a.class=zP(i.class))},w9=i=>{switch(i){case nl.DEFAULT:return"no-border";case nl.RECT:return"rect";case nl.ROUNDED_RECT:return"rounded-rect";case nl.CIRCLE:return"circle";case nl.CLOUD:return"cloud";case nl.BANG:return"bang";case nl.HEXAGON:return"hexgon";default:return"no-border"}};let lje;const Dqt=i=>{lje=i},Iqt=()=>Fe,Oqt=i=>Jb[i],Bge=i=>Pge[i],Nqt=Object.freeze(Object.defineProperty({__proto__:null,addNode:Aqt,clear:_qt,decorateNode:Mqt,getElementById:Bge,getLogger:Iqt,getMindmap:Sqt,getNodeById:Oqt,getType:Lqt,nodeType:nl,get parseError(){return lje},sanitizeText:zP,setElementForId:uje,setErrorHandler:Dqt,type2Str:w9},Symbol.toStringTag,{value:"Module"})),hje=12,Pqt=function(i,a,f){i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("d",`M0 ${a.height-5} v${-a.height+2*5} q0,-5 5,-5 h${a.width-2*5} q5,0 5,5 v${a.height-5} H0 Z`),i.append("line").attr("class","node-line-"+f).attr("x1",0).attr("y1",a.height).attr("x2",a.width).attr("y2",a.height)},Bqt=function(i,a){i.append("rect").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("height",a.height).attr("width",a.width)},Rqt=function(i,a){const f=a.width,p=a.height,w=.15*f,y=.25*f,b=.35*f,E=.2*f;i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("d",`M0 0 a${w},${w} 0 0,1 ${f*.25},${-1*f*.1} + a${b},${b} 1 0,1 ${f*.4},${-1*f*.1} + a${y},${y} 1 0,1 ${f*.35},${1*f*.2} + + a${w},${w} 1 0,1 ${f*.15},${1*p*.35} + a${E},${E} 1 0,1 ${-1*f*.15},${1*p*.65} + + a${y},${w} 1 0,1 ${-1*f*.25},${f*.15} + a${b},${b} 1 0,1 ${-1*f*.5},0 + a${w},${w} 1 0,1 ${-1*f*.25},${-1*f*.15} + + a${w},${w} 1 0,1 ${-1*f*.1},${-1*p*.35} + a${E},${E} 1 0,1 ${f*.1},${-1*p*.65} + + H0 V0 Z`)},Fqt=function(i,a){const f=a.width,p=a.height,w=.15*f;i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("d",`M0 0 a${w},${w} 1 0,0 ${f*.25},${-1*p*.1} + a${w},${w} 1 0,0 ${f*.25},0 + a${w},${w} 1 0,0 ${f*.25},0 + a${w},${w} 1 0,0 ${f*.25},${1*p*.1} + + a${w},${w} 1 0,0 ${f*.15},${1*p*.33} + a${w*.8},${w*.8} 1 0,0 0,${1*p*.34} + a${w},${w} 1 0,0 ${-1*f*.15},${1*p*.33} + + a${w},${w} 1 0,0 ${-1*f*.25},${p*.15} + a${w},${w} 1 0,0 ${-1*f*.25},0 + a${w},${w} 1 0,0 ${-1*f*.25},0 + a${w},${w} 1 0,0 ${-1*f*.25},${-1*p*.15} + + a${w},${w} 1 0,0 ${-1*f*.1},${-1*p*.33} + a${w*.8},${w*.8} 1 0,0 0,${-1*p*.34} + a${w},${w} 1 0,0 ${f*.1},${-1*p*.33} + + H0 V0 Z`)},jqt=function(i,a){i.append("circle").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("r",a.width/2)};function $qt(i,a,f,p,w){return i.insert("polygon",":first-child").attr("points",p.map(function(y){return y.x+","+y.y}).join(" ")).attr("transform","translate("+(w.width-a)/2+", "+f+")")}const Hqt=function(i,a){const f=a.height,w=f/4,y=a.width-a.padding+2*w,b=[{x:w,y:0},{x:y-w,y:0},{x:y,y:-f/2},{x:y-w,y:-f},{x:w,y:-f},{x:0,y:-f/2}];$qt(i,y,f,b,a)},zqt=function(i,a){i.append("rect").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("height",a.height).attr("rx",a.padding).attr("ry",a.padding).attr("width",a.width)},fje={drawNode:function(i,a,f,p){const w=p.htmlLabels,y=f%(hje-1),b=i.append("g");a.section=y;let E="section-"+y;y<0&&(E+=" section-root"),b.attr("class",(a.class?a.class+" ":"")+"mindmap-node "+E);const S=b.append("g"),N=b.append("g"),B=a.descr.replace(/()/g,` +`);dK(N,B,{useHtmlLabels:w,width:a.width,classes:"mindmap-node-label"}),w||N.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const R=N.node().getBBox(),j=p.fontSize.replace?p.fontSize.replace("px",""):p.fontSize;if(a.height=R.height+j*1.1*.5+a.padding,a.width=R.width+2*a.padding,a.icon)if(a.type===nl.CIRCLE)a.height+=50,a.width+=50,b.append("foreignObject").attr("height","50px").attr("width",a.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+y+" "+a.icon),N.attr("transform","translate("+a.width/2+", "+(a.height/2-1.5*a.padding)+")");else{a.width+=50;const $=a.height;a.height=Math.max($,60);const V=Math.abs(a.height-$);b.append("foreignObject").attr("width","60px").attr("height",a.height).attr("style","text-align: center;margin-top:"+V/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+y+" "+a.icon),N.attr("transform","translate("+(25+a.width/2)+", "+(V/2+a.padding/2)+")")}else if(w){const $=(a.width-R.width)/2,V=(a.height-R.height)/2;N.attr("transform","translate("+$+", "+V+")")}else{const $=a.width/2,V=a.padding/2;N.attr("transform","translate("+$+", "+V+")")}switch(a.type){case nl.DEFAULT:Pqt(S,a,y);break;case nl.ROUNDED_RECT:zqt(S,a);break;case nl.RECT:Bqt(S,a);break;case nl.CIRCLE:S.attr("transform","translate("+a.width/2+", "+ +a.height/2+")"),jqt(S,a);break;case nl.CLOUD:Rqt(S,a);break;case nl.BANG:Fqt(S,a);break;case nl.HEXAGON:Hqt(S,a);break}return uje(a.id,b),a.height},positionNode:function(i){const a=Bge(i.id),f=i.x||0,p=i.y||0;a.attr("transform","translate("+f+","+p+")")},drawEdge:function(a,f,p,w,y){const b=y%(hje-1),E=p.x+p.width/2,S=p.y+p.height/2,N=f.x+f.width/2,B=f.y+f.height/2,R=N>E?E+Math.abs(E-N)/2:E-Math.abs(E-N)/2,j=B>S?S+Math.abs(S-B)/2:S-Math.abs(S-B)/2,$=N>E?Math.abs(E-R)/2+E:-Math.abs(E-R)/2+E,V=B>S?Math.abs(S-j)/2+S:-Math.abs(S-j)/2+S;a.append("path").attr("d",p.direction==="TB"||p.direction==="BT"?`M${E},${S} Q${E},${V} ${R},${j} T${N},${B}`:`M${E},${S} Q${$},${S} ${R},${j} T${N},${B}`).attr("class","edge section-edge-"+b+" edge-depth-"+w)}};var Rge={},Gqt={get exports(){return Rge},set exports(i){Rge=i}};(function(i,a){(function(f,p){i.exports=p()})(Wk,function(){function f(m){return f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(g){return typeof g}:function(g){return g&&typeof Symbol=="function"&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},f(m)}function p(m,g){if(!(m instanceof g))throw new TypeError("Cannot call a class as a function")}function w(m,g){for(var k=0;km.length)&&(g=m.length);for(var k=0,T=new Array(g);k"u"?null:window,V=$?$.navigator:null;$&&$.document;var Q=f(""),oe=f({}),ce=f(function(){}),se=typeof HTMLElement>"u"?"undefined":f(HTMLElement),ge=function(g){return g&&g.instanceString&&ke(g.instanceString)?g.instanceString():null},ye=function(g){return g!=null&&f(g)==Q},ke=function(g){return g!=null&&f(g)===ce},Ae=function(g){return!he(g)&&(Array.isArray?Array.isArray(g):g!=null&&g instanceof Array)},de=function(g){return g!=null&&f(g)===oe&&!Ae(g)&&g.constructor===Object},ve=function(g){return g!=null&&f(g)===oe},te=function(g){return g!=null&&f(g)===f(1)&&!isNaN(g)},xe=function(g){return te(g)&&Math.floor(g)===g},De=function(g){if(se!=="undefined")return g!=null&&g instanceof HTMLElement},he=function(g){return Ie(g)||ee(g)},Ie=function(g){return ge(g)==="collection"&&g._private.single},ee=function(g){return ge(g)==="collection"&&!g._private.single},rt=function(g){return ge(g)==="core"},me=function(g){return ge(g)==="stylesheet"},gt=function(g){return ge(g)==="event"},pe=function(g){return g==null?!0:!!(g===""||g.match(/^\s+$/))},Et=function(g){return typeof HTMLElement>"u"?!1:g instanceof HTMLElement},wt=function(g){return de(g)&&te(g.x1)&&te(g.x2)&&te(g.y1)&&te(g.y2)},jt=function(g){return ve(g)&&ke(g.then)},At=function(){return V&&V.userAgent.match(/msie|trident|edge/i)},Bt=function(g,k){k||(k=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var D=[],I=0;Ik?1:0},Bn=function(g,k){return-1*Ge(g,k)},Oe=Object.assign!=null?Object.assign.bind(Object):function(m){for(var g=arguments,k=1;k1&&(_e-=1),_e<1/6?ae+(ue-ae)*6*_e:_e<1/2?ue:_e<2/3?ae+(ue-ae)*(2/3-_e)*6:ae}var U=new RegExp("^"+Nt+"$").exec(g);if(U){if(T=parseInt(U[1]),T<0?T=(360- -1*T%360)%360:T>360&&(T=T%360),T/=360,A=parseFloat(U[2]),A<0||A>100||(A=A/100,D=parseFloat(U[3]),D<0||D>100)||(D=D/100,I=U[4],I!==void 0&&(I=parseFloat(I),I<0||I>1)))return;if(A===0)F=H=C=Math.round(D*255);else{var Z=D<.5?D*(1+A):D+A-D*A,ne=2*D-Z;F=Math.round(255*G(ne,Z,T+1/3)),H=Math.round(255*G(ne,Z,T)),C=Math.round(255*G(ne,Z,T-1/3))}k=[F,H,C,I]}return k},hi=function(g){var k,T=new RegExp("^"+Dt+"$").exec(g);if(T){k=[];for(var A=[],D=1;D<=3;D++){var I=T[D];if(I[I.length-1]==="%"&&(A[D]=!0),I=parseFloat(I),A[D]&&(I=I/100*255),I<0||I>255)return;k.push(Math.floor(I))}var F=A[1]||A[2]||A[3],H=A[1]&&A[2]&&A[3];if(F&&!H)return;var C=T[4];if(C!==void 0){if(C=parseFloat(C),C<0||C>1)return;k.push(C)}}return k},Sr=function(g){return Xn[g.toLowerCase()]},Zn=function(g){return(Ae(g)?g:null)||Sr(g)||Ri(g)||hi(g)||tn(g)},Xn={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},ir=function(g){for(var k=g.map,T=g.keys,A=T.length,D=0;D=g||Re<0||U&&Ze>=D}function be(){var qe=Er();if(_e(qe))return Se(qe);F=setTimeout(be,ue(qe))}function Se(qe){return F=void 0,Z&&T?ne(qe):(T=A=void 0,I)}function Le(){F!==void 0&&clearTimeout(F),C=0,T=H=A=F=void 0}function Be(){return F===void 0?I:Se(Er())}function Ke(){var qe=Er(),Re=_e(qe);if(T=arguments,A=this,H=qe,Re){if(F===void 0)return ae(H);if(U)return clearTimeout(F),F=setTimeout(be,g),ne(H)}return F===void 0&&(F=setTimeout(be,g)),I}return Ke.cancel=Le,Ke.flush=Be,Ke}var im=bL,ug=$?$.performance:null,rs=ug&&ug.now?function(){return ug.now()}:function(){return Date.now()},Ps=function(){if($){if($.requestAnimationFrame)return function(m){$.requestAnimationFrame(m)};if($.mozRequestAnimationFrame)return function(m){$.mozRequestAnimationFrame(m)};if($.webkitRequestAnimationFrame)return function(m){$.webkitRequestAnimationFrame(m)};if($.msRequestAnimationFrame)return function(m){$.msRequestAnimationFrame(m)}}return function(m){m&&setTimeout(function(){m(rs())},1e3/60)}}(),Aa=function(g){return Ps(g)},pi=rs,Rc=9261,_t=65599,hp=5381,Gt=function(g){for(var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Rc,T=k,A;A=g.next(),!A.done;)T=T*_t+A.value|0;return T},ff=function(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Rc;return k*_t+g|0},sm=function(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:hp;return(k<<5)+k+g|0},m9=function(g,k){return g*2097152+k},fp=function(g){return g[0]*2097152+g[1]},N5=function(g,k){return[ff(g[0],k[0]),sm(g[1],k[1])]},ah=function(g,k){var T={value:0,done:!1},A=0,D=g.length,I={next:function(){return A=0&&!(g[A]===k&&(g.splice(A,1),T));A--);},wL=function(g){g.splice(0,g.length)},qP=function(g,k){for(var T=0;T"u"?"undefined":f(Set))!==eY?Set:tY,x9=function(g,k){var T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(g===void 0||k===void 0||!rt(g)){yc("An element must have a core reference and parameters set");return}var A=k.group;if(A==null&&(k.data&&k.data.source!=null&&k.data.target!=null?A="edges":A="nodes"),A!=="nodes"&&A!=="edges"){yc("An element must be of type `nodes` or `edges`; you specified `"+A+"`");return}this.length=1,this[0]=this;var D=this._private={cy:g,single:!0,data:k.data||{},position:k.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:A,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!k.selected,selectable:k.selectable===void 0?!0:!!k.selectable,locked:!!k.locked,grabbed:!1,grabbable:k.grabbable===void 0?!0:!!k.grabbable,pannable:k.pannable===void 0?A==="edges":!!k.pannable,active:!1,classes:new R5,animation:{current:[],queue:[]},rscratch:{},scratch:k.scratch||{},edges:[],children:[],parent:k.parent&&k.parent.isNode()?k.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(D.position.x==null&&(D.position.x=0),D.position.y==null&&(D.position.y=0),k.renderedPosition){var I=k.renderedPosition,F=g.pan(),H=g.zoom();D.position={x:(I.x-F.x)/H,y:(I.y-F.y)/H}}var C=[];Ae(k.classes)?C=k.classes:ye(k.classes)&&(C=k.classes.split(/\s+/));for(var G=0,U=C.length;GSe?1:0},G=function(be,Se,Le,Be,Ke){var qe;if(Le==null&&(Le=0),Ke==null&&(Ke=T),Le<0)throw new Error("lo must be non-negative");for(Be==null&&(Be=be.length);Leot;0<=ot?$e++:$e--)Ze.push($e);return Ze}.apply(this).reverse(),Re=[],Be=0,Ke=qe.length;Beut;0<=ut?++Ze:--Ze)Je.push(I(be,Le));return Je},ue=function(be,Se,Le,Be){var Ke,qe,Re;for(Be==null&&(Be=T),Ke=be[Le];Le>Se;){if(Re=Le-1>>1,qe=be[Re],Be(Ke,qe)<0){be[Le]=qe,Le=Re;continue}break}return be[Le]=Ke},_e=function(be,Se,Le){var Be,Ke,qe,Re,Ze;for(Le==null&&(Le=T),Ke=be.length,Ze=Se,qe=be[Se],Be=2*Se+1;Be0;){var qe=Se.pop(),Re=_e(qe),Ze=qe.id();if(Z[Ze]=Re,Re!==1/0)for(var $e=qe.neighborhood().intersect(ae),ot=0;ot<$e.length;ot++){var ut=$e[ot],Je=ut.id(),Ct=Ke(qe,ut),lt=Re+Ct.dist;lt<_e(ut)&&(be(ut,lt),U[Je]={node:qe,edge:Ct.edge})}}return{distanceTo:function(Rt){var $t=ye(Rt)?ae.filter(Rt)[0]:Rt[0];return Z[$t.id()]},pathTo:function(Rt){var $t=ye(Rt)?ae.filter(Rt)[0]:Rt[0],bn=[],Cn=$t,Kn=Cn.id();if($t.length>0)for(bn.unshift($t);U[Kn];){var kn=U[Kn];bn.unshift(kn.edge),bn.unshift(kn.node),Cn=kn.node,Kn=Cn.id()}return F.spawn(bn)}}}},sY={kruskal:function(g){g=g||function(Le){return 1};for(var k=this.byGroup(),T=k.nodes,A=k.edges,D=T.length,I=new Array(D),F=T,H=function(Be){for(var Ke=0;Ke0;){if(Ke(),Re++,Be===G){for(var Ze=[],$e=D,ot=G,ut=be[ot];Ze.unshift($e),ut!=null&&Ze.unshift(ut),$e=_e[ot],$e!=null;)ot=$e.id(),ut=be[ot];return{found:!0,distance:U[Be],path:this.spawn(Ze),steps:Re}}ne[Be]=!0;for(var Je=Le._private.edges,Ct=0;Ctut&&(ae[ot]=ut,Se[ot]=$e,Le[ot]=Ke),!D){var Je=$e*G+Ze;!D&&ae[Je]>ut&&(ae[Je]=ut,Se[Je]=Ze,Le[Je]=Ke)}}}for(var Ct=0;Ct1&&arguments[1]!==void 0?arguments[1]:I,eo=Le(Di),sa=[],Ks=eo;;){if(Ks==null)return k.spawn();var Ar=Se(Ks),We=Ar.edge,On=Ar.pred;if(sa.unshift(Ks[0]),Ks.same(es)&&sa.length>0)break;We!=null&&sa.unshift(We),Ks=On}return H.spawn(sa)},qe=0;qe=0;G--){var U=C[G],Z=U[1],ne=U[2];(k[Z]===F&&k[ne]===H||k[Z]===H&&k[ne]===F)&&C.splice(G,1)}for(var ae=0;aeA;){var D=Math.floor(Math.random()*k.length);k=dY(D,g,k),T--}return k},gY={kargerStein:function(){var g=this,k=this.byGroup(),T=k.nodes,A=k.edges;A.unmergeBy(function(bn){return bn.isLoop()});var D=T.length,I=A.length,F=Math.ceil(Math.pow(Math.log(D)/Math.LN2,2)),H=Math.floor(D/fY);if(D<2){yc("At least 2 nodes are required for Karger-Stein algorithm");return}for(var C=[],G=0;G1&&arguments[1]!==void 0?arguments[1]:0,T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:g.length,A=1/0,D=k;D1&&arguments[1]!==void 0?arguments[1]:0,T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:g.length,A=-1/0,D=k;D1&&arguments[1]!==void 0?arguments[1]:0,T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:g.length,A=0,D=0,I=k;I1&&arguments[1]!==void 0?arguments[1]:0,T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:g.length,A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,D=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,I=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;A?g=g.slice(k,T):(T0&&g.splice(0,k));for(var F=0,H=g.length-1;H>=0;H--){var C=g[H];I?isFinite(C)||(g[H]=-1/0,F++):g.splice(H,1)}D&&g.sort(function(Z,ne){return Z-ne});var G=g.length,U=Math.floor(G/2);return G%2!==0?g[U+1+F]:(g[U-1+F]+g[U+F])/2},yY=function(g){return Math.PI*g/180},T9=function(g,k){return Math.atan2(k,g)-Math.PI/2},yL=Math.log2||function(m){return Math.log(m)/Math.log(2)},WP=function(g){return g>0?1:g<0?-1:0},v3=function(g,k){return Math.sqrt(w3(g,k))},w3=function(g,k){var T=k.x-g.x,A=k.y-g.y;return T*T+A*A},kY=function(g){for(var k=g.length,T=0,A=0;A=g.x1&&g.y2>=g.y1)return{x1:g.x1,y1:g.y1,x2:g.x2,y2:g.y2,w:g.x2-g.x1,h:g.y2-g.y1};if(g.w!=null&&g.h!=null&&g.w>=0&&g.h>=0)return{x1:g.x1,y1:g.y1,x2:g.x1+g.w,y2:g.y1+g.h,w:g.w,h:g.h}}},EY=function(g){return{x1:g.x1,x2:g.x2,w:g.w,y1:g.y1,y2:g.y2,h:g.h}},TY=function(g){g.x1=1/0,g.y1=1/0,g.x2=-1/0,g.y2=-1/0,g.w=0,g.h=0},_Y=function(g,k){g.x1=Math.min(g.x1,k.x1),g.x2=Math.max(g.x2,k.x2),g.w=g.x2-g.x1,g.y1=Math.min(g.y1,k.y1),g.y2=Math.max(g.y2,k.y2),g.h=g.y2-g.y1},CY=function(g,k,T){g.x1=Math.min(g.x1,k),g.x2=Math.max(g.x2,k),g.w=g.x2-g.x1,g.y1=Math.min(g.y1,T),g.y2=Math.max(g.y2,T),g.h=g.y2-g.y1},_9=function(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return g.x1-=k,g.x2+=k,g.y1-=k,g.y2+=k,g.w=g.x2-g.x1,g.h=g.y2-g.y1,g},kL=function(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],T,A,D,I;if(k.length===1)T=A=D=I=k[0];else if(k.length===2)T=D=k[0],I=A=k[1];else if(k.length===4){var F=E(k,4);T=F[0],A=F[1],D=F[2],I=F[3]}return g.x1-=I,g.x2+=A,g.y1-=T,g.y2+=D,g.w=g.x2-g.x1,g.h=g.y2-g.y1,g},KP=function(g,k){g.x1=k.x1,g.y1=k.y1,g.x2=k.x2,g.y2=k.y2,g.w=g.x2-g.x1,g.h=g.y2-g.y1},xL=function(g,k){return!(g.x1>k.x2||k.x1>g.x2||g.x2k.y2||k.y1>g.y2)},$5=function(g,k,T){return g.x1<=k&&k<=g.x2&&g.y1<=T&&T<=g.y2},SY=function(g,k){return $5(g,k.x,k.y)},YP=function(g,k){return $5(g,k.x1,k.y1)&&$5(g,k.x2,k.y2)},XP=function(g,k,T,A,D,I,F){var H=wx(D,I),C=D/2,G=I/2,U;{var Z=T-C+H-F,ne=A-G-F,ae=T+C-H+F,ue=ne;if(U=lm(g,k,T,A,Z,ne,ae,ue,!1),U.length>0)return U}{var _e=T+C+F,be=A-G+H-F,Se=_e,Le=A+G-H+F;if(U=lm(g,k,T,A,_e,be,Se,Le,!1),U.length>0)return U}{var Be=T-C+H-F,Ke=A+G+F,qe=T+C-H+F,Re=Ke;if(U=lm(g,k,T,A,Be,Ke,qe,Re,!1),U.length>0)return U}{var Ze=T-C-F,$e=A-G+H-F,ot=Ze,ut=A+G-H+F;if(U=lm(g,k,T,A,Ze,$e,ot,ut,!1),U.length>0)return U}var Je;{var Ct=T-C+H,lt=A-G+H;if(Je=bx(g,k,T,A,Ct,lt,H+F),Je.length>0&&Je[0]<=Ct&&Je[1]<=lt)return[Je[0],Je[1]]}{var un=T+C-H,Rt=A-G+H;if(Je=bx(g,k,T,A,un,Rt,H+F),Je.length>0&&Je[0]>=un&&Je[1]<=Rt)return[Je[0],Je[1]]}{var $t=T+C-H,bn=A+G-H;if(Je=bx(g,k,T,A,$t,bn,H+F),Je.length>0&&Je[0]>=$t&&Je[1]>=bn)return[Je[0],Je[1]]}{var Cn=T-C+H,Kn=A+G-H;if(Je=bx(g,k,T,A,Cn,Kn,H+F),Je.length>0&&Je[0]<=Cn&&Je[1]>=Kn)return[Je[0],Je[1]]}return[]},AY=function(g,k,T,A,D,I,F){var H=F,C=Math.min(T,D),G=Math.max(T,D),U=Math.min(A,I),Z=Math.max(A,I);return C-H<=g&&g<=G+H&&U-H<=k&&k<=Z+H},LY=function(g,k,T,A,D,I,F,H,C){var G={x1:Math.min(T,F,D)-C,x2:Math.max(T,F,D)+C,y1:Math.min(A,H,I)-C,y2:Math.max(A,H,I)+C};return!(gG.x2||kG.y2)},MY=function(g,k,T,A){T-=A;var D=k*k-4*g*T;if(D<0)return[];var I=Math.sqrt(D),F=2*g,H=(-k+I)/F,C=(-k-I)/F;return[H,C]},DY=function(g,k,T,A,D){var I=1e-5;g===0&&(g=I),k/=g,T/=g,A/=g;var F,H,C,G,U,Z,ne,ae;if(H=(3*T-k*k)/9,C=-(27*A)+k*(9*T-2*(k*k)),C/=54,F=H*H*H+C*C,D[1]=0,ne=k/3,F>0){U=C+Math.sqrt(F),U=U<0?-Math.pow(-U,1/3):Math.pow(U,1/3),Z=C-Math.sqrt(F),Z=Z<0?-Math.pow(-Z,1/3):Math.pow(Z,1/3),D[0]=-ne+U+Z,ne+=(U+Z)/2,D[4]=D[2]=-ne,ne=Math.sqrt(3)*(-Z+U)/2,D[3]=ne,D[5]=-ne;return}if(D[5]=D[3]=0,F===0){ae=C<0?-Math.pow(-C,1/3):Math.pow(C,1/3),D[0]=-ne+2*ae,D[4]=D[2]=-(ae+ne);return}H=-H,G=H*H*H,G=Math.acos(C/Math.sqrt(G)),ae=2*Math.sqrt(H),D[0]=-ne+ae*Math.cos(G/3),D[2]=-ne+ae*Math.cos((G+2*Math.PI)/3),D[4]=-ne+ae*Math.cos((G+4*Math.PI)/3)},IY=function(g,k,T,A,D,I,F,H){var C=1*T*T-4*T*D+2*T*F+4*D*D-4*D*F+F*F+A*A-4*A*I+2*A*H+4*I*I-4*I*H+H*H,G=1*9*T*D-3*T*T-3*T*F-6*D*D+3*D*F+9*A*I-3*A*A-3*A*H-6*I*I+3*I*H,U=1*3*T*T-6*T*D+T*F-T*g+2*D*D+2*D*g-F*g+3*A*A-6*A*I+A*H-A*k+2*I*I+2*I*k-H*k,Z=1*T*D-T*T+T*g-D*g+A*I-A*A+A*k-I*k,ne=[];DY(C,G,U,Z,ne);for(var ae=1e-7,ue=[],_e=0;_e<6;_e+=2)Math.abs(ne[_e+1])=0&&ne[_e]<=1&&ue.push(ne[_e]);ue.push(1),ue.push(0);for(var be=-1,Se,Le,Be,Ke=0;Ke=0?BeC?(g-D)*(g-D)+(k-I)*(k-I):G-Z},Gd=function(g,k,T){for(var A,D,I,F,H,C=0,G=0;G=g&&g>=I||A<=g&&g<=I)H=(g-A)/(I-A)*(F-D)+D,H>k&&C++;else continue;return C%2!==0},tv=function(g,k,T,A,D,I,F,H,C){var G=new Array(T.length),U;H[0]!=null?(U=Math.atan(H[1]/H[0]),H[0]<0?U=U+Math.PI/2:U=-U-Math.PI/2):U=H;for(var Z=Math.cos(-U),ne=Math.sin(-U),ae=0;ae0){var _e=ZP(G,-C);ue=QP(_e)}else ue=G;return Gd(g,k,ue)},NY=function(g,k,T,A,D,I,F){for(var H=new Array(T.length),C=I/2,G=F/2,U=_L(I,F),Z=U*U,ne=0;ne=0&&_e<=1&&Se.push(_e),be>=0&&be<=1&&Se.push(be),Se.length===0)return[];var Le=Se[0]*H[0]+g,Be=Se[0]*H[1]+k;if(Se.length>1){if(Se[0]==Se[1])return[Le,Be];var Ke=Se[1]*H[0]+g,qe=Se[1]*H[1]+k;return[Le,Be,Ke,qe]}else return[Le,Be]},EL=function(g,k,T){return k<=g&&g<=T||T<=g&&g<=k?g:g<=k&&k<=T||T<=k&&k<=g?k:T},lm=function(g,k,T,A,D,I,F,H,C){var G=g-D,U=T-g,Z=F-D,ne=k-I,ae=A-k,ue=H-I,_e=Z*ne-ue*G,be=U*ne-ae*G,Se=ue*U-Z*ae;if(Se!==0){var Le=_e/Se,Be=be/Se,Ke=.001,qe=0-Ke,Re=1+Ke;return qe<=Le&&Le<=Re&&qe<=Be&&Be<=Re?[g+Le*U,k+Le*ae]:C?[g+Le*U,k+Le*ae]:[]}else return _e===0||be===0?EL(g,T,F)===F?[F,H]:EL(g,T,D)===D?[D,I]:EL(D,F,T)===T?[T,A]:[]:[]},vx=function(g,k,T,A,D,I,F,H){var C=[],G,U=new Array(T.length),Z=!0;I==null&&(Z=!1);var ne;if(Z){for(var ae=0;ae0){var ue=ZP(U,-H);ne=QP(ue)}else ne=U}else ne=T;for(var _e,be,Se,Le,Be=0;Be2){for(var Rt=[C[0],C[1]],$t=Math.pow(Rt[0]-g,2)+Math.pow(Rt[1]-k,2),bn=1;bnG&&(G=Be)},get:function(Le){return C[Le]}},Z=0;Z0?Rt=un.edgesTo(lt)[0]:Rt=lt.edgesTo(un)[0];var $t=A(Rt);lt=lt.id(),Ze[lt]>Ze[Je]+$t&&(Ze[lt]=Ze[Je]+$t,$e.nodes.indexOf(lt)<0?$e.push(lt):$e.updateItem(lt),Re[lt]=0,qe[lt]=[]),Ze[lt]==Ze[Je]+$t&&(Re[lt]=Re[lt]+Re[Je],qe[lt].push(Je))}else for(var bn=0;bn0;){for(var Wn=Ke.pop(),sr=0;sr0&&F.push(T[H]);F.length!==0&&D.push(A.collection(F))}return D},YY=function(g,k){for(var T=0;T5&&arguments[5]!==void 0?arguments[5]:ZY,F=A,H,C,G=0;G=2?mx(g,k,T,0,cB,JY):mx(g,k,T,0,oB)},squaredEuclidean:function(g,k,T){return mx(g,k,T,0,cB)},manhattan:function(g,k,T){return mx(g,k,T,0,oB)},max:function(g,k,T){return mx(g,k,T,-1/0,eX)}};G5["squared-euclidean"]=G5.squaredEuclidean,G5.squaredeuclidean=G5.squaredEuclidean;function S9(m,g,k,T,A,D){var I;return ke(m)?I=m:I=G5[m]||G5.euclidean,g===0&&ke(m)?I(A,D):I(g,k,T,A,D)}var tX=Vf({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),AL=function(g){return tX(g)},A9=function(g,k,T,A,D){var I=D!=="kMedoids",F=I?function(U){return T[U]}:function(U){return A[U](T)},H=function(Z){return A[Z](k)},C=T,G=k;return S9(g,A.length,F,H,C,G)},LL=function(g,k,T){for(var A=T.length,D=new Array(A),I=new Array(A),F=new Array(k),H=null,C=0;CT)return!1}return!0},iX=function(g,k,T){for(var A=0;AF&&(F=k[C][G],H=G);D[H].push(g[C])}for(var U=0;U=D.threshold||D.mode==="dendrogram"&&g.length===1)return!1;var ae=k[I],ue=k[A[I]],_e;D.mode==="dendrogram"?_e={left:ae,right:ue,key:ae.key}:_e={value:ae.value.concat(ue.value),key:ae.key},g[ae.index]=_e,g.splice(ue.index,1),k[ae.key]=_e;for(var be=0;beT[ue.key][Se.key]&&(H=T[ue.key][Se.key])):D.linkage==="max"?(H=T[ae.key][Se.key],T[ae.key][Se.key]0&&A.push(D);return A},bB=function(g,k,T){for(var A=[],D=0;DF&&(I=C,F=k[D*g+C])}I>0&&A.push(I)}for(var G=0;GC&&(H=G,C=U)}T[D]=I[H]}return A=bB(g,k,T),A},vB=function(g){for(var k=this.cy(),T=this.nodes(),A=wX(g),D={},I=0;I=ut?(Je=ut,ut=lt,Ct=un):lt>Je&&(Je=lt);for(var Rt=0;Rt0?1:0;Re[$e%A.minIterations*F+Wn]=sr,kn+=sr}if(kn>0&&($e>=A.minIterations-1||$e==A.maxIterations-1)){for(var yr=0,hr=0;hr1||qe>1)&&(F=!0),U[Le]=[],Se.outgoers().forEach(function(Ze){Ze.isEdge()&&U[Le].push(Ze.id())})}else Z[Le]=[void 0,Se.target().id()]}):I.forEach(function(Se){var Le=Se.id();if(Se.isNode()){var Be=Se.degree(!0);Be%2&&(H?C?F=!0:C=Le:H=Le),U[Le]=[],Se.connectedEdges().forEach(function(Ke){return U[Le].push(Ke.id())})}else Z[Le]=[Se.source().id(),Se.target().id()]});var ne={found:!1,trail:void 0};if(F)return ne;if(C&&H)if(D){if(G&&C!=G)return ne;G=C}else{if(G&&C!=G&&H!=G)return ne;G||(G=C)}else G||(G=I[0].id());var ae=function(Le){for(var Be=Le,Ke=[Le],qe,Re,Ze;U[Be].length;)qe=U[Be].shift(),Re=Z[qe][0],Ze=Z[qe][1],Be!=Ze?(U[Ze]=U[Ze].filter(function($e){return $e!=qe}),Be=Ze):!D&&Be!=Re&&(U[Re]=U[Re].filter(function($e){return $e!=qe}),Be=Re),Ke.unshift(qe),Ke.unshift(Be);return Ke},ue=[],_e=[];for(_e=ae(G);_e.length!=1;)U[_e[0]].length==0?(ue.unshift(I.getElementById(_e.shift())),ue.unshift(I.getElementById(_e.shift()))):_e=ae(_e.shift()).concat(_e);ue.unshift(I.getElementById(_e.shift()));for(var be in U)if(U[be].length)return ne;return ne.found=!0,ne.trail=this.spawn(ue,!0),ne}},M9=function(){var g=this,k={},T=0,A=0,D=[],I=[],F={},H=function(Z,ne){for(var ae=I.length-1,ue=[],_e=g.spawn();I[ae].x!=Z||I[ae].y!=ne;)ue.push(I.pop().edge),ae--;ue.push(I.pop().edge),ue.forEach(function(be){var Se=be.connectedNodes().intersection(g);_e.merge(be),Se.forEach(function(Le){var Be=Le.id(),Ke=Le.connectedEdges().intersection(g);_e.merge(Le),k[Be].cutVertex?_e.merge(Ke.filter(function(qe){return qe.isLoop()})):_e.merge(Ke)})}),D.push(_e)},C=function U(Z,ne,ae){Z===ae&&(A+=1),k[ne]={id:T,low:T++,cutVertex:!1};var ue=g.getElementById(ne).connectedEdges().intersection(g);if(ue.size()===0)D.push(g.spawn(g.getElementById(ne)));else{var _e,be,Se,Le;ue.forEach(function(Be){_e=Be.source().id(),be=Be.target().id(),Se=_e===ne?be:_e,Se!==ae&&(Le=Be.id(),F[Le]||(F[Le]=!0,I.push({x:ne,y:Se,edge:Be})),Se in k?k[ne].low=Math.min(k[ne].low,k[Se].id):(U(Z,Se,ne),k[ne].low=Math.min(k[ne].low,k[Se].low),k[ne].id<=k[Se].low&&(k[ne].cutVertex=!0,H(ne,Se))))})}};g.forEach(function(U){if(U.isNode()){var Z=U.id();Z in k||(A=0,C(Z,Z),k[Z].cutVertex=A>1)}});var G=Object.keys(k).filter(function(U){return k[U].cutVertex}).map(function(U){return g.getElementById(U)});return{cut:g.spawn(G),components:D}},CX={hopcroftTarjanBiconnected:M9,htbc:M9,htb:M9,hopcroftTarjanBiconnectedComponents:M9},D9=function(){var g=this,k={},T=0,A=[],D=[],I=g.spawn(g),F=function H(C){D.push(C),k[C]={index:T,low:T++,explored:!1};var G=g.getElementById(C).connectedEdges().intersection(g);if(G.forEach(function(ue){var _e=ue.target().id();_e!==C&&(_e in k||H(_e),k[_e].explored||(k[C].low=Math.min(k[C].low,k[_e].low)))}),k[C].index===k[C].low){for(var U=g.spawn();;){var Z=D.pop();if(U.merge(g.getElementById(Z)),k[Z].low=k[C].index,k[Z].explored=!0,Z===C)break}var ne=U.edgesWith(U),ae=U.merge(ne);A.push(ae),I=I.difference(ae)}};return g.forEach(function(H){if(H.isNode()){var C=H.id();C in k||F(C)}}),{cut:I,components:A}},SX={tarjanStronglyConnected:D9,tsc:D9,tscc:D9,tarjanStronglyConnectedComponents:D9},wB={};[dx,iY,sY,oY,uY,hY,gY,jY,H5,z5,SL,QY,lX,bX,EX,_X,CX,SX].forEach(function(m){Oe(wB,m)});/*! +Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable +Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) +Licensed under The MIT License (http://opensource.org/licenses/MIT) +*/var mB=0,yB=1,kB=2,nv=function m(g){if(!(this instanceof m))return new m(g);this.id="Thenable/1.0.7",this.state=mB,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof g=="function"&&g.call(this,this.fulfill.bind(this),this.reject.bind(this))};nv.prototype={fulfill:function(g){return xB(this,yB,"fulfillValue",g)},reject:function(g){return xB(this,kB,"rejectReason",g)},then:function(g,k){var T=this,A=new nv;return T.onFulfilled.push(_B(g,A,"fulfill")),T.onRejected.push(_B(k,A,"reject")),EB(T),A.proxy}};var xB=function(g,k,T,A){return g.state===mB&&(g.state=k,g[T]=A,EB(g)),g},EB=function(g){g.state===yB?TB(g,"onFulfilled",g.fulfillValue):g.state===kB&&TB(g,"onRejected",g.rejectReason)},TB=function(g,k,T){if(g[k].length!==0){var A=g[k];g[k]=[];var D=function(){for(var F=0;F0}},clearQueue:function(){return function(){var k=this,T=k.length!==void 0,A=T?k:[k],D=this._private.cy||this;if(!D.styleEnabled())return this;for(var I=0;I-1}var AQ=SQ;function LQ(m,g){var k=this.__data__,T=N9(k,m);return T<0?(++this.size,k.push([m,g])):k[T][1]=g,this}var MQ=LQ;function U5(m){var g=-1,k=m==null?0:m.length;for(this.clear();++g-1&&m%1==0&&m0&&this.spawn(A).updateStyle().emit("class"),k},addClass:function(g){return this.toggleClass(g,!0)},hasClass:function(g){var k=this[0];return k!=null&&k._private.classes.has(g)},toggleClass:function(g,k){Ae(g)||(g=g.match(/\S+/g)||[]);for(var T=this,A=k===void 0,D=[],I=0,F=T.length;I0&&this.spawn(D).updateStyle().emit("class"),T},removeClass:function(g){return this.toggleClass(g,!1)},flashClass:function(g,k){var T=this;if(k==null)k=250;else if(k===0)return T;return T.addClass(g),setTimeout(function(){T.removeClass(g)},k),T}};F9.className=F9.classNames=F9.classes;var lc={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:kt,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};lc.variable="(?:[\\w-.]|(?:\\\\"+lc.metaChar+"))+",lc.className="(?:[\\w-]|(?:\\\\"+lc.metaChar+"))+",lc.value=lc.string+"|"+lc.number,lc.id=lc.variable,function(){var m,g,k;for(m=lc.comparatorOp.split("|"),k=0;k=0)&&g!=="="&&(lc.comparatorOp+="|\\!"+g)}();var iu=function(){return{checks:[]}},Ki={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},PL=[{selector:":selected",matches:function(g){return g.selected()}},{selector:":unselected",matches:function(g){return!g.selected()}},{selector:":selectable",matches:function(g){return g.selectable()}},{selector:":unselectable",matches:function(g){return!g.selectable()}},{selector:":locked",matches:function(g){return g.locked()}},{selector:":unlocked",matches:function(g){return!g.locked()}},{selector:":visible",matches:function(g){return g.visible()}},{selector:":hidden",matches:function(g){return!g.visible()}},{selector:":transparent",matches:function(g){return g.transparent()}},{selector:":grabbed",matches:function(g){return g.grabbed()}},{selector:":free",matches:function(g){return!g.grabbed()}},{selector:":removed",matches:function(g){return g.removed()}},{selector:":inside",matches:function(g){return!g.removed()}},{selector:":grabbable",matches:function(g){return g.grabbable()}},{selector:":ungrabbable",matches:function(g){return!g.grabbable()}},{selector:":animated",matches:function(g){return g.animated()}},{selector:":unanimated",matches:function(g){return!g.animated()}},{selector:":parent",matches:function(g){return g.isParent()}},{selector:":childless",matches:function(g){return g.isChildless()}},{selector:":child",matches:function(g){return g.isChild()}},{selector:":orphan",matches:function(g){return g.isOrphan()}},{selector:":nonorphan",matches:function(g){return g.isChild()}},{selector:":compound",matches:function(g){return g.isNode()?g.isParent():g.source().isParent()||g.target().isParent()}},{selector:":loop",matches:function(g){return g.isLoop()}},{selector:":simple",matches:function(g){return g.isSimple()}},{selector:":active",matches:function(g){return g.active()}},{selector:":inactive",matches:function(g){return!g.active()}},{selector:":backgrounding",matches:function(g){return g.backgrounding()}},{selector:":nonbackgrounding",matches:function(g){return!g.backgrounding()}}].sort(function(m,g){return Bn(m.selector,g.selector)}),MZ=function(){for(var m={},g,k=0;k0&&G.edgeCount>0)return Vo("The selector `"+g+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(G.edgeCount>1)return Vo("The selector `"+g+"` is invalid because it uses multiple edge selectors"),!1;G.edgeCount===1&&Vo("The selector `"+g+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},BZ=function(){if(this.toStringCache!=null)return this.toStringCache;for(var g=function(G){return G??""},k=function(G){return ye(G)?'"'+G+'"':g(G)},T=function(G){return" "+G+" "},A=function(G,U){var Z=G.type,ne=G.value;switch(Z){case Ki.GROUP:{var ae=g(ne);return ae.substring(0,ae.length-1)}case Ki.DATA_COMPARE:{var ue=G.field,_e=G.operator;return"["+ue+T(g(_e))+k(ne)+"]"}case Ki.DATA_BOOL:{var be=G.operator,Se=G.field;return"["+g(be)+Se+"]"}case Ki.DATA_EXIST:{var Le=G.field;return"["+Le+"]"}case Ki.META_COMPARE:{var Be=G.operator,Ke=G.field;return"[["+Ke+T(g(Be))+k(ne)+"]]"}case Ki.STATE:return ne;case Ki.ID:return"#"+ne;case Ki.CLASS:return"."+ne;case Ki.PARENT:case Ki.CHILD:return D(G.parent,U)+T(">")+D(G.child,U);case Ki.ANCESTOR:case Ki.DESCENDANT:return D(G.ancestor,U)+" "+D(G.descendant,U);case Ki.COMPOUND_SPLIT:{var qe=D(G.left,U),Re=D(G.subject,U),Ze=D(G.right,U);return qe+(qe.length>0?" ":"")+Re+Ze}case Ki.TRUE:return""}},D=function(G,U){return G.checks.reduce(function(Z,ne,ae){return Z+(U===G&&ae===0?"$":"")+A(ne,U)},"")},I="",F=0;F1&&F=0&&(k=k.replace("!",""),U=!0),k.indexOf("@")>=0&&(k=k.replace("@",""),G=!0),(D||F||G)&&(H=!D&&!I?"":""+g,C=""+T),G&&(g=H=H.toLowerCase(),T=C=C.toLowerCase()),k){case"*=":A=H.indexOf(C)>=0;break;case"$=":A=H.indexOf(C,H.length-C.length)>=0;break;case"^=":A=H.indexOf(C)===0;break;case"=":A=g===T;break;case">":Z=!0,A=g>T;break;case">=":Z=!0,A=g>=T;break;case"<":Z=!0,A=g0;){var G=A.shift();g(G),D.add(G.id()),F&&T(A,D,G)}return m}function kx(m,g,k){if(k.isParent())for(var T=k._private.children,A=0;A1&&arguments[1]!==void 0?arguments[1]:!0;return j9(this,m,g,kx)};function qB(m,g,k){if(k.isChild()){var T=k._private.parent;g.has(T.id())||m.push(T)}}Y5.forEachUp=function(m){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return j9(this,m,g,qB)};function qZ(m,g,k){qB(m,g,k),kx(m,g,k)}Y5.forEachUpAndDown=function(m){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return j9(this,m,g,qZ)},Y5.ancestors=Y5.parents;var xx,VB;xx=VB={data:Fc.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Fc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Fc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Fc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Fc.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Fc.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var g=this[0];if(g)return g._private.data.id}},xx.attr=xx.data,xx.removeAttr=xx.removeData;var VZ=VB,$9={};function X5(m){return function(g){var k=this;if(g===void 0&&(g=!0),k.length!==0)if(k.isNode()&&!k.removed()){for(var T=0,A=k[0],D=A._private.edges,I=0;Ig}),minIndegree:Q5("indegree",function(m,g){return mg}),minOutdegree:Q5("outdegree",function(m,g){return mg})}),Oe($9,{totalDegree:function(g){for(var k=0,T=this.nodes(),A=0;A0,Z=U;U&&(G=G[0]);var ne=Z?G.position():{x:0,y:0};k!==void 0?C.position(g,k+ne[g]):D!==void 0&&C.position({x:D.x+ne.x,y:D.y+ne.y})}else{var ae=T.position(),ue=F?T.parent():null,_e=ue&&ue.length>0,be=_e;_e&&(ue=ue[0]);var Se=be?ue.position():{x:0,y:0};return D={x:ae.x-Se.x,y:ae.y-Se.y},g===void 0?D:D[g]}else if(!I)return;return this}},bp.modelPosition=bp.point=bp.position,bp.modelPositions=bp.points=bp.positions,bp.renderedPoint=bp.renderedPosition,bp.relativePoint=bp.relativePosition;var KB=UB,Z5,F2;Z5=F2={},F2.renderedBoundingBox=function(m){var g=this.boundingBox(m),k=this.cy(),T=k.zoom(),A=k.pan(),D=g.x1*T+A.x,I=g.x2*T+A.x,F=g.y1*T+A.y,H=g.y2*T+A.y;return{x1:D,x2:I,y1:F,y2:H,w:I-D,h:H-F}},F2.dirtyCompoundBoundsCache=function(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,g=this.cy();return!g.styleEnabled()||!g.hasCompoundNodes()?this:(this.forEachUp(function(k){if(k.isParent()){var T=k._private;T.compoundBoundsClean=!1,T.bbCache=null,m||k.emitAndNotify("bounds")}}),this)},F2.updateCompoundBounds=function(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,g=this.cy();if(!g.styleEnabled()||!g.hasCompoundNodes())return this;if(!m&&g.batching())return this;function k(I){if(!I.isParent())return;var F=I._private,H=I.children(),C=I.pstyle("compound-sizing-wrt-labels").value==="include",G={width:{val:I.pstyle("min-width").pfValue,left:I.pstyle("min-width-bias-left"),right:I.pstyle("min-width-bias-right")},height:{val:I.pstyle("min-height").pfValue,top:I.pstyle("min-height-bias-top"),bottom:I.pstyle("min-height-bias-bottom")}},U=H.boundingBox({includeLabels:C,includeOverlays:!1,useCache:!1}),Z=F.position;(U.w===0||U.h===0)&&(U={w:I.pstyle("width").pfValue,h:I.pstyle("height").pfValue},U.x1=Z.x-U.w/2,U.x2=Z.x+U.w/2,U.y1=Z.y-U.h/2,U.y2=Z.y+U.h/2);function ne($e,ot,ut){var Je=0,Ct=0,lt=ot+ut;return $e>0&<>0&&(Je=ot/lt*$e,Ct=ut/lt*$e),{biasDiff:Je,biasComplementDiff:Ct}}function ae($e,ot,ut,Je){if(ut.units==="%")switch(Je){case"width":return $e>0?ut.pfValue*$e:0;case"height":return ot>0?ut.pfValue*ot:0;case"average":return $e>0&&ot>0?ut.pfValue*($e+ot)/2:0;case"min":return $e>0&&ot>0?$e>ot?ut.pfValue*ot:ut.pfValue*$e:0;case"max":return $e>0&&ot>0?$e>ot?ut.pfValue*$e:ut.pfValue*ot:0;default:return 0}else return ut.units==="px"?ut.pfValue:0}var ue=G.width.left.value;G.width.left.units==="px"&&G.width.val>0&&(ue=ue*100/G.width.val);var _e=G.width.right.value;G.width.right.units==="px"&&G.width.val>0&&(_e=_e*100/G.width.val);var be=G.height.top.value;G.height.top.units==="px"&&G.height.val>0&&(be=be*100/G.height.val);var Se=G.height.bottom.value;G.height.bottom.units==="px"&&G.height.val>0&&(Se=Se*100/G.height.val);var Le=ne(G.width.val-U.w,ue,_e),Be=Le.biasDiff,Ke=Le.biasComplementDiff,qe=ne(G.height.val-U.h,be,Se),Re=qe.biasDiff,Ze=qe.biasComplementDiff;F.autoPadding=ae(U.w,U.h,I.pstyle("padding"),I.pstyle("padding-relative-to").value),F.autoWidth=Math.max(U.w,G.width.val),Z.x=(-Be+U.x1+U.x2+Ke)/2,F.autoHeight=Math.max(U.h,G.height.val),Z.y=(-Re+U.y1+U.y2+Ze)/2}for(var T=0;Tg.x2?A:g.x2,g.y1=Tg.y2?D:g.y2,g.w=g.x2-g.x1,g.h=g.y2-g.y1)},k3=function(g,k){return k==null?g:vp(g,k.x1,k.y1,k.x2,k.y2)},Tx=function(g,k,T){return gp(g,k,T)},H9=function(g,k,T){if(!k.cy().headless()){var A=k._private,D=A.rstyle,I=D.arrowWidth/2,F=k.pstyle(T+"-arrow-shape").value,H,C;if(F!=="none"){T==="source"?(H=D.srcX,C=D.srcY):T==="target"?(H=D.tgtX,C=D.tgtY):(H=D.midX,C=D.midY);var G=A.arrowBounds=A.arrowBounds||{},U=G[T]=G[T]||{};U.x1=H-I,U.y1=C-I,U.x2=H+I,U.y2=C+I,U.w=U.x2-U.x1,U.h=U.y2-U.y1,_9(U,1),vp(g,U.x1,U.y1,U.x2,U.y2)}}},YB=function(g,k,T){if(!k.cy().headless()){var A;T?A=T+"-":A="";var D=k._private,I=D.rstyle,F=k.pstyle(A+"label").strValue;if(F){var H=k.pstyle("text-halign"),C=k.pstyle("text-valign"),G=Tx(I,"labelWidth",T),U=Tx(I,"labelHeight",T),Z=Tx(I,"labelX",T),ne=Tx(I,"labelY",T),ae=k.pstyle(A+"text-margin-x").pfValue,ue=k.pstyle(A+"text-margin-y").pfValue,_e=k.isEdge(),be=k.pstyle(A+"text-rotation"),Se=k.pstyle("text-outline-width").pfValue,Le=k.pstyle("text-border-width").pfValue,Be=Le/2,Ke=k.pstyle("text-background-padding").pfValue,qe=2,Re=U,Ze=G,$e=Ze/2,ot=Re/2,ut,Je,Ct,lt;if(_e)ut=Z-$e,Je=Z+$e,Ct=ne-ot,lt=ne+ot;else{switch(H.value){case"left":ut=Z-Ze,Je=Z;break;case"center":ut=Z-$e,Je=Z+$e;break;case"right":ut=Z,Je=Z+Ze;break}switch(C.value){case"top":Ct=ne-Re,lt=ne;break;case"center":Ct=ne-ot,lt=ne+ot;break;case"bottom":Ct=ne,lt=ne+Re;break}}ut+=ae-Math.max(Se,Be)-Ke-qe,Je+=ae+Math.max(Se,Be)+Ke+qe,Ct+=ue-Math.max(Se,Be)-Ke-qe,lt+=ue+Math.max(Se,Be)+Ke+qe;var un=T||"main",Rt=D.labelBounds,$t=Rt[un]=Rt[un]||{};$t.x1=ut,$t.y1=Ct,$t.x2=Je,$t.y2=lt,$t.w=Je-ut,$t.h=lt-Ct;var bn=_e&&be.strValue==="autorotate",Cn=be.pfValue!=null&&be.pfValue!==0;if(bn||Cn){var Kn=bn?Tx(D.rstyle,"labelAngle",T):be.pfValue,kn=Math.cos(Kn),Wn=Math.sin(Kn),sr=(ut+Je)/2,yr=(Ct+lt)/2;if(!_e){switch(H.value){case"left":sr=Je;break;case"right":sr=ut;break}switch(C.value){case"top":yr=lt;break;case"bottom":yr=Ct;break}}var hr=function(Ba,Li){return Ba=Ba-sr,Li=Li-yr,{x:Ba*kn-Li*Wn+sr,y:Ba*Wn+Li*kn+yr}},nr=hr(ut,Ct),fn=hr(ut,lt),vr=hr(Je,Ct),gr=hr(Je,lt);ut=Math.min(nr.x,fn.x,vr.x,gr.x),Je=Math.max(nr.x,fn.x,vr.x,gr.x),Ct=Math.min(nr.y,fn.y,vr.y,gr.y),lt=Math.max(nr.y,fn.y,vr.y,gr.y)}var ni=un+"Rot",Ti=Rt[ni]=Rt[ni]||{};Ti.x1=ut,Ti.y1=Ct,Ti.x2=Je,Ti.y2=lt,Ti.w=Je-ut,Ti.h=lt-Ct,vp(g,ut,Ct,Je,lt),vp(D.labelBounds.all,ut,Ct,Je,lt)}return g}},UZ=function(g,k){var T=g._private.cy,A=T.styleEnabled(),D=T.headless(),I=zd(),F=g._private,H=g.isNode(),C=g.isEdge(),G,U,Z,ne,ae,ue,_e=F.rstyle,be=H&&A?g.pstyle("bounds-expansion").pfValue:[0],Se=function(Ts){return Ts.pstyle("display").value!=="none"},Le=!A||Se(g)&&(!C||Se(g.source())&&Se(g.target()));if(Le){var Be=0,Ke=0;A&&k.includeOverlays&&(Be=g.pstyle("overlay-opacity").value,Be!==0&&(Ke=g.pstyle("overlay-padding").value));var qe=0,Re=0;A&&k.includeUnderlays&&(qe=g.pstyle("underlay-opacity").value,qe!==0&&(Re=g.pstyle("underlay-padding").value));var Ze=Math.max(Ke,Re),$e=0,ot=0;if(A&&($e=g.pstyle("width").pfValue,ot=$e/2),H&&k.includeNodes){var ut=g.position();ae=ut.x,ue=ut.y;var Je=g.outerWidth(),Ct=Je/2,lt=g.outerHeight(),un=lt/2;G=ae-Ct,U=ae+Ct,Z=ue-un,ne=ue+un,vp(I,G,Z,U,ne)}else if(C&&k.includeEdges)if(A&&!D){var Rt=g.pstyle("curve-style").strValue;if(G=Math.min(_e.srcX,_e.midX,_e.tgtX),U=Math.max(_e.srcX,_e.midX,_e.tgtX),Z=Math.min(_e.srcY,_e.midY,_e.tgtY),ne=Math.max(_e.srcY,_e.midY,_e.tgtY),G-=ot,U+=ot,Z-=ot,ne+=ot,vp(I,G,Z,U,ne),Rt==="haystack"){var $t=_e.haystackPts;if($t&&$t.length===2){if(G=$t[0].x,Z=$t[0].y,U=$t[1].x,ne=$t[1].y,G>U){var bn=G;G=U,U=bn}if(Z>ne){var Cn=Z;Z=ne,ne=Cn}vp(I,G-ot,Z-ot,U+ot,ne+ot)}}else if(Rt==="bezier"||Rt==="unbundled-bezier"||Rt==="segments"||Rt==="taxi"){var Kn;switch(Rt){case"bezier":case"unbundled-bezier":Kn=_e.bezierPts;break;case"segments":case"taxi":Kn=_e.linePts;break}if(Kn!=null)for(var kn=0;knU){var fn=G;G=U,U=fn}if(Z>ne){var vr=Z;Z=ne,ne=vr}G-=ot,U+=ot,Z-=ot,ne+=ot,vp(I,G,Z,U,ne)}if(A&&k.includeEdges&&C&&(H9(I,g,"mid-source"),H9(I,g,"mid-target"),H9(I,g,"source"),H9(I,g,"target")),A){var gr=g.pstyle("ghost").value==="yes";if(gr){var ni=g.pstyle("ghost-offset-x").pfValue,Ti=g.pstyle("ghost-offset-y").pfValue;vp(I,I.x1+ni,I.y1+Ti,I.x2+ni,I.y2+Ti)}}var ia=F.bodyBounds=F.bodyBounds||{};KP(ia,I),kL(ia,be),_9(ia,1),A&&(G=I.x1,U=I.x2,Z=I.y1,ne=I.y2,vp(I,G-Ze,Z-Ze,U+Ze,ne+Ze));var Ba=F.overlayBounds=F.overlayBounds||{};KP(Ba,I),kL(Ba,be),_9(Ba,1);var Li=F.labelBounds=F.labelBounds||{};Li.all!=null?TY(Li.all):Li.all=zd(),A&&k.includeLabels&&(k.includeMainLabels&&YB(I,g,null),C&&(k.includeSourceLabels&&YB(I,g,"source"),k.includeTargetLabels&&YB(I,g,"target")))}return I.x1=E0(I.x1),I.y1=E0(I.y1),I.x2=E0(I.x2),I.y2=E0(I.y2),I.w=E0(I.x2-I.x1),I.h=E0(I.y2-I.y1),I.w>0&&I.h>0&&Le&&(kL(I,be),_9(I,1)),I},XB=function(g){var k=0,T=function(I){return(I?1:0)<0&&arguments[0]!==void 0?arguments[0]:aJ,g=arguments.length>1?arguments[1]:void 0,k=0;k=0;F--)I(F);return this},pm.removeAllListeners=function(){return this.removeListener("*")},pm.emit=pm.trigger=function(m,g,k){var T=this.listeners,A=T.length;return this.emitting++,Ae(g)||(g=[g]),oJ(this,function(D,I){k!=null&&(T=[{event:I.event,type:I.type,namespace:I.namespace,callback:k}],A=T.length);for(var F=function(G){var U=T[G];if(U.type===I.type&&(!U.namespace||U.namespace===I.namespace||U.namespace===sJ)&&D.eventMatches(D.context,U,I)){var Z=[I];g!=null&&qP(Z,g),D.beforeEmit(D.context,U,I),U.conf&&U.conf.one&&(D.listeners=D.listeners.filter(function(ue){return ue!==U}));var ne=D.callbackContext(D.context,U,I),ae=U.callback.apply(ne,Z);D.afterEmit(D.context,U,I),ae===!1&&(I.stopPropagation(),I.preventDefault())}},H=0;H1&&!I){var F=this.length-1,H=this[F],C=H._private.data.id;this[F]=void 0,this[g]=H,D.set(C,{ele:H,index:g})}return this.length--,this},unmergeOne:function(g){g=g[0];var k=this._private,T=g._private.data.id,A=k.map,D=A.get(T);if(!D)return this;var I=D.index;return this.unmergeAt(I),this},unmerge:function(g){var k=this._private.cy;if(!g)return this;if(g&&ye(g)){var T=g;g=k.mutableElements().filter(T)}for(var A=0;A=0;k--){var T=this[k];g(T)&&this.unmergeAt(k)}return this},map:function(g,k){for(var T=[],A=this,D=0;DT&&(T=H,A=F)}return{value:T,ele:A}},min:function(g,k){for(var T=1/0,A,D=this,I=0;I=0&&D"u"?"undefined":f(Symbol))!=g&&f(Symbol.iterator)!=g;k&&(V9[Symbol.iterator]=function(){var T=this,A={value:void 0,done:!1},D=0,I=this.length;return b({next:function(){return D1&&arguments[1]!==void 0?arguments[1]:!0,T=this[0],A=T.cy();if(A.styleEnabled()&&T){this.cleanStyle();var D=T._private.style[g];return D??(k?A.style().getDefaultProperty(g):null)}},numericStyle:function(g){var k=this[0];if(k.cy().styleEnabled()&&k){var T=k.pstyle(g);return T.pfValue!==void 0?T.pfValue:T.value}},numericStyleUnits:function(g){var k=this[0];if(k.cy().styleEnabled()&&k)return k.pstyle(g).units},renderedStyle:function(g){var k=this.cy();if(!k.styleEnabled())return this;var T=this[0];if(T)return k.style().getRenderedStyle(T,g)},style:function(g,k){var T=this.cy();if(!T.styleEnabled())return this;var A=!1,D=T.style();if(de(g)){var I=g;D.applyBypass(this,I,A),this.emitAndNotify("style")}else if(ye(g))if(k===void 0){var F=this[0];return F?D.getStylePropertyValue(F,g):void 0}else D.applyBypass(this,g,k,A),this.emitAndNotify("style");else if(g===void 0){var H=this[0];return H?D.getRawStyle(H):void 0}return this},removeStyle:function(g){var k=this.cy();if(!k.styleEnabled())return this;var T=!1,A=k.style(),D=this;if(g===void 0)for(var I=0;I0&&g.push(G[0]),g.push(F[0])}return this.spawn(g,!0).filter(m)},"neighborhood"),closedNeighborhood:function(g){return this.neighborhood().add(this).filter(g)},openNeighborhood:function(g){return this.neighborhood(g)}}),w1.neighbourhood=w1.neighborhood,w1.closedNeighbourhood=w1.closedNeighborhood,w1.openNeighbourhood=w1.openNeighborhood,Oe(w1,{source:ld(function(g){var k=this[0],T;return k&&(T=k._private.source||k.cy().collection()),T&&g?T.filter(g):T},"source"),target:ld(function(g){var k=this[0],T;return k&&(T=k._private.target||k.cy().collection()),T&&g?T.filter(g):T},"target"),sources:bR({attr:"source"}),targets:bR({attr:"target"})});function bR(m){return function(k){for(var T=[],A=0;A0);return I},component:function(){var g=this[0];return g.cy().mutableElements().components(g)[0]}}),w1.componentsOf=w1.components;var Wf=function(g,k){var T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(g===void 0){yc("A collection must have a reference to the core");return}var D=new R2,I=!1;if(!k)k=[];else if(k.length>0&&de(k[0])&&!Ie(k[0])){I=!0;for(var F=[],H=new R5,C=0,G=k.length;C0&&arguments[0]!==void 0?arguments[0]:!0,g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,k=this,T=k.cy(),A=T._private,D=[],I=[],F,H=0,C=k.length;H0){for(var Cn=F.length===k.length?k:new Wf(T,F),Kn=0;Kn0&&arguments[0]!==void 0?arguments[0]:!0,g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,k=this,T=[],A={},D=k._private.cy;function I(lt){for(var un=lt._private.edges,Rt=0;Rt0&&(m?ut.emitAndNotify("remove"):g&&ut.emit("remove"));for(var Je=0;Je0?Je=lt:ut=lt;while(Math.abs(Ct)>I&&++un=D?Se(ot,un):Rt===0?un:Be(ot,ut,ut+C)}var qe=!1;function Re(){qe=!0,(m!==g||k!==T)&&Le()}var Ze=function(ut){return qe||Re(),m===g&&k===T?ut:ut===0?0:ut===1?1:_e(Ke(ut),g,T)};Ze.getControlPoints=function(){return[{x:m,y:g},{x:k,y:T}]};var $e="generateBezier("+[m,g,k,T]+")";return Ze.toString=function(){return $e},Ze}/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var wJ=function(){function m(T){return-T.tension*T.x-T.friction*T.v}function g(T,A,D){var I={x:T.x+D.dx*A,v:T.v+D.dv*A,tension:T.tension,friction:T.friction};return{dx:I.v,dv:m(I)}}function k(T,A){var D={dx:T.v,dv:m(T)},I=g(T,A*.5,D),F=g(T,A*.5,I),H=g(T,A,F),C=1/6*(D.dx+2*(I.dx+F.dx)+H.dx),G=1/6*(D.dv+2*(I.dv+F.dv)+H.dv);return T.x=T.x+C*A,T.v=T.v+G*A,T}return function T(A,D,I){var F={x:-1,v:0,tension:null,friction:null},H=[0],C=0,G=1/1e4,U=16/1e3,Z,ne,ae;for(A=parseFloat(A)||500,D=parseFloat(D)||20,I=I||null,F.tension=A,F.friction=D,Z=I!==null,Z?(C=T(A,D),ne=C/I*U):ne=U;ae=k(ae||F,ne),H.push(1+ae.x),C+=16,Math.abs(ae.x)>G&&Math.abs(ae.v)>G;);return Z?function(ue){return H[ue*(H.length-1)|0]}:C}}(),Eu=function(g,k,T,A){var D=vJ(g,k,T,A);return function(I,F,H){return I+(F-I)*D(H)}},Y9={linear:function(g,k,T){return g+(k-g)*T},ease:Eu(.25,.1,.25,1),"ease-in":Eu(.42,0,1,1),"ease-out":Eu(0,0,.58,1),"ease-in-out":Eu(.42,0,.58,1),"ease-in-sine":Eu(.47,0,.745,.715),"ease-out-sine":Eu(.39,.575,.565,1),"ease-in-out-sine":Eu(.445,.05,.55,.95),"ease-in-quad":Eu(.55,.085,.68,.53),"ease-out-quad":Eu(.25,.46,.45,.94),"ease-in-out-quad":Eu(.455,.03,.515,.955),"ease-in-cubic":Eu(.55,.055,.675,.19),"ease-out-cubic":Eu(.215,.61,.355,1),"ease-in-out-cubic":Eu(.645,.045,.355,1),"ease-in-quart":Eu(.895,.03,.685,.22),"ease-out-quart":Eu(.165,.84,.44,1),"ease-in-out-quart":Eu(.77,0,.175,1),"ease-in-quint":Eu(.755,.05,.855,.06),"ease-out-quint":Eu(.23,1,.32,1),"ease-in-out-quint":Eu(.86,0,.07,1),"ease-in-expo":Eu(.95,.05,.795,.035),"ease-out-expo":Eu(.19,1,.22,1),"ease-in-out-expo":Eu(1,0,0,1),"ease-in-circ":Eu(.6,.04,.98,.335),"ease-out-circ":Eu(.075,.82,.165,1),"ease-in-out-circ":Eu(.785,.135,.15,.86),spring:function(g,k,T){if(T===0)return Y9.linear;var A=wJ(g,k,T);return function(D,I,F){return D+(I-D)*A(F)}},"cubic-bezier":Eu};function mR(m,g,k,T,A){if(T===1||g===k)return k;var D=A(g,k,T);return m==null||((m.roundValue||m.color)&&(D=Math.round(D)),m.min!==void 0&&(D=Math.max(D,m.min)),m.max!==void 0&&(D=Math.min(D,m.max))),D}function yR(m,g){return m.pfValue!=null||m.value!=null?m.pfValue!=null&&(g==null||g.type.units!=="%")?m.pfValue:m.value:m}function t6(m,g,k,T,A){var D=A!=null?A.type:null;k<0?k=0:k>1&&(k=1);var I=yR(m,A),F=yR(g,A);if(te(I)&&te(F))return mR(D,I,F,k,T);if(Ae(I)&&Ae(F)){for(var H=[],C=0;C0?(ne==="spring"&&ae.push(I.duration),I.easingImpl=Y9[ne].apply(null,ae)):I.easingImpl=Y9[ne]}var ue=I.easingImpl,_e;if(I.duration===0?_e=1:_e=(k-H)/I.duration,I.applying&&(_e=I.progress),_e<0?_e=0:_e>1&&(_e=1),I.delay==null){var be=I.startPosition,Se=I.position;if(Se&&A&&!m.locked()){var Le={};Lx(be.x,Se.x)&&(Le.x=t6(be.x,Se.x,_e,ue)),Lx(be.y,Se.y)&&(Le.y=t6(be.y,Se.y,_e,ue)),m.position(Le)}var Be=I.startPan,Ke=I.pan,qe=D.pan,Re=Ke!=null&&T;Re&&(Lx(Be.x,Ke.x)&&(qe.x=t6(Be.x,Ke.x,_e,ue)),Lx(Be.y,Ke.y)&&(qe.y=t6(Be.y,Ke.y,_e,ue)),m.emit("pan"));var Ze=I.startZoom,$e=I.zoom,ot=$e!=null&&T;ot&&(Lx(Ze,$e)&&(D.zoom=px(D.minZoom,t6(Ze,$e,_e,ue),D.maxZoom)),m.emit("zoom")),(Re||ot)&&m.emit("viewport");var ut=I.style;if(ut&&ut.length>0&&A){for(var Je=0;Je=0;Re--){var Ze=qe[Re];Ze()}qe.splice(0,qe.length)},Se=ne.length-1;Se>=0;Se--){var Le=ne[Se],Be=Le._private;if(Be.stopped){ne.splice(Se,1),Be.hooked=!1,Be.playing=!1,Be.started=!1,be(Be.frames);continue}!Be.playing&&!Be.applying||(Be.playing&&Be.applying&&(Be.applying=!1),Be.started||yJ(G,Le,m),mJ(G,Le,m,U),Be.applying&&(Be.applying=!1),be(Be.frames),Be.step!=null&&Be.step(m),Le.completed()&&(ne.splice(Se,1),Be.hooked=!1,Be.playing=!1,Be.started=!1,be(Be.completes)),ue=!0)}return!U&&ne.length===0&&ae.length===0&&T.push(G),ue}for(var D=!1,I=0;I0?g.notify("draw",k):g.notify("draw")),k.unmerge(T),g.emit("step")}var kJ={animate:Fc.animate(),animation:Fc.animation(),animated:Fc.animated(),clearQueue:Fc.clearQueue(),delay:Fc.delay(),delayAnimation:Fc.delayAnimation(),stop:Fc.stop(),addToAnimationPool:function(g){var k=this;k.styleEnabled()&&k._private.aniEles.merge(g)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var g=this;if(g._private.animationsRunning=!0,!g.styleEnabled())return;function k(){g._private.animationsRunning&&Aa(function(D){kR(D,g),k()})}var T=g.renderer();T&&T.beforeRender?T.beforeRender(function(D,I){kR(I,g)},T.beforeRenderPriorities.animations):k()}},xJ={qualifierCompare:function(g,k){return g==null||k==null?g==null&&k==null:g.sameText(k)},eventMatches:function(g,k,T){var A=k.qualifier;return A!=null?g!==T.target&&Ie(T.target)&&A.matches(T.target):!0},addEventFields:function(g,k){k.cy=g,k.target=g},callbackContext:function(g,k,T){return k.qualifier!=null?T.target:g}},X9=function(g){return ye(g)?new dm(g):g},xR={createEmitter:function(){var g=this._private;return g.emitter||(g.emitter=new G9(xJ,this)),this},emitter:function(){return this._private.emitter},on:function(g,k,T){return this.emitter().on(g,X9(k),T),this},removeListener:function(g,k,T){return this.emitter().removeListener(g,X9(k),T),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(g,k,T){return this.emitter().one(g,X9(k),T),this},once:function(g,k,T){return this.emitter().one(g,X9(k),T),this},emit:function(g,k){return this.emitter().emit(g,k),this},emitAndNotify:function(g,k){return this.emit(g),this.notify(g,k),this}};Fc.eventAliasesOn(xR);var $L={png:function(g){var k=this._private.renderer;return g=g||{},k.png(g)},jpg:function(g){var k=this._private.renderer;return g=g||{},g.bg=g.bg||"#fff",k.jpg(g)}};$L.jpeg=$L.jpg;var Q9={layout:function(g){var k=this;if(g==null){yc("Layout options must be specified to make a layout");return}if(g.name==null){yc("A `name` must be specified to make a layout");return}var T=g.name,A=k.extension("layout",T);if(A==null){yc("No such layout `"+T+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var D;ye(g.eles)?D=k.$(g.eles):D=g.eles!=null?g.eles:k.$();var I=new A(Oe({},g,{cy:k,eles:D}));return I}};Q9.createLayout=Q9.makeLayout=Q9.layout;var EJ={notify:function(g,k){var T=this._private;if(this.batching()){T.batchNotifications=T.batchNotifications||{};var A=T.batchNotifications[g]=T.batchNotifications[g]||this.collection();k!=null&&A.merge(k);return}if(T.notificationsEnabled){var D=this.renderer();this.destroyed()||!D||D.notify(g,k)}},notifications:function(g){var k=this._private;return g===void 0?k.notificationsEnabled:(k.notificationsEnabled=!!g,this)},noNotifications:function(g){this.notifications(!1),g(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var g=this._private;return g.batchCount==null&&(g.batchCount=0),g.batchCount===0&&(g.batchStyleEles=this.collection(),g.batchNotifications={}),g.batchCount++,this},endBatch:function(){var g=this._private;if(g.batchCount===0)return this;if(g.batchCount--,g.batchCount===0){g.batchStyleEles.updateStyle();var k=this.renderer();Object.keys(g.batchNotifications).forEach(function(T){var A=g.batchNotifications[T];A.empty()?k.notify(T):k.notify(T,A)})}return this},batch:function(g){return this.startBatch(),g(),this.endBatch(),this},batchData:function(g){var k=this;return this.batch(function(){for(var T=Object.keys(g),A=0;A0;)k.removeChild(k.childNodes[0]);g._private.renderer=null,g.mutableElements().forEach(function(T){var A=T._private;A.rscratch={},A.rstyle={},A.animation.current=[],A.animation.queue=[]})},onRender:function(g){return this.on("render",g)},offRender:function(g){return this.off("render",g)}};HL.invalidateDimensions=HL.resize;var Z9={collection:function(g,k){return ye(g)?this.$(g):he(g)?g.collection():Ae(g)?(k||(k={}),new Wf(this,g,k.unique,k.removed)):new Wf(this)},nodes:function(g){var k=this.$(function(T){return T.isNode()});return g?k.filter(g):k},edges:function(g){var k=this.$(function(T){return T.isEdge()});return g?k.filter(g):k},$:function(g){var k=this._private.elements;return g?k.filter(g):k.spawnSelf()},mutableElements:function(){return this._private.elements}};Z9.elements=Z9.filter=Z9.$;var m1={},Mx="t",_J="f";m1.apply=function(m){for(var g=this,k=g._private,T=k.cy,A=T.collection(),D=0;D0;if(Z||U&&ne){var ae=void 0;Z&&ne||Z?ae=C.properties:ne&&(ae=C.mappedProperties);for(var ue=0;ue1&&(Be=1),F.color){var qe=T.valueMin[0],Re=T.valueMax[0],Ze=T.valueMin[1],$e=T.valueMax[1],ot=T.valueMin[2],ut=T.valueMax[2],Je=T.valueMin[3]==null?1:T.valueMin[3],Ct=T.valueMax[3]==null?1:T.valueMax[3],lt=[Math.round(qe+(Re-qe)*Be),Math.round(Ze+($e-Ze)*Be),Math.round(ot+(ut-ot)*Be),Math.round(Je+(Ct-Je)*Be)];D={bypass:T.bypass,name:T.name,value:lt,strValue:"rgb("+lt[0]+", "+lt[1]+", "+lt[2]+")"}}else if(F.number){var un=T.valueMin+(T.valueMax-T.valueMin)*Be;D=this.parse(T.name,un,T.bypass,Z)}else return!1;if(!D)return ue(),!1;D.mapping=T,T=D;break}case I.data:{for(var Rt=T.field.split("."),$t=U.data,bn=0;bn0&&D>0){for(var F={},H=!1,C=0;C0?m.delayAnimation(I).play().promise().then(Le):Le()}).then(function(){return m.animation({style:F,duration:D,easing:m.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){k.removeBypasses(m,A),m.emitAndNotify("style"),T.transitioning=!1})}else T.transitioning&&(this.removeBypasses(m,A),m.emitAndNotify("style"),T.transitioning=!1)},m1.checkTrigger=function(m,g,k,T,A,D){var I=this.properties[g],F=A(I);F!=null&&F(k,T)&&D(I)},m1.checkZOrderTrigger=function(m,g,k,T){var A=this;this.checkTrigger(m,g,k,T,function(D){return D.triggersZOrder},function(){A._private.cy.notify("zorder",m)})},m1.checkBoundsTrigger=function(m,g,k,T){this.checkTrigger(m,g,k,T,function(A){return A.triggersBounds},function(A){m.dirtyCompoundBoundsCache(),m.dirtyBoundingBoxCache(),A.triggersBoundsOfParallelBeziers&&(g==="curve-style"&&(k==="bezier"||T==="bezier")||g==="display"&&(k==="none"||T==="none"))&&m.parallelEdges().forEach(function(D){D.isBundledBezier()&&D.dirtyBoundingBoxCache()})})},m1.checkTriggers=function(m,g,k,T){m.dirtyStyleCache(),this.checkZOrderTrigger(m,g,k,T),this.checkBoundsTrigger(m,g,k,T)};var Dx={};Dx.applyBypass=function(m,g,k,T){var A=this,D=[],I=!0;if(g==="*"||g==="**"){if(k!==void 0)for(var F=0;FA.length?T=T.substr(A.length):T=""}function H(){D.length>I.length?D=D.substr(I.length):D=""}for(;;){var C=T.match(/^\s*$/);if(C)break;var G=T.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!G){Vo("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+T);break}A=G[0];var U=G[1];if(U!=="core"){var Z=new dm(U);if(Z.invalid){Vo("Skipping parsing of block: Invalid selector found in string stylesheet: "+U),F();continue}}var ne=G[2],ae=!1;D=ne;for(var ue=[];;){var _e=D.match(/^\s*$/);if(_e)break;var be=D.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!be){Vo("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+ne),ae=!0;break}I=be[0];var Se=be[1],Le=be[2],Be=g.properties[Se];if(!Be){Vo("Skipping property: Invalid property name in: "+I),H();continue}var Ke=k.parse(Se,Le);if(!Ke){Vo("Skipping property: Invalid property definition in: "+I),H();continue}ue.push({name:Se,val:Le}),H()}if(ae){F();break}k.selector(U);for(var qe=0;qe=7&&g[0]==="d"&&(G=new RegExp(F.data.regex).exec(g))){if(k)return!1;var Z=F.data;return{name:m,value:G,strValue:""+g,mapped:Z,field:G[1],bypass:k}}else if(g.length>=10&&g[0]==="m"&&(U=new RegExp(F.mapData.regex).exec(g))){if(k||C.multiple)return!1;var ne=F.mapData;if(!(C.color||C.number))return!1;var ae=this.parse(m,U[4]);if(!ae||ae.mapped)return!1;var ue=this.parse(m,U[5]);if(!ue||ue.mapped)return!1;if(ae.pfValue===ue.pfValue||ae.strValue===ue.strValue)return Vo("`"+m+": "+g+"` is not a valid mapper because the output range is zero; converting to `"+m+": "+ae.strValue+"`"),this.parse(m,ae.strValue);if(C.color){var _e=ae.value,be=ue.value,Se=_e[0]===be[0]&&_e[1]===be[1]&&_e[2]===be[2]&&(_e[3]===be[3]||(_e[3]==null||_e[3]===1)&&(be[3]==null||be[3]===1));if(Se)return!1}return{name:m,value:U,strValue:""+g,mapped:ne,field:U[1],fieldMin:parseFloat(U[2]),fieldMax:parseFloat(U[3]),valueMin:ae.value,valueMax:ue.value,bypass:k}}}if(C.multiple&&T!=="multiple"){var Le;if(H?Le=g.split(/\s+/):Ae(g)?Le=g:Le=[g],C.evenMultiple&&Le.length%2!==0)return null;for(var Be=[],Ke=[],qe=[],Re="",Ze=!1,$e=0;$e0?" ":"")+ot.strValue}return C.validate&&!C.validate(Be,Ke)?null:C.singleEnum&&Ze?Be.length===1&&ye(Be[0])?{name:m,value:Be[0],strValue:Be[0],bypass:k}:null:{name:m,value:Be,pfValue:qe,strValue:Re,bypass:k,units:Ke}}var ut=function(){for(var gr=0;grC.max||C.strictMax&&g===C.max))return null;var Rt={name:m,value:g,strValue:""+g+(Je||""),units:Je,bypass:k};return C.unitless||Je!=="px"&&Je!=="em"?Rt.pfValue=g:Rt.pfValue=Je==="px"||!Je?g:this.getEmSizeInPixels()*g,(Je==="ms"||Je==="s")&&(Rt.pfValue=Je==="ms"?g:1e3*g),(Je==="deg"||Je==="rad")&&(Rt.pfValue=Je==="rad"?g:yY(g)),Je==="%"&&(Rt.pfValue=g/100),Rt}else if(C.propList){var $t=[],bn=""+g;if(bn!=="none"){for(var Cn=bn.split(/\s*,\s*|\s+/),Kn=0;Kn0&&F>0&&!isNaN(T.w)&&!isNaN(T.h)&&T.w>0&&T.h>0){H=Math.min((I-2*k)/T.w,(F-2*k)/T.h),H=H>this._private.maxZoom?this._private.maxZoom:H,H=H=T.minZoom&&(T.maxZoom=k),this},minZoom:function(g){return g===void 0?this._private.minZoom:this.zoomRange({min:g})},maxZoom:function(g){return g===void 0?this._private.maxZoom:this.zoomRange({max:g})},getZoomedViewport:function(g){var k=this._private,T=k.pan,A=k.zoom,D,I,F=!1;if(k.zoomingEnabled||(F=!0),te(g)?I=g:de(g)&&(I=g.level,g.position!=null?D=E9(g.position,A,T):g.renderedPosition!=null&&(D=g.renderedPosition),D!=null&&!k.panningEnabled&&(F=!0)),I=I>k.maxZoom?k.maxZoom:I,I=Ik.maxZoom||!k.zoomingEnabled?I=!0:(k.zoom=H,D.push("zoom"))}if(A&&(!I||!g.cancelOnFailedZoom)&&k.panningEnabled){var C=g.pan;te(C.x)&&(k.pan.x=C.x,F=!1),te(C.y)&&(k.pan.y=C.y,F=!1),F||D.push("pan")}return D.length>0&&(D.push("viewport"),this.emit(D.join(" ")),this.notify("viewport")),this},center:function(g){var k=this.getCenterPan(g);return k&&(this._private.pan=k,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(g,k){if(this._private.panningEnabled){if(ye(g)){var T=g;g=this.mutableElements().filter(T)}else he(g)||(g=this.mutableElements());if(g.length!==0){var A=g.boundingBox(),D=this.width(),I=this.height();k=k===void 0?this._private.zoom:k;var F={x:(D-k*(A.x1+A.x2))/2,y:(I-k*(A.y1+A.y2))/2};return F}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var g=this._private,k=g.container;return g.sizeCache=g.sizeCache||(k?function(){var T=$.getComputedStyle(k),A=function(I){return parseFloat(T.getPropertyValue(I))};return{width:k.clientWidth-A("padding-left")-A("padding-right"),height:k.clientHeight-A("padding-top")-A("padding-bottom")}}():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var g=this._private.pan,k=this._private.zoom,T=this.renderedExtent(),A={x1:(T.x1-g.x)/k,x2:(T.x2-g.x)/k,y1:(T.y1-g.y)/k,y2:(T.y2-g.y)/k};return A.w=A.x2-A.x1,A.h=A.y2-A.y1,A},renderedExtent:function(){var g=this.width(),k=this.height();return{x1:0,y1:0,x2:g,y2:k,w:g,h:k}},multiClickDebounceTime:function(g){if(g)this._private.multiClickDebounceTime=g;else return this._private.multiClickDebounceTime;return this}};x3.centre=x3.center,x3.autolockNodes=x3.autolock,x3.autoungrabifyNodes=x3.autoungrabify;var Ix={data:Fc.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Fc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Fc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Fc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Ix.attr=Ix.data,Ix.removeAttr=Ix.removeData;var Ox=function(g){var k=this;g=Oe({},g);var T=g.container;T&&!De(T)&&De(T[0])&&(T=T[0]);var A=T?T._cyreg:null;A=A||{},A&&A.cy&&(A.cy.destroy(),A={});var D=A.readies=A.readies||[];T&&(T._cyreg=A),A.cy=k;var I=$!==void 0&&T!==void 0&&!g.headless,F=g;F.layout=Oe({name:I?"grid":"null"},F.layout),F.renderer=Oe({name:I?"canvas":"null"},F.renderer);var H=function(ae,ue,_e){return ue!==void 0?ue:_e!==void 0?_e:ae},C=this._private={container:T,ready:!1,options:F,elements:new Wf(this),listeners:[],aniEles:new Wf(this),data:F.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:H(!0,F.zoomingEnabled),userZoomingEnabled:H(!0,F.userZoomingEnabled),panningEnabled:H(!0,F.panningEnabled),userPanningEnabled:H(!0,F.userPanningEnabled),boxSelectionEnabled:H(!0,F.boxSelectionEnabled),autolock:H(!1,F.autolock,F.autolockNodes),autoungrabify:H(!1,F.autoungrabify,F.autoungrabifyNodes),autounselectify:H(!1,F.autounselectify),styleEnabled:F.styleEnabled===void 0?I:F.styleEnabled,zoom:te(F.zoom)?F.zoom:1,pan:{x:de(F.pan)&&te(F.pan.x)?F.pan.x:0,y:de(F.pan)&&te(F.pan.y)?F.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:H(250,F.multiClickDebounceTime)};this.createEmitter(),this.selectionType(F.selectionType),this.zoomRange({min:F.minZoom,max:F.maxZoom});var G=function(ae,ue){var _e=ae.some(jt);if(_e)return q5.all(ae).then(ue);ue(ae)};C.styleEnabled&&k.setStyle([]);var U=Oe({},F,F.renderer);k.initRenderer(U);var Z=function(ae,ue,_e){k.notifications(!1);var be=k.mutableElements();be.length>0&&be.remove(),ae!=null&&(de(ae)||Ae(ae))&&k.add(ae),k.one("layoutready",function(Le){k.notifications(!0),k.emit(Le),k.one("load",ue),k.emitAndNotify("load")}).one("layoutstop",function(){k.one("done",_e),k.emit("done")});var Se=Oe({},k._private.options.layout);Se.eles=k.elements(),k.layout(Se).run()};G([F.style,F.elements],function(ne){var ae=ne[0],ue=ne[1];C.styleEnabled&&k.style().append(ae),Z(ue,function(){k.startAnimationLoop(),C.ready=!0,ke(F.ready)&&k.on("ready",F.ready);for(var _e=0;_e0,H=zd(g.boundingBox?g.boundingBox:{x1:0,y1:0,w:k.width(),h:k.height()}),C;if(he(g.roots))C=g.roots;else if(Ae(g.roots)){for(var G=[],U=0;U0;){var un=lt(),Rt=ot(un,Je);if(Rt)un.outgoers().filter(function(Li){return Li.isNode()&&T.has(Li)}).forEach(Ct);else if(Rt===null){Vo("Detected double maximal shift for node `"+un.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}$e();var $t=0;if(g.avoidOverlap)for(var bn=0;bn0&&be[0].length<=3?Ks/2:0),On=2*Math.PI/be[Yi].length*Di;return Yi===0&&be[0].length===1&&(We=1),{x:Ti.x+We*Math.cos(On),y:Ti.y+We*Math.sin(On)}}else{var Ar={x:Ti.x+(Di+1-(es+1)/2)*eo,y:(Yi+1)*sa};return Ar}};return T.nodes().layoutPositions(this,g,Ba),this};var LJ={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(g,k){return!0},ready:void 0,stop:void 0,transform:function(g,k){return k}};function nT(m){this.options=Oe({},LJ,m)}nT.prototype.run=function(){var m=this.options,g=m,k=m.cy,T=g.eles,A=g.counterclockwise!==void 0?!g.counterclockwise:g.clockwise,D=T.nodes().not(":parent");g.sort&&(D=D.sort(g.sort));for(var I=zd(g.boundingBox?g.boundingBox:{x1:0,y1:0,w:k.width(),h:k.height()}),F={x:I.x1+I.w/2,y:I.y1+I.h/2},H=g.sweep===void 0?2*Math.PI-2*Math.PI/D.length:g.sweep,C=H/Math.max(1,D.length-1),G,U=0,Z=0;Z1&&g.avoidOverlap){U*=1.75;var be=Math.cos(C)-Math.cos(0),Se=Math.sin(C)-Math.sin(0),Le=Math.sqrt(U*U/(be*be+Se*Se));G=Math.max(Le,G)}var Be=function(qe,Re){var Ze=g.startAngle+Re*C*(A?1:-1),$e=G*Math.cos(Ze),ot=G*Math.sin(Ze),ut={x:F.x+$e,y:F.y+ot};return ut};return T.nodes().layoutPositions(this,g,Be),this};var MJ={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(g){return g.degree()},levelWidth:function(g){return g.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(g,k){return!0},ready:void 0,stop:void 0,transform:function(g,k){return k}};function TR(m){this.options=Oe({},MJ,m)}TR.prototype.run=function(){for(var m=this.options,g=m,k=g.counterclockwise!==void 0?!g.counterclockwise:g.clockwise,T=m.cy,A=g.eles,D=A.nodes().not(":parent"),I=zd(g.boundingBox?g.boundingBox:{x1:0,y1:0,w:T.width(),h:T.height()}),F={x:I.x1+I.w/2,y:I.y1+I.h/2},H=[],C=0,G=0;G0){var Ke=Math.abs(Se[0].value-Be.value);Ke>=_e&&(Se=[],be.push(Se))}Se.push(Be)}var qe=C+g.minNodeSpacing;if(!g.avoidOverlap){var Re=be.length>0&&be[0].length>1,Ze=Math.min(I.w,I.h)/2-qe,$e=Ze/(be.length+Re?1:0);qe=Math.min(qe,$e)}for(var ot=0,ut=0;ut1&&g.avoidOverlap){var un=Math.cos(lt)-Math.cos(0),Rt=Math.sin(lt)-Math.sin(0),$t=Math.sqrt(qe*qe/(un*un+Rt*Rt));ot=Math.max($t,ot)}Je.r=ot,ot+=qe}if(g.equidistant){for(var bn=0,Cn=0,Kn=0;Kn=m.numIter||(FJ(T,m),T.temperature=T.temperature*m.coolingFactor,T.temperature=m.animationThreshold&&D(),Aa(U)}};G()}else{for(;C;)C=I(H),H++;SR(T,m),F()}return this},rT.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},rT.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var IJ=function(g,k,T){for(var A=T.eles.edges(),D=T.eles.nodes(),I={isCompound:g.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:D.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:A.size(),temperature:T.initialTemp,clientWidth:g.width(),clientHeight:g.width(),boundingBox:zd(T.boundingBox?T.boundingBox:{x1:0,y1:0,w:g.width(),h:g.height()})},F=T.eles.components(),H={},C=0;C0){I.graphSet.push(Re);for(var C=0;CA.count?0:A.graph},NJ=function m(g,k,T,A){var D=A.graphSet[T];if(-10)var U=A.nodeOverlap*G,Z=Math.sqrt(F*F+H*H),ne=U*F/Z,ae=U*H/Z;else var ue=iT(g,F,H),_e=iT(k,-1*F,-1*H),be=_e.x-ue.x,Se=_e.y-ue.y,Le=be*be+Se*Se,Z=Math.sqrt(Le),U=(g.nodeRepulsion+k.nodeRepulsion)/Le,ne=U*be/Z,ae=U*Se/Z;g.isLocked||(g.offsetX-=ne,g.offsetY-=ae),k.isLocked||(k.offsetX+=ne,k.offsetY+=ae)}},HJ=function(g,k,T,A){if(T>0)var D=g.maxX-k.minX;else var D=k.maxX-g.minX;if(A>0)var I=g.maxY-k.minY;else var I=k.maxY-g.minY;return D>=0&&I>=0?Math.sqrt(D*D+I*I):0},iT=function(g,k,T){var A=g.positionX,D=g.positionY,I=g.height||1,F=g.width||1,H=T/k,C=I/F,G={};return k===0&&0T?(G.x=A,G.y=D+I/2,G):0k&&-1*C<=H&&H<=C?(G.x=A-F/2,G.y=D-F*T/2/k,G):0=C)?(G.x=A+I*k/2/T,G.y=D+I/2,G):(0>T&&(H<=-1*C||H>=C)&&(G.x=A-I*k/2/T,G.y=D-I/2),G)},zJ=function(g,k){for(var T=0;TT){var _e=k.gravity*ne/ue,be=k.gravity*ae/ue;Z.offsetX+=_e,Z.offsetY+=be}}}}},qJ=function(g,k){var T=[],A=0,D=-1;for(T.push.apply(T,g.graphSet[0]),D+=g.graphSet[0].length;A<=D;){var I=T[A++],F=g.idToIndex[I],H=g.layoutNodes[F],C=H.children;if(0T)var D={x:T*g/A,y:T*k/A};else var D={x:g,y:k};return D},WJ=function m(g,k){var T=g.parentId;if(T!=null){var A=k.layoutNodes[k.idToIndex[T]],D=!1;if((A.maxX==null||g.maxX+A.padRight>A.maxX)&&(A.maxX=g.maxX+A.padRight,D=!0),(A.minX==null||g.minX-A.padLeftA.maxY)&&(A.maxY=g.maxY+A.padBottom,D=!0),(A.minY==null||g.minY-A.padTopbe&&(ae+=_e+k.componentSpacing,ne=0,ue=0,_e=0)}}},KJ={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(g){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(g,k){return!0},ready:void 0,stop:void 0,transform:function(g,k){return k}};function AR(m){this.options=Oe({},KJ,m)}AR.prototype.run=function(){var m=this.options,g=m,k=m.cy,T=g.eles,A=T.nodes().not(":parent");g.sort&&(A=A.sort(g.sort));var D=zd(g.boundingBox?g.boundingBox:{x1:0,y1:0,w:k.width(),h:k.height()});if(D.h===0||D.w===0)T.nodes().layoutPositions(this,g,function(sr){return{x:D.x1,y:D.y1}});else{var I=A.size(),F=Math.sqrt(I*D.h/D.w),H=Math.round(F),C=Math.round(D.w/D.h*F),G=function(yr){if(yr==null)return Math.min(H,C);var hr=Math.min(H,C);hr==H?H=yr:C=yr},U=function(yr){if(yr==null)return Math.max(H,C);var hr=Math.max(H,C);hr==H?H=yr:C=yr},Z=g.rows,ne=g.cols!=null?g.cols:g.columns;if(Z!=null&&ne!=null)H=Z,C=ne;else if(Z!=null&&ne==null)H=Z,C=Math.ceil(I/H);else if(Z==null&&ne!=null)C=ne,H=Math.ceil(I/C);else if(C*H>I){var ae=G(),ue=U();(ae-1)*ue>=I?G(ae-1):(ue-1)*ae>=I&&U(ue-1)}else for(;C*H=I?U(be+1):G(_e+1)}var Se=D.w/C,Le=D.h/H;if(g.condense&&(Se=0,Le=0),g.avoidOverlap)for(var Be=0;Be=C&&(un=0,lt++)},$t={},bn=0;bn(un=OY(m,g,Rt[$t],Rt[$t+1],Rt[$t+2],Rt[$t+3])))return _e(Re,un),!0}else if($e.edgeType==="bezier"||$e.edgeType==="multibezier"||$e.edgeType==="self"||$e.edgeType==="compound"){for(var Rt=$e.allpts,$t=0;$t+5<$e.allpts.length;$t+=4)if(LY(m,g,Rt[$t],Rt[$t+1],Rt[$t+2],Rt[$t+3],Rt[$t+4],Rt[$t+5],lt)&&Ct>(un=IY(m,g,Rt[$t],Rt[$t+1],Rt[$t+2],Rt[$t+3],Rt[$t+4],Rt[$t+5])))return _e(Re,un),!0}for(var bn=bn||Ze.source,Cn=Cn||Ze.target,Kn=A.getArrowWidth(ot,ut),kn=[{name:"source",x:$e.arrowStartX,y:$e.arrowStartY,angle:$e.srcArrowAngle},{name:"target",x:$e.arrowEndX,y:$e.arrowEndY,angle:$e.tgtArrowAngle},{name:"mid-source",x:$e.midX,y:$e.midY,angle:$e.midsrcArrowAngle},{name:"mid-target",x:$e.midX,y:$e.midY,angle:$e.midtgtArrowAngle}],$t=0;$t0&&(be(bn),be(Cn))}function Le(Re,Ze,$e){return gp(Re,Ze,$e)}function Be(Re,Ze){var $e=Re._private,ot=Z,ut;Ze?ut=Ze+"-":ut="",Re.boundingBox();var Je=$e.labelBounds[Ze||"main"],Ct=Re.pstyle(ut+"label").value,lt=Re.pstyle("text-events").strValue==="yes";if(!(!lt||!Ct)){var un=Le($e.rscratch,"labelX",Ze),Rt=Le($e.rscratch,"labelY",Ze),$t=Le($e.rscratch,"labelAngle",Ze),bn=Re.pstyle(ut+"text-margin-x").pfValue,Cn=Re.pstyle(ut+"text-margin-y").pfValue,Kn=Je.x1-ot-bn,kn=Je.x2+ot-bn,Wn=Je.y1-ot-Cn,sr=Je.y2+ot-Cn;if($t){var yr=Math.cos($t),hr=Math.sin($t),nr=function(Ba,Li){return Ba=Ba-un,Li=Li-Rt,{x:Ba*yr-Li*hr+un,y:Ba*hr+Li*yr+Rt}},fn=nr(Kn,Wn),vr=nr(Kn,sr),gr=nr(kn,Wn),ni=nr(kn,sr),Ti=[fn.x+bn,fn.y+Cn,gr.x+bn,gr.y+Cn,ni.x+bn,ni.y+Cn,vr.x+bn,vr.y+Cn];if(Gd(m,g,Ti))return _e(Re),!0}else if($5(Je,m,g))return _e(Re),!0}}for(var Ke=I.length-1;Ke>=0;Ke--){var qe=I[Ke];qe.isNode()?be(qe)||Be(qe):Se(qe)||Be(qe)||Be(qe,"source")||Be(qe,"target")}return F},E3.getAllInBox=function(m,g,k,T){var A=this.getCachedZSortedEles().interactive,D=[],I=Math.min(m,k),F=Math.max(m,k),H=Math.min(g,T),C=Math.max(g,T);m=I,k=F,g=H,T=C;for(var G=zd({x1:m,y1:g,x2:k,y2:T}),U=0;U0?Math.max(is-Uo,0):Math.min(is+Uo,0)},Ct=Je(ot,Ze),lt=Je(ut,$e),un=!1;Se===C?be=Math.abs(Ct)>Math.abs(lt)?A:T:Se===H||Se===F?(be=T,un=!0):(Se===D||Se===I)&&(be=A,un=!0);var Rt=be===T,$t=Rt?lt:Ct,bn=Rt?ut:ot,Cn=WP(bn),Kn=!1;!(un&&(Be||qe))&&(Se===F&&bn<0||Se===H&&bn>0||Se===D&&bn>0||Se===I&&bn<0)&&(Cn*=-1,$t=Cn*Math.abs($t),Kn=!0);var kn;if(Be){var Wn=Ke<0?1+Ke:Ke;kn=Wn*$t}else{var sr=Ke<0?$t:0;kn=sr+Ke*Cn}var yr=function(is){return Math.abs(is)=Math.abs($t)},hr=yr(kn),nr=yr(Math.abs($t)-Math.abs(kn)),fn=hr||nr;if(fn&&!Kn)if(Rt){var vr=Math.abs(bn)<=Z/2,gr=Math.abs(ot)<=ne/2;if(vr){var ni=(G.x1+G.x2)/2,Ti=G.y1,ia=G.y2;k.segpts=[ni,Ti,ni,ia]}else if(gr){var Ba=(G.y1+G.y2)/2,Li=G.x1,wi=G.x2;k.segpts=[Li,Ba,wi,Ba]}else k.segpts=[G.x1,G.y2]}else{var Ts=Math.abs(bn)<=U/2,Yi=Math.abs(ut)<=ae/2;if(Ts){var Di=(G.y1+G.y2)/2,es=G.x1,eo=G.x2;k.segpts=[es,Di,eo,Di]}else if(Yi){var sa=(G.x1+G.x2)/2,Ks=G.y1,Ar=G.y2;k.segpts=[sa,Ks,sa,Ar]}else k.segpts=[G.x2,G.y1]}else if(Rt){var We=G.y1+kn+(_e?Z/2*Cn:0),On=G.x1,Ir=G.x2;k.segpts=[On,We,Ir,We]}else{var ar=G.x1+kn+(_e?U/2*Cn:0),or=G.y1,qa=G.y2;k.segpts=[ar,or,ar,qa]}},hd.tryToCorrectInvalidPoints=function(m,g){var k=m._private.rscratch;if(k.edgeType==="bezier"){var T=g.srcPos,A=g.tgtPos,D=g.srcW,I=g.srcH,F=g.tgtW,H=g.tgtH,C=g.srcShape,G=g.tgtShape,U=!te(k.startX)||!te(k.startY),Z=!te(k.arrowStartX)||!te(k.arrowStartY),ne=!te(k.endX)||!te(k.endY),ae=!te(k.arrowEndX)||!te(k.arrowEndY),ue=3,_e=this.getArrowWidth(m.pstyle("width").pfValue,m.pstyle("arrow-scale").value)*this.arrowShapeWidth,be=ue*_e,Se=v3({x:k.ctrlpts[0],y:k.ctrlpts[1]},{x:k.startX,y:k.startY}),Le=Selt.poolIndex()){var un=Ct;Ct=lt,lt=un}var Rt=$e.srcPos=Ct.position(),$t=$e.tgtPos=lt.position(),bn=$e.srcW=Ct.outerWidth(),Cn=$e.srcH=Ct.outerHeight(),Kn=$e.tgtW=lt.outerWidth(),kn=$e.tgtH=lt.outerHeight(),Wn=$e.srcShape=k.nodeShapes[g.getNodeShape(Ct)],sr=$e.tgtShape=k.nodeShapes[g.getNodeShape(lt)];$e.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var yr=0;yr<$e.eles.length;yr++){var hr=$e.eles[yr],nr=hr[0]._private.rscratch,fn=hr.pstyle("curve-style").value,vr=fn==="unbundled-bezier"||fn==="segments"||fn==="taxi",gr=!Ct.same(hr.source());if(!$e.calculatedIntersection&&Ct!==lt&&($e.hasBezier||$e.hasUnbundled)){$e.calculatedIntersection=!0;var ni=Wn.intersectLine(Rt.x,Rt.y,bn,Cn,$t.x,$t.y,0),Ti=$e.srcIntn=ni,ia=sr.intersectLine($t.x,$t.y,Kn,kn,Rt.x,Rt.y,0),Ba=$e.tgtIntn=ia,Li=$e.intersectionPts={x1:ni[0],x2:ia[0],y1:ni[1],y2:ia[1]},wi=$e.posPts={x1:Rt.x,x2:$t.x,y1:Rt.y,y2:$t.y},Ts=ia[1]-ni[1],Yi=ia[0]-ni[0],Di=Math.sqrt(Yi*Yi+Ts*Ts),es=$e.vector={x:Yi,y:Ts},eo=$e.vectorNorm={x:es.x/Di,y:es.y/Di},sa={x:-eo.y,y:eo.x};$e.nodesOverlap=!te(Di)||sr.checkPoint(ni[0],ni[1],0,Kn,kn,$t.x,$t.y)||Wn.checkPoint(ia[0],ia[1],0,bn,Cn,Rt.x,Rt.y),$e.vectorNormInverse=sa,ot={nodesOverlap:$e.nodesOverlap,dirCounts:$e.dirCounts,calculatedIntersection:!0,hasBezier:$e.hasBezier,hasUnbundled:$e.hasUnbundled,eles:$e.eles,srcPos:$t,tgtPos:Rt,srcW:Kn,srcH:kn,tgtW:bn,tgtH:Cn,srcIntn:Ba,tgtIntn:Ti,srcShape:sr,tgtShape:Wn,posPts:{x1:wi.x2,y1:wi.y2,x2:wi.x1,y2:wi.y1},intersectionPts:{x1:Li.x2,y1:Li.y2,x2:Li.x1,y2:Li.y1},vector:{x:-es.x,y:-es.y},vectorNorm:{x:-eo.x,y:-eo.y},vectorNormInverse:{x:-sa.x,y:-sa.y}}}var Ks=gr?ot:$e;nr.nodesOverlap=Ks.nodesOverlap,nr.srcIntn=Ks.srcIntn,nr.tgtIntn=Ks.tgtIntn,A&&(Ct.isParent()||Ct.isChild()||lt.isParent()||lt.isChild())&&(Ct.parents().anySame(lt)||lt.parents().anySame(Ct)||Ct.same(lt)&&Ct.isParent())?g.findCompoundLoopPoints(hr,Ks,yr,vr):Ct===lt?g.findLoopPoints(hr,Ks,yr,vr):fn==="segments"?g.findSegmentsPoints(hr,Ks):fn==="taxi"?g.findTaxiPoints(hr,Ks):fn==="straight"||!vr&&$e.eles.length%2===1&&yr===Math.floor($e.eles.length/2)?g.findStraightEdgePoints(hr):g.findBezierPoints(hr,Ks,yr,vr,gr),g.findEndpoints(hr),g.tryToCorrectInvalidPoints(hr,Ks),g.checkForInvalidEdgeWarning(hr),g.storeAllpts(hr),g.storeEdgeProjections(hr),g.calculateArrowAngles(hr),g.recalculateEdgeLabelProjections(hr),g.calculateLabelAngles(hr)}},Ke=0;Ke0){var vr=D,gr=w3(vr,F5(k)),ni=w3(vr,F5(fn)),Ti=gr;if(ni2){var ia=w3(vr,{x:fn[2],y:fn[3]});ia0){var On=I,Ir=w3(On,F5(k)),ar=w3(On,F5(We)),or=Ir;if(ar2){var qa=w3(On,{x:We[2],y:We[3]});qa=ae||Re){_e={cp:Be,segment:qe};break}}if(_e)break}var Ze=_e.cp,$e=_e.segment,ot=(ae-be)/$e.length,ut=$e.t1-$e.t0,Je=ne?$e.t0+ut*ot:$e.t1-ut*ot;Je=px(0,Je,1),g=j5(Ze.p0,Ze.p1,Ze.p2,Je),Z=RR(Ze.p0,Ze.p1,Ze.p2,Je);break}case"straight":case"segments":case"haystack":{for(var Ct=0,lt,un,Rt,$t,bn=T.allpts.length,Cn=0;Cn+3=ae));Cn+=2);var Kn=ae-un,kn=Kn/lt;kn=px(0,kn,1),g=xY(Rt,$t,kn),Z=BR(Rt,$t);break}}I("labelX",U,g.x),I("labelY",U,g.y),I("labelAutoAngle",U,Z)}};C("source"),C("target"),this.applyLabelDimensions(m)}},wp.applyLabelDimensions=function(m){this.applyPrefixedLabelDimensions(m),m.isEdge()&&(this.applyPrefixedLabelDimensions(m,"source"),this.applyPrefixedLabelDimensions(m,"target"))},wp.applyPrefixedLabelDimensions=function(m,g){var k=m._private,T=this.getLabelText(m,g),A=this.calculateLabelDimensions(m,T),D=m.pstyle("line-height").pfValue,I=m.pstyle("text-wrap").strValue,F=gp(k.rscratch,"labelWrapCachedLines",g)||[],H=I!=="wrap"?1:Math.max(F.length,1),C=A.height/H,G=C*D,U=A.width,Z=A.height+(H-1)*(D-1)*C;um(k.rstyle,"labelWidth",g,U),um(k.rscratch,"labelWidth",g,U),um(k.rstyle,"labelHeight",g,Z),um(k.rscratch,"labelHeight",g,Z),um(k.rscratch,"labelLineHeight",g,G)},wp.getLabelText=function(m,g){var k=m._private,T=g?g+"-":"",A=m.pstyle(T+"label").strValue,D=m.pstyle("text-transform").value,I=function(Kn,kn){return kn?(um(k.rscratch,Kn,g,kn),kn):gp(k.rscratch,Kn,g)};if(!A)return"";D=="none"||(D=="uppercase"?A=A.toUpperCase():D=="lowercase"&&(A=A.toLowerCase()));var F=m.pstyle("text-wrap").value;if(F==="wrap"){var H=I("labelKey");if(H!=null&&I("labelWrapKey")===H)return I("labelWrapCachedText");for(var C="​",G=A.split(` +`),U=m.pstyle("text-max-width").pfValue,Z=m.pstyle("text-overflow-wrap").value,ne=Z==="anywhere",ae=[],ue=/[\s\u200b]+/,_e=ne?"":" ",be=0;beU){for(var qe=Se.split(ue),Re="",Ze=0;ZeCt)break;lt+=A[$t],$t===A.length-1&&(Rt=!0)}return Rt||(lt+=un),lt}return A},wp.getLabelJustification=function(m){var g=m.pstyle("text-justification").strValue,k=m.pstyle("text-halign").strValue;if(g==="auto")if(m.isNode())switch(k){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return g},wp.calculateLabelDimensions=function(m,g){var k=this,T=od(g,m._private.labelDimsKey),A=k.labelDimCache||(k.labelDimCache=[]),D=A[T];if(D!=null)return D;var I=0,F=m.pstyle("font-style").strValue,H=m.pstyle("font-size").pfValue,C=m.pstyle("font-family").strValue,G=m.pstyle("font-weight").strValue,U=this.labelCalcCanvas,Z=this.labelCalcCanvasContext;if(!U){U=this.labelCalcCanvas=document.createElement("canvas"),Z=this.labelCalcCanvasContext=U.getContext("2d");var ne=U.style;ne.position="absolute",ne.left="-9999px",ne.top="-9999px",ne.zIndex="-1",ne.visibility="hidden",ne.pointerEvents="none"}Z.font="".concat(F," ").concat(G," ").concat(H,"px ").concat(C);for(var ae=0,ue=0,_e=g.split(` +`),be=0;be<_e.length;be++){var Se=_e[be],Le=Z.measureText(Se),Be=Math.ceil(Le.width),Ke=H;ae=Math.max(Be,ae),ue+=Ke}return ae+=I,ue+=I,A[T]={width:ae,height:ue}},wp.calculateLabelAngle=function(m,g){var k=m._private,T=k.rscratch,A=m.isEdge(),D=g?g+"-":"",I=m.pstyle(D+"text-rotation"),F=I.strValue;return F==="none"?0:A&&F==="autorotate"?T.labelAutoAngle:F==="autorotate"?0:I.pfValue},wp.calculateLabelAngles=function(m){var g=this,k=m.isEdge(),T=m._private,A=T.rscratch;A.labelAngle=g.calculateLabelAngle(m),k&&(A.sourceLabelAngle=g.calculateLabelAngle(m,"source"),A.targetLabelAngle=g.calculateLabelAngle(m,"target"))};var ch={},YL=28,FR=!1;ch.getNodeShape=function(m){var g=this,k=m.pstyle("shape").value;if(k==="cutrectangle"&&(m.width()1&&arguments[1]!==void 0?arguments[1]:!0;if(g.merge(I),F)for(var H=0;H=m.desktopTapThreshold2}var ov=T(We);Yf&&(m.hoverData.tapholdCancelled=!0);var mm=function(){var $2=m.hoverData.dragDelta=m.hoverData.dragDelta||[];$2.length===0?($2.push(lo[0]),$2.push(lo[1])):($2[0]+=lo[0],$2[1]+=lo[1])};Ir=!0,k(uo,["mousemove","vmousemove","tapdrag"],We,{x:qr[0],y:qr[1]});var l6=function(){m.data.bgActivePosistion=void 0,m.hoverData.selecting||ar.emit({originalEvent:We,type:"boxstart",position:{x:qr[0],y:qr[1]}}),qc[4]=1,m.hoverData.selecting=!0,m.redrawHint("select",!0),m.redraw()};if(m.hoverData.which===3){if(Yf){var S3={originalEvent:We,type:"cxtdrag",position:{x:qr[0],y:qr[1]}};Ra?Ra.emit(S3):ar.emit(S3),m.hoverData.cxtDragged=!0,(!m.hoverData.cxtOver||uo!==m.hoverData.cxtOver)&&(m.hoverData.cxtOver&&m.hoverData.cxtOver.emit({originalEvent:We,type:"cxtdragout",position:{x:qr[0],y:qr[1]}}),m.hoverData.cxtOver=uo,uo&&uo.emit({originalEvent:We,type:"cxtdragover",position:{x:qr[0],y:qr[1]}}))}}else if(m.hoverData.dragging){if(Ir=!0,ar.panningEnabled()&&ar.userPanningEnabled()){var h6;if(m.hoverData.justStartedPan){var gT=m.hoverData.mdownPos;h6={x:(qr[0]-gT[0])*or,y:(qr[1]-gT[1])*or},m.hoverData.justStartedPan=!1}else h6={x:lo[0]*or,y:lo[1]*or};ar.panBy(h6),ar.emit("dragpan"),m.hoverData.dragged=!0}qr=m.projectIntoViewport(We.clientX,We.clientY)}else if(qc[4]==1&&(Ra==null||Ra.pannable())){if(Yf){if(!m.hoverData.dragging&&ar.boxSelectionEnabled()&&(ov||!ar.panningEnabled()||!ar.userPanningEnabled()))l6();else if(!m.hoverData.selecting&&ar.panningEnabled()&&ar.userPanningEnabled()){var A3=A(Ra,m.hoverData.downs);A3&&(m.hoverData.dragging=!0,m.hoverData.justStartedPan=!0,qc[4]=0,m.data.bgActivePosistion=F5(is),m.redrawHint("select",!0),m.redraw())}Ra&&Ra.pannable()&&Ra.active()&&Ra.unactivate()}}else{if(Ra&&Ra.pannable()&&Ra.active()&&Ra.unactivate(),(!Ra||!Ra.grabbed())&&uo!=Lc&&(Lc&&k(Lc,["mouseout","tapdragout"],We,{x:qr[0],y:qr[1]}),uo&&k(uo,["mouseover","tapdragover"],We,{x:qr[0],y:qr[1]}),m.hoverData.last=uo),Ra)if(Yf){if(ar.boxSelectionEnabled()&&ov)Ra&&Ra.grabbed()&&(ue(Sl),Ra.emit("freeon"),Sl.emit("free"),m.dragData.didDrag&&(Ra.emit("dragfreeon"),Sl.emit("dragfree"))),l6();else if(Ra&&Ra.grabbed()&&m.nodeIsDraggable(Ra)){var qd=!m.dragData.didDrag;qd&&m.redrawHint("eles",!0),m.dragData.didDrag=!0,m.hoverData.draggingEles||ne(Sl,{inDragLayer:!0});var _1={x:0,y:0};if(te(lo[0])&&te(lo[1])&&(_1.x+=lo[0],_1.y+=lo[1],qd)){var Vd=m.hoverData.dragDelta;Vd&&te(Vd[0])&&te(Vd[1])&&(_1.x+=Vd[0],_1.y+=Vd[1])}m.hoverData.draggingEles=!0,Sl.silentShift(_1).emit("position drag"),m.redrawHint("drag",!0),m.redraw()}}else mm();Ir=!0}if(qc[2]=qr[0],qc[3]=qr[1],Ir)return We.stopPropagation&&We.stopPropagation(),We.preventDefault&&We.preventDefault(),!1}},!1);var $e,ot,ut;m.registerBinding(window,"mouseup",function(We){var On=m.hoverData.capture;if(On){m.hoverData.capture=!1;var Ir=m.cy,ar=m.projectIntoViewport(We.clientX,We.clientY),or=m.selection,qa=m.findNearestElement(ar[0],ar[1],!0,!1),qr=m.dragData.possibleDragElements,is=m.hoverData.down,Uo=T(We);if(m.data.bgActivePosistion&&(m.redrawHint("select",!0),m.redraw()),m.hoverData.tapholdCancelled=!0,m.data.bgActivePosistion=void 0,is&&is.unactivate(),m.hoverData.which===3){var qc={originalEvent:We,type:"cxttapend",position:{x:ar[0],y:ar[1]}};if(is?is.emit(qc):Ir.emit(qc),!m.hoverData.cxtDragged){var uo={originalEvent:We,type:"cxttap",position:{x:ar[0],y:ar[1]}};is?is.emit(uo):Ir.emit(uo)}m.hoverData.cxtDragged=!1,m.hoverData.which=null}else if(m.hoverData.which===1){if(k(qa,["mouseup","tapend","vmouseup"],We,{x:ar[0],y:ar[1]}),!m.dragData.didDrag&&!m.hoverData.dragged&&!m.hoverData.selecting&&!m.hoverData.isOverThresholdDrag&&(k(is,["click","tap","vclick"],We,{x:ar[0],y:ar[1]}),ot=!1,We.timeStamp-ut<=Ir.multiClickDebounceTime()?($e&&clearTimeout($e),ot=!0,ut=null,k(is,["dblclick","dbltap","vdblclick"],We,{x:ar[0],y:ar[1]})):($e=setTimeout(function(){ot||k(is,["oneclick","onetap","voneclick"],We,{x:ar[0],y:ar[1]})},Ir.multiClickDebounceTime()),ut=We.timeStamp)),is==null&&!m.dragData.didDrag&&!m.hoverData.selecting&&!m.hoverData.dragged&&!T(We)&&(Ir.$(g).unselect(["tapunselect"]),qr.length>0&&m.redrawHint("eles",!0),m.dragData.possibleDragElements=qr=Ir.collection()),qa==is&&!m.dragData.didDrag&&!m.hoverData.selecting&&qa!=null&&qa._private.selectable&&(m.hoverData.dragging||(Ir.selectionType()==="additive"||Uo?qa.selected()?qa.unselect(["tapunselect"]):qa.select(["tapselect"]):Uo||(Ir.$(g).unmerge(qa).unselect(["tapunselect"]),qa.select(["tapselect"]))),m.redrawHint("eles",!0)),m.hoverData.selecting){var Lc=Ir.collection(m.getAllInBox(or[0],or[1],or[2],or[3]));m.redrawHint("select",!0),Lc.length>0&&m.redrawHint("eles",!0),Ir.emit({type:"boxend",originalEvent:We,position:{x:ar[0],y:ar[1]}});var Ra=function(Yf){return Yf.selectable()&&!Yf.selected()};Ir.selectionType()==="additive"||Uo||Ir.$(g).unmerge(Lc).unselect(),Lc.emit("box").stdFilter(Ra).select().emit("boxselect"),m.redraw()}if(m.hoverData.dragging&&(m.hoverData.dragging=!1,m.redrawHint("select",!0),m.redrawHint("eles",!0),m.redraw()),!or[4]){m.redrawHint("drag",!0),m.redrawHint("eles",!0);var lo=is&&is.grabbed();ue(qr),lo&&(is.emit("freeon"),qr.emit("free"),m.dragData.didDrag&&(is.emit("dragfreeon"),qr.emit("dragfree")))}}or[4]=0,m.hoverData.down=null,m.hoverData.cxtStarted=!1,m.hoverData.draggingEles=!1,m.hoverData.selecting=!1,m.hoverData.isOverThresholdDrag=!1,m.dragData.didDrag=!1,m.hoverData.dragged=!1,m.hoverData.dragDelta=[],m.hoverData.mdownPos=null,m.hoverData.mdownGPos=null}},!1);var Je=function(We){if(!m.scrollingPage){var On=m.cy,Ir=On.zoom(),ar=On.pan(),or=m.projectIntoViewport(We.clientX,We.clientY),qa=[or[0]*Ir+ar.x,or[1]*Ir+ar.y];if(m.hoverData.draggingEles||m.hoverData.dragging||m.hoverData.cxtStarted||Re()){We.preventDefault();return}if(On.panningEnabled()&&On.userPanningEnabled()&&On.zoomingEnabled()&&On.userZoomingEnabled()){We.preventDefault(),m.data.wheelZooming=!0,clearTimeout(m.data.wheelTimeout),m.data.wheelTimeout=setTimeout(function(){m.data.wheelZooming=!1,m.redrawHint("eles",!0),m.redraw()},150);var qr;We.deltaY!=null?qr=We.deltaY/-250:We.wheelDeltaY!=null?qr=We.wheelDeltaY/1e3:qr=We.wheelDelta/1e3,qr=qr*m.wheelSensitivity;var is=We.deltaMode===1;is&&(qr*=33);var Uo=On.zoom()*Math.pow(10,qr);We.type==="gesturechange"&&(Uo=m.gestureStartZoom*We.scale),On.zoom({level:Uo,renderedPosition:{x:qa[0],y:qa[1]}}),On.emit(We.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};m.registerBinding(m.container,"wheel",Je,!0),m.registerBinding(window,"scroll",function(We){m.scrollingPage=!0,clearTimeout(m.scrollingPageTimeout),m.scrollingPageTimeout=setTimeout(function(){m.scrollingPage=!1},250)},!0),m.registerBinding(m.container,"gesturestart",function(We){m.gestureStartZoom=m.cy.zoom(),m.hasTouchStarted||We.preventDefault()},!0),m.registerBinding(m.container,"gesturechange",function(Ar){m.hasTouchStarted||Je(Ar)},!0),m.registerBinding(m.container,"mouseout",function(We){var On=m.projectIntoViewport(We.clientX,We.clientY);m.cy.emit({originalEvent:We,type:"mouseout",position:{x:On[0],y:On[1]}})},!1),m.registerBinding(m.container,"mouseover",function(We){var On=m.projectIntoViewport(We.clientX,We.clientY);m.cy.emit({originalEvent:We,type:"mouseover",position:{x:On[0],y:On[1]}})},!1);var Ct,lt,un,Rt,$t,bn,Cn,Kn,kn,Wn,sr,yr,hr,nr=function(We,On,Ir,ar){return Math.sqrt((Ir-We)*(Ir-We)+(ar-On)*(ar-On))},fn=function(We,On,Ir,ar){return(Ir-We)*(Ir-We)+(ar-On)*(ar-On)},vr;m.registerBinding(m.container,"touchstart",vr=function(We){if(m.hasTouchStarted=!0,!!Ze(We)){be(),m.touchData.capture=!0,m.data.bgActivePosistion=void 0;var On=m.cy,Ir=m.touchData.now,ar=m.touchData.earlier;if(We.touches[0]){var or=m.projectIntoViewport(We.touches[0].clientX,We.touches[0].clientY);Ir[0]=or[0],Ir[1]=or[1]}if(We.touches[1]){var or=m.projectIntoViewport(We.touches[1].clientX,We.touches[1].clientY);Ir[2]=or[0],Ir[3]=or[1]}if(We.touches[2]){var or=m.projectIntoViewport(We.touches[2].clientX,We.touches[2].clientY);Ir[4]=or[0],Ir[5]=or[1]}if(We.touches[1]){m.touchData.singleTouchMoved=!0,ue(m.dragData.touchDragEles);var qa=m.findContainerClientCoords();kn=qa[0],Wn=qa[1],sr=qa[2],yr=qa[3],Ct=We.touches[0].clientX-kn,lt=We.touches[0].clientY-Wn,un=We.touches[1].clientX-kn,Rt=We.touches[1].clientY-Wn,hr=0<=Ct&&Ct<=sr&&0<=un&&un<=sr&&0<=lt&<<=yr&&0<=Rt&&Rt<=yr;var qr=On.pan(),is=On.zoom();$t=nr(Ct,lt,un,Rt),bn=fn(Ct,lt,un,Rt),Cn=[(Ct+un)/2,(lt+Rt)/2],Kn=[(Cn[0]-qr.x)/is,(Cn[1]-qr.y)/is];var Uo=200,qc=Uo*Uo;if(bn=1){for(var yp=m.touchData.startPosition=[],Xf=0;Xf=m.touchTapThreshold2}if(On&&m.touchData.cxt){We.preventDefault();var yp=We.touches[0].clientX-kn,Xf=We.touches[0].clientY-Wn,gg=We.touches[1].clientX-kn,fd=We.touches[1].clientY-Wn,ov=fn(yp,Xf,gg,fd),mm=ov/bn,l6=150,S3=l6*l6,h6=1.5,gT=h6*h6;if(mm>=gT||ov>=S3){m.touchData.cxt=!1,m.data.bgActivePosistion=void 0,m.redrawHint("select",!0);var A3={originalEvent:We,type:"cxttapend",position:{x:or[0],y:or[1]}};m.touchData.start?(m.touchData.start.unactivate().emit(A3),m.touchData.start=null):ar.emit(A3)}}if(On&&m.touchData.cxt){var A3={originalEvent:We,type:"cxtdrag",position:{x:or[0],y:or[1]}};m.data.bgActivePosistion=void 0,m.redrawHint("select",!0),m.touchData.start?m.touchData.start.emit(A3):ar.emit(A3),m.touchData.start&&(m.touchData.start._private.grabbed=!1),m.touchData.cxtDragged=!0;var qd=m.findNearestElement(or[0],or[1],!0,!0);(!m.touchData.cxtOver||qd!==m.touchData.cxtOver)&&(m.touchData.cxtOver&&m.touchData.cxtOver.emit({originalEvent:We,type:"cxtdragout",position:{x:or[0],y:or[1]}}),m.touchData.cxtOver=qd,qd&&qd.emit({originalEvent:We,type:"cxtdragover",position:{x:or[0],y:or[1]}}))}else if(On&&We.touches[2]&&ar.boxSelectionEnabled())We.preventDefault(),m.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,m.touchData.selecting||ar.emit({originalEvent:We,type:"boxstart",position:{x:or[0],y:or[1]}}),m.touchData.selecting=!0,m.touchData.didSelect=!0,Ir[4]=1,!Ir||Ir.length===0||Ir[0]===void 0?(Ir[0]=(or[0]+or[2]+or[4])/3,Ir[1]=(or[1]+or[3]+or[5])/3,Ir[2]=(or[0]+or[2]+or[4])/3+1,Ir[3]=(or[1]+or[3]+or[5])/3+1):(Ir[2]=(or[0]+or[2]+or[4])/3,Ir[3]=(or[1]+or[3]+or[5])/3),m.redrawHint("select",!0),m.redraw();else if(On&&We.touches[1]&&!m.touchData.didSelect&&ar.zoomingEnabled()&&ar.panningEnabled()&&ar.userZoomingEnabled()&&ar.userPanningEnabled()){We.preventDefault(),m.data.bgActivePosistion=void 0,m.redrawHint("select",!0);var _1=m.dragData.touchDragEles;if(_1){m.redrawHint("drag",!0);for(var Vd=0;Vd<_1.length;Vd++){var pT=_1[Vd]._private;pT.grabbed=!1,pT.rscratch.inDragLayer=!1}}var $2=m.touchData.start,yp=We.touches[0].clientX-kn,Xf=We.touches[0].clientY-Wn,gg=We.touches[1].clientX-kn,fd=We.touches[1].clientY-Wn,QR=nr(yp,Xf,gg,fd),Dee=QR/$t;if(hr){var Iee=yp-Ct,Oee=Xf-lt,Nee=gg-un,Pee=fd-Rt,Bee=(Iee+Nee)/2,Ree=(Oee+Pee)/2,Gx=ar.zoom(),iM=Gx*Dee,bT=ar.pan(),ZR=Kn[0]*Gx+bT.x,JR=Kn[1]*Gx+bT.y,Fee={x:-iM/Gx*(ZR-bT.x-Bee)+ZR,y:-iM/Gx*(JR-bT.y-Ree)+JR};if($2&&$2.active()){var _1=m.dragData.touchDragEles;ue(_1),m.redrawHint("drag",!0),m.redrawHint("eles",!0),$2.unactivate().emit("freeon"),_1.emit("free"),m.dragData.didDrag&&($2.emit("dragfreeon"),_1.emit("dragfree"))}ar.viewport({zoom:iM,pan:Fee,cancelOnFailedZoom:!0}),ar.emit("pinchzoom"),$t=QR,Ct=yp,lt=Xf,un=gg,Rt=fd,m.pinching=!0}if(We.touches[0]){var is=m.projectIntoViewport(We.touches[0].clientX,We.touches[0].clientY);or[0]=is[0],or[1]=is[1]}if(We.touches[1]){var is=m.projectIntoViewport(We.touches[1].clientX,We.touches[1].clientY);or[2]=is[0],or[3]=is[1]}if(We.touches[2]){var is=m.projectIntoViewport(We.touches[2].clientX,We.touches[2].clientY);or[4]=is[0],or[5]=is[1]}}else if(We.touches[0]&&!m.touchData.didSelect){var kp=m.touchData.start,sM=m.touchData.last,qd;if(!m.hoverData.draggingEles&&!m.swipePanning&&(qd=m.findNearestElement(or[0],or[1],!0,!0)),On&&kp!=null&&We.preventDefault(),On&&kp!=null&&m.nodeIsDraggable(kp))if(qc){var _1=m.dragData.touchDragEles,eF=!m.dragData.didDrag;eF&&ne(_1,{inDragLayer:!0}),m.dragData.didDrag=!0;var qx={x:0,y:0};if(te(uo[0])&&te(uo[1])&&(qx.x+=uo[0],qx.y+=uo[1],eF)){m.redrawHint("eles",!0);var xp=m.touchData.dragDelta;xp&&te(xp[0])&&te(xp[1])&&(qx.x+=xp[0],qx.y+=xp[1])}m.hoverData.draggingEles=!0,_1.silentShift(qx).emit("position drag"),m.redrawHint("drag",!0),m.touchData.startPosition[0]==qa[0]&&m.touchData.startPosition[1]==qa[1]&&m.redrawHint("eles",!0),m.redraw()}else{var xp=m.touchData.dragDelta=m.touchData.dragDelta||[];xp.length===0?(xp.push(uo[0]),xp.push(uo[1])):(xp[0]+=uo[0],xp[1]+=uo[1])}if(k(kp||qd,["touchmove","tapdrag","vmousemove"],We,{x:or[0],y:or[1]}),(!kp||!kp.grabbed())&&qd!=sM&&(sM&&sM.emit({originalEvent:We,type:"tapdragout",position:{x:or[0],y:or[1]}}),qd&&qd.emit({originalEvent:We,type:"tapdragover",position:{x:or[0],y:or[1]}})),m.touchData.last=qd,On)for(var Vd=0;Vd0&&!m.hoverData.draggingEles&&!m.swipePanning&&m.data.bgActivePosistion!=null&&(m.data.bgActivePosistion=void 0,m.redrawHint("select",!0),m.redraw())}},!1);var ni;m.registerBinding(window,"touchcancel",ni=function(We){var On=m.touchData.start;m.touchData.capture=!1,On&&On.unactivate()});var Ti,ia,Ba,Li;if(m.registerBinding(window,"touchend",Ti=function(We){var On=m.touchData.start,Ir=m.touchData.capture;if(Ir)We.touches.length===0&&(m.touchData.capture=!1),We.preventDefault();else return;var ar=m.selection;m.swipePanning=!1,m.hoverData.draggingEles=!1;var or=m.cy,qa=or.zoom(),qr=m.touchData.now,is=m.touchData.earlier;if(We.touches[0]){var Uo=m.projectIntoViewport(We.touches[0].clientX,We.touches[0].clientY);qr[0]=Uo[0],qr[1]=Uo[1]}if(We.touches[1]){var Uo=m.projectIntoViewport(We.touches[1].clientX,We.touches[1].clientY);qr[2]=Uo[0],qr[3]=Uo[1]}if(We.touches[2]){var Uo=m.projectIntoViewport(We.touches[2].clientX,We.touches[2].clientY);qr[4]=Uo[0],qr[5]=Uo[1]}On&&On.unactivate();var qc;if(m.touchData.cxt){if(qc={originalEvent:We,type:"cxttapend",position:{x:qr[0],y:qr[1]}},On?On.emit(qc):or.emit(qc),!m.touchData.cxtDragged){var uo={originalEvent:We,type:"cxttap",position:{x:qr[0],y:qr[1]}};On?On.emit(uo):or.emit(uo)}m.touchData.start&&(m.touchData.start._private.grabbed=!1),m.touchData.cxt=!1,m.touchData.start=null,m.redraw();return}if(!We.touches[2]&&or.boxSelectionEnabled()&&m.touchData.selecting){m.touchData.selecting=!1;var Lc=or.collection(m.getAllInBox(ar[0],ar[1],ar[2],ar[3]));ar[0]=void 0,ar[1]=void 0,ar[2]=void 0,ar[3]=void 0,ar[4]=0,m.redrawHint("select",!0),or.emit({type:"boxend",originalEvent:We,position:{x:qr[0],y:qr[1]}});var Ra=function(S3){return S3.selectable()&&!S3.selected()};Lc.emit("box").stdFilter(Ra).select().emit("boxselect"),Lc.nonempty()&&m.redrawHint("eles",!0),m.redraw()}if(On!=null&&On.unactivate(),We.touches[2])m.data.bgActivePosistion=void 0,m.redrawHint("select",!0);else if(!We.touches[1]){if(!We.touches[0]){if(!We.touches[0]){m.data.bgActivePosistion=void 0,m.redrawHint("select",!0);var lo=m.dragData.touchDragEles;if(On!=null){var Sl=On._private.grabbed;ue(lo),m.redrawHint("drag",!0),m.redrawHint("eles",!0),Sl&&(On.emit("freeon"),lo.emit("free"),m.dragData.didDrag&&(On.emit("dragfreeon"),lo.emit("dragfree"))),k(On,["touchend","tapend","vmouseup","tapdragout"],We,{x:qr[0],y:qr[1]}),On.unactivate(),m.touchData.start=null}else{var Yf=m.findNearestElement(qr[0],qr[1],!0,!0);k(Yf,["touchend","tapend","vmouseup","tapdragout"],We,{x:qr[0],y:qr[1]})}var mp=m.touchData.startPosition[0]-qr[0],yp=mp*mp,Xf=m.touchData.startPosition[1]-qr[1],gg=Xf*Xf,fd=yp+gg,ov=fd*qa*qa;m.touchData.singleTouchMoved||(On||or.$(":selected").unselect(["tapunselect"]),k(On,["tap","vclick"],We,{x:qr[0],y:qr[1]}),ia=!1,We.timeStamp-Li<=or.multiClickDebounceTime()?(Ba&&clearTimeout(Ba),ia=!0,Li=null,k(On,["dbltap","vdblclick"],We,{x:qr[0],y:qr[1]})):(Ba=setTimeout(function(){ia||k(On,["onetap","voneclick"],We,{x:qr[0],y:qr[1]})},or.multiClickDebounceTime()),Li=We.timeStamp)),On!=null&&!m.dragData.didDrag&&On._private.selectable&&ov"u"){var wi=[],Ts=function(We){return{clientX:We.clientX,clientY:We.clientY,force:1,identifier:We.pointerId,pageX:We.pageX,pageY:We.pageY,radiusX:We.width/2,radiusY:We.height/2,screenX:We.screenX,screenY:We.screenY,target:We.target}},Yi=function(We){return{event:We,touch:Ts(We)}},Di=function(We){wi.push(Yi(We))},es=function(We){for(var On=0;On0)return kn[0]}return null},ne=Object.keys(U),ae=0;ae0?Z:XP(D,I,g,k,T,A,F)},checkPoint:function(g,k,T,A,D,I,F){var H=wx(A,D),C=2*H;if(tv(g,k,this.points,I,F,A,D-C,[0,-1],T)||tv(g,k,this.points,I,F,A-C,D,[0,-1],T))return!0;var G=A/2+2*T,U=D/2+2*T,Z=[I-G,F-U,I-G,F,I+G,F,I+G,F-U];return!!(Gd(g,k,Z)||m3(g,k,C,C,I+A/2-H,F+D/2-H,T)||m3(g,k,C,C,I-A/2+H,F+D/2-H,T))}}},iv.registerNodeShapes=function(){var m=this.nodeShapes={},g=this;this.generateEllipse(),this.generatePolygon("triangle",ud(3,0)),this.generateRoundPolygon("round-triangle",ud(3,0)),this.generatePolygon("rectangle",ud(4,0)),m.square=m.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var k=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",k),this.generateRoundPolygon("round-diamond",k)}this.generatePolygon("pentagon",ud(5,0)),this.generateRoundPolygon("round-pentagon",ud(5,0)),this.generatePolygon("hexagon",ud(6,0)),this.generateRoundPolygon("round-hexagon",ud(6,0)),this.generatePolygon("heptagon",ud(7,0)),this.generateRoundPolygon("round-heptagon",ud(7,0)),this.generatePolygon("octagon",ud(8,0)),this.generateRoundPolygon("round-octagon",ud(8,0));var T=new Array(20);{var A=TL(5,0),D=TL(5,Math.PI/5),I=.5*(3-Math.sqrt(5));I*=1.57;for(var F=0;F=g.deqFastCost*Be)break}else if(C){if(Se>=g.deqCost*ne||Se>=g.deqAvgCost*Z)break}else if(Le>=g.deqNoDrawCost*QL)break;var Ke=g.deq(T,_e,ue);if(Ke.length>0)for(var qe=0;qe0&&(g.onDeqd(T,ae),!C&&g.shouldRedraw(T,ae,_e,ue)&&D())},F=g.priority||om;A.beforeRender(I,F(T))}}}},tee=function(){function m(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:am;p(this,m),this.idsByKey=new R2,this.keyForId=new R2,this.cachesByLvl=new R2,this.lvls=[],this.getKey=g,this.doesEleInvalidateKey=k}return y(m,[{key:"getIdsFor",value:function(k){k==null&&yc("Can not get id list for null key");var T=this.idsByKey,A=this.idsByKey.get(k);return A||(A=new R5,T.set(k,A)),A}},{key:"addIdForKey",value:function(k,T){k!=null&&this.getIdsFor(k).add(T)}},{key:"deleteIdForKey",value:function(k,T){k!=null&&this.getIdsFor(k).delete(T)}},{key:"getNumberOfIdsForKey",value:function(k){return k==null?0:this.getIdsFor(k).size}},{key:"updateKeyMappingFor",value:function(k){var T=k.id(),A=this.keyForId.get(T),D=this.getKey(k);this.deleteIdForKey(A,T),this.addIdForKey(D,T),this.keyForId.set(T,D)}},{key:"deleteKeyMappingFor",value:function(k){var T=k.id(),A=this.keyForId.get(T);this.deleteIdForKey(A,T),this.keyForId.delete(T)}},{key:"keyHasChangedFor",value:function(k){var T=k.id(),A=this.keyForId.get(T),D=this.getKey(k);return A!==D}},{key:"isInvalid",value:function(k){return this.keyHasChangedFor(k)||this.doesEleInvalidateKey(k)}},{key:"getCachesAt",value:function(k){var T=this.cachesByLvl,A=this.lvls,D=T.get(k);return D||(D=new R2,T.set(k,D),A.push(k)),D}},{key:"getCache",value:function(k,T){return this.getCachesAt(T).get(k)}},{key:"get",value:function(k,T){var A=this.getKey(k),D=this.getCache(A,T);return D!=null&&this.updateKeyMappingFor(k),D}},{key:"getForCachedKey",value:function(k,T){var A=this.keyForId.get(k.id()),D=this.getCache(A,T);return D}},{key:"hasCache",value:function(k,T){return this.getCachesAt(T).has(k)}},{key:"has",value:function(k,T){var A=this.getKey(k);return this.hasCache(A,T)}},{key:"setCache",value:function(k,T,A){A.key=k,this.getCachesAt(T).set(k,A)}},{key:"set",value:function(k,T,A){var D=this.getKey(k);this.setCache(D,T,A),this.updateKeyMappingFor(k)}},{key:"deleteCache",value:function(k,T){this.getCachesAt(T).delete(k)}},{key:"delete",value:function(k,T){var A=this.getKey(k);this.deleteCache(A,T)}},{key:"invalidateKey",value:function(k){var T=this;this.lvls.forEach(function(A){return T.deleteCache(k,A)})}},{key:"invalidate",value:function(k){var T=k.id(),A=this.keyForId.get(T);this.deleteKeyMappingFor(k);var D=this.doesEleInvalidateKey(k);return D&&this.invalidateKey(A),D||this.getNumberOfIdsForKey(A)===0}}]),m}(),cT=25,uT=50,i6=-4,ZL=3,JL=7.99,nee=8,ree=1024,iee=1024,HR=1024,see=.2,aee=.8,oee=10,cee=.15,uee=.1,lee=.9,hee=.9,fee=100,dee=1,s6={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},gee=Vf({getKey:null,doesEleInvalidateKey:am,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:cd,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Fx=function(g,k){var T=this;T.renderer=g,T.onDequeues=[];var A=gee(k);Oe(T,A),T.lookup=new tee(A.getKey,A.doesEleInvalidateKey),T.setupDequeueing()},Oh=Fx.prototype;Oh.reasons=s6,Oh.getTextureQueue=function(m){var g=this;return g.eleImgCaches=g.eleImgCaches||{},g.eleImgCaches[m]=g.eleImgCaches[m]||[]},Oh.getRetiredTextureQueue=function(m){var g=this,k=g.eleImgCaches.retired=g.eleImgCaches.retired||{},T=k[m]=k[m]||[];return T},Oh.getElementQueue=function(){var m=this,g=m.eleCacheQueue=m.eleCacheQueue||new gx(function(k,T){return T.reqs-k.reqs});return g},Oh.getElementKeyToQueue=function(){var m=this,g=m.eleKeyToCacheQueue=m.eleKeyToCacheQueue||{};return g},Oh.getElement=function(m,g,k,T,A){var D=this,I=this.renderer,F=I.cy.zoom(),H=this.lookup;if(!g||g.w===0||g.h===0||isNaN(g.w)||isNaN(g.h)||!m.visible()||m.removed()||!D.allowEdgeTxrCaching&&m.isEdge()||!D.allowParentTxrCaching&&m.isParent())return null;if(T==null&&(T=Math.ceil(yL(F*k))),T=JL||T>ZL)return null;var C=Math.pow(2,T),G=g.h*C,U=g.w*C,Z=I.eleTextBiggerThanMin(m,C);if(!this.isVisible(m,Z))return null;var ne=H.get(m,T);if(ne&&ne.invalidated&&(ne.invalidated=!1,ne.texture.invalidatedWidth-=ne.width),ne)return ne;var ae;if(G<=cT?ae=cT:G<=uT?ae=uT:ae=Math.ceil(G/uT)*uT,G>HR||U>iee)return null;var ue=D.getTextureQueue(ae),_e=ue[ue.length-2],be=function(){return D.recycleTexture(ae,U)||D.addTexture(ae,U)};_e||(_e=ue[ue.length-1]),_e||(_e=be()),_e.width-_e.usedWidthT;ut--)$e=D.getElement(m,g,k,ut,s6.downscale);ot()}else return D.queueElement(m,qe.level-1),qe;else{var Je;if(!Le&&!Be&&!Ke)for(var Ct=T-1;Ct>=i6;Ct--){var lt=H.get(m,Ct);if(lt){Je=lt;break}}if(Se(Je))return D.queueElement(m,T),Je;_e.context.translate(_e.usedWidth,0),_e.context.scale(C,C),this.drawElement(_e.context,m,g,Z,!1),_e.context.scale(1/C,1/C),_e.context.translate(-_e.usedWidth,0)}return ne={x:_e.usedWidth,texture:_e,level:T,scale:C,width:U,height:G,scaledLabelShown:Z},_e.usedWidth+=Math.ceil(U+nee),_e.eleCaches.push(ne),H.set(m,T,ne),D.checkTextureFullness(_e),ne},Oh.invalidateElements=function(m){for(var g=0;g=see*m.width&&this.retireTexture(m)},Oh.checkTextureFullness=function(m){var g=this,k=g.getTextureQueue(m.height);m.usedWidth/m.width>aee&&m.fullnessChecks>=oee?cm(k,m):m.fullnessChecks++},Oh.retireTexture=function(m){var g=this,k=m.height,T=g.getTextureQueue(k),A=this.lookup;cm(T,m),m.retired=!0;for(var D=m.eleCaches,I=0;I=g)return I.retired=!1,I.usedWidth=0,I.invalidatedWidth=0,I.fullnessChecks=0,wL(I.eleCaches),I.context.setTransform(1,0,0,1,0,0),I.context.clearRect(0,0,I.width,I.height),cm(A,I),T.push(I),I}},Oh.queueElement=function(m,g){var k=this,T=k.getElementQueue(),A=k.getElementKeyToQueue(),D=this.getKey(m),I=A[D];if(I)I.level=Math.max(I.level,g),I.eles.merge(m),I.reqs++,T.updateItem(I);else{var F={eles:m.spawn().merge(m),level:g,reqs:1,key:D};T.push(F),A[D]=F}},Oh.dequeue=function(m){for(var g=this,k=g.getElementQueue(),T=g.getElementKeyToQueue(),A=[],D=g.lookup,I=0;I0;I++){var F=k.pop(),H=F.key,C=F.eles[0],G=D.hasCache(C,F.level);if(T[H]=null,G)continue;A.push(F);var U=g.getBoundingBox(C);g.getElement(C,U,m,F.level,s6.dequeue)}return A},Oh.removeFromQueue=function(m){var g=this,k=g.getElementQueue(),T=g.getElementKeyToQueue(),A=this.getKey(m),D=T[A];D!=null&&(D.eles.length===1?(D.reqs=dp,k.updateItem(D),k.pop(),T[A]=null):D.eles.unmerge(m))},Oh.onDequeue=function(m){this.onDequeues.push(m)},Oh.offDequeue=function(m){cm(this.onDequeues,m)},Oh.setupDequeueing=oT.setupDequeueing({deqRedrawThreshold:fee,deqCost:cee,deqAvgCost:uee,deqNoDrawCost:lee,deqFastCost:hee,deq:function(g,k,T){return g.dequeue(k,T)},onDeqd:function(g,k){for(var T=0;T=lT||k>jx)return null}T.validateLayersElesOrdering(k,m);var H=T.layersByLevel,C=Math.pow(2,k),G=H[k]=H[k]||[],U,Z=T.levelIsComplete(k,m),ne,ae=function(){var ot=function(un){if(T.validateLayersElesOrdering(un,m),T.levelIsComplete(un,m))return ne=H[un],!0},ut=function(un){if(!ne)for(var Rt=k+un;a6<=Rt&&Rt<=jx&&!ot(Rt);Rt+=un);};ut(1),ut(-1);for(var Je=G.length-1;Je>=0;Je--){var Ct=G[Je];Ct.invalid&&cm(G,Ct)}};if(!Z)ae();else return G;var ue=function(){if(!U){U=zd();for(var ot=0;otGge)return null;var Ct=T.makeLayer(U,k);if(ut!=null){var lt=G.indexOf(ut)+1;G.splice(lt,0,Ct)}else(ot.insert===void 0||ot.insert)&&G.unshift(Ct);return Ct};if(T.skipping&&!F)return null;for(var be=null,Se=m.length/pee,Le=!F,Be=0;Be=Se||!YP(be.bb,Ke.boundingBox()))&&(be=_e({insert:!0,after:be}),!be))return null;ne||Le?T.queueLayer(be,Ke):T.drawEleInLayer(be,Ke,k,g),be.eles.push(Ke),Re[k]=be}return ne||(Le?null:G)},x1.getEleLevelForLayerLevel=function(m,g){return m},x1.drawEleInLayer=function(m,g,k,T){var A=this,D=this.renderer,I=m.context,F=g.boundingBox();F.w===0||F.h===0||!g.visible()||(k=A.getEleLevelForLayerLevel(k,T),D.setImgSmoothing(I,!1),D.drawCachedElement(I,g,null,null,k,qge),D.setImgSmoothing(I,!0))},x1.levelIsComplete=function(m,g){var k=this,T=k.layersByLevel[m];if(!T||T.length===0)return!1;for(var A=0,D=0;D0||I.invalid)return!1;A+=I.eles.length}return A===g.length},x1.validateLayersElesOrdering=function(m,g){var k=this.layersByLevel[m];if(k)for(var T=0;T0){g=!0;break}}return g},x1.invalidateElements=function(m){var g=this;m.length!==0&&(g.lastInvalidationTime=pi(),!(m.length===0||!g.haveLayers())&&g.updateElementsInLayers(m,function(T,A,D){g.invalidateLayer(T)}))},x1.invalidateLayer=function(m){if(this.lastInvalidationTime=pi(),!m.invalid){var g=m.level,k=m.eles,T=this.layersByLevel[g];cm(T,m),m.elesQueue=[],m.invalid=!0,m.replacement&&(m.replacement.invalid=!0);for(var A=0;A3&&arguments[3]!==void 0?arguments[3]:!0,A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,D=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,I=this,F=g._private.rscratch;if(!(D&&!g.visible())&&!(F.badLine||F.allpts==null||isNaN(F.allpts[0]))){var H;k&&(H=k,m.translate(-H.x1,-H.y1));var C=D?g.pstyle("opacity").value:1,G=D?g.pstyle("line-opacity").value:1,U=g.pstyle("curve-style").value,Z=g.pstyle("line-style").value,ne=g.pstyle("width").pfValue,ae=g.pstyle("line-cap").value,ue=C*G,_e=C*G,be=function(){var Je=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ue;U==="straight-triangle"?(I.eleStrokeStyle(m,g,Je),I.drawEdgeTrianglePath(g,m,F.allpts)):(m.lineWidth=ne,m.lineCap=ae,I.eleStrokeStyle(m,g,Je),I.drawEdgePath(g,m,F.allpts,Z),m.lineCap="butt")},Se=function(){A&&I.drawEdgeOverlay(m,g)},Le=function(){A&&I.drawEdgeUnderlay(m,g)},Be=function(){var Je=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_e;I.drawArrowheads(m,g,Je)},Ke=function(){I.drawElementText(m,g,null,T)};m.lineJoin="round";var qe=g.pstyle("ghost").value==="yes";if(qe){var Re=g.pstyle("ghost-offset-x").pfValue,Ze=g.pstyle("ghost-offset-y").pfValue,$e=g.pstyle("ghost-opacity").value,ot=ue*$e;m.translate(Re,Ze),be(ot),Be(ot),m.translate(-Re,-Ze)}Le(),be(),Be(),Se(),Ke(),k&&m.translate(H.x1,H.y1)}};var kee=function(g){if(!["overlay","underlay"].includes(g))throw new Error("Invalid state");return function(k,T){if(T.visible()){var A=T.pstyle("".concat(g,"-opacity")).value;if(A!==0){var D=this,I=D.usePaths(),F=T._private.rscratch,H=T.pstyle("".concat(g,"-padding")).pfValue,C=2*H,G=T.pstyle("".concat(g,"-color")).value;k.lineWidth=C,F.edgeType==="self"&&!I?k.lineCap="butt":k.lineCap="round",D.colorStrokeStyle(k,G[0],G[1],G[2],A),D.drawEdgePath(T,k,F.allpts,"solid")}}}};av.drawEdgeOverlay=kee("overlay"),av.drawEdgeUnderlay=kee("underlay"),av.drawEdgePath=function(m,g,k,T){var A=m._private.rscratch,D=g,I,F=!1,H=this.usePaths(),C=m.pstyle("line-dash-pattern").pfValue,G=m.pstyle("line-dash-offset").pfValue;if(H){var U=k.join("$"),Z=A.pathCacheKey&&A.pathCacheKey===U;Z?(I=g=A.pathCache,F=!0):(I=g=new Path2D,A.pathCacheKey=U,A.pathCache=I)}if(D.setLineDash)switch(T){case"dotted":D.setLineDash([1,1]);break;case"dashed":D.setLineDash(C),D.lineDashOffset=G;break;case"solid":D.setLineDash([]);break}if(!F&&!A.badLine)switch(g.beginPath&&g.beginPath(),g.moveTo(k[0],k[1]),A.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var ne=2;ne+35&&arguments[5]!==void 0?arguments[5]:!0,I=this;if(T==null){if(D&&!I.eleTextBiggerThanMin(g))return}else if(T===!1)return;if(g.isNode()){var F=g.pstyle("label");if(!F||!F.value)return;var H=I.getLabelJustification(g);m.textAlign=H,m.textBaseline="bottom"}else{var C=g.element()._private.rscratch.badLine,G=g.pstyle("label"),U=g.pstyle("source-label"),Z=g.pstyle("target-label");if(C||(!G||!G.value)&&(!U||!U.value)&&(!Z||!Z.value))return;m.textAlign="center",m.textBaseline="bottom"}var ne=!k,ae;k&&(ae=k,m.translate(-ae.x1,-ae.y1)),A==null?(I.drawText(m,g,null,ne,D),g.isEdge()&&(I.drawText(m,g,"source",ne,D),I.drawText(m,g,"target",ne,D))):I.drawText(m,g,A,ne,D),k&&m.translate(ae.x1,ae.y1)},o6.getFontCache=function(m){var g;this.fontCaches=this.fontCaches||[];for(var k=0;k2&&arguments[2]!==void 0?arguments[2]:!0,T=g.pstyle("font-style").strValue,A=g.pstyle("font-size").pfValue+"px",D=g.pstyle("font-family").strValue,I=g.pstyle("font-weight").strValue,F=k?g.effectiveOpacity()*g.pstyle("text-opacity").value:1,H=g.pstyle("text-outline-opacity").value*F,C=g.pstyle("color").value,G=g.pstyle("text-outline-color").value;m.font=T+" "+I+" "+A+" "+D,m.lineJoin="round",this.colorFillStyle(m,C[0],C[1],C[2],F),this.colorStrokeStyle(m,G[0],G[1],G[2],H)};function Xge(m,g,k,T,A){var D=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5;m.beginPath(),m.moveTo(g+D,k),m.lineTo(g+T-D,k),m.quadraticCurveTo(g+T,k,g+T,k+D),m.lineTo(g+T,k+A-D),m.quadraticCurveTo(g+T,k+A,g+T-D,k+A),m.lineTo(g+D,k+A),m.quadraticCurveTo(g,k+A,g,k+A-D),m.lineTo(g,k+D),m.quadraticCurveTo(g,k,g+D,k),m.closePath(),m.fill()}o6.getTextAngle=function(m,g){var k,T=m._private,A=T.rscratch,D=g?g+"-":"",I=m.pstyle(D+"text-rotation"),F=gp(A,"labelAngle",g);return I.strValue==="autorotate"?k=m.isEdge()?F:0:I.strValue==="none"?k=0:k=I.pfValue,k},o6.drawText=function(m,g,k){var T=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,D=g._private,I=D.rscratch,F=A?g.effectiveOpacity():1;if(!(A&&(F===0||g.pstyle("text-opacity").value===0))){k==="main"&&(k=null);var H=gp(I,"labelX",k),C=gp(I,"labelY",k),G,U,Z=this.getLabelText(g,k);if(Z!=null&&Z!==""&&!isNaN(H)&&!isNaN(C)){this.setupTextStyle(m,g,A);var ne=k?k+"-":"",ae=gp(I,"labelWidth",k),ue=gp(I,"labelHeight",k),_e=g.pstyle(ne+"text-margin-x").pfValue,be=g.pstyle(ne+"text-margin-y").pfValue,Se=g.isEdge(),Le=g.pstyle("text-halign").value,Be=g.pstyle("text-valign").value;Se&&(Le="center",Be="center"),H+=_e,C+=be;var Ke;switch(T?Ke=this.getTextAngle(g,k):Ke=0,Ke!==0&&(G=H,U=C,m.translate(G,U),m.rotate(Ke),H=0,C=0),Be){case"top":break;case"center":C+=ue/2;break;case"bottom":C+=ue;break}var qe=g.pstyle("text-background-opacity").value,Re=g.pstyle("text-border-opacity").value,Ze=g.pstyle("text-border-width").pfValue,$e=g.pstyle("text-background-padding").pfValue;if(qe>0||Ze>0&&Re>0){var ot=H-$e;switch(Le){case"left":ot-=ae;break;case"center":ot-=ae/2;break}var ut=C-ue-$e,Je=ae+2*$e,Ct=ue+2*$e;if(qe>0){var lt=m.fillStyle,un=g.pstyle("text-background-color").value;m.fillStyle="rgba("+un[0]+","+un[1]+","+un[2]+","+qe*F+")";var Rt=g.pstyle("text-background-shape").strValue;Rt.indexOf("round")===0?Xge(m,ot,ut,Je,Ct,2):m.fillRect(ot,ut,Je,Ct),m.fillStyle=lt}if(Ze>0&&Re>0){var $t=m.strokeStyle,bn=m.lineWidth,Cn=g.pstyle("text-border-color").value,Kn=g.pstyle("text-border-style").value;if(m.strokeStyle="rgba("+Cn[0]+","+Cn[1]+","+Cn[2]+","+Re*F+")",m.lineWidth=Ze,m.setLineDash)switch(Kn){case"dotted":m.setLineDash([1,1]);break;case"dashed":m.setLineDash([4,2]);break;case"double":m.lineWidth=Ze/4,m.setLineDash([]);break;case"solid":m.setLineDash([]);break}if(m.strokeRect(ot,ut,Je,Ct),Kn==="double"){var kn=Ze/2;m.strokeRect(ot+kn,ut+kn,Je-kn*2,Ct-kn*2)}m.setLineDash&&m.setLineDash([]),m.lineWidth=bn,m.strokeStyle=$t}}var Wn=2*g.pstyle("text-outline-width").pfValue;if(Wn>0&&(m.lineWidth=Wn),g.pstyle("text-wrap").value==="wrap"){var sr=gp(I,"labelWrapCachedLines",k),yr=gp(I,"labelLineHeight",k),hr=ae/2,nr=this.getLabelJustification(g);switch(nr==="auto"||(Le==="left"?nr==="left"?H+=-ae:nr==="center"&&(H+=-hr):Le==="center"?nr==="left"?H+=-hr:nr==="right"&&(H+=hr):Le==="right"&&(nr==="center"?H+=hr:nr==="right"&&(H+=ae))),Be){case"top":C-=(sr.length-1)*yr;break;case"center":case"bottom":C-=(sr.length-1)*yr;break}for(var fn=0;fn0&&m.strokeText(sr[fn],H,C),m.fillText(sr[fn],H,C),C+=yr}else Wn>0&&m.strokeText(Z,H,C),m.fillText(Z,H,C);Ke!==0&&(m.rotate(-Ke),m.translate(-G,-U))}}};var Hx={};Hx.drawNode=function(m,g,k){var T=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,D=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,I=this,F,H,C=g._private,G=C.rscratch,U=g.position();if(!(!te(U.x)||!te(U.y))&&!(D&&!g.visible())){var Z=D?g.effectiveOpacity():1,ne=I.usePaths(),ae,ue=!1,_e=g.padding();F=g.width()+2*_e,H=g.height()+2*_e;var be;k&&(be=k,m.translate(-be.x1,-be.y1));for(var Se=g.pstyle("background-image"),Le=Se.value,Be=new Array(Le.length),Ke=new Array(Le.length),qe=0,Re=0;Re0&&arguments[0]!==void 0?arguments[0]:Ct;I.eleFillStyle(m,g,Di)},bn=function(){var Di=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Rt;I.colorStrokeStyle(m,lt[0],lt[1],lt[2],Di)},Cn=g.pstyle("shape").strValue,Kn=g.pstyle("shape-polygon-points").pfValue;if(ne){m.translate(U.x,U.y);var kn=I.nodePathCache=I.nodePathCache||[],Wn=P5(Cn==="polygon"?Cn+","+Kn.join(","):Cn,""+H,""+F),sr=kn[Wn];sr!=null?(ae=sr,ue=!0,G.pathCache=ae):(ae=new Path2D,kn[Wn]=G.pathCache=ae)}var yr=function(){if(!ue){var Di=U;ne&&(Di={x:0,y:0}),I.nodeShapes[I.getNodeShape(g)].draw(ae||m,Di.x,Di.y,F,H)}ne?m.fill(ae):m.fill()},hr=function(){for(var Di=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Z,es=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,eo=C.backgrounding,sa=0,Ks=0;Ks0&&arguments[0]!==void 0?arguments[0]:!1,es=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Z;I.hasPie(g)&&(I.drawPie(m,g,es),Di&&(ne||I.nodeShapes[I.getNodeShape(g)].draw(m,U.x,U.y,F,H)))},fn=function(){var Di=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Z,es=(ut>0?ut:-ut)*Di,eo=ut>0?0:255;ut!==0&&(I.colorFillStyle(m,eo,eo,eo,es),ne?m.fill(ae):m.fill())},vr=function(){if(Je>0){if(m.lineWidth=Je,m.lineCap="butt",m.setLineDash)switch(un){case"dotted":m.setLineDash([1,1]);break;case"dashed":m.setLineDash([4,2]);break;case"solid":case"double":m.setLineDash([]);break}if(ne?m.stroke(ae):m.stroke(),un==="double"){m.lineWidth=Je/3;var Di=m.globalCompositeOperation;m.globalCompositeOperation="destination-out",ne?m.stroke(ae):m.stroke(),m.globalCompositeOperation=Di}m.setLineDash&&m.setLineDash([])}},gr=function(){A&&I.drawNodeOverlay(m,g,U,F,H)},ni=function(){A&&I.drawNodeUnderlay(m,g,U,F,H)},Ti=function(){I.drawElementText(m,g,null,T)},ia=g.pstyle("ghost").value==="yes";if(ia){var Ba=g.pstyle("ghost-offset-x").pfValue,Li=g.pstyle("ghost-offset-y").pfValue,wi=g.pstyle("ghost-opacity").value,Ts=wi*Z;m.translate(Ba,Li),$t(wi*Ct),yr(),hr(Ts,!0),bn(wi*Rt),vr(),nr(ut!==0||Je!==0),hr(Ts,!1),fn(Ts),m.translate(-Ba,-Li)}ne&&m.translate(-U.x,-U.y),ni(),ne&&m.translate(U.x,U.y),$t(),yr(),hr(Z,!0),bn(),vr(),nr(ut!==0||Je!==0),hr(Z,!1),fn(),ne&&m.translate(-U.x,-U.y),Ti(),gr(),k&&m.translate(be.x1,be.y1)}};var xee=function(g){if(!["overlay","underlay"].includes(g))throw new Error("Invalid state");return function(k,T,A,D,I){var F=this;if(T.visible()){var H=T.pstyle("".concat(g,"-padding")).pfValue,C=T.pstyle("".concat(g,"-opacity")).value,G=T.pstyle("".concat(g,"-color")).value,U=T.pstyle("".concat(g,"-shape")).value;if(C>0){if(A=A||T.position(),D==null||I==null){var Z=T.padding();D=T.width()+2*Z,I=T.height()+2*Z}F.colorFillStyle(k,G[0],G[1],G[2],C),F.nodeShapes[U].draw(k,A.x,A.y,D+H*2,I+H*2),k.fill()}}}};Hx.drawNodeOverlay=xee("overlay"),Hx.drawNodeUnderlay=xee("underlay"),Hx.hasPie=function(m){return m=m[0],m._private.hasPie},Hx.drawPie=function(m,g,k,T){g=g[0],T=T||g.position();var A=g.cy().style(),D=g.pstyle("pie-size"),I=T.x,F=T.y,H=g.width(),C=g.height(),G=Math.min(H,C)/2,U=0,Z=this.usePaths();Z&&(I=0,F=0),D.units==="%"?G=G*D.pfValue:D.pfValue!==void 0&&(G=D.pfValue/2);for(var ne=1;ne<=A.pieBackgroundN;ne++){var ae=g.pstyle("pie-"+ne+"-background-size").value,ue=g.pstyle("pie-"+ne+"-background-color").value,_e=g.pstyle("pie-"+ne+"-background-opacity").value*k,be=ae/100;be+U>1&&(be=1-U);var Se=1.5*Math.PI+2*Math.PI*U,Le=2*Math.PI*be,Be=Se+Le;ae===0||U>=1||U+be>1||(m.beginPath(),m.moveTo(I,F),m.arc(I,F,G,Se,Be),m.closePath(),this.colorFillStyle(m,ue[0],ue[1],ue[2],_e),m.fill(),U+=be)}};var fg={},Qge=100;fg.getPixelRatio=function(){var m=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var g=m.backingStorePixelRatio||m.webkitBackingStorePixelRatio||m.mozBackingStorePixelRatio||m.msBackingStorePixelRatio||m.oBackingStorePixelRatio||m.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/g},fg.paintCache=function(m){for(var g=this.paintCaches=this.paintCaches||[],k=!0,T,A=0;AI.minMbLowQualFrames&&(I.motionBlurPxRatio=I.mbPxRBlurry)),I.clearingMotionBlur&&(I.motionBlurPxRatio=1),I.textureDrawLastFrame&&!U&&(G[I.NODE]=!0,G[I.SELECT_BOX]=!0);var Se=H.style(),Le=H.zoom(),Be=A!==void 0?A:Le,Ke=H.pan(),qe={x:Ke.x,y:Ke.y},Re={zoom:Le,pan:{x:Ke.x,y:Ke.y}},Ze=I.prevViewport,$e=Ze===void 0||Re.zoom!==Ze.zoom||Re.pan.x!==Ze.pan.x||Re.pan.y!==Ze.pan.y;!$e&&!(ue&&!ae)&&(I.motionBlurPxRatio=1),D&&(qe=D),Be*=F,qe.x*=F,qe.y*=F;var ot=I.getCachedZSortedEles();function ut(Li,wi,Ts,Yi,Di){var es=Li.globalCompositeOperation;Li.globalCompositeOperation="destination-out",I.colorFillStyle(Li,255,255,255,I.motionBlurTransparency),Li.fillRect(wi,Ts,Yi,Di),Li.globalCompositeOperation=es}function Je(Li,wi){var Ts,Yi,Di,es;!I.clearingMotionBlur&&(Li===C.bufferContexts[I.MOTIONBLUR_BUFFER_NODE]||Li===C.bufferContexts[I.MOTIONBLUR_BUFFER_DRAG])?(Ts={x:Ke.x*ne,y:Ke.y*ne},Yi=Le*ne,Di=I.canvasWidth*ne,es=I.canvasHeight*ne):(Ts=qe,Yi=Be,Di=I.canvasWidth,es=I.canvasHeight),Li.setTransform(1,0,0,1,0,0),wi==="motionBlur"?ut(Li,0,0,Di,es):!g&&(wi===void 0||wi)&&Li.clearRect(0,0,Di,es),k||(Li.translate(Ts.x,Ts.y),Li.scale(Yi,Yi)),D&&Li.translate(D.x,D.y),A&&Li.scale(A,A)}if(U||(I.textureDrawLastFrame=!1),U){if(I.textureDrawLastFrame=!0,!I.textureCache){I.textureCache={},I.textureCache.bb=H.mutableElements().boundingBox(),I.textureCache.texture=I.data.bufferCanvases[I.TEXTURE_BUFFER];var Ct=I.data.bufferContexts[I.TEXTURE_BUFFER];Ct.setTransform(1,0,0,1,0,0),Ct.clearRect(0,0,I.canvasWidth*I.textureMult,I.canvasHeight*I.textureMult),I.render({forcedContext:Ct,drawOnlyNodeLayer:!0,forcedPxRatio:F*I.textureMult});var Re=I.textureCache.viewport={zoom:H.zoom(),pan:H.pan(),width:I.canvasWidth,height:I.canvasHeight};Re.mpan={x:(0-Re.pan.x)/Re.zoom,y:(0-Re.pan.y)/Re.zoom}}G[I.DRAG]=!1,G[I.NODE]=!1;var lt=C.contexts[I.NODE],un=I.textureCache.texture,Re=I.textureCache.viewport;lt.setTransform(1,0,0,1,0,0),Z?ut(lt,0,0,Re.width,Re.height):lt.clearRect(0,0,Re.width,Re.height);var Rt=Se.core("outside-texture-bg-color").value,$t=Se.core("outside-texture-bg-opacity").value;I.colorFillStyle(lt,Rt[0],Rt[1],Rt[2],$t),lt.fillRect(0,0,Re.width,Re.height);var Le=H.zoom();Je(lt,!1),lt.clearRect(Re.mpan.x,Re.mpan.y,Re.width/Re.zoom/F,Re.height/Re.zoom/F),lt.drawImage(un,Re.mpan.x,Re.mpan.y,Re.width/Re.zoom/F,Re.height/Re.zoom/F)}else I.textureOnViewport&&!g&&(I.textureCache=null);var bn=H.extent(),Cn=I.pinching||I.hoverData.dragging||I.swipePanning||I.data.wheelZooming||I.hoverData.draggingEles||I.cy.animated(),Kn=I.hideEdgesOnViewport&&Cn,kn=[];if(kn[I.NODE]=!G[I.NODE]&&Z&&!I.clearedForMotionBlur[I.NODE]||I.clearingMotionBlur,kn[I.NODE]&&(I.clearedForMotionBlur[I.NODE]=!0),kn[I.DRAG]=!G[I.DRAG]&&Z&&!I.clearedForMotionBlur[I.DRAG]||I.clearingMotionBlur,kn[I.DRAG]&&(I.clearedForMotionBlur[I.DRAG]=!0),G[I.NODE]||k||T||kn[I.NODE]){var Wn=Z&&!kn[I.NODE]&&ne!==1,lt=g||(Wn?I.data.bufferContexts[I.MOTIONBLUR_BUFFER_NODE]:C.contexts[I.NODE]),sr=Z&&!Wn?"motionBlur":void 0;Je(lt,sr),Kn?I.drawCachedNodes(lt,ot.nondrag,F,bn):I.drawLayeredElements(lt,ot.nondrag,F,bn),I.debug&&I.drawDebugPoints(lt,ot.nondrag),!k&&!Z&&(G[I.NODE]=!1)}if(!T&&(G[I.DRAG]||k||kn[I.DRAG])){var Wn=Z&&!kn[I.DRAG]&&ne!==1,lt=g||(Wn?I.data.bufferContexts[I.MOTIONBLUR_BUFFER_DRAG]:C.contexts[I.DRAG]);Je(lt,Z&&!Wn?"motionBlur":void 0),Kn?I.drawCachedNodes(lt,ot.drag,F,bn):I.drawCachedElements(lt,ot.drag,F,bn),I.debug&&I.drawDebugPoints(lt,ot.drag),!k&&!Z&&(G[I.DRAG]=!1)}if(I.showFps||!T&&G[I.SELECT_BOX]&&!k){var lt=g||C.contexts[I.SELECT_BOX];if(Je(lt),I.selection[4]==1&&(I.hoverData.selecting||I.touchData.selecting)){var Le=I.cy.zoom(),yr=Se.core("selection-box-border-width").value/Le;lt.lineWidth=yr,lt.fillStyle="rgba("+Se.core("selection-box-color").value[0]+","+Se.core("selection-box-color").value[1]+","+Se.core("selection-box-color").value[2]+","+Se.core("selection-box-opacity").value+")",lt.fillRect(I.selection[0],I.selection[1],I.selection[2]-I.selection[0],I.selection[3]-I.selection[1]),yr>0&&(lt.strokeStyle="rgba("+Se.core("selection-box-border-color").value[0]+","+Se.core("selection-box-border-color").value[1]+","+Se.core("selection-box-border-color").value[2]+","+Se.core("selection-box-opacity").value+")",lt.strokeRect(I.selection[0],I.selection[1],I.selection[2]-I.selection[0],I.selection[3]-I.selection[1]))}if(C.bgActivePosistion&&!I.hoverData.selecting){var Le=I.cy.zoom(),hr=C.bgActivePosistion;lt.fillStyle="rgba("+Se.core("active-bg-color").value[0]+","+Se.core("active-bg-color").value[1]+","+Se.core("active-bg-color").value[2]+","+Se.core("active-bg-opacity").value+")",lt.beginPath(),lt.arc(hr.x,hr.y,Se.core("active-bg-size").pfValue/Le,0,2*Math.PI),lt.fill()}var nr=I.lastRedrawTime;if(I.showFps&&nr){nr=Math.round(nr);var fn=Math.round(1e3/nr);lt.setTransform(1,0,0,1,0,0),lt.fillStyle="rgba(255, 0, 0, 0.75)",lt.strokeStyle="rgba(255, 0, 0, 0.75)",lt.lineWidth=1,lt.fillText("1 frame = "+nr+" ms = "+fn+" fps",0,20);var vr=60;lt.strokeRect(0,30,250,20),lt.fillRect(0,30,250*Math.min(fn/vr,1),20)}k||(G[I.SELECT_BOX]=!1)}if(Z&&ne!==1){var gr=C.contexts[I.NODE],ni=I.data.bufferCanvases[I.MOTIONBLUR_BUFFER_NODE],Ti=C.contexts[I.DRAG],ia=I.data.bufferCanvases[I.MOTIONBLUR_BUFFER_DRAG],Ba=function(wi,Ts,Yi){wi.setTransform(1,0,0,1,0,0),Yi||!be?wi.clearRect(0,0,I.canvasWidth,I.canvasHeight):ut(wi,0,0,I.canvasWidth,I.canvasHeight);var Di=ne;wi.drawImage(Ts,0,0,I.canvasWidth*Di,I.canvasHeight*Di,0,0,I.canvasWidth,I.canvasHeight)};(G[I.NODE]||kn[I.NODE])&&(Ba(gr,ni,kn[I.NODE]),G[I.NODE]=!1),(G[I.DRAG]||kn[I.DRAG])&&(Ba(Ti,ia,kn[I.DRAG]),G[I.DRAG]=!1)}I.prevViewport=Re,I.clearingMotionBlur&&(I.clearingMotionBlur=!1,I.motionBlurCleared=!0,I.motionBlur=!0),Z&&(I.motionBlurTimeout=setTimeout(function(){I.motionBlurTimeout=null,I.clearedForMotionBlur[I.NODE]=!1,I.clearedForMotionBlur[I.DRAG]=!1,I.motionBlur=!1,I.clearingMotionBlur=!U,I.mbFrames=0,G[I.NODE]=!0,G[I.DRAG]=!0,I.redraw()},Qge)),g||H.emit("render")};var _3={};_3.drawPolygonPath=function(m,g,k,T,A,D){var I=T/2,F=A/2;m.beginPath&&m.beginPath(),m.moveTo(g+I*D[0],k+F*D[1]);for(var H=1;H0&&I>0){ne.clearRect(0,0,D,I),ne.globalCompositeOperation="source-over";var ae=this.getCachedZSortedEles();if(m.full)ne.translate(-T.x1*C,-T.y1*C),ne.scale(C,C),this.drawElements(ne,ae),ne.scale(1/C,1/C),ne.translate(T.x1*C,T.y1*C);else{var ue=g.pan(),_e={x:ue.x*C,y:ue.y*C};C*=g.zoom(),ne.translate(_e.x,_e.y),ne.scale(C,C),this.drawElements(ne,ae),ne.scale(1/C,1/C),ne.translate(-_e.x,-_e.y)}m.bg&&(ne.globalCompositeOperation="destination-over",ne.fillStyle=m.bg,ne.rect(0,0,D,I),ne.fill())}return Z};function Zge(m,g){for(var k=atob(m),T=new ArrayBuffer(k.length),A=new Uint8Array(T),D=0;D"u"?"undefined":f(OffscreenCanvas))!=="undefined"?k=new OffscreenCanvas(m,g):(k=document.createElement("canvas"),k.width=m,k.height=g),k},[T0,sv,av,fT,o6,Hx,fg,_3,dT,Aee].forEach(function(m){Oe(Ac,m)});var c6=[{name:"null",impl:DR},{name:"base",impl:XL},{name:"canvas",impl:Jge}],dg=[{type:"layout",extensions:ZJ},{type:"renderer",extensions:c6}],vm={},nM={};function E1(m,g,k){var T=k,A=function(Ze){Vo("Can not register `"+g+"` for `"+m+"` since `"+Ze+"` already exists in the prototype and can not be overridden")};if(m==="core"){if(Ox.prototype[g])return A(g);Ox.prototype[g]=k}else if(m==="collection"){if(Wf.prototype[g])return A(g);Wf.prototype[g]=k}else if(m==="layout"){for(var D=function(Ze){this.options=Ze,k.call(this,Ze),de(this._private)||(this._private={}),this._private.cy=Ze.cy,this._private.listeners=[],this.createEmitter()},I=D.prototype=Object.create(k.prototype),F=[],H=0;HV&&(this.rect.x-=(this.labelWidth-V)/2,this.setWidth(this.labelWidth)),this.labelHeight>Q&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-Q)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-Q),this.setHeight(this.labelHeight))}}},R.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==b.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},R.prototype.transform=function($){var V=this.rect.x;V>S.WORLD_BOUNDARY?V=S.WORLD_BOUNDARY:V<-S.WORLD_BOUNDARY&&(V=-S.WORLD_BOUNDARY);var Q=this.rect.y;Q>S.WORLD_BOUNDARY?Q=S.WORLD_BOUNDARY:Q<-S.WORLD_BOUNDARY&&(Q=-S.WORLD_BOUNDARY);var oe=new B(V,Q),ce=$.inverseTransformPoint(oe);this.setLocation(ce.x,ce.y)},R.prototype.getLeft=function(){return this.rect.x},R.prototype.getRight=function(){return this.rect.x+this.rect.width},R.prototype.getTop=function(){return this.rect.y},R.prototype.getBottom=function(){return this.rect.y+this.rect.height},R.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},f.exports=R},function(f,p,w){function y(b,E){b==null&&E==null?(this.x=0,this.y=0):(this.x=b,this.y=E)}y.prototype.getX=function(){return this.x},y.prototype.getY=function(){return this.y},y.prototype.setX=function(b){this.x=b},y.prototype.setY=function(b){this.y=b},y.prototype.getDifference=function(b){return new DimensionD(this.x-b.x,this.y-b.y)},y.prototype.getCopy=function(){return new y(this.x,this.y)},y.prototype.translate=function(b){return this.x+=b.width,this.y+=b.height,this},f.exports=y},function(f,p,w){var y=w(2),b=w(10),E=w(0),S=w(6),N=w(3),B=w(1),R=w(13),j=w(12),$=w(11);function V(oe,ce,se){y.call(this,se),this.estimatedSize=b.MIN_VALUE,this.margin=E.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=oe,ce!=null&&ce instanceof S?this.graphManager=ce:ce!=null&&ce instanceof Layout&&(this.graphManager=ce.graphManager)}V.prototype=Object.create(y.prototype);for(var Q in y)V[Q]=y[Q];V.prototype.getNodes=function(){return this.nodes},V.prototype.getEdges=function(){return this.edges},V.prototype.getGraphManager=function(){return this.graphManager},V.prototype.getParent=function(){return this.parent},V.prototype.getLeft=function(){return this.left},V.prototype.getRight=function(){return this.right},V.prototype.getTop=function(){return this.top},V.prototype.getBottom=function(){return this.bottom},V.prototype.isConnected=function(){return this.isConnected},V.prototype.add=function(oe,ce,se){if(ce==null&&se==null){var ge=oe;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(ge)>-1)throw"Node already in graph!";return ge.owner=this,this.getNodes().push(ge),ge}else{var ye=oe;if(!(this.getNodes().indexOf(ce)>-1&&this.getNodes().indexOf(se)>-1))throw"Source or target not in graph!";if(!(ce.owner==se.owner&&ce.owner==this))throw"Both owners must be this graph!";return ce.owner!=se.owner?null:(ye.source=ce,ye.target=se,ye.isInterGraph=!1,this.getEdges().push(ye),ce.edges.push(ye),se!=ce&&se.edges.push(ye),ye)}},V.prototype.remove=function(oe){var ce=oe;if(oe instanceof N){if(ce==null)throw"Node is null!";if(!(ce.owner!=null&&ce.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var se=ce.edges.slice(),ge,ye=se.length,ke=0;ke-1&&ve>-1))throw"Source and/or target doesn't know this edge!";ge.source.edges.splice(de,1),ge.target!=ge.source&&ge.target.edges.splice(ve,1);var Ae=ge.source.owner.getEdges().indexOf(ge);if(Ae==-1)throw"Not in owner's edge list!";ge.source.owner.getEdges().splice(Ae,1)}},V.prototype.updateLeftTop=function(){for(var oe=b.MAX_VALUE,ce=b.MAX_VALUE,se,ge,ye,ke=this.getNodes(),Ae=ke.length,de=0;dese&&(oe=se),ce>ge&&(ce=ge)}return oe==b.MAX_VALUE?null:(ke[0].getParent().paddingLeft!=null?ye=ke[0].getParent().paddingLeft:ye=this.margin,this.left=ce-ye,this.top=oe-ye,new j(this.left,this.top))},V.prototype.updateBounds=function(oe){for(var ce=b.MAX_VALUE,se=-b.MAX_VALUE,ge=b.MAX_VALUE,ye=-b.MAX_VALUE,ke,Ae,de,ve,te,xe=this.nodes,De=xe.length,he=0;heke&&(ce=ke),sede&&(ge=de),yeke&&(ce=ke),sede&&(ge=de),ye=this.nodes.length){var De=0;se.forEach(function(he){he.owner==oe&&De++}),De==this.nodes.length&&(this.isConnected=!0)}},f.exports=V},function(f,p,w){var y,b=w(1);function E(S){y=w(5),this.layout=S,this.graphs=[],this.edges=[]}E.prototype.addRoot=function(){var S=this.layout.newGraph(),N=this.layout.newNode(null),B=this.add(S,N);return this.setRootGraph(B),this.rootGraph},E.prototype.add=function(S,N,B,R,j){if(B==null&&R==null&&j==null){if(S==null)throw"Graph is null!";if(N==null)throw"Parent node is null!";if(this.graphs.indexOf(S)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(S),S.parent!=null)throw"Already has a parent!";if(N.child!=null)throw"Already has a child!";return S.parent=N,N.child=S,S}else{j=B,R=N,B=S;var $=R.getOwner(),V=j.getOwner();if(!($!=null&&$.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(V!=null&&V.getGraphManager()==this))throw"Target not in this graph mgr!";if($==V)return B.isInterGraph=!1,$.add(B,R,j);if(B.isInterGraph=!0,B.source=R,B.target=j,this.edges.indexOf(B)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(B),!(B.source!=null&&B.target!=null))throw"Edge source and/or target is null!";if(!(B.source.edges.indexOf(B)==-1&&B.target.edges.indexOf(B)==-1))throw"Edge already in source and/or target incidency list!";return B.source.edges.push(B),B.target.edges.push(B),B}},E.prototype.remove=function(S){if(S instanceof y){var N=S;if(N.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(N==this.rootGraph||N.parent!=null&&N.parent.graphManager==this))throw"Invalid parent node!";var B=[];B=B.concat(N.getEdges());for(var R,j=B.length,$=0;$=S.getRight()?N[0]+=Math.min(S.getX()-E.getX(),E.getRight()-S.getRight()):S.getX()<=E.getX()&&S.getRight()>=E.getRight()&&(N[0]+=Math.min(E.getX()-S.getX(),S.getRight()-E.getRight())),E.getY()<=S.getY()&&E.getBottom()>=S.getBottom()?N[1]+=Math.min(S.getY()-E.getY(),E.getBottom()-S.getBottom()):S.getY()<=E.getY()&&S.getBottom()>=E.getBottom()&&(N[1]+=Math.min(E.getY()-S.getY(),S.getBottom()-E.getBottom()));var j=Math.abs((S.getCenterY()-E.getCenterY())/(S.getCenterX()-E.getCenterX()));S.getCenterY()===E.getCenterY()&&S.getCenterX()===E.getCenterX()&&(j=1);var $=j*N[0],V=N[1]/j;N[0]$)return N[0]=B,N[1]=Q,N[2]=j,N[3]=xe,!1;if(R<$)return N[0]=B,N[1]=se,N[2]=j,N[3]=de,!1}else if(R===$){if(B>j)return N[0]=V,N[1]=R,N[2]=ve,N[3]=$,!1;if(Bj?(N[0]=ce,N[1]=se,ee=!0):(N[0]=oe,N[1]=Q,ee=!0):me===pe&&(B>j?(N[0]=V,N[1]=Q,ee=!0):(N[0]=ge,N[1]=se,ee=!0)),-gt===pe?j>B?(N[2]=te,N[3]=xe,rt=!0):(N[2]=ve,N[3]=de,rt=!0):gt===pe&&(j>B?(N[2]=Ae,N[3]=de,rt=!0):(N[2]=De,N[3]=xe,rt=!0)),ee&&rt)return!1;if(B>j?R>$?(Et=this.getCardinalDirection(me,pe,4),wt=this.getCardinalDirection(gt,pe,2)):(Et=this.getCardinalDirection(-me,pe,3),wt=this.getCardinalDirection(-gt,pe,1)):R>$?(Et=this.getCardinalDirection(-me,pe,1),wt=this.getCardinalDirection(-gt,pe,3)):(Et=this.getCardinalDirection(me,pe,2),wt=this.getCardinalDirection(gt,pe,4)),!ee)switch(Et){case 1:At=Q,jt=B+-ke/pe,N[0]=jt,N[1]=At;break;case 2:jt=ge,At=R+ye*pe,N[0]=jt,N[1]=At;break;case 3:At=se,jt=B+ke/pe,N[0]=jt,N[1]=At;break;case 4:jt=ce,At=R+-ye*pe,N[0]=jt,N[1]=At;break}if(!rt)switch(wt){case 1:cn=de,Bt=j+-Ie/pe,N[2]=Bt,N[3]=cn;break;case 2:Bt=De,cn=$+he*pe,N[2]=Bt,N[3]=cn;break;case 3:cn=xe,Bt=j+Ie/pe,N[2]=Bt,N[3]=cn;break;case 4:Bt=te,cn=$+-he*pe,N[2]=Bt,N[3]=cn;break}}return!1},b.getCardinalDirection=function(E,S,N){return E>S?N:1+N%4},b.getIntersection=function(E,S,N,B){if(B==null)return this.getIntersection2(E,S,N);var R=E.x,j=E.y,$=S.x,V=S.y,Q=N.x,oe=N.y,ce=B.x,se=B.y,ge=void 0,ye=void 0,ke=void 0,Ae=void 0,de=void 0,ve=void 0,te=void 0,xe=void 0,De=void 0;return ke=V-j,de=R-$,te=$*j-R*V,Ae=se-oe,ve=Q-ce,xe=ce*oe-Q*se,De=ke*ve-Ae*de,De===0?null:(ge=(de*xe-ve*te)/De,ye=(Ae*te-ke*xe)/De,new y(ge,ye))},b.angleOfVector=function(E,S,N,B){var R=void 0;return E!==N?(R=Math.atan((B-S)/(N-E)),N0?1:b<0?-1:0},y.floor=function(b){return b<0?Math.ceil(b):Math.floor(b)},y.ceil=function(b){return b<0?Math.floor(b):Math.ceil(b)},f.exports=y},function(f,p,w){function y(){}y.MAX_VALUE=2147483647,y.MIN_VALUE=-2147483648,f.exports=y},function(f,p,w){var y=function(){function R(j,$){for(var V=0;V<$.length;V++){var Q=$[V];Q.enumerable=Q.enumerable||!1,Q.configurable=!0,"value"in Q&&(Q.writable=!0),Object.defineProperty(j,Q.key,Q)}}return function(j,$,V){return $&&R(j.prototype,$),V&&R(j,V),j}}();function b(R,j){if(!(R instanceof j))throw new TypeError("Cannot call a class as a function")}var E=function(j){return{value:j,next:null,prev:null}},S=function(j,$,V,Q){return j!==null?j.next=$:Q.head=$,V!==null?V.prev=$:Q.tail=$,$.prev=j,$.next=V,Q.length++,$},N=function(j,$){var V=j.prev,Q=j.next;return V!==null?V.next=Q:$.head=Q,Q!==null?Q.prev=V:$.tail=V,j.prev=j.next=null,$.length--,j},B=function(){function R(j){var $=this;b(this,R),this.length=0,this.head=null,this.tail=null,j!=null&&j.forEach(function(V){return $.push(V)})}return y(R,[{key:"size",value:function(){return this.length}},{key:"insertBefore",value:function($,V){return S(V.prev,E($),V,this)}},{key:"insertAfter",value:function($,V){return S(V,E($),V.next,this)}},{key:"insertNodeBefore",value:function($,V){return S(V.prev,$,V,this)}},{key:"insertNodeAfter",value:function($,V){return S(V,$,V.next,this)}},{key:"push",value:function($){return S(this.tail,E($),null,this)}},{key:"unshift",value:function($){return S(null,E($),this.head,this)}},{key:"remove",value:function($){return N($,this)}},{key:"pop",value:function(){return N(this.tail,this).value}},{key:"popNode",value:function(){return N(this.tail,this)}},{key:"shift",value:function(){return N(this.head,this).value}},{key:"shiftNode",value:function(){return N(this.head,this)}},{key:"get_object_at",value:function($){if($<=this.length()){for(var V=1,Q=this.head;V<$;)Q=Q.next,V++;return Q.value}}},{key:"set_object_at",value:function($,V){if($<=this.length()){for(var Q=1,oe=this.head;Q<$;)oe=oe.next,Q++;oe.value=V}}}]),R}();f.exports=B},function(f,p,w){function y(b,E,S){this.x=null,this.y=null,b==null&&E==null&&S==null?(this.x=0,this.y=0):typeof b=="number"&&typeof E=="number"&&S==null?(this.x=b,this.y=E):b.constructor.name=="Point"&&E==null&&S==null&&(S=b,this.x=S.x,this.y=S.y)}y.prototype.getX=function(){return this.x},y.prototype.getY=function(){return this.y},y.prototype.getLocation=function(){return new y(this.x,this.y)},y.prototype.setLocation=function(b,E,S){b.constructor.name=="Point"&&E==null&&S==null?(S=b,this.setLocation(S.x,S.y)):typeof b=="number"&&typeof E=="number"&&S==null&&(parseInt(b)==b&&parseInt(E)==E?this.move(b,E):(this.x=Math.floor(b+.5),this.y=Math.floor(E+.5)))},y.prototype.move=function(b,E){this.x=b,this.y=E},y.prototype.translate=function(b,E){this.x+=b,this.y+=E},y.prototype.equals=function(b){if(b.constructor.name=="Point"){var E=b;return this.x==E.x&&this.y==E.y}return this==b},y.prototype.toString=function(){return new y().constructor.name+"[x="+this.x+",y="+this.y+"]"},f.exports=y},function(f,p,w){function y(b,E,S,N){this.x=0,this.y=0,this.width=0,this.height=0,b!=null&&E!=null&&S!=null&&N!=null&&(this.x=b,this.y=E,this.width=S,this.height=N)}y.prototype.getX=function(){return this.x},y.prototype.setX=function(b){this.x=b},y.prototype.getY=function(){return this.y},y.prototype.setY=function(b){this.y=b},y.prototype.getWidth=function(){return this.width},y.prototype.setWidth=function(b){this.width=b},y.prototype.getHeight=function(){return this.height},y.prototype.setHeight=function(b){this.height=b},y.prototype.getRight=function(){return this.x+this.width},y.prototype.getBottom=function(){return this.y+this.height},y.prototype.intersects=function(b){return!(this.getRight()"u"?"undefined":y(E);return E==null||S!="object"&&S!="function"},f.exports=b},function(f,p,w){function y(Q){if(Array.isArray(Q)){for(var oe=0,ce=Array(Q.length);oe0&&oe;){for(ke.push(de[0]);ke.length>0&&oe;){var ve=ke[0];ke.splice(0,1),ye.add(ve);for(var te=ve.getEdges(),ge=0;ge-1&&de.splice(Ie,1)}ye=new Set,Ae=new Map}}return Q},V.prototype.createDummyNodesForBendpoints=function(Q){for(var oe=[],ce=Q.source,se=this.graphManager.calcLowestCommonAncestor(Q.source,Q.target),ge=0;ge0){for(var se=this.edgeToDummyNodes.get(ce),ge=0;ge=0&&oe.splice(xe,1);var De=Ae.getNeighborsList();De.forEach(function(ee){if(ce.indexOf(ee)<0){var rt=se.get(ee),me=rt-1;me==1&&ve.push(ee),se.set(ee,me)}})}ce=ce.concat(ve),(oe.length==1||oe.length==2)&&(ge=!0,ye=oe[0])}return ye},V.prototype.setGraphManager=function(Q){this.graphManager=Q},f.exports=V},function(f,p,w){function y(){}y.seed=1,y.x=0,y.nextDouble=function(){return y.x=Math.sin(y.seed++)*1e4,y.x-Math.floor(y.x)},f.exports=y},function(f,p,w){var y=w(4);function b(E,S){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}b.prototype.getWorldOrgX=function(){return this.lworldOrgX},b.prototype.setWorldOrgX=function(E){this.lworldOrgX=E},b.prototype.getWorldOrgY=function(){return this.lworldOrgY},b.prototype.setWorldOrgY=function(E){this.lworldOrgY=E},b.prototype.getWorldExtX=function(){return this.lworldExtX},b.prototype.setWorldExtX=function(E){this.lworldExtX=E},b.prototype.getWorldExtY=function(){return this.lworldExtY},b.prototype.setWorldExtY=function(E){this.lworldExtY=E},b.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},b.prototype.setDeviceOrgX=function(E){this.ldeviceOrgX=E},b.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},b.prototype.setDeviceOrgY=function(E){this.ldeviceOrgY=E},b.prototype.getDeviceExtX=function(){return this.ldeviceExtX},b.prototype.setDeviceExtX=function(E){this.ldeviceExtX=E},b.prototype.getDeviceExtY=function(){return this.ldeviceExtY},b.prototype.setDeviceExtY=function(E){this.ldeviceExtY=E},b.prototype.transformX=function(E){var S=0,N=this.lworldExtX;return N!=0&&(S=this.ldeviceOrgX+(E-this.lworldOrgX)*this.ldeviceExtX/N),S},b.prototype.transformY=function(E){var S=0,N=this.lworldExtY;return N!=0&&(S=this.ldeviceOrgY+(E-this.lworldOrgY)*this.ldeviceExtY/N),S},b.prototype.inverseTransformX=function(E){var S=0,N=this.ldeviceExtX;return N!=0&&(S=this.lworldOrgX+(E-this.ldeviceOrgX)*this.lworldExtX/N),S},b.prototype.inverseTransformY=function(E){var S=0,N=this.ldeviceExtY;return N!=0&&(S=this.lworldOrgY+(E-this.ldeviceOrgY)*this.lworldExtY/N),S},b.prototype.inverseTransformPoint=function(E){var S=new y(this.inverseTransformX(E.x),this.inverseTransformY(E.y));return S},f.exports=b},function(f,p,w){function y($){if(Array.isArray($)){for(var V=0,Q=Array($.length);V<$.length;V++)Q[V]=$[V];return Q}else return Array.from($)}var b=w(15),E=w(7),S=w(0),N=w(8),B=w(9);function R(){b.call(this),this.useSmartIdealEdgeLengthCalculation=E.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=E.DEFAULT_EDGE_LENGTH,this.springConstant=E.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=E.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=E.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=E.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=E.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=E.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*E.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=E.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=E.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=E.MAX_ITERATIONS}R.prototype=Object.create(b.prototype);for(var j in b)R[j]=b[j];R.prototype.initParameters=function(){b.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=E.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},R.prototype.calcIdealEdgeLengths=function(){for(var $,V,Q,oe,ce,se,ge=this.getGraphManager().getAllEdges(),ye=0;yeE.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*E.COOLING_ADAPTATION_FACTOR,this.coolingFactor-($-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-E.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT_INCREMENTAL):($>E.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(E.COOLING_ADAPTATION_FACTOR,1-($-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*(1-E.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},R.prototype.calcSpringForces=function(){for(var $=this.getAllEdges(),V,Q=0;Q<$.length;Q++)V=$[Q],this.calcSpringForce(V,V.idealLength)},R.prototype.calcRepulsionForces=function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,Q,oe,ce,se,ge=this.getAllNodes(),ye;if(this.useFRGridVariant)for(this.totalIterations%E.GRID_CALCULATION_CHECK_PERIOD==1&&$&&this.updateGrid(),ye=new Set,Q=0;Qke||ye>ke)&&($.gravitationForceX=-this.gravityConstant*ce,$.gravitationForceY=-this.gravityConstant*se)):(ke=V.getEstimatedSize()*this.compoundGravityRangeFactor,(ge>ke||ye>ke)&&($.gravitationForceX=-this.gravityConstant*ce*this.compoundGravityConstant,$.gravitationForceY=-this.gravityConstant*se*this.compoundGravityConstant))},R.prototype.isConverged=function(){var $,V=!1;return this.totalIterations>this.maxIterations/3&&(V=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),$=this.totalDisplacement=ge.length||ke>=ge[0].length)){for(var Ae=0;AeR}}]),N}();f.exports=S},function(f,p,w){var y=function(){function S(N,B){for(var R=0;R2&&arguments[2]!==void 0?arguments[2]:1,j=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,$=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;b(this,S),this.sequence1=N,this.sequence2=B,this.match_score=R,this.mismatch_penalty=j,this.gap_penalty=$,this.iMax=N.length+1,this.jMax=B.length+1,this.grid=new Array(this.iMax);for(var V=0;V=0;N--){var B=this.listeners[N];B.event===E&&B.callback===S&&this.listeners.splice(N,1)}},b.emit=function(E,S){for(var N=0;NB.coolingFactor*B.maxNodeDisplacement&&(this.displacementX=B.coolingFactor*B.maxNodeDisplacement*E.sign(this.displacementX)),Math.abs(this.displacementY)>B.coolingFactor*B.maxNodeDisplacement&&(this.displacementY=B.coolingFactor*B.maxNodeDisplacement*E.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),B.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},S.prototype.propogateDisplacementToChildren=function(B,R){for(var j=this.getChild().getNodes(),$,V=0;V0)this.positionNodesRadially(de);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var ve=new Set(this.getAllNodes()),te=this.nodesWithGravity.filter(function(xe){return ve.has(xe)});this.graphManager.setAllNodesToApplyGravitation(te),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},ke.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%j.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var de=new Set(this.getAllNodes()),ve=this.nodesWithGravity.filter(function(De){return de.has(De)});this.graphManager.setAllNodesToApplyGravitation(ve),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=j.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=j.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var te=!this.isTreeGrowing&&!this.isGrowthFinished,xe=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(te,xe),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},ke.prototype.getPositionsData=function(){for(var de=this.graphManager.getAllNodes(),ve={},te=0;te1){var ee;for(ee=0;eexe&&(xe=Math.floor(Ie.y)),he=Math.floor(Ie.x+R.DEFAULT_COMPONENT_SEPERATION)}this.transform(new Q($.WORLD_CENTER_X-Ie.x/2,$.WORLD_CENTER_Y-Ie.y/2))},ke.radialLayout=function(de,ve,te){var xe=Math.max(this.maxDiagonalInTree(de),R.DEFAULT_RADIAL_SEPARATION);ke.branchRadialLayout(ve,null,0,359,0,xe);var De=ge.calculateBounds(de),he=new ye;he.setDeviceOrgX(De.getMinX()),he.setDeviceOrgY(De.getMinY()),he.setWorldOrgX(te.x),he.setWorldOrgY(te.y);for(var Ie=0;Ie1;){var cn=Bt[0];Bt.splice(0,1);var Nn=pe.indexOf(cn);Nn>=0&&pe.splice(Nn,1),jt--,Et--}ve!=null?At=(pe.indexOf(Bt[0])+1)%jt:At=0;for(var Ot=Math.abs(xe-te)/Et,oi=At;wt!=Et;oi=++oi%jt){var kt=pe[oi].getOtherEnd(de);if(kt!=ve){var Dt=(te+wt*Ot)%360,vt=(Dt+Ot)%360;ke.branchRadialLayout(kt,de,Dt,vt,De+he,he),wt++}}},ke.maxDiagonalInTree=function(de){for(var ve=ce.MIN_VALUE,te=0;teve&&(ve=De)}return ve},ke.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},ke.prototype.groupZeroDegreeMembers=function(){var de=this,ve={};this.memberGroups={},this.idToDummyNode={};for(var te=[],xe=this.graphManager.getAllNodes(),De=0;De"u"&&(ve[ee]=[]),ve[ee]=ve[ee].concat(he)}Object.keys(ve).forEach(function(rt){if(ve[rt].length>1){var me="DummyCompound_"+rt;de.memberGroups[me]=ve[rt];var gt=ve[rt][0].getParent(),pe=new N(de.graphManager);pe.id=me,pe.paddingLeft=gt.paddingLeft||0,pe.paddingRight=gt.paddingRight||0,pe.paddingBottom=gt.paddingBottom||0,pe.paddingTop=gt.paddingTop||0,de.idToDummyNode[me]=pe;var Et=de.getGraphManager().add(de.newGraph(),pe),wt=gt.getChild();wt.add(pe);for(var jt=0;jt=0;de--){var ve=this.compoundOrder[de],te=ve.id,xe=ve.paddingLeft,De=ve.paddingTop;this.adjustLocations(this.tiledMemberPack[te],ve.rect.x,ve.rect.y,xe,De)}},ke.prototype.repopulateZeroDegreeMembers=function(){var de=this,ve=this.tiledZeroDegreePack;Object.keys(ve).forEach(function(te){var xe=de.idToDummyNode[te],De=xe.paddingLeft,he=xe.paddingTop;de.adjustLocations(ve[te],xe.rect.x,xe.rect.y,De,he)})},ke.prototype.getToBeTiled=function(de){var ve=de.id;if(this.toBeTiled[ve]!=null)return this.toBeTiled[ve];var te=de.getChild();if(te==null)return this.toBeTiled[ve]=!1,!1;for(var xe=te.getNodes(),De=0;De0)return this.toBeTiled[ve]=!1,!1;if(he.getChild()==null){this.toBeTiled[he.id]=!1;continue}if(!this.getToBeTiled(he))return this.toBeTiled[ve]=!1,!1}return this.toBeTiled[ve]=!0,!0},ke.prototype.getNodeDegree=function(de){de.id;for(var ve=de.getEdges(),te=0,xe=0;xert&&(rt=gt.rect.height)}te+=rt+de.verticalPadding}},ke.prototype.tileCompoundMembers=function(de,ve){var te=this;this.tiledMemberPack=[],Object.keys(de).forEach(function(xe){var De=ve[xe];te.tiledMemberPack[xe]=te.tileNodes(de[xe],De.paddingLeft+De.paddingRight),De.rect.width=te.tiledMemberPack[xe].width,De.rect.height=te.tiledMemberPack[xe].height})},ke.prototype.tileNodes=function(de,ve){var te=R.TILING_PADDING_VERTICAL,xe=R.TILING_PADDING_HORIZONTAL,De={rows:[],rowWidth:[],rowHeight:[],width:0,height:ve,verticalPadding:te,horizontalPadding:xe};de.sort(function(ee,rt){return ee.rect.width*ee.rect.height>rt.rect.width*rt.rect.height?-1:ee.rect.width*ee.rect.height0&&(Ie+=de.horizontalPadding),de.rowWidth[te]=Ie,de.width0&&(ee+=de.verticalPadding);var rt=0;ee>de.rowHeight[te]&&(rt=de.rowHeight[te],de.rowHeight[te]=ee,rt=de.rowHeight[te]-rt),de.height+=rt,de.rows[te].push(ve)},ke.prototype.getShortestRowIndex=function(de){for(var ve=-1,te=Number.MAX_VALUE,xe=0;xete&&(ve=xe,te=de.rowWidth[xe]);return ve},ke.prototype.canAddHorizontal=function(de,ve,te){var xe=this.getShortestRowIndex(de);if(xe<0)return!0;var De=de.rowWidth[xe];if(De+de.horizontalPadding+ve<=de.width)return!0;var he=0;de.rowHeight[xe]0&&(he=te+de.verticalPadding-de.rowHeight[xe]);var Ie;de.width-De>=ve+de.horizontalPadding?Ie=(de.height+he)/(De+ve+de.horizontalPadding):Ie=(de.height+he)/de.width,he=te+de.verticalPadding;var ee;return de.widthhe&&ve!=te){xe.splice(-1,1),de.rows[te].push(De),de.rowWidth[ve]=de.rowWidth[ve]-he,de.rowWidth[te]=de.rowWidth[te]+he,de.width=de.rowWidth[instance.getLongestRowIndex(de)];for(var Ie=Number.MIN_VALUE,ee=0;eeIe&&(Ie=xe[ee].height);ve>0&&(Ie+=de.verticalPadding);var rt=de.rowHeight[ve]+de.rowHeight[te];de.rowHeight[ve]=Ie,de.rowHeight[te]0)for(var wt=De;wt<=he;wt++)Et[0]+=this.grid[wt][Ie-1].length+this.grid[wt][Ie].length-1;if(he0)for(var wt=Ie;wt<=ee;wt++)Et[3]+=this.grid[De-1][wt].length+this.grid[De][wt].length-1;for(var jt=ce.MAX_VALUE,At,Bt,cn=0;cn0){var ee;ee=ye.getGraphManager().add(ye.newGraph(),te),this.processChildrenList(ee,ve,ye)}}},Q.prototype.stop=function(){return this.stopped=!0,this};var ce=function(ge){ge("layout","cose-bilkent",Q)};typeof cytoscape<"u"&&ce(cytoscape),p.exports=ce}])})})(qqt);const Yqt=xLe(Fge);dje.use(Yqt);function bje(i,a,f,p){fje.drawNode(i,a,f,p),a.children&&a.children.forEach((w,y)=>{bje(i,w,f<0?y:f,p)})}function Xqt(i,a){a.edges().map((f,p)=>{const w=f.data();if(f[0]._private.bodyBounds){const y=f[0]._private.rscratch;Fe.trace("Edge: ",p,w),i.insert("path").attr("d",`M ${y.startX},${y.startY} L ${y.midX},${y.midY} L${y.endX},${y.endY} `).attr("class","edge section-edge-"+w.section+" edge-depth-"+w.depth)}})}function vje(i,a,f,p){a.add({group:"nodes",data:{id:i.id,labelText:i.descr,height:i.height,width:i.width,level:p,nodeId:i.id,padding:i.padding,type:i.type},position:{x:i.x,y:i.y}}),i.children&&i.children.forEach(w=>{vje(w,a,f,p+1),a.add({group:"edges",data:{id:`${i.id}_${w.id}`,source:i.id,target:w.id,depth:p,section:w.section}})})}function Qqt(i,a){return new Promise(f=>{const p=Cr("body").append("div").attr("id","cy").attr("style","display:none"),w=dje({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});p.remove(),vje(i,w,a,0),w.nodes().forEach(function(y){y.layoutDimensions=()=>{const b=y.data();return{w:b.width,h:b.height}}}),w.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),w.ready(y=>{Fe.info("Ready",y),f(w)})})}function Zqt(i){i.nodes().map((a,f)=>{const p=a.data();p.x=a.position().x,p.y=a.position().y,fje.positionNode(p);const w=Bge(p.nodeId);Fe.info("Id:",f,"Position: (",a.position().x,", ",a.position().y,")",p),w.attr("transform",`translate(${a.position().x-p.width/2}, ${a.position().y-p.height/2})`),w.attr("attr",`apa-${f})`)})}const Jqt={draw:async(i,a,f,p)=>{const w=Tt();w.htmlLabels=!1,p.db.clear(),p.parser.parse(i),Fe.debug(`Rendering mindmap diagram +`+i,p.parser);const y=Tt().securityLevel;let b;y==="sandbox"&&(b=Cr("#i"+a));const S=Cr(y==="sandbox"?b.nodes()[0].contentDocument.body:"body").select("#"+a);S.append("g");const N=p.db.getMindmap(),B=S.append("g");B.attr("class","mindmap-edges");const R=S.append("g");R.attr("class","mindmap-nodes"),bje(R,N,-1,w);const j=await Qqt(N,w);Xqt(B,j),Zqt(j),YE(void 0,S,w.mindmap.padding,w.mindmap.useMaxWidth)}},eVt=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${eVt(i)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`}},Symbol.toStringTag,{value:"Module"}));return O2}); diff --git a/_versioned/0_8_5/site_libs/quarto-html/anchor.min.js b/_versioned/0_8_5/site_libs/quarto-html/anchor.min.js new file mode 100644 index 00000000..5ac814d1 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-html/anchor.min.js @@ -0,0 +1,9 @@ +// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat +// +// AnchorJS - v5.0.0 - 2023-01-18 +// https://www.bryanbraun.com/anchorjs/ +// Copyright (c) 2023 Bryan Braun; Licensed MIT +// +// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat +!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(globalThis,function(){"use strict";return function(A){function u(A){A.icon=Object.prototype.hasOwnProperty.call(A,"icon")?A.icon:"",A.visible=Object.prototype.hasOwnProperty.call(A,"visible")?A.visible:"hover",A.placement=Object.prototype.hasOwnProperty.call(A,"placement")?A.placement:"right",A.ariaLabel=Object.prototype.hasOwnProperty.call(A,"ariaLabel")?A.ariaLabel:"Anchor",A.class=Object.prototype.hasOwnProperty.call(A,"class")?A.class:"",A.base=Object.prototype.hasOwnProperty.call(A,"base")?A.base:"",A.truncate=Object.prototype.hasOwnProperty.call(A,"truncate")?Math.floor(A.truncate):64,A.titleText=Object.prototype.hasOwnProperty.call(A,"titleText")?A.titleText:""}function d(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new TypeError("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],u(this.options),this.add=function(A){var e,t,o,i,n,s,a,r,l,c,h,p=[];if(u(this.options),0!==(e=d(A=A||"h2, h3, h4, h5, h6")).length){for(null===document.head.querySelector("style.anchorjs")&&((A=document.createElement("style")).className="anchorjs",A.appendChild(document.createTextNode("")),void 0===(h=document.head.querySelector('[rel="stylesheet"],style'))?document.head.appendChild(A):document.head.insertBefore(A,h),A.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",A.sheet.cssRules.length),A.sheet.insertRule(":hover>.anchorjs-link,.anchorjs-link:focus{opacity:1}",A.sheet.cssRules.length),A.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",A.sheet.cssRules.length),A.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',A.sheet.cssRules.length)),h=document.querySelectorAll("[id]"),t=[].map.call(h,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); +// @license-end \ No newline at end of file diff --git a/_versioned/0_8_5/site_libs/quarto-html/popper.min.js b/_versioned/0_8_5/site_libs/quarto-html/popper.min.js new file mode 100644 index 00000000..e3726d72 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-html/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.11.7 - MIT License + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},F=h?3:1;F>0;F--){if("break"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N="y"===j?D:P,I="y"===j?A:L,_="y"===j?"height":"width",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=w===W?B[_]:H[_],Q=w===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/_versioned/0_8_5/site_libs/quarto-html/quarto-syntax-highlighting.css b/_versioned/0_8_5/site_libs/quarto-html/quarto-syntax-highlighting.css new file mode 100644 index 00000000..d9fd98f0 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-html/quarto-syntax-highlighting.css @@ -0,0 +1,203 @@ +/* quarto syntax highlight colors */ +:root { + --quarto-hl-ot-color: #003B4F; + --quarto-hl-at-color: #657422; + --quarto-hl-ss-color: #20794D; + --quarto-hl-an-color: #5E5E5E; + --quarto-hl-fu-color: #4758AB; + --quarto-hl-st-color: #20794D; + --quarto-hl-cf-color: #003B4F; + --quarto-hl-op-color: #5E5E5E; + --quarto-hl-er-color: #AD0000; + --quarto-hl-bn-color: #AD0000; + --quarto-hl-al-color: #AD0000; + --quarto-hl-va-color: #111111; + --quarto-hl-bu-color: inherit; + --quarto-hl-ex-color: inherit; + --quarto-hl-pp-color: #AD0000; + --quarto-hl-in-color: #5E5E5E; + --quarto-hl-vs-color: #20794D; + --quarto-hl-wa-color: #5E5E5E; + --quarto-hl-do-color: #5E5E5E; + --quarto-hl-im-color: #00769E; + --quarto-hl-ch-color: #20794D; + --quarto-hl-dt-color: #AD0000; + --quarto-hl-fl-color: #AD0000; + --quarto-hl-co-color: #5E5E5E; + --quarto-hl-cv-color: #5E5E5E; + --quarto-hl-cn-color: #8f5902; + --quarto-hl-sc-color: #5E5E5E; + --quarto-hl-dv-color: #AD0000; + --quarto-hl-kw-color: #003B4F; +} + +/* other quarto variables */ +:root { + --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +pre > code.sourceCode > span { + color: #003B4F; +} + +code span { + color: #003B4F; +} + +code.sourceCode > span { + color: #003B4F; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #003B4F; +} + +code span.ot { + color: #003B4F; + font-style: inherit; +} + +code span.at { + color: #657422; + font-style: inherit; +} + +code span.ss { + color: #20794D; + font-style: inherit; +} + +code span.an { + color: #5E5E5E; + font-style: inherit; +} + +code span.fu { + color: #4758AB; + font-style: inherit; +} + +code span.st { + color: #20794D; + font-style: inherit; +} + +code span.cf { + color: #003B4F; + font-style: inherit; +} + +code span.op { + color: #5E5E5E; + font-style: inherit; +} + +code span.er { + color: #AD0000; + font-style: inherit; +} + +code span.bn { + color: #AD0000; + font-style: inherit; +} + +code span.al { + color: #AD0000; + font-style: inherit; +} + +code span.va { + color: #111111; + font-style: inherit; +} + +code span.bu { + font-style: inherit; +} + +code span.ex { + font-style: inherit; +} + +code span.pp { + color: #AD0000; + font-style: inherit; +} + +code span.in { + color: #5E5E5E; + font-style: inherit; +} + +code span.vs { + color: #20794D; + font-style: inherit; +} + +code span.wa { + color: #5E5E5E; + font-style: italic; +} + +code span.do { + color: #5E5E5E; + font-style: italic; +} + +code span.im { + color: #00769E; + font-style: inherit; +} + +code span.ch { + color: #20794D; + font-style: inherit; +} + +code span.dt { + color: #AD0000; + font-style: inherit; +} + +code span.fl { + color: #AD0000; + font-style: inherit; +} + +code span.co { + color: #5E5E5E; + font-style: inherit; +} + +code span.cv { + color: #5E5E5E; + font-style: italic; +} + +code span.cn { + color: #8f5902; + font-style: inherit; +} + +code span.sc { + color: #5E5E5E; + font-style: inherit; +} + +code span.dv { + color: #AD0000; + font-style: inherit; +} + +code span.kw { + color: #003B4F; + font-style: inherit; +} + +.prevent-inlining { + content: " { + // Find any conflicting margin elements and add margins to the + // top to prevent overlap + const marginChildren = window.document.querySelectorAll( + ".column-margin.column-container > *, .margin-caption, .aside" + ); + + let lastBottom = 0; + for (const marginChild of marginChildren) { + if (marginChild.offsetParent !== null) { + // clear the top margin so we recompute it + marginChild.style.marginTop = null; + const top = marginChild.getBoundingClientRect().top + window.scrollY; + if (top < lastBottom) { + const marginChildStyle = window.getComputedStyle(marginChild); + const marginBottom = parseFloat(marginChildStyle["marginBottom"]); + const margin = lastBottom - top + marginBottom; + marginChild.style.marginTop = `${margin}px`; + } + const styles = window.getComputedStyle(marginChild); + const marginTop = parseFloat(styles["marginTop"]); + lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; + } + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Recompute the position of margin elements anytime the body size changes + if (window.ResizeObserver) { + const resizeObserver = new window.ResizeObserver( + throttle(() => { + layoutMarginEls(); + if ( + window.document.body.getBoundingClientRect().width < 990 && + isReaderMode() + ) { + quartoToggleReader(); + } + }, 50) + ); + resizeObserver.observe(window.document.body); + } + + const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); + const sidebarEl = window.document.getElementById("quarto-sidebar"); + const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); + const marginSidebarEl = window.document.getElementById( + "quarto-margin-sidebar" + ); + // function to determine whether the element has a previous sibling that is active + const prevSiblingIsActiveLink = (el) => { + const sibling = el.previousElementSibling; + if (sibling && sibling.tagName === "A") { + return sibling.classList.contains("active"); + } else { + return false; + } + }; + + // fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior) + function fireSlideEnter(e) { + const event = window.document.createEvent("Event"); + event.initEvent("slideenter", true, true); + window.document.dispatchEvent(event); + } + const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); + tabs.forEach((tab) => { + tab.addEventListener("shown.bs.tab", fireSlideEnter); + }); + + // fire slideEnter for tabby tab activations (for htmlwidget resize behavior) + document.addEventListener("tabby", fireSlideEnter, false); + + // Track scrolling and mark TOC links as active + // get table of contents and sidebar (bail if we don't have at least one) + const tocLinks = tocEl + ? [...tocEl.querySelectorAll("a[data-scroll-target]")] + : []; + const makeActive = (link) => tocLinks[link].classList.add("active"); + const removeActive = (link) => tocLinks[link].classList.remove("active"); + const removeAllActive = () => + [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); + + // activate the anchor for a section associated with this TOC entry + tocLinks.forEach((link) => { + link.addEventListener("click", () => { + if (link.href.indexOf("#") !== -1) { + const anchor = link.href.split("#")[1]; + const heading = window.document.querySelector( + `[data-anchor-id=${anchor}]` + ); + if (heading) { + // Add the class + heading.classList.add("reveal-anchorjs-link"); + + // function to show the anchor + const handleMouseout = () => { + heading.classList.remove("reveal-anchorjs-link"); + heading.removeEventListener("mouseout", handleMouseout); + }; + + // add a function to clear the anchor when the user mouses out of it + heading.addEventListener("mouseout", handleMouseout); + } + } + }); + }); + + const sections = tocLinks.map((link) => { + const target = link.getAttribute("data-scroll-target"); + if (target.startsWith("#")) { + return window.document.getElementById(decodeURI(`${target.slice(1)}`)); + } else { + return window.document.querySelector(decodeURI(`${target}`)); + } + }); + + const sectionMargin = 200; + let currentActive = 0; + // track whether we've initialized state the first time + let init = false; + + const updateActiveLink = () => { + // The index from bottom to top (e.g. reversed list) + let sectionIndex = -1; + if ( + window.innerHeight + window.pageYOffset >= + window.document.body.offsetHeight + ) { + sectionIndex = 0; + } else { + sectionIndex = [...sections].reverse().findIndex((section) => { + if (section) { + return window.pageYOffset >= section.offsetTop - sectionMargin; + } else { + return false; + } + }); + } + if (sectionIndex > -1) { + const current = sections.length - sectionIndex - 1; + if (current !== currentActive) { + removeAllActive(); + currentActive = current; + makeActive(current); + if (init) { + window.dispatchEvent(sectionChanged); + } + init = true; + } + } + }; + + const inHiddenRegion = (top, bottom, hiddenRegions) => { + for (const region of hiddenRegions) { + if (top <= region.bottom && bottom >= region.top) { + return true; + } + } + return false; + }; + + const categorySelector = "header.quarto-title-block .quarto-category"; + const activateCategories = (href) => { + // Find any categories + // Surround them with a link pointing back to: + // #category=Authoring + try { + const categoryEls = window.document.querySelectorAll(categorySelector); + for (const categoryEl of categoryEls) { + const categoryText = categoryEl.textContent; + if (categoryText) { + const link = `${href}#category=${encodeURIComponent(categoryText)}`; + const linkEl = window.document.createElement("a"); + linkEl.setAttribute("href", link); + for (const child of categoryEl.childNodes) { + linkEl.append(child); + } + categoryEl.appendChild(linkEl); + } + } + } catch { + // Ignore errors + } + }; + function hasTitleCategories() { + return window.document.querySelector(categorySelector) !== null; + } + + function offsetRelativeUrl(url) { + const offset = getMeta("quarto:offset"); + return offset ? offset + url : url; + } + + function offsetAbsoluteUrl(url) { + const offset = getMeta("quarto:offset"); + const baseUrl = new URL(offset, window.location); + + const projRelativeUrl = url.replace(baseUrl, ""); + if (projRelativeUrl.startsWith("/")) { + return projRelativeUrl; + } else { + return "/" + projRelativeUrl; + } + } + + // read a meta tag value + function getMeta(metaName) { + const metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; + } + + async function findAndActivateCategories() { + const currentPagePath = offsetAbsoluteUrl(window.location.href); + const response = await fetch(offsetRelativeUrl("listings.json")); + if (response.status == 200) { + return response.json().then(function (listingPaths) { + const listingHrefs = []; + for (const listingPath of listingPaths) { + const pathWithoutLeadingSlash = listingPath.listing.substring(1); + for (const item of listingPath.items) { + if ( + item === currentPagePath || + item === currentPagePath + "index.html" + ) { + // Resolve this path against the offset to be sure + // we already are using the correct path to the listing + // (this adjusts the listing urls to be rooted against + // whatever root the page is actually running against) + const relative = offsetRelativeUrl(pathWithoutLeadingSlash); + const baseUrl = window.location; + const resolvedPath = new URL(relative, baseUrl); + listingHrefs.push(resolvedPath.pathname); + break; + } + } + } + + // Look up the tree for a nearby linting and use that if we find one + const nearestListing = findNearestParentListing( + offsetAbsoluteUrl(window.location.pathname), + listingHrefs + ); + if (nearestListing) { + activateCategories(nearestListing); + } else { + // See if the referrer is a listing page for this item + const referredRelativePath = offsetAbsoluteUrl(document.referrer); + const referrerListing = listingHrefs.find((listingHref) => { + const isListingReferrer = + listingHref === referredRelativePath || + listingHref === referredRelativePath + "index.html"; + return isListingReferrer; + }); + + if (referrerListing) { + // Try to use the referrer if possible + activateCategories(referrerListing); + } else if (listingHrefs.length > 0) { + // Otherwise, just fall back to the first listing + activateCategories(listingHrefs[0]); + } + } + }); + } + } + if (hasTitleCategories()) { + findAndActivateCategories(); + } + + const findNearestParentListing = (href, listingHrefs) => { + if (!href || !listingHrefs) { + return undefined; + } + // Look up the tree for a nearby linting and use that if we find one + const relativeParts = href.substring(1).split("/"); + while (relativeParts.length > 0) { + const path = relativeParts.join("/"); + for (const listingHref of listingHrefs) { + if (listingHref.startsWith(path)) { + return listingHref; + } + } + relativeParts.pop(); + } + + return undefined; + }; + + const manageSidebarVisiblity = (el, placeholderDescriptor) => { + let isVisible = true; + let elRect; + + return (hiddenRegions) => { + if (el === null) { + return; + } + + // Find the last element of the TOC + const lastChildEl = el.lastElementChild; + + if (lastChildEl) { + // Converts the sidebar to a menu + const convertToMenu = () => { + for (const child of el.children) { + child.style.opacity = 0; + child.style.overflow = "hidden"; + } + + nexttick(() => { + const toggleContainer = window.document.createElement("div"); + toggleContainer.style.width = "100%"; + toggleContainer.classList.add("zindex-over-content"); + toggleContainer.classList.add("quarto-sidebar-toggle"); + toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom + toggleContainer.id = placeholderDescriptor.id; + toggleContainer.style.position = "fixed"; + + const toggleIcon = window.document.createElement("i"); + toggleIcon.classList.add("quarto-sidebar-toggle-icon"); + toggleIcon.classList.add("bi"); + toggleIcon.classList.add("bi-caret-down-fill"); + + const toggleTitle = window.document.createElement("div"); + const titleEl = window.document.body.querySelector( + placeholderDescriptor.titleSelector + ); + if (titleEl) { + toggleTitle.append( + titleEl.textContent || titleEl.innerText, + toggleIcon + ); + } + toggleTitle.classList.add("zindex-over-content"); + toggleTitle.classList.add("quarto-sidebar-toggle-title"); + toggleContainer.append(toggleTitle); + + const toggleContents = window.document.createElement("div"); + toggleContents.classList = el.classList; + toggleContents.classList.add("zindex-over-content"); + toggleContents.classList.add("quarto-sidebar-toggle-contents"); + for (const child of el.children) { + if (child.id === "toc-title") { + continue; + } + + const clone = child.cloneNode(true); + clone.style.opacity = 1; + clone.style.display = null; + toggleContents.append(clone); + } + toggleContents.style.height = "0px"; + const positionToggle = () => { + // position the element (top left of parent, same width as parent) + if (!elRect) { + elRect = el.getBoundingClientRect(); + } + toggleContainer.style.left = `${elRect.left}px`; + toggleContainer.style.top = `${elRect.top}px`; + toggleContainer.style.width = `${elRect.width}px`; + }; + positionToggle(); + + toggleContainer.append(toggleContents); + el.parentElement.prepend(toggleContainer); + + // Process clicks + let tocShowing = false; + // Allow the caller to control whether this is dismissed + // when it is clicked (e.g. sidebar navigation supports + // opening and closing the nav tree, so don't dismiss on click) + const clickEl = placeholderDescriptor.dismissOnClick + ? toggleContainer + : toggleTitle; + + const closeToggle = () => { + if (tocShowing) { + toggleContainer.classList.remove("expanded"); + toggleContents.style.height = "0px"; + tocShowing = false; + } + }; + + // Get rid of any expanded toggle if the user scrolls + window.document.addEventListener( + "scroll", + throttle(() => { + closeToggle(); + }, 50) + ); + + // Handle positioning of the toggle + window.addEventListener( + "resize", + throttle(() => { + elRect = undefined; + positionToggle(); + }, 50) + ); + + window.addEventListener("quarto-hrChanged", () => { + elRect = undefined; + }); + + // Process the click + clickEl.onclick = () => { + if (!tocShowing) { + toggleContainer.classList.add("expanded"); + toggleContents.style.height = null; + tocShowing = true; + } else { + closeToggle(); + } + }; + }); + }; + + // Converts a sidebar from a menu back to a sidebar + const convertToSidebar = () => { + for (const child of el.children) { + child.style.opacity = 1; + child.style.overflow = null; + } + + const placeholderEl = window.document.getElementById( + placeholderDescriptor.id + ); + if (placeholderEl) { + placeholderEl.remove(); + } + + el.classList.remove("rollup"); + }; + + if (isReaderMode()) { + convertToMenu(); + isVisible = false; + } else { + // Find the top and bottom o the element that is being managed + const elTop = el.offsetTop; + const elBottom = + elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; + + if (!isVisible) { + // If the element is current not visible reveal if there are + // no conflicts with overlay regions + if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToSidebar(); + isVisible = true; + } + } else { + // If the element is visible, hide it if it conflicts with overlay regions + // and insert a placeholder toggle (or if we're in reader mode) + if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToMenu(); + isVisible = false; + } + } + } + } + }; + }; + + const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); + for (const tabEl of tabEls) { + const id = tabEl.getAttribute("data-bs-target"); + if (id) { + const columnEl = document.querySelector( + `${id} .column-margin, .tabset-margin-content` + ); + if (columnEl) + tabEl.addEventListener("shown.bs.tab", function (event) { + const el = event.srcElement; + if (el) { + const visibleCls = `${el.id}-margin-content`; + // walk up until we find a parent tabset + let panelTabsetEl = el.parentElement; + while (panelTabsetEl) { + if (panelTabsetEl.classList.contains("panel-tabset")) { + break; + } + panelTabsetEl = panelTabsetEl.parentElement; + } + + if (panelTabsetEl) { + const prevSib = panelTabsetEl.previousElementSibling; + if ( + prevSib && + prevSib.classList.contains("tabset-margin-container") + ) { + const childNodes = prevSib.querySelectorAll( + ".tabset-margin-content" + ); + for (const childEl of childNodes) { + if (childEl.classList.contains(visibleCls)) { + childEl.classList.remove("collapse"); + } else { + childEl.classList.add("collapse"); + } + } + } + } + } + + layoutMarginEls(); + }); + } + } + + // Manage the visibility of the toc and the sidebar + const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { + id: "quarto-toc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { + id: "quarto-sidebarnav-toggle", + titleSelector: ".title", + dismissOnClick: false, + }); + let tocLeftScrollVisibility; + if (leftTocEl) { + tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { + id: "quarto-lefttoc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + } + + // Find the first element that uses formatting in special columns + const conflictingEls = window.document.body.querySelectorAll( + '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' + ); + + // Filter all the possibly conflicting elements into ones + // the do conflict on the left or ride side + const arrConflictingEls = Array.from(conflictingEls); + const leftSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return false; + } + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + className.startsWith("column-") && + !className.endsWith("right") && + !className.endsWith("container") && + className !== "column-margin" + ); + }); + }); + const rightSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return true; + } + + const hasMarginCaption = Array.from(el.classList).find((className) => { + return className == "margin-caption"; + }); + if (hasMarginCaption) { + return true; + } + + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + !className.endsWith("container") && + className.startsWith("column-") && + !className.endsWith("left") + ); + }); + }); + + const kOverlapPaddingSize = 10; + function toRegions(els) { + return els.map((el) => { + const boundRect = el.getBoundingClientRect(); + const top = + boundRect.top + + document.documentElement.scrollTop - + kOverlapPaddingSize; + return { + top, + bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, + }; + }); + } + + let hasObserved = false; + const visibleItemObserver = (els) => { + let visibleElements = [...els]; + const intersectionObserver = new IntersectionObserver( + (entries, _observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + if (visibleElements.indexOf(entry.target) === -1) { + visibleElements.push(entry.target); + } + } else { + visibleElements = visibleElements.filter((visibleEntry) => { + return visibleEntry !== entry; + }); + } + }); + + if (!hasObserved) { + hideOverlappedSidebars(); + } + hasObserved = true; + }, + {} + ); + els.forEach((el) => { + intersectionObserver.observe(el); + }); + + return { + getVisibleEntries: () => { + return visibleElements; + }, + }; + }; + + const rightElementObserver = visibleItemObserver(rightSideConflictEls); + const leftElementObserver = visibleItemObserver(leftSideConflictEls); + + const hideOverlappedSidebars = () => { + marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); + sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); + if (tocLeftScrollVisibility) { + tocLeftScrollVisibility( + toRegions(leftElementObserver.getVisibleEntries()) + ); + } + }; + + window.quartoToggleReader = () => { + // Applies a slow class (or removes it) + // to update the transition speed + const slowTransition = (slow) => { + const manageTransition = (id, slow) => { + const el = document.getElementById(id); + if (el) { + if (slow) { + el.classList.add("slow"); + } else { + el.classList.remove("slow"); + } + } + }; + + manageTransition("TOC", slow); + manageTransition("quarto-sidebar", slow); + }; + const readerMode = !isReaderMode(); + setReaderModeValue(readerMode); + + // If we're entering reader mode, slow the transition + if (readerMode) { + slowTransition(readerMode); + } + highlightReaderToggle(readerMode); + hideOverlappedSidebars(); + + // If we're exiting reader mode, restore the non-slow transition + if (!readerMode) { + slowTransition(!readerMode); + } + }; + + const highlightReaderToggle = (readerMode) => { + const els = document.querySelectorAll(".quarto-reader-toggle"); + if (els) { + els.forEach((el) => { + if (readerMode) { + el.classList.add("reader"); + } else { + el.classList.remove("reader"); + } + }); + } + }; + + const setReaderModeValue = (val) => { + if (window.location.protocol !== "file:") { + window.localStorage.setItem("quarto-reader-mode", val); + } else { + localReaderMode = val; + } + }; + + const isReaderMode = () => { + if (window.location.protocol !== "file:") { + return window.localStorage.getItem("quarto-reader-mode") === "true"; + } else { + return localReaderMode; + } + }; + let localReaderMode = null; + + const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); + const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; + + // Walk the TOC and collapse/expand nodes + // Nodes are expanded if: + // - they are top level + // - they have children that are 'active' links + // - they are directly below an link that is 'active' + const walk = (el, depth) => { + // Tick depth when we enter a UL + if (el.tagName === "UL") { + depth = depth + 1; + } + + // It this is active link + let isActiveNode = false; + if (el.tagName === "A" && el.classList.contains("active")) { + isActiveNode = true; + } + + // See if there is an active child to this element + let hasActiveChild = false; + for (child of el.children) { + hasActiveChild = walk(child, depth) || hasActiveChild; + } + + // Process the collapse state if this is an UL + if (el.tagName === "UL") { + if (tocOpenDepth === -1 && depth > 1) { + el.classList.add("collapse"); + } else if ( + depth <= tocOpenDepth || + hasActiveChild || + prevSiblingIsActiveLink(el) + ) { + el.classList.remove("collapse"); + } else { + el.classList.add("collapse"); + } + + // untick depth when we leave a UL + depth = depth - 1; + } + return hasActiveChild || isActiveNode; + }; + + // walk the TOC and expand / collapse any items that should be shown + + if (tocEl) { + walk(tocEl, 0); + updateActiveLink(); + } + + // Throttle the scroll event and walk peridiocally + window.document.addEventListener( + "scroll", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 5) + ); + window.addEventListener( + "resize", + throttle(() => { + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 10) + ); + hideOverlappedSidebars(); + highlightReaderToggle(isReaderMode()); +}); + +// grouped tabsets +window.addEventListener("pageshow", (_event) => { + function getTabSettings() { + const data = localStorage.getItem("quarto-persistent-tabsets-data"); + if (!data) { + localStorage.setItem("quarto-persistent-tabsets-data", "{}"); + return {}; + } + if (data) { + return JSON.parse(data); + } + } + + function setTabSettings(data) { + localStorage.setItem( + "quarto-persistent-tabsets-data", + JSON.stringify(data) + ); + } + + function setTabState(groupName, groupValue) { + const data = getTabSettings(); + data[groupName] = groupValue; + setTabSettings(data); + } + + function toggleTab(tab, active) { + const tabPanelId = tab.getAttribute("aria-controls"); + const tabPanel = document.getElementById(tabPanelId); + if (active) { + tab.classList.add("active"); + tabPanel.classList.add("active"); + } else { + tab.classList.remove("active"); + tabPanel.classList.remove("active"); + } + } + + function toggleAll(selectedGroup, selectorsToSync) { + for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { + const active = selectedGroup === thisGroup; + for (const tab of tabs) { + toggleTab(tab, active); + } + } + } + + function findSelectorsToSyncByLanguage() { + const result = {}; + const tabs = Array.from( + document.querySelectorAll(`div[data-group] a[id^='tabset-']`) + ); + for (const item of tabs) { + const div = item.parentElement.parentElement.parentElement; + const group = div.getAttribute("data-group"); + if (!result[group]) { + result[group] = {}; + } + const selectorsToSync = result[group]; + const value = item.innerHTML; + if (!selectorsToSync[value]) { + selectorsToSync[value] = []; + } + selectorsToSync[value].push(item); + } + return result; + } + + function setupSelectorSync() { + const selectorsToSync = findSelectorsToSyncByLanguage(); + Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { + Object.entries(tabSetsByValue).forEach(([value, items]) => { + items.forEach((item) => { + item.addEventListener("click", (_event) => { + setTabState(group, value); + toggleAll(value, selectorsToSync[group]); + }); + }); + }); + }); + return selectorsToSync; + } + + const selectorsToSync = setupSelectorSync(); + for (const [group, selectedName] of Object.entries(getTabSettings())) { + const selectors = selectorsToSync[group]; + // it's possible that stale state gives us empty selections, so we explicitly check here. + if (selectors) { + toggleAll(selectedName, selectors); + } + } +}); + +function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; +} + +function nexttick(func) { + return setTimeout(func, 0); +} diff --git a/_versioned/0_8_5/site_libs/quarto-html/tippy.css b/_versioned/0_8_5/site_libs/quarto-html/tippy.css new file mode 100644 index 00000000..e6ae635c --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-html/tippy.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/_versioned/0_8_5/site_libs/quarto-html/tippy.umd.min.js b/_versioned/0_8_5/site_libs/quarto-html/tippy.umd.min.js new file mode 100644 index 00000000..ca292be3 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-html/tippy.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); + diff --git a/_versioned/0_8_5/site_libs/quarto-listing/list.min.js b/_versioned/0_8_5/site_libs/quarto-listing/list.min.js new file mode 100644 index 00000000..81318815 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-listing/list.min.js @@ -0,0 +1,2 @@ +var List;List=function(){var t={"./src/add-async.js":function(t){t.exports=function(t){return function e(r,n,s){var i=r.splice(0,50);s=(s=s||[]).concat(t.add(i)),r.length>0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"
  • ",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s { + if (categoriesLoaded) { + activateCategory(category); + setCategoryHash(category); + } +}; + +window["quarto-listing-loaded"] = () => { + // Process any existing hash + const hash = getHash(); + + if (hash) { + // If there is a category, switch to that + if (hash.category) { + activateCategory(hash.category); + } + // Paginate a specific listing + const listingIds = Object.keys(window["quarto-listings"]); + for (const listingId of listingIds) { + const page = hash[getListingPageKey(listingId)]; + if (page) { + showPage(listingId, page); + } + } + } + + const listingIds = Object.keys(window["quarto-listings"]); + for (const listingId of listingIds) { + // The actual list + const list = window["quarto-listings"][listingId]; + + // Update the handlers for pagination events + refreshPaginationHandlers(listingId); + + // Render any visible items that need it + renderVisibleProgressiveImages(list); + + // Whenever the list is updated, we also need to + // attach handlers to the new pagination elements + // and refresh any newly visible items. + list.on("updated", function () { + renderVisibleProgressiveImages(list); + setTimeout(() => refreshPaginationHandlers(listingId)); + + // Show or hide the no matching message + toggleNoMatchingMessage(list); + }); + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Attach click handlers to categories + const categoryEls = window.document.querySelectorAll( + ".quarto-listing-category .category" + ); + + for (const categoryEl of categoryEls) { + const category = categoryEl.getAttribute("data-category"); + categoryEl.onclick = () => { + activateCategory(category); + setCategoryHash(category); + }; + } + + // Attach a click handler to the category title + // (there should be only one, but since it is a class name, handle N) + const categoryTitleEls = window.document.querySelectorAll( + ".quarto-listing-category-title" + ); + for (const categoryTitleEl of categoryTitleEls) { + categoryTitleEl.onclick = () => { + activateCategory(""); + setCategoryHash(""); + }; + } + + categoriesLoaded = true; +}); + +function toggleNoMatchingMessage(list) { + const selector = `#${list.listContainer.id} .listing-no-matching`; + const noMatchingEl = window.document.querySelector(selector); + if (noMatchingEl) { + if (list.visibleItems.length === 0) { + noMatchingEl.classList.remove("d-none"); + } else { + if (!noMatchingEl.classList.contains("d-none")) { + noMatchingEl.classList.add("d-none"); + } + } + } +} + +function setCategoryHash(category) { + setHash({ category }); +} + +function setPageHash(listingId, page) { + const currentHash = getHash() || {}; + currentHash[getListingPageKey(listingId)] = page; + setHash(currentHash); +} + +function getListingPageKey(listingId) { + return `${listingId}-page`; +} + +function refreshPaginationHandlers(listingId) { + const listingEl = window.document.getElementById(listingId); + const paginationEls = listingEl.querySelectorAll( + ".pagination li.page-item:not(.disabled) .page.page-link" + ); + for (const paginationEl of paginationEls) { + paginationEl.onclick = (sender) => { + setPageHash(listingId, sender.target.getAttribute("data-i")); + showPage(listingId, sender.target.getAttribute("data-i")); + return false; + }; + } +} + +function renderVisibleProgressiveImages(list) { + // Run through the visible items and render any progressive images + for (const item of list.visibleItems) { + const itemEl = item.elm; + if (itemEl) { + const progressiveImgs = itemEl.querySelectorAll( + `img[${kProgressiveAttr}]` + ); + for (const progressiveImg of progressiveImgs) { + const srcValue = progressiveImg.getAttribute(kProgressiveAttr); + if (srcValue) { + progressiveImg.setAttribute("src", srcValue); + } + progressiveImg.removeAttribute(kProgressiveAttr); + } + } + } +} + +function getHash() { + // Hashes are of the form + // #name:value|name1:value1|name2:value2 + const currentUrl = new URL(window.location); + const hashRaw = currentUrl.hash ? currentUrl.hash.slice(1) : undefined; + return parseHash(hashRaw); +} + +const kAnd = "&"; +const kEquals = "="; + +function parseHash(hash) { + if (!hash) { + return undefined; + } + const hasValuesStrs = hash.split(kAnd); + const hashValues = hasValuesStrs + .map((hashValueStr) => { + const vals = hashValueStr.split(kEquals); + if (vals.length === 2) { + return { name: vals[0], value: vals[1] }; + } else { + return undefined; + } + }) + .filter((value) => { + return value !== undefined; + }); + + const hashObj = {}; + hashValues.forEach((hashValue) => { + hashObj[hashValue.name] = decodeURIComponent(hashValue.value); + }); + return hashObj; +} + +function makeHash(obj) { + return Object.keys(obj) + .map((key) => { + return `${key}${kEquals}${obj[key]}`; + }) + .join(kAnd); +} + +function setHash(obj) { + const hash = makeHash(obj); + window.history.pushState(null, null, `#${hash}`); +} + +function showPage(listingId, page) { + const list = window["quarto-listings"][listingId]; + if (list) { + list.show((page - 1) * list.page + 1, list.page); + } +} + +function activateCategory(category) { + // Deactivate existing categories + const activeEls = window.document.querySelectorAll( + ".quarto-listing-category .category.active" + ); + for (const activeEl of activeEls) { + activeEl.classList.remove("active"); + } + + // Activate this category + const categoryEl = window.document.querySelector( + `.quarto-listing-category .category[data-category='${category}'` + ); + if (categoryEl) { + categoryEl.classList.add("active"); + } + + // Filter the listings to this category + filterListingCategory(category); +} + +function filterListingCategory(category) { + const listingIds = Object.keys(window["quarto-listings"]); + for (const listingId of listingIds) { + const list = window["quarto-listings"][listingId]; + if (list) { + if (category === "") { + // resets the filter + list.filter(); + } else { + // filter to this category + list.filter(function (item) { + const itemValues = item.values(); + if (itemValues.categories !== null) { + const categories = itemValues.categories.split(","); + return categories.includes(category); + } else { + return false; + } + }); + } + } + } +} diff --git a/_versioned/0_8_5/site_libs/quarto-nav/headroom.min.js b/_versioned/0_8_5/site_libs/quarto-nav/headroom.min.js new file mode 100644 index 00000000..b08f1dff --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-nav/headroom.min.js @@ -0,0 +1,7 @@ +/*! + * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it + * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js + * License: MIT + */ + +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s}); diff --git a/_versioned/0_8_5/site_libs/quarto-nav/quarto-nav.js b/_versioned/0_8_5/site_libs/quarto-nav/quarto-nav.js new file mode 100644 index 00000000..f6a53b10 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-nav/quarto-nav.js @@ -0,0 +1,289 @@ +const headroomChanged = new CustomEvent("quarto-hrChanged", { + detail: {}, + bubbles: true, + cancelable: false, + composed: false, +}); + +window.document.addEventListener("DOMContentLoaded", function () { + let init = false; + + // Manage the back to top button, if one is present. + let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; + const scrollDownBuffer = 5; + const scrollUpBuffer = 35; + const btn = document.getElementById("quarto-back-to-top"); + const hideBackToTop = () => { + btn.style.display = "none"; + }; + const showBackToTop = () => { + btn.style.display = "inline-block"; + }; + if (btn) { + window.document.addEventListener( + "scroll", + function () { + const currentScrollTop = + window.pageYOffset || document.documentElement.scrollTop; + + // Shows and hides the button 'intelligently' as the user scrolls + if (currentScrollTop - scrollDownBuffer > lastScrollTop) { + hideBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } else if (currentScrollTop < lastScrollTop - scrollUpBuffer) { + showBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } + + // Show the button at the bottom, hides it at the top + if (currentScrollTop <= 0) { + hideBackToTop(); + } else if ( + window.innerHeight + currentScrollTop >= + document.body.offsetHeight + ) { + showBackToTop(); + } + }, + false + ); + } + + function throttle(func, wait) { + var timeout; + return function () { + const context = this; + const args = arguments; + const later = function () { + clearTimeout(timeout); + timeout = null; + func.apply(context, args); + }; + + if (!timeout) { + timeout = setTimeout(later, wait); + } + }; + } + + function headerOffset() { + // Set an offset if there is are fixed top navbar + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl) { + return headerEl.clientHeight; + } else { + return 0; + } + } + + function footerOffset() { + const footerEl = window.document.querySelector("footer.footer"); + if (footerEl) { + return footerEl.clientHeight; + } else { + return 0; + } + } + + function dashboardOffset() { + const dashboardNavEl = window.document.getElementById( + "quarto-dashboard-header" + ); + if (dashboardNavEl !== null) { + return dashboardNavEl.clientHeight; + } else { + return 0; + } + } + + function updateDocumentOffsetWithoutAnimation() { + updateDocumentOffset(false); + } + + function updateDocumentOffset(animated) { + // set body offset + const topOffset = headerOffset(); + const bodyOffset = topOffset + footerOffset() + dashboardOffset(); + const bodyEl = window.document.body; + bodyEl.setAttribute("data-bs-offset", topOffset); + bodyEl.style.paddingTop = topOffset + "px"; + + // deal with sidebar offsets + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + if (!animated) { + sidebar.classList.add("notransition"); + // Remove the no transition class after the animation has time to complete + setTimeout(function () { + sidebar.classList.remove("notransition"); + }, 201); + } + + if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) { + sidebar.style.top = "0"; + sidebar.style.maxHeight = "100vh"; + } else { + sidebar.style.top = topOffset + "px"; + sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)"; + } + }); + + // allow space for footer + const mainContainer = window.document.querySelector(".quarto-container"); + if (mainContainer) { + mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)"; + } + + // link offset + let linkStyle = window.document.querySelector("#quarto-target-style"); + if (!linkStyle) { + linkStyle = window.document.createElement("style"); + linkStyle.setAttribute("id", "quarto-target-style"); + window.document.head.appendChild(linkStyle); + } + while (linkStyle.firstChild) { + linkStyle.removeChild(linkStyle.firstChild); + } + if (topOffset > 0) { + linkStyle.appendChild( + window.document.createTextNode(` + section:target::before { + content: ""; + display: block; + height: ${topOffset}px; + margin: -${topOffset}px 0 0; + }`) + ); + } + if (init) { + window.dispatchEvent(headroomChanged); + } + init = true; + } + + // initialize headroom + var header = window.document.querySelector("#quarto-header"); + if (header && window.Headroom) { + const headroom = new window.Headroom(header, { + tolerance: 5, + onPin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.remove("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + onUnpin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.add("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + }); + headroom.init(); + + let frozen = false; + window.quartoToggleHeadroom = function () { + if (frozen) { + headroom.unfreeze(); + frozen = false; + } else { + headroom.freeze(); + frozen = true; + } + }; + } + + window.addEventListener( + "hashchange", + function (e) { + if ( + getComputedStyle(document.documentElement).scrollBehavior !== "smooth" + ) { + window.scrollTo(0, window.pageYOffset - headerOffset()); + } + }, + false + ); + + // Observe size changed for the header + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl && window.ResizeObserver) { + const observer = new window.ResizeObserver(() => { + setTimeout(updateDocumentOffsetWithoutAnimation, 0); + }); + observer.observe(headerEl, { + attributes: true, + childList: true, + characterData: true, + }); + } else { + window.addEventListener( + "resize", + throttle(updateDocumentOffsetWithoutAnimation, 50) + ); + } + setTimeout(updateDocumentOffsetWithoutAnimation, 250); + + // fixup index.html links if we aren't on the filesystem + if (window.location.protocol !== "file:") { + const links = window.document.querySelectorAll("a"); + for (let i = 0; i < links.length; i++) { + if (links[i].href) { + links[i].dataset.originalHref = links[i].href; + links[i].href = links[i].href.replace(/\/index\.html/, "/"); + } + } + + // Fixup any sharing links that require urls + // Append url to any sharing urls + const sharingLinks = window.document.querySelectorAll( + "a.sidebar-tools-main-item, a.quarto-navigation-tool, a.quarto-navbar-tools, a.quarto-navbar-tools-item" + ); + for (let i = 0; i < sharingLinks.length; i++) { + const sharingLink = sharingLinks[i]; + const href = sharingLink.getAttribute("href"); + if (href) { + sharingLink.setAttribute( + "href", + href.replace("|url|", window.location.href) + ); + } + } + + // Scroll the active navigation item into view, if necessary + const navSidebar = window.document.querySelector("nav#quarto-sidebar"); + if (navSidebar) { + // Find the active item + const activeItem = navSidebar.querySelector("li.sidebar-item a.active"); + if (activeItem) { + // Wait for the scroll height and height to resolve by observing size changes on the + // nav element that is scrollable + const resizeObserver = new ResizeObserver((_entries) => { + // The bottom of the element + const elBottom = activeItem.offsetTop; + const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight; + + // The element height and scroll height are the same, then we are still loading + if (viewBottom !== navSidebar.scrollHeight) { + // Determine if the item isn't visible and scroll to it + if (elBottom >= viewBottom) { + navSidebar.scrollTop = elBottom; + } + + // stop observing now since we've completed the scroll + resizeObserver.unobserve(navSidebar); + } + }); + resizeObserver.observe(navSidebar); + } + } + } +}); diff --git a/_versioned/0_8_5/site_libs/quarto-search/autocomplete.umd.js b/_versioned/0_8_5/site_libs/quarto-search/autocomplete.umd.js new file mode 100644 index 00000000..ae0063aa --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-search/autocomplete.umd.js @@ -0,0 +1,3 @@ +/*! @algolia/autocomplete-js 1.11.1 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-js"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,u,a=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw o}}return a}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function N(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r=3||2===n&&r>=4||1===n&&r>=10);function i(t,n,r){if(o&&void 0!==r){var i=r[0].__autocomplete_algoliaCredentials,u={"X-Algolia-Application-Id":i.appId,"X-Algolia-API-Key":i.apiKey};e.apply(void 0,[t].concat(D(n),[{headers:u}]))}else e.apply(void 0,[t].concat(D(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDsAfterSearch",B(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDs",B(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDsAfterSearch",B(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDs",B(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&t.reduce((function(e,t){var n=t.items,r=k(t,A);return[].concat(D(e),D(q(N(N({},r),{},{objectIDs:(null==n?void 0:n.map((function(e){return e.objectID})))||r.objectIDs})).map((function(e){return{items:n,payload:e}}))))}),[]).forEach((function(e){var t=e.items;return i("viewedObjectIDs",[e.payload],t)}))},viewedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function F(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function L(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function M(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&z({onItemsChange:r,items:n,insights:a,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;function l(e){t({algoliaInsightsPlugin:{__algoliaSearchParameters:W({clickAnalytics:!0},e?{userToken:e}:{}),insights:a}})}u("addAlgoliaAgent","insights-plugin"),l(),u("onUserTokenChange",l),u("getUserToken",null,(function(e,t){l(t)})),n((function(e){var t=e.item,n=e.state,r=e.event,i=e.source;L(t)&&o({state:n,event:r,insights:a,item:t,insightsEvents:[W({eventName:"Item Selected"},j({item:t,items:i.getItems().filter(L)}))]})})),r((function(e){var t=e.item,n=e.source,r=e.state,o=e.event;L(t)&&i({state:r,event:o,insights:a,item:t,insightsEvents:[W({eventName:"Item Active"},j({item:t,items:n.getItems().filter(L)}))]})}))},onStateChange:function(e){var t=e.state;c({state:t})},__autocomplete_pluginOptions:e}}function J(e,t){var n=t;return{then:function(t,r){return J(e.then(Y(t,n,e),Y(r,n,e)),n)},catch:function(t){return J(e.catch(Y(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),J(e.finally(Y(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function X(e){return J(e,{isCanceled:!1,onCancelList:[]})}function Y(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function Z(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function te(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:d(),plugins:o,initialState:he({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(ye(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:O,onResolve:O};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=te(te({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return m(e)})).then((function(e){return e.map((function(e){return he(he({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:he({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function Se(e){return Se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Se(e)}function je(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pe(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var He,Ve,We,Ke=null,Qe=(He=-1,Ve=-1,We=void 0,function(e){var t=++He;return Promise.resolve(e).then((function(e){return We&&t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function et(e){return et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},et(e)}var tt=["props","refresh","store"],nt=["inputElement","formElement","panelElement"],rt=["inputElement"],ot=["inputElement","maxLength"],it=["source"],ut=["item","source"];function at(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function lt(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ft(e){var t=e.props,n=e.refresh,r=e.store,o=st(e,tt);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,i=e.panelElement;function u(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,i].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return lt({onTouchStart:u,onMouseDown:u,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},st(e,nt))},getRootProps:function(e){return lt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return ie(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":ie(t.id,"label")},e)},getFormProps:function(e){return e.inputElement,lt({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(lt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(lt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},st(e,rt))},getLabelProps:function(e){return lt({htmlFor:ie(t.id,"input"),id:ie(t.id,"label")},e)},getInputProps:function(e){var i;function u(e){(t.openOnFocus||Boolean(r.getState().query))&&$e(lt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var a=e||{};a.inputElement;var l=a.maxLength,c=void 0===l?512:l,s=st(a,ot),f=oe(r.getState()),p=function(e){return Boolean(e&&e.match(ue))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),m=t.enterKeyHint||(null!=f&&f.itemUrl&&!p?"go":"search");return lt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?ie(t.id,"item-".concat(r.getState().activeItemId),null==f?void 0:f.source):void 0,"aria-controls":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return ie(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":ie(t.id,"label"),value:r.getState().completion||r.getState().query,id:ie(t.id,"input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:m,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:c,type:"search",onChange:function(e){$e(lt({event:e,props:t,query:e.currentTarget.value.slice(0,c),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,i=Ze(e,Ge);if("ArrowUp"===t.key||"ArrowDown"===t.key){var u=function(){var e=oe(o.getState()),t=n.environment.document.getElementById(ie(n.id,"item-".concat(o.getState().activeItemId),null==e?void 0:e.source));t&&(t.scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded(!1):t.scrollIntoView(!1))},a=function(){var e=oe(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,u=e.itemInputValue,a=e.itemUrl,l=e.source;l.onActive(Xe({event:t,item:n,itemInputValue:u,itemUrl:a,refresh:r,source:l,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?$e(Xe({event:t,props:n,query:o.getState().query,refresh:r,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),a(),setTimeout(u,0)})):(o.dispatch(t.key,{}),a(),u())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=oe(o.getState()),c=l.item,s=l.itemInputValue,f=l.itemUrl,p=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),n.navigator.navigateNewTab({itemUrl:f,item:c,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),n.navigator.navigateNewWindow({itemUrl:f,item:c,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),void n.navigator.navigate({itemUrl:f,item:c,state:o.getState()});$e(Xe({event:t,nextState:{isOpen:!1},props:n,query:s,refresh:r,store:o},i)).then((function(){p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i))}))}}}(lt({event:e,props:t,refresh:n,store:r},o))},onFocus:u,onBlur:O,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},s)},getPanelProps:function(e){return lt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.source,o=st(n,it);return lt({role:"listbox","aria-labelledby":ie(t.id,"label"),id:ie(t.id,"list",r)},o)},getItemProps:function(e){var i=e.item,u=e.source,a=st(e,ut);return lt({id:ie(t.id,"item-".concat(i.__autocomplete_id),u),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=oe(r.getState());if(null!==r.getState().activeItemId&&t){var u=t.item,a=t.itemInputValue,l=t.itemUrl,c=t.source;c.onActive(lt({event:e,item:u,itemInputValue:a,itemUrl:l,refresh:n,source:c,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=u.getItemInputValue({item:i,state:r.getState()}),l=u.getItemUrl({item:i,state:r.getState()});(l?Promise.resolve():$e(lt({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},o))).then((function(){u.onSelect(lt({event:e,item:i,itemInputValue:a,itemUrl:l,refresh:n,source:u,state:r.getState()},o))}))}},a)}}}function pt(e){return pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pt(e)}function mt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vt(e){for(var t=1;t=5&&((o||!e&&5===r)&&(u.push(r,0,o,n),r=6),e&&(u.push(r,e,0,n),r=6)),o=""},l=0;l"===t?(r=1,o=""):o=t+o[0]:i?t===i?i="":o+=t:'"'===t||"'"===t?i=t:">"===t?(a(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[l][c+1])?(a(),3===r&&(u=u[0]),r=u,(u=u[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(a(),r=2):o+=t),3===r&&"!--"===o&&(r=4,u=u[0])}return a(),u}(e)),t),arguments,[])).length>1?t:t[0]}var kt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n};function xt(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function Nt(){for(var e=arguments.length,t=new Array(e),n=0;n2&&(u.children=arguments.length>3?Jt.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===u[i]&&(u[i]=e.defaultProps[i]);return sn(e,u,r,o,null)}function sn(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++Yt:o};return null==o&&null!=Xt.vnode&&Xt.vnode(i),i}function fn(e){return e.children}function pn(e,t){this.props=e,this.context=t}function mn(e,t){if(null==t)return e.__?mn(e.__,e.__.__k.indexOf(e)+1):null;for(var n;tt&&Zt.sort(nn));yn.__r=0}function bn(e,t,n,r,o,i,u,a,l,c){var s,f,p,m,v,d,y,b=r&&r.__k||on,g=b.length;for(n.__k=[],s=0;s0?sn(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)){if(m.__=n,m.__b=n.__b+1,null===(p=b[s])||p&&m.key==p.key&&m.type===p.type)b[s]=void 0;else for(f=0;f=0;t--)if((n=e.__k[t])&&(r=On(n)))return r;return null}function _n(e,t,n){"-"===t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||un.test(t)?n:n+"px"}function Sn(e,t,n,r,o){var i;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||_n(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||_n(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])i=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r||e.addEventListener(t,i?Pn:jn,i):e.removeEventListener(t,i?Pn:jn,i);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,n))}}function jn(e){return this.l[e.type+!1](Xt.event?Xt.event(e):e)}function Pn(e){return this.l[e.type+!0](Xt.event?Xt.event(e):e)}function wn(e,t,n,r,o,i,u,a,l){var c,s,f,p,m,v,d,y,b,g,h,O,_,S,j,P=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(l=n.__h,a=t.__e=n.__e,t.__h=null,i=[a]),(c=Xt.__b)&&c(t);try{e:if("function"==typeof P){if(y=t.props,b=(c=P.contextType)&&r[c.__c],g=c?b?b.props.value:c.__:r,n.__c?d=(s=t.__c=n.__c).__=s.__E:("prototype"in P&&P.prototype.render?t.__c=s=new P(y,g):(t.__c=s=new pn(y,g),s.constructor=P,s.render=Cn),b&&b.sub(s),s.props=y,s.state||(s.state={}),s.context=g,s.__n=r,f=s.__d=!0,s.__h=[],s._sb=[]),null==s.__s&&(s.__s=s.state),null!=P.getDerivedStateFromProps&&(s.__s==s.state&&(s.__s=an({},s.__s)),an(s.__s,P.getDerivedStateFromProps(y,s.__s))),p=s.props,m=s.state,s.__v=t,f)null==P.getDerivedStateFromProps&&null!=s.componentWillMount&&s.componentWillMount(),null!=s.componentDidMount&&s.__h.push(s.componentDidMount);else{if(null==P.getDerivedStateFromProps&&y!==p&&null!=s.componentWillReceiveProps&&s.componentWillReceiveProps(y,g),!s.__e&&null!=s.shouldComponentUpdate&&!1===s.shouldComponentUpdate(y,s.__s,g)||t.__v===n.__v){for(t.__v!==n.__v&&(s.props=y,s.state=s.__s,s.__d=!1),s.__e=!1,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),h=0;h0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(xn);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Tn(e){return function(e){if(Array.isArray(e))return qn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return qn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function qn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",""":'"',"'":"'"},Fn=new RegExp(/\w/i),Ln=/&(amp|quot|lt|gt|#39);/g,Un=RegExp(Ln.source);function Mn(e,t){var n,r,o,i=e[t],u=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,a=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return Fn.test((o=i.value)&&Un.test(o)?o.replace(Ln,(function(e){return Rn[e]})):o)||a!==u?i.isHighlighted:a}function Hn(e){return Hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Hn(e)}function Vn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Wn(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ur(e){return function(e){if(Array.isArray(e))return ar(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ar(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ar(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ar(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0;if(!O.value.core.openOnFocus&&!t.query)return n;var r=Boolean(y.current||O.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:br,options:e}}))})),j=f(n({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},O.value.core.initialState)),P={getEnvironmentProps:O.value.renderer.getEnvironmentProps,getFormProps:O.value.renderer.getFormProps,getInputProps:O.value.renderer.getInputProps,getItemProps:O.value.renderer.getItemProps,getLabelProps:O.value.renderer.getLabelProps,getListProps:O.value.renderer.getListProps,getPanelProps:O.value.renderer.getPanelProps,getRootProps:O.value.renderer.getRootProps},w={setActiveItemId:S.value.setActiveItemId,setQuery:S.value.setQuery,setCollections:S.value.setCollections,setIsOpen:S.value.setIsOpen,setStatus:S.value.setStatus,setContext:S.value.setContext,refresh:S.value.refresh,navigator:S.value.navigator},I=m((function(){return Ct.bind(O.value.renderer.renderer.createElement)})),A=m((function(){return Gt({autocomplete:S.value,autocompleteScopeApi:w,classNames:O.value.renderer.classNames,environment:O.value.core.environment,isDetached:_.value,placeholder:O.value.core.placeholder,propGetters:P,setIsModalOpen:k,state:j.current,translations:O.value.renderer.translations})}));function E(){Ht(A.value.panel,{style:_.value?{}:yr({panelPlacement:O.value.renderer.panelPlacement,container:A.value.root,form:A.value.form,environment:O.value.core.environment})})}function D(e){j.current=e;var t={autocomplete:S.value,autocompleteScopeApi:w,classNames:O.value.renderer.classNames,components:O.value.renderer.components,container:O.value.renderer.container,html:I.value,dom:A.value,panelContainer:_.value?A.value.detachedContainer:O.value.renderer.panelContainer,propGetters:P,state:j.current,renderer:O.value.renderer.renderer},r=!b(e)&&!y.current&&O.value.renderer.renderNoResults||O.value.renderer.render;!function(e){var t=e.autocomplete,r=e.autocompleteScopeApi,o=e.dom,i=e.propGetters,u=e.state;Vt(o.root,i.getRootProps(n({state:u,props:t.getRootProps({})},r))),Vt(o.input,i.getInputProps(n({state:u,props:t.getInputProps({inputElement:o.input}),inputElement:o.input},r))),Ht(o.label,{hidden:"stalled"===u.status}),Ht(o.loadingIndicator,{hidden:"stalled"!==u.status}),Ht(o.clearButton,{hidden:!u.query}),Ht(o.detachedSearchButtonQuery,{textContent:u.query}),Ht(o.detachedSearchButtonPlaceholder,{hidden:Boolean(u.query)})}(t),function(e,t){var r=t.autocomplete,o=t.autocompleteScopeApi,u=t.classNames,a=t.html,l=t.dom,c=t.panelContainer,s=t.propGetters,f=t.state,p=t.components,m=t.renderer;if(f.isOpen){c.contains(l.panel)||"loading"===f.status||c.appendChild(l.panel),l.panel.classList.toggle("aa-Panel--stalled","stalled"===f.status);var v=f.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var l=e.source,c=e.items;return m.createElement("section",{key:t,className:u.source,"data-autocomplete-source-id":l.sourceId},l.templates.header&&m.createElement("div",{className:u.sourceHeader},l.templates.header({components:p,createElement:m.createElement,Fragment:m.Fragment,items:c,source:l,state:f,html:a})),l.templates.noResults&&0===c.length?m.createElement("div",{className:u.sourceNoResults},l.templates.noResults({components:p,createElement:m.createElement,Fragment:m.Fragment,source:l,state:f,html:a})):m.createElement("ul",i({className:u.list},s.getListProps(n({state:f,props:r.getListProps({source:l})},o))),c.map((function(e){var t=r.getItemProps({item:e,source:l});return m.createElement("li",i({key:t.id,className:u.item},s.getItemProps(n({state:f,props:t},o))),l.templates.item({components:p,createElement:m.createElement,Fragment:m.Fragment,item:e,state:f,html:a}))}))),l.templates.footer&&m.createElement("div",{className:u.sourceFooter},l.templates.footer({components:p,createElement:m.createElement,Fragment:m.Fragment,items:c,source:l,state:f,html:a})))})),d=m.createElement(m.Fragment,null,m.createElement("div",{className:u.panelLayout},v),m.createElement("div",{className:"aa-GradientBottom"})),y=v.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(n(n({children:d,state:f,sections:v,elements:y},m),{},{components:p,html:a},o),l.panel)}else c.contains(l.panel)&&c.removeChild(l.panel)}(r,t)}function C(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};l();var t=O.value.renderer,n=t.components,r=u(t,gr);g.current=qt(r,O.value.core,{components:Bt(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:j.current},e),v(),c(),S.value.refresh().then((function(){D(j.current)}))}function k(e){requestAnimationFrame((function(){var t=O.value.core.environment.document.body.contains(A.value.detachedOverlay);e!==t&&(e?(O.value.core.environment.document.body.appendChild(A.value.detachedOverlay),O.value.core.environment.document.body.classList.add("aa-Detached"),A.value.input.focus()):(O.value.core.environment.document.body.removeChild(A.value.detachedOverlay),O.value.core.environment.document.body.classList.remove("aa-Detached")))}))}return a((function(){var e=S.value.getEnvironmentProps({formElement:A.value.form,panelElement:A.value.panel,inputElement:A.value.input});return Ht(O.value.core.environment,e),function(){Ht(O.value.core.environment,Object.keys(e).reduce((function(e,t){return n(n({},e),{},o({},t,void 0))}),{}))}})),a((function(){var e=_.value?O.value.core.environment.document.body:O.value.renderer.panelContainer,t=_.value?A.value.detachedOverlay:A.value.panel;return _.value&&j.current.isOpen&&k(!0),D(j.current),function(){e.contains(t)&&e.removeChild(t)}})),a((function(){var e=O.value.renderer.container;return e.appendChild(A.value.root),function(){e.removeChild(A.value.root)}})),a((function(){var e=p((function(e){D(e.state)}),0);return h.current=function(t){var n=t.state,r=t.prevState;(_.value&&r.isOpen!==n.isOpen&&k(n.isOpen),_.value||!n.isOpen||r.isOpen||E(),n.query!==r.query)&&O.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){h.current=void 0}})),a((function(){var e=p((function(){var e=_.value;_.value=O.value.core.environment.matchMedia(O.value.renderer.detachedMediaQuery).matches,e!==_.value?C({}):requestAnimationFrame(E)}),20);return O.value.core.environment.addEventListener("resize",e),function(){O.value.core.environment.removeEventListener("resize",e)}})),a((function(){if(!_.value)return function(){};function e(e){A.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=O.value.core.environment.matchMedia(getComputedStyle(O.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),a((function(){return requestAnimationFrame(E),function(){}})),n(n({},w),{},{update:C,destroy:function(){l()}})},e.getAlgoliaFacets=function(e){var t=hr({transformResponse:function(e){return e.facetHits}}),r=e.queries.map((function(e){return n(n({},e),{},{type:"facet"})}));return t(n(n({},e),{},{queries:r}))},e.getAlgoliaResults=Or,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/_versioned/0_8_5/site_libs/quarto-search/fuse.min.js b/_versioned/0_8_5/site_libs/quarto-search/fuse.min.js new file mode 100644 index 00000000..adc28356 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-search/fuse.min.js @@ -0,0 +1,9 @@ +/** + * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io) + * + * Copyright (c) 2022 Kiro Risk (http://kiro.me) + * All Rights Reserved. Apache Software License 2.0 + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(C).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}var $=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?I.getFn:n,o=t.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o;r(this,e),this.norm=E(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?I.getFn:r,o=n.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o,a=new $({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(_)),a.setSources(t),a.create(),a}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?I.distance:s,h=t.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}function N(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}var P=32;function W(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?I.location:o,a=i.threshold,s=void 0===a?I.threshold:a,u=i.distance,h=void 0===u?I.distance:u,l=i.includeMatches,f=void 0===l?I.includeMatches:l,d=i.findAllMatches,v=void 0===d?I.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?I.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?I.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?I.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},x=this.pattern.length;if(x>P){for(var w=0,L=x%P,S=x-L;w3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?I.location:i,c=r.distance,a=void 0===c?I.distance:c,s=r.threshold,u=void 0===s?I.threshold:s,h=r.findAllMatches,l=void 0===h?I.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?I.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?I.includeMatches:v,y=r.ignoreLocation,p=void 0===y?I.ignoreLocation:y;if(t.length>P)throw new Error(w(P));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,L=b,S=d>1||g,_=S?Array(M):[];(m=e.indexOf(t,L))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),L=m+k,S)for(var j=0;j=z;q-=1){var B=q-1,J=n[e.charAt(B)];if(S&&(_[B]=+!!J),K[q]=(K[q+1]<<1|1)&J,F&&(K[q]|=(A[q+1]|A[q])<<1|1|A[q+1]),K[q]&$&&(C=R(t,{errors:F,currentLocation:B,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(L=B)<=b)break;z=Math.max(1,2*b-L)}}if(R(t,{errors:F+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;A=K}var U={isMatch:L>=0,score:Math.max(.001,C)};if(S){var V=N(_,d);V.length?g&&(U.indices=V):U.isMatch=!1}return U}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:l}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(f(d),f(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),z=function(){function e(t){r(this,e),this.pattern=t}return o(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return D(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return D(e,this.singleRegex)}}]),e}();function D(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),n}(z),q=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),n}(z),B=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),n}(z),J=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),n}(z),U=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),n}(z),V=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),n}(z),G=function(e){a(n,e);var t=l(n);function n(e){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?I.location:c,s=o.threshold,u=void 0===s?I.threshold:s,h=o.distance,l=void 0===h?I.distance:h,f=o.includeMatches,d=void 0===f?I.includeMatches:f,v=o.findAllMatches,g=void 0===v?I.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?I.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?I.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?I.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new T(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(z),H=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(z),Q=[K,H,B,J,V,U,q,G],X=Q.length,Y=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Y).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?I.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?I.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?I.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?I.findAllMatches:f,v=n.location,g=void 0===v?I.location:v,y=n.threshold,p=void 0===y?I.threshold:y,m=n.distance,k=void 0===m?I.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=Z(this.pattern,this.options)}return o(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function ve(e,t){t.score=e.score}function ge(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?I.includeMatches:r,o=n.includeScore,c=void 0===o?I.includeScore:o,a=[];return i&&a.push(de),c&&a.push(ve),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ye=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},I),i),this.options.useExtendedSearch,this._keyStore=new S(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof $))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return fe(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),ge(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=re(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n,i=function e(n){var i=Object.keys(n),o=ue(n);if(!o&&i.length>1&&!se(n))return e(le(n));if(he(n)){var c=o?n[ce]:i[0],a=o?n[ae]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return r&&(s.searcher=re(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return se(e)||(e=le(e)),i(e)}(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?I.getFn:n,i=t.fieldNormWeight,o=void 0===i?I.fieldNormWeight:i,c=e.keys,a=e.records,s=new $({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ye.config=I,function(){ne.push.apply(ne,arguments)}(te),ye},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/_versioned/0_8_5/site_libs/quarto-search/quarto-search.js b/_versioned/0_8_5/site_libs/quarto-search/quarto-search.js new file mode 100644 index 00000000..5f723d72 --- /dev/null +++ b/_versioned/0_8_5/site_libs/quarto-search/quarto-search.js @@ -0,0 +1,1286 @@ +const kQueryArg = "q"; +const kResultsArg = "show-results"; + +// If items don't provide a URL, then both the navigator and the onSelect +// function aren't called (and therefore, the default implementation is used) +// +// We're using this sentinel URL to signal to those handlers that this +// item is a more item (along with the type) and can be handled appropriately +const kItemTypeMoreHref = "0767FDFD-0422-4E5A-BC8A-3BE11E5BBA05"; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Ensure that search is available on this page. If it isn't, + // should return early and not do anything + var searchEl = window.document.getElementById("quarto-search"); + if (!searchEl) return; + + const { autocomplete } = window["@algolia/autocomplete-js"]; + + let quartoSearchOptions = {}; + let language = {}; + const searchOptionEl = window.document.getElementById( + "quarto-search-options" + ); + if (searchOptionEl) { + const jsonStr = searchOptionEl.textContent; + quartoSearchOptions = JSON.parse(jsonStr); + language = quartoSearchOptions.language; + } + + // note the search mode + if (quartoSearchOptions.type === "overlay") { + searchEl.classList.add("type-overlay"); + } else { + searchEl.classList.add("type-textbox"); + } + + // Used to determine highlighting behavior for this page + // A `q` query param is expected when the user follows a search + // to this page + const currentUrl = new URL(window.location); + const query = currentUrl.searchParams.get(kQueryArg); + const showSearchResults = currentUrl.searchParams.get(kResultsArg); + const mainEl = window.document.querySelector("main"); + + // highlight matches on the page + if (query && mainEl) { + // perform any highlighting + highlight(escapeRegExp(query), mainEl); + + // fix up the URL to remove the q query param + const replacementUrl = new URL(window.location); + replacementUrl.searchParams.delete(kQueryArg); + window.history.replaceState({}, "", replacementUrl); + } + + // function to clear highlighting on the page when the search query changes + // (e.g. if the user edits the query or clears it) + let highlighting = true; + const resetHighlighting = (searchTerm) => { + if (mainEl && highlighting && query && searchTerm !== query) { + clearHighlight(query, mainEl); + highlighting = false; + } + }; + + // Clear search highlighting when the user scrolls sufficiently + const resetFn = () => { + resetHighlighting(""); + window.removeEventListener("quarto-hrChanged", resetFn); + window.removeEventListener("quarto-sectionChanged", resetFn); + }; + + // Register this event after the initial scrolling and settling of events + // on the page + window.addEventListener("quarto-hrChanged", resetFn); + window.addEventListener("quarto-sectionChanged", resetFn); + + // Responsively switch to overlay mode if the search is present on the navbar + // Note that switching the sidebar to overlay mode requires more coordinate (not just + // the media query since we generate different HTML for sidebar overlays than we do + // for sidebar input UI) + const detachedMediaQuery = + quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)"; + + // If configured, include the analytics client to send insights + const plugins = configurePlugins(quartoSearchOptions); + + let lastState = null; + const { setIsOpen, setQuery, setCollections } = autocomplete({ + container: searchEl, + detachedMediaQuery: detachedMediaQuery, + defaultActiveItemId: 0, + panelContainer: "#quarto-search-results", + panelPlacement: quartoSearchOptions["panel-placement"], + debug: false, + openOnFocus: true, + plugins, + classNames: { + form: "d-flex", + }, + placeholder: language["search-text-placeholder"], + translations: { + clearButtonTitle: language["search-clear-button-title"], + detachedCancelButtonText: language["search-detached-cancel-button-title"], + submitButtonTitle: language["search-submit-button-title"], + }, + initialState: { + query, + }, + getItemUrl({ item }) { + return item.href; + }, + onStateChange({ state }) { + // If this is a file URL, note that + + // Perhaps reset highlighting + resetHighlighting(state.query); + + // If the panel just opened, ensure the panel is positioned properly + if (state.isOpen) { + if (lastState && !lastState.isOpen) { + setTimeout(() => { + positionPanel(quartoSearchOptions["panel-placement"]); + }, 150); + } + } + + // Perhaps show the copy link + showCopyLink(state.query, quartoSearchOptions); + + lastState = state; + }, + reshape({ sources, state }) { + return sources.map((source) => { + try { + const items = source.getItems(); + + // Validate the items + validateItems(items); + + // group the items by document + const groupedItems = new Map(); + items.forEach((item) => { + const hrefParts = item.href.split("#"); + const baseHref = hrefParts[0]; + const isDocumentItem = hrefParts.length === 1; + + const items = groupedItems.get(baseHref); + if (!items) { + groupedItems.set(baseHref, [item]); + } else { + // If the href for this item matches the document + // exactly, place this item first as it is the item that represents + // the document itself + if (isDocumentItem) { + items.unshift(item); + } else { + items.push(item); + } + groupedItems.set(baseHref, items); + } + }); + + const reshapedItems = []; + let count = 1; + for (const [_key, value] of groupedItems) { + const firstItem = value[0]; + reshapedItems.push({ + ...firstItem, + type: kItemTypeDoc, + }); + + const collapseMatches = quartoSearchOptions["collapse-after"]; + const collapseCount = + typeof collapseMatches === "number" ? collapseMatches : 1; + + if (value.length > 1) { + const target = `search-more-${count}`; + const isExpanded = + state.context.expanded && + state.context.expanded.includes(target); + + const remainingCount = value.length - collapseCount; + + for (let i = 1; i < value.length; i++) { + if (collapseMatches && i === collapseCount) { + reshapedItems.push({ + target, + title: isExpanded + ? language["search-hide-matches-text"] + : remainingCount === 1 + ? `${remainingCount} ${language["search-more-match-text"]}` + : `${remainingCount} ${language["search-more-matches-text"]}`, + type: kItemTypeMore, + href: kItemTypeMoreHref, + }); + } + + if (isExpanded || !collapseMatches || i < collapseCount) { + reshapedItems.push({ + ...value[i], + type: kItemTypeItem, + target, + }); + } + } + } + count += 1; + } + + return { + ...source, + getItems() { + return reshapedItems; + }, + }; + } catch (error) { + // Some form of error occurred + return { + ...source, + getItems() { + return [ + { + title: error.name || "An Error Occurred While Searching", + text: + error.message || + "An unknown error occurred while attempting to perform the requested search.", + type: kItemTypeError, + }, + ]; + }, + }; + } + }); + }, + navigator: { + navigate({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.location.assign(itemUrl); + } + }, + navigateNewTab({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + const windowReference = window.open(itemUrl, "_blank", "noopener"); + if (windowReference) { + windowReference.focus(); + } + } + }, + navigateNewWindow({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.open(itemUrl, "_blank", "noopener"); + } + }, + }, + getSources({ state, setContext, setActiveItemId, refresh }) { + return [ + { + sourceId: "documents", + getItemUrl({ item }) { + if (item.href) { + return offsetURL(item.href); + } else { + return undefined; + } + }, + onSelect({ + item, + state, + setContext, + setIsOpen, + setActiveItemId, + refresh, + }) { + if (item.type === kItemTypeMore) { + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + + // Toggle more + setIsOpen(true); + } + }, + getItems({ query }) { + if (query === null || query === "") { + return []; + } + + const limit = quartoSearchOptions.limit; + if (quartoSearchOptions.algolia) { + return algoliaSearch(query, limit, quartoSearchOptions.algolia); + } else { + // Fuse search options + const fuseSearchOptions = { + isCaseSensitive: false, + shouldSort: true, + minMatchCharLength: 2, + limit: limit, + }; + + return readSearchData().then(function (fuse) { + return fuseSearch(query, fuse, fuseSearchOptions); + }); + } + }, + templates: { + noResults({ createElement }) { + const hasQuery = lastState.query; + + return createElement( + "div", + { + class: `quarto-search-no-results${ + hasQuery ? "" : " no-query" + }`, + }, + language["search-no-results-text"] + ); + }, + header({ items, createElement }) { + // count the documents + const count = items.filter((item) => { + return item.type === kItemTypeDoc; + }).length; + + if (count > 0) { + return createElement( + "div", + { class: "search-result-header" }, + `${count} ${language["search-matching-documents-text"]}` + ); + } else { + return createElement( + "div", + { class: "search-result-header-no-results" }, + `` + ); + } + }, + footer({ _items, createElement }) { + if ( + quartoSearchOptions.algolia && + quartoSearchOptions.algolia["show-logo"] + ) { + const libDir = quartoSearchOptions.algolia["libDir"]; + const logo = createElement("img", { + src: offsetURL( + `${libDir}/quarto-search/search-by-algolia.svg` + ), + class: "algolia-search-logo", + }); + return createElement( + "a", + { href: "http://www.algolia.com/" }, + logo + ); + } + }, + + item({ item, createElement }) { + return renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh, + quartoSearchOptions + ); + }, + }, + }, + ]; + }, + }); + + window.quartoOpenSearch = () => { + setIsOpen(false); + setIsOpen(true); + focusSearchInput(); + }; + + document.addEventListener("keyup", (event) => { + const { key } = event; + const kbds = quartoSearchOptions["keyboard-shortcut"]; + const focusedEl = document.activeElement; + + const isFormElFocused = [ + "input", + "select", + "textarea", + "button", + "option", + ].find((tag) => { + return focusedEl.tagName.toLowerCase() === tag; + }); + + if ( + kbds && + kbds.includes(key) && + !isFormElFocused && + !document.activeElement.isContentEditable + ) { + event.preventDefault(); + window.quartoOpenSearch(); + } + }); + + // Remove the labeleledby attribute since it is pointing + // to a non-existent label + if (quartoSearchOptions.type === "overlay") { + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + if (inputEl) { + inputEl.removeAttribute("aria-labelledby"); + } + } + + function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; + } + + // If the main document scrolls dismiss the search results + // (otherwise, since they're floating in the document they can scroll with the document) + window.document.body.onscroll = throttle(() => { + // Only do this if we're not detached + // Bug #7117 + // This will happen when the keyboard is shown on ios (resulting in a scroll) + // which then closed the search UI + if (!window.matchMedia(detachedMediaQuery).matches) { + setIsOpen(false); + } + }, 50); + + if (showSearchResults) { + setIsOpen(true); + focusSearchInput(); + } +}); + +function configurePlugins(quartoSearchOptions) { + const autocompletePlugins = []; + const algoliaOptions = quartoSearchOptions.algolia; + if ( + algoliaOptions && + algoliaOptions["analytics-events"] && + algoliaOptions["search-only-api-key"] && + algoliaOptions["application-id"] + ) { + const apiKey = algoliaOptions["search-only-api-key"]; + const appId = algoliaOptions["application-id"]; + + // Aloglia insights may not be loaded because they require cookie consent + // Use deferred loading so events will start being recorded when/if consent + // is granted. + const algoliaInsightsDeferredPlugin = deferredLoadPlugin(() => { + if ( + window.aa && + window["@algolia/autocomplete-plugin-algolia-insights"] + ) { + window.aa("init", { + appId, + apiKey, + useCookie: true, + }); + + const { createAlgoliaInsightsPlugin } = + window["@algolia/autocomplete-plugin-algolia-insights"]; + // Register the insights client + const algoliaInsightsPlugin = createAlgoliaInsightsPlugin({ + insightsClient: window.aa, + onItemsChange({ insights, insightsEvents }) { + const events = insightsEvents.flatMap((event) => { + // This API limits the number of items per event to 20 + const chunkSize = 20; + const itemChunks = []; + const eventItems = event.items; + for (let i = 0; i < eventItems.length; i += chunkSize) { + itemChunks.push(eventItems.slice(i, i + chunkSize)); + } + // Split the items into multiple events that can be sent + const events = itemChunks.map((items) => { + return { + ...event, + items, + }; + }); + return events; + }); + + for (const event of events) { + insights.viewedObjectIDs(event); + } + }, + }); + return algoliaInsightsPlugin; + } + }); + + // Add the plugin + autocompletePlugins.push(algoliaInsightsDeferredPlugin); + return autocompletePlugins; + } +} + +// For plugins that may not load immediately, create a wrapper +// plugin and forward events and plugin data once the plugin +// is initialized. This is useful for cases like cookie consent +// which may prevent the analytics insights event plugin from initializing +// immediately. +function deferredLoadPlugin(createPlugin) { + let plugin = undefined; + let subscribeObj = undefined; + const wrappedPlugin = () => { + if (!plugin && subscribeObj) { + plugin = createPlugin(); + if (plugin && plugin.subscribe) { + plugin.subscribe(subscribeObj); + } + } + return plugin; + }; + + return { + subscribe: (obj) => { + subscribeObj = obj; + }, + onStateChange: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onStateChange) { + plugin.onStateChange(obj); + } + }, + onSubmit: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onSubmit) { + plugin.onSubmit(obj); + } + }, + onReset: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onReset) { + plugin.onReset(obj); + } + }, + getSources: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.getSources) { + return plugin.getSources(obj); + } else { + return Promise.resolve([]); + } + }, + data: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.data) { + plugin.data(obj); + } + }, + }; +} + +function validateItems(items) { + // Validate the first item + if (items.length > 0) { + const item = items[0]; + const missingFields = []; + if (item.href == undefined) { + missingFields.push("href"); + } + if (!item.title == undefined) { + missingFields.push("title"); + } + if (!item.text == undefined) { + missingFields.push("text"); + } + + if (missingFields.length === 1) { + throw { + name: `Error: Search index is missing the ${missingFields[0]} field.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items include the ${missingFields[0]} field or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } else if (missingFields.length > 1) { + const missingFieldList = missingFields + .map((field) => { + return `${field}`; + }) + .join(", "); + + throw { + name: `Error: Search index is missing the following fields: ${missingFieldList}.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items includes the following fields: ${missingFieldList}, or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } + } +} + +let lastQuery = null; +function showCopyLink(query, options) { + const language = options.language; + lastQuery = query; + // Insert share icon + const inputSuffixEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix" + ); + + if (inputSuffixEl) { + let copyButtonEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix .aa-CopyButton" + ); + + if (copyButtonEl === null) { + copyButtonEl = window.document.createElement("button"); + copyButtonEl.setAttribute("class", "aa-CopyButton"); + copyButtonEl.setAttribute("type", "button"); + copyButtonEl.setAttribute("title", language["search-copy-link-title"]); + copyButtonEl.onmousedown = (e) => { + e.preventDefault(); + e.stopPropagation(); + }; + + const linkIcon = "bi-clipboard"; + const checkIcon = "bi-check2"; + + const shareIconEl = window.document.createElement("i"); + shareIconEl.setAttribute("class", `bi ${linkIcon}`); + copyButtonEl.appendChild(shareIconEl); + inputSuffixEl.prepend(copyButtonEl); + + const clipboard = new window.ClipboardJS(".aa-CopyButton", { + text: function (_trigger) { + const copyUrl = new URL(window.location); + copyUrl.searchParams.set(kQueryArg, lastQuery); + copyUrl.searchParams.set(kResultsArg, "1"); + return copyUrl.toString(); + }, + }); + clipboard.on("success", function (e) { + // Focus the input + + // button target + const button = e.trigger; + const icon = button.querySelector("i.bi"); + + // flash "checked" + icon.classList.add(checkIcon); + icon.classList.remove(linkIcon); + setTimeout(function () { + icon.classList.remove(checkIcon); + icon.classList.add(linkIcon); + }, 1000); + }); + } + + // If there is a query, show the link icon + if (copyButtonEl) { + if (lastQuery && options["copy-button"]) { + copyButtonEl.style.display = "flex"; + } else { + copyButtonEl.style.display = "none"; + } + } + } +} + +/* Search Index Handling */ +// create the index +var fuseIndex = undefined; +var shownWarning = false; + +// fuse index options +const kFuseIndexOptions = { + keys: [ + { name: "title", weight: 20 }, + { name: "section", weight: 20 }, + { name: "text", weight: 10 }, + ], + ignoreLocation: true, + threshold: 0.1, +}; + +async function readSearchData() { + // Initialize the search index on demand + if (fuseIndex === undefined) { + if (window.location.protocol === "file:" && !shownWarning) { + window.alert( + "Search requires JavaScript features disabled when running in file://... URLs. In order to use search, please run this document in a web server." + ); + shownWarning = true; + return; + } + const fuse = new window.Fuse([], kFuseIndexOptions); + + // fetch the main search.json + const response = await fetch(offsetURL("search.json")); + if (response.status == 200) { + return response.json().then(function (searchDocs) { + searchDocs.forEach(function (searchDoc) { + fuse.add(searchDoc); + }); + fuseIndex = fuse; + return fuseIndex; + }); + } else { + return Promise.reject( + new Error( + "Unexpected status from search index request: " + response.status + ) + ); + } + } + + return fuseIndex; +} + +function inputElement() { + return window.document.body.querySelector(".aa-Form .aa-Input"); +} + +function focusSearchInput() { + setTimeout(() => { + const inputEl = inputElement(); + if (inputEl) { + inputEl.focus(); + } + }, 50); +} + +/* Panels */ +const kItemTypeDoc = "document"; +const kItemTypeMore = "document-more"; +const kItemTypeItem = "document-item"; +const kItemTypeError = "error"; + +function renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh, + quartoSearchOptions +) { + switch (item.type) { + case kItemTypeDoc: + return createDocumentCard( + createElement, + "file-richtext", + item.title, + item.section, + item.text, + item.href, + item.crumbs, + quartoSearchOptions + ); + case kItemTypeMore: + return createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh + ); + case kItemTypeItem: + return createSectionCard( + createElement, + item.section, + item.text, + item.href + ); + case kItemTypeError: + return createErrorCard(createElement, item.title, item.text); + default: + return undefined; + } +} + +function createDocumentCard( + createElement, + icon, + title, + section, + text, + href, + crumbs, + quartoSearchOptions +) { + const iconEl = createElement("i", { + class: `bi bi-${icon} search-result-icon`, + }); + const titleEl = createElement("p", { class: "search-result-title" }, title); + const titleContents = [iconEl, titleEl]; + const showParent = quartoSearchOptions["show-item-context"]; + if (crumbs && showParent) { + let crumbsOut = undefined; + const crumbClz = ["search-result-crumbs"]; + if (showParent === "root") { + crumbsOut = crumbs.length > 1 ? crumbs[0] : undefined; + } else if (showParent === "parent") { + crumbsOut = crumbs.length > 1 ? crumbs[crumbs.length - 2] : undefined; + } else { + crumbsOut = crumbs.length > 1 ? crumbs.join(" > ") : undefined; + crumbClz.push("search-result-crumbs-wrap"); + } + + const crumbEl = createElement( + "p", + { class: crumbClz.join(" ") }, + crumbsOut + ); + titleContents.push(crumbEl); + } + + const titleContainerEl = createElement( + "div", + { class: "search-result-title-container" }, + titleContents + ); + + const textEls = []; + if (section) { + const sectionEl = createElement( + "p", + { class: "search-result-section" }, + section + ); + textEls.push(sectionEl); + } + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + textEls.push(descEl); + + const textContainerEl = createElement( + "div", + { class: "search-result-text-container" }, + textEls + ); + + const containerEl = createElement( + "div", + { + class: "search-result-container", + }, + [titleContainerEl, textContainerEl] + ); + + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + containerEl + ); + + const classes = ["search-result-doc", "search-item"]; + if (!section) { + classes.push("document-selectable"); + } + + return createElement( + "div", + { + class: classes.join(" "), + }, + linkEl + ); +} + +function createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh +) { + const moreCardEl = createElement( + "div", + { + class: "search-result-more search-item", + onClick: (e) => { + // Handle expanding the sections by adding the expanded + // section to the list of expanded sections + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + e.stopPropagation(); + }, + }, + item.title + ); + + return moreCardEl; +} + +function toggleExpanded(item, state, setContext, setActiveItemId, refresh) { + const expanded = state.context.expanded || []; + if (expanded.includes(item.target)) { + setContext({ + expanded: expanded.filter((target) => target !== item.target), + }); + } else { + setContext({ expanded: [...expanded, item.target] }); + } + + refresh(); + setActiveItemId(item.__autocomplete_id); +} + +function createSectionCard(createElement, section, text, href) { + const sectionEl = createSection(createElement, section, text, href); + return createElement( + "div", + { + class: "search-result-doc-section search-item", + }, + sectionEl + ); +} + +function createSection(createElement, title, text, href) { + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { class: "search-result-section" }, title); + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + [titleEl, descEl] + ); + return linkEl; +} + +function createErrorCard(createElement, title, text) { + const descEl = createElement("p", { + class: "search-error-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { + class: "search-error-title", + dangerouslySetInnerHTML: { + __html: ` ${title}`, + }, + }); + const errorEl = createElement("div", { class: "search-error" }, [ + titleEl, + descEl, + ]); + return errorEl; +} + +function positionPanel(pos) { + const panelEl = window.document.querySelector( + "#quarto-search-results .aa-Panel" + ); + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + + if (panelEl && inputEl) { + panelEl.style.top = `${Math.round(panelEl.offsetTop)}px`; + if (pos === "start") { + panelEl.style.left = `${Math.round(inputEl.left)}px`; + } else { + panelEl.style.right = `${Math.round(inputEl.offsetRight)}px`; + } + } +} + +/* Highlighting */ +// highlighting functions +function highlightMatch(query, text) { + if (text) { + const start = text.toLowerCase().indexOf(query.toLowerCase()); + if (start !== -1) { + const startMark = ""; + const endMark = ""; + + const end = start + query.length; + text = + text.slice(0, start) + + startMark + + text.slice(start, end) + + endMark + + text.slice(end); + const startInfo = clipStart(text, start); + const endInfo = clipEnd( + text, + startInfo.position + startMark.length + endMark.length + ); + text = + startInfo.prefix + + text.slice(startInfo.position, endInfo.position) + + endInfo.suffix; + + return text; + } else { + return text; + } + } else { + return text; + } +} + +function clipStart(text, pos) { + const clipStart = pos - 50; + if (clipStart < 0) { + // This will just return the start of the string + return { + position: 0, + prefix: "", + }; + } else { + // We're clipping before the start of the string, walk backwards to the first space. + const spacePos = findSpace(text, pos, -1); + return { + position: spacePos.position, + prefix: "", + }; + } +} + +function clipEnd(text, pos) { + const clipEnd = pos + 200; + if (clipEnd > text.length) { + return { + position: text.length, + suffix: "", + }; + } else { + const spacePos = findSpace(text, clipEnd, 1); + return { + position: spacePos.position, + suffix: spacePos.clipped ? "…" : "", + }; + } +} + +function findSpace(text, start, step) { + let stepPos = start; + while (stepPos > -1 && stepPos < text.length) { + const char = text[stepPos]; + if (char === " " || char === "," || char === ":") { + return { + position: step === 1 ? stepPos : stepPos - step, + clipped: stepPos > 1 && stepPos < text.length, + }; + } + stepPos = stepPos + step; + } + + return { + position: stepPos - step, + clipped: false, + }; +} + +// removes highlighting as implemented by the mark tag +function clearHighlight(searchterm, el) { + const childNodes = el.childNodes; + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + if (node.nodeType === Node.ELEMENT_NODE) { + if ( + node.tagName === "MARK" && + node.innerText.toLowerCase() === searchterm.toLowerCase() + ) { + el.replaceChild(document.createTextNode(node.innerText), node); + } else { + clearHighlight(searchterm, node); + } + } + } +} + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string +} + +// highlight matches +function highlight(term, el) { + const termRegex = new RegExp(term, "ig"); + const childNodes = el.childNodes; + + // walk back to front avoid mutating elements in front of us + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + + if (node.nodeType === Node.TEXT_NODE) { + // Search text nodes for text to highlight + const text = node.nodeValue; + + let startIndex = 0; + let matchIndex = text.search(termRegex); + if (matchIndex > -1) { + const markFragment = document.createDocumentFragment(); + while (matchIndex > -1) { + const prefix = text.slice(startIndex, matchIndex); + markFragment.appendChild(document.createTextNode(prefix)); + + const mark = document.createElement("mark"); + mark.appendChild( + document.createTextNode( + text.slice(matchIndex, matchIndex + term.length) + ) + ); + markFragment.appendChild(mark); + + startIndex = matchIndex + term.length; + matchIndex = text.slice(startIndex).search(new RegExp(term, "ig")); + if (matchIndex > -1) { + matchIndex = startIndex + matchIndex; + } + } + if (startIndex < text.length) { + markFragment.appendChild( + document.createTextNode(text.slice(startIndex, text.length)) + ); + } + + el.replaceChild(markFragment, node); + } + } else if (node.nodeType === Node.ELEMENT_NODE) { + // recurse through elements + highlight(term, node); + } + } +} + +/* Link Handling */ +// get the offset from this page for a given site root relative url +function offsetURL(url) { + var offset = getMeta("quarto:offset"); + return offset ? offset + url : url; +} + +// read a meta tag value +function getMeta(metaName) { + var metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; +} + +function algoliaSearch(query, limit, algoliaOptions) { + const { getAlgoliaResults } = window["@algolia/autocomplete-preset-algolia"]; + + const applicationId = algoliaOptions["application-id"]; + const searchOnlyApiKey = algoliaOptions["search-only-api-key"]; + const indexName = algoliaOptions["index-name"]; + const indexFields = algoliaOptions["index-fields"]; + const searchClient = window.algoliasearch(applicationId, searchOnlyApiKey); + const searchParams = algoliaOptions["params"]; + const searchAnalytics = !!algoliaOptions["analytics-events"]; + + return getAlgoliaResults({ + searchClient, + queries: [ + { + indexName: indexName, + query, + params: { + hitsPerPage: limit, + clickAnalytics: searchAnalytics, + ...searchParams, + }, + }, + ], + transformResponse: (response) => { + if (!indexFields) { + return response.hits.map((hit) => { + return hit.map((item) => { + return { + ...item, + text: highlightMatch(query, item.text), + }; + }); + }); + } else { + const remappedHits = response.hits.map((hit) => { + return hit.map((item) => { + const newItem = { ...item }; + ["href", "section", "title", "text", "crumbs"].forEach( + (keyName) => { + const mappedName = indexFields[keyName]; + if ( + mappedName && + item[mappedName] !== undefined && + mappedName !== keyName + ) { + newItem[keyName] = item[mappedName]; + delete newItem[mappedName]; + } + } + ); + newItem.text = highlightMatch(query, newItem.text); + return newItem; + }); + }); + return remappedHits; + } + }, + }); +} + +let subSearchTerm = undefined; +let subSearchFuse = undefined; +const kFuseMaxWait = 125; + +async function fuseSearch(query, fuse, fuseOptions) { + let index = fuse; + // Fuse.js using the Bitap algorithm for text matching which runs in + // O(nm) time (no matter the structure of the text). In our case this + // means that long search terms mixed with large index gets very slow + // + // This injects a subIndex that will be used once the terms get long enough + // Usually making this subindex is cheap since there will typically be + // a subset of results matching the existing query + if (subSearchFuse !== undefined && query.startsWith(subSearchTerm)) { + // Use the existing subSearchFuse + index = subSearchFuse; + } else if (subSearchFuse !== undefined) { + // The term changed, discard the existing fuse + subSearchFuse = undefined; + subSearchTerm = undefined; + } + + // Search using the active fuse + const then = performance.now(); + const resultsRaw = await index.search(query, fuseOptions); + const now = performance.now(); + + const results = resultsRaw.map((result) => { + const addParam = (url, name, value) => { + const anchorParts = url.split("#"); + const baseUrl = anchorParts[0]; + const sep = baseUrl.search("\\?") > 0 ? "&" : "?"; + anchorParts[0] = baseUrl + sep + name + "=" + value; + return anchorParts.join("#"); + }; + + return { + title: result.item.title, + section: result.item.section, + href: addParam(result.item.href, kQueryArg, query), + text: highlightMatch(query, result.item.text), + crumbs: result.item.crumbs, + }; + }); + + // If we don't have a subfuse and the query is long enough, go ahead + // and create a subfuse to use for subsequent queries + if (now - then > kFuseMaxWait && subSearchFuse === undefined) { + subSearchTerm = query; + subSearchFuse = new window.Fuse([], kFuseIndexOptions); + resultsRaw.forEach((rr) => { + subSearchFuse.add(rr.item); + }); + } + return results; +} diff --git a/_versioned/0_8_5/sitemap.xml b/_versioned/0_8_5/sitemap.xml new file mode 100644 index 00000000..3d4ad477 --- /dev/null +++ b/_versioned/0_8_5/sitemap.xml @@ -0,0 +1,839 @@ + + + + https://viash.io/index.html + 2024-02-29T09:40:43.916Z + + + https://viash.io/privacy.html + 2023-07-27T08:09:35.552Z + + + https://viash.io/installation/index.html + 2023-07-27T08:09:35.552Z + + + https://viash.io/guide/project/index.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/project/ide-setup.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/project/batch-processing.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/component/add-dependencies.html + 2023-08-14T10:52:22.000Z + + + https://viash.io/guide/component/add-resources.html + 2024-02-29T09:40:43.916Z + + + https://viash.io/guide/component/create-component.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/nextflow_vdsl3/index.html + 2024-02-15T08:37:26.053Z + + + https://viash.io/guide/nextflow_vdsl3/principles.html + 2024-02-01T08:30:42.663Z + + + https://viash.io/about.html + 2023-07-27T08:09:35.546Z + + + https://viash.io/reference/config_mods/index.html + 2024-02-29T12:43:31.994Z + + + https://viash.io/reference/cli/test.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/cli/config_view.html + 2024-02-29T09:40:43.916Z + + + https://viash.io/reference/cli/ns_build.html + 2024-02-29T09:40:43.916Z + + + https://viash.io/reference/cli/run.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/cli/ns_exec.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/index.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/functionality/index.html + 2024-02-29T12:43:31.994Z + + + https://viash.io/reference/config/functionality/resources/executable.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/resources/scalaScript.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/resources/javaScriptScript.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/resources/nextflowScript.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/resources/rScript.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/dependencies/localRepositoryWithName.html + 2024-01-25T09:21:53.400Z + + + https://viash.io/reference/config/functionality/dependencies/githubRepository.html + 2024-02-01T10:30:36.206Z + + + https://viash.io/reference/config/functionality/dependencies/gitRepositoryWithName.html + 2024-01-25T09:21:52.683Z + + + https://viash.io/reference/config/functionality/dependencies/githubRepositoryWithName.html + 2024-01-25T09:21:52.310Z + + + https://viash.io/reference/config/functionality/dependencies/viashhubRepository.html + 2024-02-01T10:30:36.206Z + + + https://viash.io/reference/config/functionality/arguments/index.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/arguments/boolean.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/arguments/string.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/arguments/boolean_true.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/arguments/boolean_false.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/argumentGroup.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/info.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/nextflow/index.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/nextflow/config.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/native/index.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/docker/setup/index.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/docker/setup/javascriptRequirements.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/docker/setup/aptRequirements.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/docker/setup/apkRequirements.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/docker/setup/dockerRequirements.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/nextflow_vdsl3/run_module.html + 2024-02-22T10:24:36.951Z + + + https://viash.io/reference/viash_code_block/index.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/blog/index.html + 2023-07-27T08:09:35.546Z + + + https://viash.io/blog/posts/viash-0.8.0/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.6.4/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.7.4/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.4.0/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.8.1/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.5.0/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.6/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.14/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.1.0/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.10.1/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.7.0/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.3.1/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.2.2/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.2/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.3.0/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.4/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.6.6/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.7.1/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.3.2/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.7.2/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.5.12/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.6.0/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.2.1/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.7.3/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.6.2/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.5.3/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.8/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.10/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/say-hello/index.html + 2023-07-27T08:09:35.546Z + + + https://viash.io/blog/posts/viash-0.0.1/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.15/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.5.7/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.6.7/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.5.13/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.7.5/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.5.1/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.11/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.2.0/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.6.3/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.6.5/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.6.1/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.5.9/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.4.0.1/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.5.5/index.html + 2024-02-22T10:24:36.928Z + + + https://viash.io/blog/posts/viash-0.8.2/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/quickstart/index.html + 2024-02-29T09:40:43.916Z + + + https://viash.io/reference/nextflow_vdsl3/import_module.html + 2024-02-29T12:43:31.994Z + + + https://viash.io/reference/nextflow_vdsl3/index.html + 2024-02-22T10:24:36.951Z + + + https://viash.io/reference/config/platforms/docker/setup/yumRequirements.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/docker/setup/rubyRequirements.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/docker/setup/pythonRequirements.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/docker/setup/rRequirements.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/docker/index.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/nextflow/directives.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/nextflow/auto.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/platforms/index.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/computationalRequirements.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/author.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/arguments/file.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/arguments/integer.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/arguments/double.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/arguments/long.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/config/functionality/dependencies/repository.html + 2024-01-25T09:21:51.753Z + + + https://viash.io/reference/config/functionality/dependencies/repositoryWithName.html + 2024-01-25T09:21:52.120Z + + + https://viash.io/reference/config/functionality/dependencies/viashhubRepositoryWithName.html + 2024-01-25T09:21:52.497Z + + + https://viash.io/reference/config/functionality/dependencies/localRepository.html + 2024-02-01T10:30:36.206Z + + + https://viash.io/reference/config/functionality/dependencies/gitRepository.html + 2024-02-01T10:30:36.206Z + + + https://viash.io/reference/config/functionality/dependencies/index.html + 2024-02-29T12:43:31.990Z + + + https://viash.io/reference/config/functionality/resources/plainFile.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/resources/bashScript.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/resources/pythonScript.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/resources/cSharpScript.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/functionality/resources/index.html + 2024-02-29T09:39:14.223Z + + + https://viash.io/reference/config/environmentVariables.html + 2024-02-29T09:39:14.220Z + + + https://viash.io/reference/project/index.html + 2024-02-29T09:40:43.923Z + + + https://viash.io/reference/cli/ns_list.html + 2024-02-29T09:40:43.916Z + + + https://viash.io/reference/cli/config_inject.html + 2024-02-29T09:40:43.916Z + + + https://viash.io/reference/cli/build.html + 2024-02-29T09:40:43.916Z + + + https://viash.io/reference/cli/ns_test.html + 2024-02-29T09:40:43.916Z + + + https://viash.io/reference/cli/index.html + 2024-02-22T10:24:36.951Z + + + https://viash.io/reference/index.html + 2023-07-27T08:09:35.552Z + + + https://viash.io/guide/nextflow_vdsl3/create-and-use-a-module.html + 2024-02-15T08:37:26.053Z + + + https://viash.io/guide/nextflow_vdsl3/create-a-pipeline.html + 2024-02-22T08:57:31.764Z + + + https://viash.io/guide/component/use-helper-functions.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/component/unit-testing.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/component/variables.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/component/index.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/project/structure.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/project/project-config.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/guide/index.html + 2023-07-27T08:09:35.549Z + + + https://viash.io/cheatsheet/viash_cheatsheet_latest.html + 2023-08-14T10:52:22.000Z + + + https://viash.io/githubRepository.html + 2024-01-12T16:17:54.814Z + + + https://viash.io/reference/project/configLinks.html + 2024-01-25T09:21:57.473Z + + + https://viash.io/reference/config/engines/index.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/engines/docker/index.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/runners/nextflow/index.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/config/runners/executable/index.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/config/runners/index.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/config/engines/native/index.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/project/configReferences.html + 2024-01-25T09:21:57.650Z + + + https://viash.io/blog/posts/viash-0.8.3/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.x.x/index.html + 2024-02-01T10:30:32.009Z + + + https://viash.io/blog/posts/viash-0.8.4/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/reference/config/project/references.html + 2024-02-22T09:46:22.624Z + + + https://viash.io/reference/config/functionality/links.html + 2024-02-22T09:25:25.480Z + + + https://viash.io/reference/projectConfig/index.html + 2024-02-01T10:30:36.199Z + + + https://viash.io/reference/config/functionality/repositories/index.html + 2024-02-29T12:43:31.994Z + + + https://viash.io/reference/config/functionality/repositories/githubRepository.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/functionality/repositories/viashhubRepository.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/functionality/repositories/localRepository.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/reference/config/functionality/repositories/gitRepository.html + 2024-02-29T09:40:43.919Z + + + https://viash.io/blog/posts/viash-0.8.5/index.html + 2024-02-29T12:43:31.990Z + + + https://viash.io/reference/packageConfig/index.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/config/engines/docker/setup/rRequirements.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/engines/docker/setup/pythonRequirements.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/engines/docker/setup/rubyRequirements.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/engines/docker/setup/yumRequirements.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/runners/nextflow/auto.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/runners/nextflow/directives.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/buildInfo.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/blog/posts/viash-0.999.999/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/reference/config/runners/nextflow/config.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/engines/docker/setup/dockerRequirements.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/engines/docker/setup/apkRequirements.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/engines/docker/setup/aptRequirements.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/engines/docker/setup/javascriptRequirements.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/engines/docker/setup/index.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/resources/index.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/resources/cSharpScript.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/resources/pythonScript.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/resources/bashScript.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/resources/plainFile.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/dependencies/index.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/arguments/long.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/arguments/double.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/arguments/integer.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/arguments/file.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/functionality.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/config/argumentGroup.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/config/repositories/index.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/repositories/githubRepository.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/repositories/viashhubRepository.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/computationalRequirements.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/config/links.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/config/repositories/localRepository.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/repositories/gitRepository.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/author.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/config/arguments/boolean_false.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/arguments/boolean_true.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/arguments/string.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/arguments/boolean.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/arguments/index.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/resources/rScript.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/resources/nextflowScript.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/resources/javaScriptScript.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/resources/scalaScript.html + 2024-02-22T10:24:41.111Z + + + https://viash.io/reference/config/resources/executable.html + 2024-02-22T10:24:41.108Z + + + https://viash.io/reference/config/references.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/reference/environmentVariables/index.html + 2024-02-22T10:24:41.105Z + + + https://viash.io/blog/posts/viash-0.8.6/index.html + 2024-02-22T10:24:36.925Z + + + https://viash.io/blog/posts/viash-0.9.0/index.html + 2024-02-22T10:24:36.925Z + + diff --git a/_versioned/0_8_5/styles.css b/_versioned/0_8_5/styles.css new file mode 100644 index 00000000..7ae4ec8f --- /dev/null +++ b/_versioned/0_8_5/styles.css @@ -0,0 +1,243 @@ + +@media (min-width: 991.98px) { +#quarto-header { + border-bottom: 1px solid #dee2e6; +} +} + +.navbar-brand > img { + max-height: 32px !important; +} + + +.platform-table td { + vertical-align: middle; +} + +.platform-table td > div.sourceCode { + margin-top: 0.3rem; + margin-bottom: 0.3rem; +} + + + +.document-example { + opacity: 0.9; + padding: 6px; + font-weight: 500; + margin-bottom: 1rem; +} + +.document-example div { + padding: 5px; +} + + +.document-example .citation { + color: blue; +} + +.trademark { + font-size: 0.6rem; + display: inline-block; + margin-left: -3px; +} + +.search-attribution { + margin-top: 20px; + padding-bottom: 20px; + height: 40px; +} + +#download-button { + margin-top: 1em; +} + +#download-table { + margin-bottom: 2em; +} + +#download-table p { + margin-bottom: 0; +} + +#download-table .checksum { + color: var(--bs-primary); + font-size: .775em; + cursor: pointer; + padding-top: 4px; +} + +#download-button { + display:flex; + padding-bottom: 10px; + padding-top: 10px; +} + +#download-button .secondary { + font-size: .775em; + margin-bottom: 0; +} + +#download-button .container { + display: flex; + padding-left: 10px; + padding-right: 40px; +} + +#download-button .icon-container { + fill: white; + width: 30px; + margin-right: 15px; +} + +iframe.reveal-demo { + width: 100%; + height: 350px; + outline: none; +} + + +.slide-deck { + border: 3px solid #dee2e6; + width: 100%; + height: 475px; +} + +@media only screen and (max-width: 600px) { + .slide-deck { + height: 400px; + } +} + + +@media (max-width: 575px) { + +.link-cards .card { + margin-bottom: 20px; + margin-right: 35px; +} + +} + +@media (min-width: 576px) { +.link-cards { + display: flex; + flex-direction: row; + flex-wrap: wrap; +} + +.link-cards .card { + width: 190px; + margin: 0 20px 12px 0; +} + + +} + + +.link-cards .card { + border: none; + padding: 0; +} + +.link-cards .card-title h4 { + margin-top: 0; +} + +.link-cards .card-title p { + margin-bottom: 0; +} + +.link-cards .card-subtitle { + margin-bottom: 0.7rem; +} + +.link-cards .card-body { + padding: 0.5rem; + padding-left: 0.1rem; +} + +.link-cards .card-body ul { + margin-bottom: 0; + padding-left: 0; + list-style-type: none; +} + +.link-cards .card-body ul a { + text-decoration: none; +} + +.link-cards .card-body ul li { + padding-bottom: 0.2rem; +} + + +.card .source-code { + margin-top: 3px; +} + +.carousel.card { + font-size: 16px; + padding-top: 2em; +} + +.carousel.card a { + text-decoration: none; +} + +.carousel img { + width: 70%; + margin-bottom: 110px; +} + +.carousel .carousel-control-prev-icon, +.carousel .carousel-control-next-icon { + margin-bottom: 110px; +} + + +.gallery-category { + column-gap: 10px; +} + +.btn-action-primary { + color: white; + background-color: rgb(105,177,233) !important; +} + +.btn-action-primary:hover { + color: white; +} + +.btn-action { + min-width: 165px !important; + border-radius: 30px !important; + border: none !important; +} + +.btn-info { + color: #fff !important; + background-color: #9954bb !important; + border-color: #9954bb !important; +} + +/* viash.io specific starts here */ + +.center-image { + display: block; + margin-left: auto; + margin-right: auto; +} + +/* Workaround for Mermaid text cutting off */ +.node { + font-size: 14px !important; +} + +[id^="mermaid"] { + width: 100% !important; + width: -moz-available !important; + width: -webkit-fill-available !important; + width: stretch !important; +} \ No newline at end of file diff --git a/_versioned/0_8_5/viash.png b/_versioned/0_8_5/viash.png new file mode 100644 index 00000000..b79a1bc9 Binary files /dev/null and b/_versioned/0_8_5/viash.png differ diff --git a/_viash.yaml b/_viash.yaml index f424c80a..64dc42de 100644 --- a/_viash.yaml +++ b/_viash.yaml @@ -1,4 +1,4 @@ -viash_version: 0.8.5 +viash_version: 0.8.6 source: _src target: _target diff --git a/blog/posts/viash-0.8.5/index.qmd b/blog/posts/viash-0.8.5/index.qmd index 304e7ff1..b1b26517 100644 --- a/blog/posts/viash-0.8.5/index.qmd +++ b/blog/posts/viash-0.8.5/index.qmd @@ -14,7 +14,7 @@ Fix a bug when building a test docker container which requires a test resource. ### BUG FIXES -* `nextflow runner`: Fix an issue with current nextflow-latest (24.01.0-edge) where our supporting library passes a GString instead of a String and results in a type mismatch (PR #640). +* `NextflowPlatform`: Fix an issue with current nextflow-latest (24.01.0-edge) where our supporting library passes a GString instead of a String and results in a type mismatch (PR #640). * `test resources`: Make non-script test resources available during building of a docker container for `viash test` (PR #652). diff --git a/blog/posts/viash-0.8.6/index.qmd b/blog/posts/viash-0.8.6/index.qmd new file mode 100644 index 00000000..1fd51195 --- /dev/null +++ b/blog/posts/viash-0.8.6/index.qmd @@ -0,0 +1,44 @@ +--- +title: "Viash 0.8.6" +subtitle: "Bug fixes and improvements for CI" +date: "2024-04-26" +categories: [ New Release ] +author: Viash Team +--- + +## What's new? + +Fix some issues in some edge cases. +Add options for testing in a CI environment. Given that these options are not meant for general use, they are hidden from the help message. +Some improvements are made to run in Nextflow Fusion. + +## Full changelog + +### DOCUMENTATION + +* `docker setup strategy`: Fix inconsistencies in the documentation (PR #657). + +* `repositories`: Fix `uri` -> `repo` in the repositories documentation (PR #682). + +### NEW FUNCTIONALITY + +* `viash test` and `viash ns test`: Add a hidden `--dry_run` option to build the tests without executing them (PR #676). + +* `viash test` and `viash ns test`: Add a hidden `--deterministic_working directory` argument to use a fixed directory path (PR #683). + +* `component names`: Verify that component namespace and name combinations are unique (PR #685). + +### BUG FIXES + +* `NextflowPlatform`: Fix publishing state for output arguments with `multiple: true` (#638, PR #639). + +* `Executable`: Check whether a multiple output file argument contains a wildcard (PR #639). + +* `NextflowPlatform`: Fix a possible cause of concurrency issues (PR #669). + +* `Resources`: Fix an issue where if the first resource is not a script, the resource is silently dropped (PR #670). + +* `Docker automount`: Prevent adding a trailing slash to an automounted folder (PR #673). + +* `NextflowPlatform`: Change the at-runtime generated nextflow process from an in-memory to an on-disk temporary file, which should cause less issues with Nextflow Fusion (PR #681). + diff --git a/reference/cli_schema_export.json b/reference/cli_schema_export.json index b3286fa9..16466c0a 100644 --- a/reference/cli_schema_export.json +++ b/reference/cli_schema_export.json @@ -305,6 +305,25 @@ "hidden" : false, "type" : "String", "optType" : "opt" + }, + { + "name" : "dry_run", + "descr" : "Only generate the test script, do not run the test.", + "default" : "false", + "required" : false, + "argName" : "arg", + "hidden" : true, + "type" : "Boolean", + "optType" : "opt" + }, + { + "name" : "deterministic_working_directory", + "descr" : "Name of the working directory in the temporary directory. If not set, the working directory name will be a partially randomized name.", + "required" : false, + "argName" : "arg", + "hidden" : true, + "type" : "String", + "optType" : "opt" } ] }, @@ -628,6 +647,25 @@ "hidden" : false, "type" : "Boolean", "optType" : "opt" + }, + { + "name" : "dry_run", + "descr" : "Only generate the test scripts, do not run them.", + "default" : "false", + "required" : false, + "argName" : "arg", + "hidden" : true, + "type" : "Boolean", + "optType" : "opt" + }, + { + "name" : "deterministic_working_directory", + "descr" : "Name of the working directory in the temporary directory. If not set, the working directory name will be a partially randomized name.", + "required" : false, + "argName" : "arg", + "hidden" : true, + "type" : "String", + "optType" : "opt" } ] }, diff --git a/reference/config/functionality/arguments/file.qmd b/reference/config/functionality/arguments/file.qmd index c1e5a704..2bdeeb14 100644 --- a/reference/config/functionality/arguments/file.qmd +++ b/reference/config/functionality/arguments/file.qmd @@ -124,7 +124,20 @@ info: **Default**: `False` -Treat the argument value as an array. Arrays can be passed using the delimiter `--foo=1:2:3` or by providing the same argument multiple times `--foo 1 --foo 2`. You can use a custom delimiter by using the [`multiple_sep`](#multiple_sep) property. `false` by default. +Allow for multiple values (`false` by default). + +For input arguments, this will be treated as a list of values. For example, values +can be passed using the delimiter `--foo=1:2:3` or by providing the same argument +multiple times `--foo 1 --foo 2`. You can use a custom delimiter by using the +[`multiple_sep`](#multiple_sep) property. + +For output file arguments, the passed value needs to contain a wildcard. For example, +`--foo 'foo_*.txt'` will be treated as a list of files that match the pattern. Note that in Bash, + the wildcard will need to be in quotes (`"foo_*.txt"` or `'foo_*.txt'`) or else Bash will + automatically attempt to expand the expression. + +Other output arguments (e.g. integer, double, ...) are not supported yet. + **Examples:** diff --git a/reference/config/functionality/repositories/index.qmd b/reference/config/functionality/repositories/index.qmd index 9b1e104f..c7518987 100644 --- a/reference/config/functionality/repositories/index.qmd +++ b/reference/config/functionality/repositories/index.qmd @@ -17,7 +17,7 @@ Specifies a repository where dependency components can be found. repositories: - name: openpipelines-bio type: github - uri: openpipelines-bio/modules + repo: openpipelines-bio/modules tag: 0.3.0 ``` diff --git a/reference/config/platforms/docker/index.qmd b/reference/config/platforms/docker/index.qmd index 438d224c..2ddf2223 100644 --- a/reference/config/platforms/docker/index.qmd +++ b/reference/config/platforms/docker/index.qmd @@ -218,11 +218,11 @@ The Docker setup strategy to use when building a container. | `ifneedbebuild` | Build the image if it does not exist locally. | `ifneedbecachedbuild` | Build the image with caching enabled if it does not exist locally, with caching enabled. | `alwayspull` / `pull` / `p` | Try to pull the container from [Docker Hub](https://hub.docker.com) or the [specified docker registry](/reference/config/platforms/docker/#registry). -| `alwayspullelsebuild` / `pullelsebuild` | Try to pull the image from a registry and build it if it doesn't exist. -| `alwayspullelsecachedbuild` / `pullelsecachedbuild` | Try to pull the image from a registry and build it with caching if it doesn't exist. +| `alwayspullelsebuild` / `pullelsebuild` | Try to pull the image from a registry and build it if it does not exist. +| `alwayspullelsecachedbuild` / `pullelsecachedbuild` | Try to pull the image from a registry and build it with caching if it does not exist. | `ifneedbepull` | If the image does not exist locally, pull the image. -| `ifneedbepullelsebuild` | If the image does not exist locally, pull the image. If the image does exist, build it. -| `ifneedbepullelsecachedbuild` | If the image does not exist locally, pull the image. If the image does exist, build it with caching enabled. +| `ifneedbepullelsebuild` | Do nothing if the image exists locally. Else, try to pull the image from a registry. Otherwise build the image from scratch. +| `ifneedbepullelsecachedbuild` | Do nothing if the image exists locally. Else, try to pull the image from a registry. Otherwise build the image with caching enabled. | `push` | Push the container to [Docker Hub](https://hub.docker.com) or the [specified docker registry](/reference/config/platforms/docker/#registry). | `pushifnotpresent` | Push the container to [Docker Hub](https://hub.docker.com) or the [specified docker registry](/reference/config/platforms/docker/#registry) if the [tag](/reference/config/platforms/docker/#tag) does not exist yet. | `donothing` / `meh` | Do not build or pull anything. diff --git a/reference/config_schema_export.json b/reference/config_schema_export.json index 95ea7738..cfca1c9b 100644 --- a/reference/config_schema_export.json +++ b/reference/config_schema_export.json @@ -876,7 +876,7 @@ "name" : "setup_strategy", "type" : "DockerSetupStrategy", "niceType" : "DockerSetupStrategy", - "description" : "The Docker setup strategy to use when building a container.\n\n| Strategy | Description |\n|-----|----------|\n| `alwaysbuild` / `build` / `b` | Always build the image from the dockerfile. This is the default setup strategy.\n| `alwayscachedbuild` / `cachedbuild` / `cb` | Always build the image from the dockerfile, with caching enabled.\n| `ifneedbebuild` | Build the image if it does not exist locally.\n| `ifneedbecachedbuild` | Build the image with caching enabled if it does not exist locally, with caching enabled.\n| `alwayspull` / `pull` / `p` | Try to pull the container from [Docker Hub](https://hub.docker.com) or the @[specified docker registry](docker_registry).\n| `alwayspullelsebuild` / `pullelsebuild` | Try to pull the image from a registry and build it if it doesn't exist.\n| `alwayspullelsecachedbuild` / `pullelsecachedbuild` | Try to pull the image from a registry and build it with caching if it doesn't exist.\n| `ifneedbepull` | If the image does not exist locally, pull the image.\n| `ifneedbepullelsebuild` | If the image does not exist locally, pull the image. If the image does exist, build it.\n| `ifneedbepullelsecachedbuild` | If the image does not exist locally, pull the image. If the image does exist, build it with caching enabled.\n| `push` | Push the container to [Docker Hub](https://hub.docker.com) or the @[specified docker registry](docker_registry).\n| `pushifnotpresent` | Push the container to [Docker Hub](https://hub.docker.com) or the @[specified docker registry](docker_registry) if the @[tag](docker_tag) does not exist yet.\n| `donothing` / `meh` | Do not build or pull anything.\n\n", + "description" : "The Docker setup strategy to use when building a container.\n\n| Strategy | Description |\n|-----|----------|\n| `alwaysbuild` / `build` / `b` | Always build the image from the dockerfile. This is the default setup strategy.\n| `alwayscachedbuild` / `cachedbuild` / `cb` | Always build the image from the dockerfile, with caching enabled.\n| `ifneedbebuild` | Build the image if it does not exist locally.\n| `ifneedbecachedbuild` | Build the image with caching enabled if it does not exist locally, with caching enabled.\n| `alwayspull` / `pull` / `p` | Try to pull the container from [Docker Hub](https://hub.docker.com) or the @[specified docker registry](docker_registry).\n| `alwayspullelsebuild` / `pullelsebuild` | Try to pull the image from a registry and build it if it does not exist.\n| `alwayspullelsecachedbuild` / `pullelsecachedbuild` | Try to pull the image from a registry and build it with caching if it does not exist.\n| `ifneedbepull` | If the image does not exist locally, pull the image.\n| `ifneedbepullelsebuild` | Do nothing if the image exists locally. Else, try to pull the image from a registry. Otherwise build the image from scratch.\n| `ifneedbepullelsecachedbuild` | Do nothing if the image exists locally. Else, try to pull the image from a registry. Otherwise build the image with caching enabled.\n| `push` | Push the container to [Docker Hub](https://hub.docker.com) or the @[specified docker registry](docker_registry).\n| `pushifnotpresent` | Push the container to [Docker Hub](https://hub.docker.com) or the @[specified docker registry](docker_registry) if the @[tag](docker_tag) does not exist yet.\n| `donothing` / `meh` | Do not build or pull anything.\n\n", "example" : [ { "example" : "setup_strategy: alwaysbuild", @@ -2336,7 +2336,7 @@ "name" : "multiple", "type" : "Boolean", "niceType" : "Boolean", - "description" : "Treat the argument value as an array. Arrays can be passed using the delimiter `--foo=1:2:3` or by providing the same argument multiple times `--foo 1 --foo 2`. You can use a custom delimiter by using the [`multiple_sep`](#multiple_sep) property. `false` by default.", + "description" : "Allow for multiple values (`false` by default).\n\nFor input arguments, this will be treated as a list of values. For example, values\ncan be passed using the delimiter `--foo=1:2:3` or by providing the same argument \nmultiple times `--foo 1 --foo 2`. You can use a custom delimiter by using the \n[`multiple_sep`](#multiple_sep) property.\n\nFor output file arguments, the passed value needs to contain a wildcard. For example,\n`--foo 'foo_*.txt'` will be treated as a list of files that match the pattern. Note that in Bash,\n the wildcard will need to be in quotes (`\"foo_*.txt\"` or `'foo_*.txt'`) or else Bash will\n automatically attempt to expand the expression.\n\nOther output arguments (e.g. integer, double, ...) are not supported yet.\n", "example" : [ { "example" : "- name: --my_files\n type: file\n multiple: true\n", @@ -4085,7 +4085,7 @@ "description" : "Specifies a repository where dependency components can be found.\n\n - @[local](repo_local)\n - @[git](repo_git)\n - @[github](repo_github)\n - @[vsh](repo_vsh)\n", "example" : [ { - "example" : "repositories:\n - name: openpipelines-bio\n type: github\n uri: openpipelines-bio/modules\n tag: 0.3.0\n", + "example" : "repositories:\n - name: openpipelines-bio\n type: github\n repo: openpipelines-bio/modules\n tag: 0.3.0\n", "format" : "yaml" } ], diff --git a/versions.json b/versions.json index 3408a2ba..cafefee9 100644 --- a/versions.json +++ b/versions.json @@ -1,9 +1,9 @@ { - "latest": "0.8.4", + "latest": "0.8.6", "versions": [ { - "name": "Viash 0.8.4", - "link": "0_8_4" + "name": "Viash 0.8.5", + "link": "0_8_5" }, { "name": "Viash 0.8.3",