[
  {
    "path": ".editorconfig",
    "content": "[*]\ncharset = utf-8\ninsert_final_newline = true\nend_of_line = lf\nindent_style = space\nindent_size = 2\nmax_line_length = 80"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]\npatreon: # Replace with a single Patreon username\nopen_collective: # Replace with a single Open Collective username\nko_fi: munshkr\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\ncustom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']\n"
  },
  {
    "path": ".github/workflows/deploy.yml",
    "content": "name: Build and Deploy to flok.cc\non:\n  push:\n    branches:\n      - main\n  workflow_dispatch:\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-node@v3\n        with:\n          node-version: 20\n      - run: npm install\n      - run: npm run build\n\n      - name: Configure SSH\n        run: |\n          mkdir -p ~/.ssh/\n          echo \"$SSH_KEY\" > ~/.ssh/prod.key\n          chmod 600 ~/.ssh/prod.key\n          cat >>~/.ssh/config <<END\n          Host prod\n            HostName $SSH_HOST\n            User $SSH_USER\n            IdentityFile ~/.ssh/prod.key\n            StrictHostKeyChecking no\n          END\n        env:\n          SSH_USER: ${{ secrets.SSH_USER }}\n          SSH_KEY: ${{ secrets.SSH_KEY }}\n          SSH_HOST: ${{ secrets.SSH_HOST }}\n\n      - name: Update remote repository and install dependencies\n        run: ssh prod 'cd flok && git fetch && git reset --hard ${{ github.sha }} && npm install'\n\n      - name: Sync web build\n        uses: burnett01/rsync-deployments@7.0.0\n        with:\n          switches: -avzr --delete\n          path: packages/web/dist/\n          remote_path: flok/packages/web/dist/\n          remote_host: ${{ secrets.SSH_HOST }}\n          remote_user: ${{ secrets.SSH_USER }}\n          remote_key: ${{ secrets.SSH_KEY }}\n\n      - name: Restart server\n        run: ssh prod 'sudo systemctl restart flok && sleep 5 && sudo systemctl status flok'\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "name: Test\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        node-version: [20]\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-node@v3\n        with:\n          node-version: ${{ matrix.node-version }}\n      - run: npm install\n      - run: npm run build\n      - run: npm run check\n      - run: npm run lint\n      # - run: npm test\n"
  },
  {
    "path": ".gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: node_js\nnode_js:\n  - \"12\"\ncache:\n  yarn: true\n  directories:\n    - node_modules\nbefore_install:\n  - curl -o- -L https://yarnpkg.com/install.sh | bash -s\n  - export PATH=\"$HOME/.yarn/bin:$PATH\"\nscript:\n  - yarn test\nbefore_deploy:\n  - echo \"//registry.npmjs.org/:_authToken=\\${NPM_TOKEN}\" >> $HOME/.npmrc 2> /dev/null\ndeploy:\n  provider: script\n  script: yarn lerna publish from-git --no-git-reset --yes\n  skip_cleanup: true\n  on:\n    node: \"12\"\n    tags: true\n  api_key:\n    secure: hRpP7MGwhsCAXtKDS2KowriWu2ADLvW+/Jb/qSdBzR6v4UQ6WxYEiopHwuApk/m9iPLW0QmD14n//kU4ADTm84v4XqY5OoUZxkcQWi5wyY3EbFnOVT3Fr2cr/xNtjXP8so/5hKAHHxccx8ZeGd/pGEkolBhmKMpdmwzcCXTE1jN1xsgHduPPLg3/ob5ORGXvrTm2pF6aqWyaMS7eLydfJ8Dm1FLmLFGy9mUQXSF3RFuhIZeBy5I3emMOn+CgJv1XtTjf9YexD3e79LK/WzCVSxGB8Uhh0jcKDnHCY3wsRMB7R+0RLMB8mi6dYLl24DcQ6AwGrTj4gL7uWWfkVVF2pldTfz+NvfJ2tEszjTZ4Q0Z6pMc/g2YbP0Kam63Rv0FG9ZyW6HPUTnHiA86skpzwfW1TA+O5FgvdzsXAtwrmuxCx/I4a4C2pE9ldc3SkgKz9XJ60hZCilz3r8qknPJaGnkAEZBBOu+u3cEBJtQZESyZylENwdioyxSWXIHxbi9pjdupdGkjZ34QVX1lohTmxmALAB4X3REEm0jYY/OnvkhnWJ0tjaPQCmDp+ONOyyFvVtCMzFUZ+lyXv6xcyVththZMIirX8SnwKXDAsOFXuqXsIq7feRMiz6Nq3Q6IadKGC7LlMcIJgXVh8lypw6sAUnJUq362oyD4SmRE56sfsHs0=\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [1.3.0] - 2025-01-05\n\n### New Features\n\n- Vim keybindings (#280)\n- Themes and font families (#283, #303)\n- Display settings dialog for changing canvas resolution (#301)\n- Define `fft`, `P` and `useStrudelCanvas` functions for Hydra (#310, #309)\n\n### Bugfixes and minor changes\n\n- Use line separator for Windows on REPL command copy dialog (#285)\n- Initialize audio on Strudel on first user interaction (keydown/mouse) (#294)\n- Fix flash/highlight stuck on multiple evaluations (#308)\n- Add angle brackets to Tidal language autoclose (#302)\n- Upgrade `@strudel/*` packages to v1.1.0; add `@strudel/draw` (#292)\n\n## [1.2.0] - 2024-04-26\n\n### New Features\n\n- Support for Renardo (Foxdot fork)\n- web: Sandbox web languages using iframes\n- web: Toggle line numbers with <kbd>Shift</kbd>-<kbd>Ctrl</kbd>-<kbd>W</kbd>\n  and linewrap with <kbd>Shift</kbd>-<kbd>Ctrl</kbd>-<kbd>W</kbd>.\n- web(strudel): Code highlighting\n\n### Bugfixes\n\n- repl: Use `sardine` instead of `fishery` when running Sardine REPL\n- web(hydra): Use correct canvas size by default + pixelated image rendering\n- web(strudel): Misc fixse\n- Lots of name clashing between hydra, strudel and mercury-web were solved with\n  language sandboxes.\n\n## [1.1.1] - 2024-01-29\n\n### Bugfixes\n\n- web(strudel): Use REPL evaluate method, this fixes the \"`setcps` is not defined\" error.\n\n## [1.1.0] - 2024-01-28\n\n### Bugfixes\n\n- web(hydra): Fixed issues with P5 not loading properly\n- web(hydra): `await` now works properly\n- web: Fixed issue with `flok-web` binary script running in development mode\n\n### New Features\n\n- web: Share URL command for sharing session URL along with current layout and\n  code.\n- web: `hideErrors` query parameter option for hiding errors of web targets\n- web: `code` and `c0`..`c7` hash parameters to set code for each editor\n\n### Changed\n\n- web(hydra): Updated P5 to 1.9.0\n- web(mercury): Updated Mercury to 0.14.0\n- web(strudel): Updated Strudel to 1.0.0\n- web: Updated Codemirror and related packages\n- web: Updated Yjs and related packages\n- web: Updated Vite 5\n- web: Moved `username` and `targets` query parameters as hash parameters\n\n## [1.0.2] - 2024-01-13\n\n### Changed\n\n- repl: Fix error when trying to use flok-repl without `-T`/`--types` argument (default value)\n\n## [1.0.1] - 2024-01-13\n\n### Changed\n\n- web: Fixed and optimized flok-web package, by removing lots of runtime deps\n  that were used on build time only.\n- web: Removed pinned flok-repl version from REPL instructions.\n\n## [1.0.0] - 2024-01-12\n\nComplete rewrite of Flok, with a new architecture and new features. See\n[README.md](../README.md) for more information.\n\n- Started new web project, based on Vite, Tailwind, Radix UI and Shadcn CSS frameworks.\n- Upgraded CodeMirror to version 6\n- Upgraded Yjs to latest version\n- New modular architecture, with separate plugins related to codemirror\n  (following their new architecture as well)\n- Document layout is now part of the session state, and can be changed\n  dynamically, instead of being based on the query parameter `?layout`.\n- Improved REPL message handling and UI\n- Command palette for executing commands and configuring the editor\n- Added support for Strudel and Mercury as web targets\n\n## [0.4.12] - 2024-01-06\n\n### Added\n\n- web: Toggle comment with Ctrl-/ or Cmd-/\n- web(sardine): Free all sound for Sardine\n\n### Changed\n\n- repl(sardine): Changed interpreter name (fishery -> sardine)\n- web: Bugfixes related to the server script (flok-web)\n- web: Fixed @types/react wrong version\n\n## [0.4.8] - 2022-05-26\n\n### Added\n\n- web: Add key binding Ctrl+Shift+H to hide or show editors\n\n### Changed\n\n- web: Replace yjsdemo WebSocket Yjs server for an embedded WS server\n- web: Use a random english name + first 8 chars of uuid as default session name\n- web: Upgrade p5 to version 1.4.1\n- web: Upgrade hydra-synth to version 1.3.16\n- web: Upgrade Next to version 12\n- web: Restore package bundle\n\n## [0.4.6] - 2021-10-31\n\n### Added\n\n- web: Print possible network IPs when starting web server locally\n- web: New --static-dir option for setting a custom static files directory when\n  starting web server.\n\n### Changed\n\n- web: Upgrade hydra-synth to 1.3.8\n- web: Upgrade next to 11\n- repl: Remove \"tidal> \" from stdout on tidal target; other minor improvements\n\n## [0.4.5] - 2021-01-05\n\n### Added\n\n- web: Read-only mode by adding a `readonly=1` query parameter to a session URL\n- repl: In `foxdot` REPL, call `load_startup_file()` after loading Foxdot package.\n\n### Changed\n\n- web: Upgrade hydra-synth to 1.3.6\n\n## [0.4.4] - 2020-12-23\n\n### Added\n\n- web: Follow remote cursors when moving (jump to line), but only if editor is\n  blurred.\n- web: Make remote caret visible to current user too.\n- web: Properly support block evaluation with parens for\n  `sclang`/`remote_sclang` targets.\n\n### Changed\n\n- web: Skip 'hydra' as a flok-repl example when joining a session\n- repl: Bugfix when using custom REPL command\n- repl: On sclang targets, add semicolons after closing parens\n\n## [0.4.3] - 2020-12-04\n\n### Added\n\n- repl, web: Support for Mercury\n- web: When joining session, show flok-repl example based on first target in\n  layout.\n- web: New shortcut for evaluating web-target (e.g. Hydra) code only on local\n  client (Ctrl-Alt-Enter for block execution, Shift-Alt-Enter for line\n  execution).\n\n### Changed\n\n- web: Upgrade to Hydra 1.3.4\n\n## [0.4.2] - 2020-11-12\n\n### Changed\n\n- web: Better styles for selected text and remote caret\n- repl: Fix path to embedded BootTidal.hs when using fallback\n\n## [0.4.1] - 2020-10-11\n\n### Added\n\n- web: Copy button for copying flok-repl example when joining session\n- repl: Add package metadata and data dir, which includes a Tidal bootScript\n  file.\n\n### Changed\n\n- web: Disable form when creating session, while session page loads\n- repl: If ghc-pkg fails to get tidal data dir, fallback to embedded bootScript\n  file.\n\n## [0.4.0] - 2020-10-06\n\n### Added\n\n- repl: Add `--nickname/-N` to send REPL messages (out/err) to named user instead\n  of all connected users.\n- repl: Add `--notify-to-all` to force send messages to all users (old behaviour).\n- repl: Add extra option `ghci` for `tidal` REPL type, for customizing ghci\n  binary path.\n- web: Show current Flok version when joining session.\n- web: Include -N option on flok-repl example when joining session.\n\n### Changed\n\n- Now, by default, `flok-repl` _will not_ send messages to all users by default.\n  You need to enable the `--notify-to-all` option if you want the old\n  behaviour. If `--nickname/-N` and `--notify-to-all` are not present,\n  flok-repl won't send any messages, only print them on standard output/error.\n\n## [0.3.17] - 2020-10-06\n\n### Added\n\n- repl: Add new `--config` option for customizing parameters from a JSON file\n- repl: Load config file from `FLOK_CONFIG` environment file, if defined. Also,\n  load _.env files_ automatically.\n\n### Changed\n\n- web: Bugfix: host prop was undefined on first page load, failing to connect\n  afterwards.\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, gender identity and expression, level of experience,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual attention or\n  advances\n- Trolling, insulting/derogatory comments, and personal or political attacks\n- Public or private harassment\n- Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at munshkr@gmail.com. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<https://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<https://www.gnu.org/licenses/why-not-lgpl.html>.\n"
  },
  {
    "path": "README.md",
    "content": "# Flok\n\nWeb-based P2P collaborative editor for live coding music and graphics\n\n> [!NOTE]\n> Development has now moved to Codeberg here: https://codeberg.org/munshkr/flok\n\n## License\n\nThis project is licensed under GPL 3+. Refer to [LICENSE.txt](LICENSE.txt).\n\nPunctual is licensed under GPL 3+. Refer to \n[LICENSE](https://github.com/dktr0/Punctual/blob/main/LICENSE).\n\nFavicon based on \"Origami\" by Andrejs Kirma, from [Noun\nProject](https://thenounproject.com/browse/icons/term/origami/) (CC BY 3.0)\n"
  },
  {
    "path": "lerna.json",
    "content": "{\n  \"$schema\": \"node_modules/lerna/schemas/lerna-schema.json\",\n  \"useWorkspaces\": true,\n  \"version\": \"1.3.0\"\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"root\",\n  \"description\": \"Web-based P2P collaborative editor for live coding music and graphics\",\n  \"private\": true,\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/munshkr/flok.git\"\n  },\n  \"scripts\": {\n    \"build\": \"lerna run build\",\n    \"check\": \"lerna run check\",\n    \"lint\": \"lerna run lint\",\n    \"format\": \"lerna run format\"\n  },\n  \"keywords\": [\n    \"codemirror\",\n    \"webrtc\",\n    \"websockets\",\n    \"live-coding\",\n    \"collaborative-editing\"\n  ],\n  \"author\": \"Damián Silvani <munshkr@gmail.com>\",\n  \"license\": \"GPL-3.0+\",\n  \"bugs\": {\n    \"url\": \"https://github.com/munshkr/flok/issues\"\n  },\n  \"homepage\": \"https://github.com/munshkr/flok#readme\",\n  \"devDependencies\": {\n    \"lerna\": \"^6.5.1\"\n  },\n  \"workspaces\": [\n    \"packages/*\"\n  ],\n  \"dependencies\": {\n    \"react-rnd\": \"^10.4.1\"\n  }\n}\n"
  },
  {
    "path": "packages/cm-eval/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "packages/cm-eval/lib/eval.ts",
    "content": "import { EditorView, keymap } from \"@codemirror/view\";\nimport { EditorState } from \"@codemirror/state\";\nimport { flash } from \"./flashField.js\";\nimport type { Document } from \"@flok-editor/session\";\n\ninterface EvalBlock {\n  text: string;\n  from: number | null;\n  to: number | null;\n}\n\nexport function getSelection(state: EditorState): EvalBlock {\n  if (state.selection.main.empty) return { text: \"\", from: null, to: null };\n\n  let { from, to } = state.selection.main;\n\n  let text = state.doc.sliceString(from, to);\n  return { text, from, to };\n}\n\nexport function getLine(state: EditorState): EvalBlock {\n  const line = state.doc.lineAt(state.selection.main.from);\n\n  let { from, to } = line;\n\n  let text = state.doc.sliceString(from, to);\n  return { text, from, to };\n}\n\nexport function getBlock(state: EditorState): EvalBlock {\n  let { doc, selection } = state;\n  let { text, number } = state.doc.lineAt(selection.main.from);\n\n  if (text.trim().length === 0) return { text: \"\", from: null, to: null };\n\n  let fromL, toL;\n  fromL = toL = number;\n\n  while (fromL > 1 && doc.line(fromL - 1).text.trim().length > 0) {\n    fromL -= 1;\n  }\n  while (toL < doc.lines && doc.line(toL + 1).text.trim().length > 0) {\n    toL += 1;\n  }\n\n  let { from } = doc.line(fromL);\n  let { to } = doc.line(toL);\n\n  text = state.doc.sliceString(from, to);\n  return { text, from, to };\n}\n\nexport const evaluateBlockOrSelection = (\n  view: EditorView,\n  doc: Document,\n  web: boolean = false,\n) => {\n  const { state } = view;\n  const selection = getSelection(state);\n  if (selection.text) {\n    const { text, from, to } = selection;\n    flash(view, from, to);\n    doc.evaluate(text, { from, to });\n  } else {\n    const { text, from, to } = getBlock(state);\n    flash(view, from, to);\n    doc.evaluate(text, { from, to }, web ? \"web\" : \"default\");\n  }\n};\n\nexport const evaluateLine = (\n  view: EditorView,\n  doc: Document,\n  web: boolean = false,\n) => {\n  const { state } = view;\n  const { text, from, to } = getLine(state);\n  flash(view, from, to);\n  doc.evaluate(text, { from, to }, web ? \"web\" : \"default\");\n};\n\nexport const evaluateDocument = (\n  view: EditorView,\n  doc: Document,\n  web: boolean = false,\n) => {\n  const { state } = view;\n  const { from } = state.doc.line(1);\n  const { to } = state.doc.line(state.doc.lines);\n  const text = state.doc.sliceString(from, to);\n  flash(view, from, to);\n  doc.evaluate(text, { from, to }, web ? \"web\" : \"default\");\n};\n\nexport function evalKeymap(\n  document: Document,\n  {\n    defaultEvalKeys = [\"Ctrl-Enter\", \"Cmd-Enter\"],\n    lineEvalKeys = [\"Shift-Enter\"],\n    documentEvalKeys = [\"Alt-Enter\", \"Ctrl-Shift-Enter\", \"Cmd-Shift-Enter\"],\n    defaultMode = \"block\",\n    web = false,\n  }: {\n    defaultEvalKeys?: string[];\n    lineEvalKeys?: string[];\n    documentEvalKeys?: string[];\n    defaultMode?: \"block\" | \"document\";\n    web?: boolean;\n  } = {},\n) {\n  return keymap.of([\n    ...defaultEvalKeys.map((key) => ({\n      key,\n      run(view: EditorView) {\n        if (defaultMode === \"block\") {\n          evaluateBlockOrSelection(view, document, web);\n        } else {\n          evaluateDocument(view, document, web);\n        }\n        return true;\n      },\n    })),\n    ...lineEvalKeys.map((key) => ({\n      key,\n      run(view: EditorView) {\n        evaluateLine(view, document, web);\n        return true;\n      },\n    })),\n    ...documentEvalKeys.map((key) => ({\n      key,\n      run(view: EditorView) {\n        evaluateDocument(view, document, web);\n        return true;\n      },\n    })),\n  ]);\n}\n"
  },
  {
    "path": "packages/cm-eval/lib/flashField.ts",
    "content": "import { EditorView, Decoration } from \"@codemirror/view\";\nimport { StateField, StateEffect } from \"@codemirror/state\";\n\ntype FlashRange = [number, number];\n\nexport const setFlash = StateEffect.define<FlashRange | null>();\n\nconst defaultStyle = {\n  \"background-color\": \"#FFCA2880\",\n};\n\nconst styleObjectToString = (styleObj: object): string =>\n  Object.entries(styleObj)\n    .map(([k, v]) => `${k}:${v}`)\n    .join(\";\");\n\nexport const flash = (\n  view: EditorView,\n  from: number | null,\n  to: number | null,\n  timeout: number = 150,\n) => {\n  if (from === null || to === null) return;\n  view.dispatch({ effects: setFlash.of([from, to]) });\n  setTimeout(() => {\n    view.dispatch({ effects: setFlash.of(null) });\n  }, timeout);\n};\n\nexport const flashField = (style: object = defaultStyle) =>\n  StateField.define({\n    create() {\n      return Decoration.none;\n    },\n    update(flash, tr) {\n      try {\n        for (let e of tr.effects) {\n          if (e.is(setFlash)) {\n            if (e.value) {\n              const [from, to] = e.value;\n              const mark = Decoration.mark({\n                attributes: { style: styleObjectToString(style) },\n              });\n              flash = Decoration.set([mark.range(from, to)]);\n            } else {\n              flash = Decoration.set([]);\n            }\n          }\n        }\n        return flash;\n      } catch (err) {\n        console.warn(\"flash error\", err);\n        return flash;\n      }\n    },\n    provide: (f) => EditorView.decorations.from(f),\n  });\n\nexport default flashField;\n"
  },
  {
    "path": "packages/cm-eval/lib/index.ts",
    "content": "export * from \"./eval.js\";\nexport * from \"./flashField.js\";\nexport * from \"./remoteEvalFlash.js\";\n"
  },
  {
    "path": "packages/cm-eval/lib/remoteEvalFlash.ts",
    "content": "import { ViewPlugin } from \"@codemirror/view\";\nimport type { EditorView } from \"@codemirror/view\";\nimport type { Document, EvalMessage } from \"@flok-editor/session\";\nimport { flash } from \"./flashField.js\";\n\nexport const remoteEvalFlash = (document: Document) =>\n  ViewPlugin.fromClass(\n    class {\n      _handleEval: any;\n\n      constructor(view: EditorView) {\n        this._handleEval = (msg: EvalMessage) => {\n          const { docId, from, to } = msg;\n          if (docId !== document.id) return;\n          flash(view, from, to);\n        };\n\n        document.session.on(\"eval\", this._handleEval);\n      }\n\n      destroy() {\n        document.session.off(\"eval\", this._handleEval);\n      }\n    },\n  );\n"
  },
  {
    "path": "packages/cm-eval/package.json",
    "content": "{\n  \"name\": \"@flok-editor/cm-eval\",\n  \"version\": \"1.3.0\",\n  \"description\": \"CodeMirror 6 extension for code evaluation\",\n  \"author\": \"Damián Silvani <munshkr@gmail.com>\",\n  \"license\": \"GPL-3.0+\",\n  \"type\": \"module\",\n  \"files\": [\n    \"dist\"\n  ],\n  \"types\": \"./dist/index.d.ts\",\n  \"module\": \"./dist/index.js\",\n  \"main\": \"./dist/index.cjs\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"tsc\"\n  },\n  \"dependencies\": {\n    \"debug\": \"^4.3.4\"\n  },\n  \"devDependencies\": {\n    \"@types/debug\": \"^4.1.7\",\n    \"@types/lodash\": \"^4.14.191\",\n    \"@types/node\": \"^18.14.6\",\n    \"@types/uuid\": \"^9.0.1\",\n    \"prettier\": \"^3.4.2\",\n    \"typescript\": \"^4.9.4\"\n  },\n  \"peerDependencies\": {\n    \"@codemirror/commands\": \"^6.2.2\",\n    \"@codemirror/state\": \"^6.2.0\",\n    \"@codemirror/view\": \"^6.9.2\",\n    \"@flok-editor/session\": \"*\",\n    \"codemirror\": \"^6.0.1\"\n  }\n}\n"
  },
  {
    "path": "packages/cm-eval/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ESNext\", \"DOM\"],\n    \"moduleResolution\": \"nodenext\",\n    \"strict\": false,\n    \"sourceMap\": true,\n    \"declaration\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"lib\"]\n}\n"
  },
  {
    "path": "packages/example-vanilla-js/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "packages/example-vanilla-js/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>@flok-editor/codemirror example</title>\n  </head>\n\n  <body>\n    <div class=\"slots\">\n      <div class=\"slot\" id=\"slot1\">\n        <select class=\"target\">\n          <option value=\"tidal\">tidal</option>\n          <option value=\"hydra\">hydra</option>\n          <option value=\"foxdot\">foxdot</option>\n          <option value=\"renardo\">renardo</option>\n        </select>\n        <div class=\"editor\"></div>\n      </div>\n\n      <div class=\"slot\" id=\"slot2\">\n        <select class=\"target\">\n          <option value=\"tidal\">tidal</option>\n          <option value=\"hydra\">hydra</option>\n          <option value=\"foxdot\">foxdot</option>\n          <option value=\"renardo\">renardo</option>\n        </select>\n        <div class=\"editor\"></div>\n      </div>\n    </div>\n\n    <script type=\"module\" src=\"/main.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/example-vanilla-js/main.js",
    "content": "import { EditorView, basicSetup } from \"codemirror\";\nimport { javascript } from \"@codemirror/lang-javascript\";\nimport { oneDark } from \"@codemirror/theme-one-dark\";\nimport { EditorState, Prec } from \"@codemirror/state\";\nimport { yCollab } from \"y-codemirror.next\";\nimport { Session } from \"@flok-editor/session\";\nimport { flashField, evalKeymap, remoteEvalFlash } from \"@flok-editor/cm-eval\";\nimport { UndoManager } from \"yjs\";\n\nimport \"./style.css\";\n\nconst flokBasicSetup = (doc) => {\n  const text = doc.getText();\n  const undoManager = new UndoManager(text);\n  // if target is hydra, use \"web\" mode to evaluate on browser only, not REPLs\n  const web = doc.target === \"hydra\";\n\n  return [\n    flashField(),\n    remoteEvalFlash(doc),\n    Prec.high(evalKeymap(doc, { web })),\n    yCollab(text, doc.session.awareness, { undoManager }),\n  ];\n};\n\nconst createEditor = (doc) => {\n  const state = EditorState.create({\n    doc: doc.content,\n    extensions: [\n      basicSetup,\n      flokBasicSetup(doc),\n      javascript(),\n      EditorView.lineWrapping,\n      oneDark,\n    ],\n  });\n\n  const editorEl = document.querySelector(`#${doc.id} .editor`);\n  const view = new EditorView({\n    state,\n    parent: editorEl,\n  });\n\n  const targetEl = document.querySelector(`#${doc.id} .target`);\n  targetEl.value = doc.target;\n\n  targetEl.addEventListener(\"change\", (e) => {\n    doc.target = e.target.value;\n  });\n  doc.session.on(`change-target:${doc.id}`, () => {\n    targetEl.value = doc.target;\n  });\n\n  return [state, view];\n};\n\nconst handleMessage = (msg) => {\n  console.log(\"message\", msg);\n};\n\nconst handleEvalHydra = (msg) => {\n  console.log(\"eval:hydra\", msg);\n  // evaluate hydra code here...\n};\n\nconst session = new Session(\"default\", { port: 3000 });\nwindow.session = session;\n\nsession.on(\"change\", (...args) => console.log(\"change\", ...args));\nsession.on(\"message\", handleMessage);\nsession.on(\"eval:hydra\", handleEvalHydra);\n\nsession.on(\"sync\", () => {\n  // If session is empty, create two documents\n  if (session.getDocuments().length === 0) {\n    session.setActiveDocuments([\n      { id: \"slot1\", target: \"tidal\" },\n      { id: \"slot2\", target: \"hydra\" },\n    ]);\n  }\n\n  // Create editors for each document\n  session.getDocuments().map((doc) => createEditor(doc));\n});\n\nsession.initialize();\n"
  },
  {
    "path": "packages/example-vanilla-js/package.json",
    "content": "{\n  \"name\": \"example-vanilla-js\",\n  \"private\": true,\n  \"version\": \"1.3.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\"\n  },\n  \"devDependencies\": {\n    \"prettier\": \"^3.4.2\",\n    \"vite\": \"^5.0.12\"\n  },\n  \"dependencies\": {\n    \"@codemirror/lang-javascript\": \"^6.1.4\",\n    \"@codemirror/state\": \"^6.2.0\",\n    \"@codemirror/theme-one-dark\": \"^6.1.1\",\n    \"@codemirror/view\": \"^6.9.3\",\n    \"@flok-editor/cm-eval\": \"^1.3.0\",\n    \"@flok-editor/session\": \"^1.3.0\",\n    \"codemirror\": \"^6.0.1\",\n    \"y-codemirror.next\": \"^0.3.2\",\n    \"y-indexeddb\": \"^9.0.9\",\n    \"y-protocols\": \"^1.0.5\",\n    \"y-webrtc\": \"^10.2.5\",\n    \"y-websocket\": \"^1.5.0\",\n    \"yjs\": \"^13.6.21\"\n  }\n}\n"
  },
  {
    "path": "packages/example-vanilla-js/style.css",
    "content": "body {\n  background-color: #242424;\n  color: #ccc;\n  margin: 0;\n  font-family: monospace;\n}\n\n.slots {\n  display: flex;\n  width: 100vw;\n  height: 80vh;\n}\n\n.slot {\n  flex-grow: 1;\n  margin: 0.25em;\n  width: 50%;\n}\n\n.slot .title {\n  font-weight: 600;\n}\n"
  },
  {
    "path": "packages/lang-punctual/.gitignore",
    "content": "/node_modules\npackage-lock.json\n/dist\n"
  },
  {
    "path": "packages/lang-punctual/.npmignore",
    "content": "/src\n/test\n/node_modules\nrollup.config.js\ntsconfig.json\n"
  },
  {
    "path": "packages/lang-punctual/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2025 Damián Silvani and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "packages/lang-punctual/README.md",
    "content": "# CodeMirror 6 language package template\n\nThis is an example repository containing a minimal\n[CodeMirror](https://codemirror.net/6/) language support package. The idea is to\nclone it, rename it, and edit it to create support for a new language.\n\nThings you'll need to do (see the [language support example](https://codemirror.net/6/examples/lang-package/)\nfor a more detailed tutorial):\n\n- `git grep EXAMPLE` and replace all instances with your language name.\n\n- Rewrite the grammar in `src/syntax.grammar` to cover your language. See the\n  [Lezer system guide](https://lezer.codemirror.net/docs/guide/#writing-a-grammar)\n  for information on this file format.\n\n- Adjust the metadata in `src/index.ts` to work with your new grammar.\n\n- Adjust the grammar tests in `test/cases.txt`.\n\n- Build (`npm run prepare`) and test (`npm test`).\n\n- Rewrite this readme file.\n\n- Optionally add a license.\n\n- Publish. Put your package on npm under a name like `codemirror-lang-EXAMPLE`.\n"
  },
  {
    "path": "packages/lang-punctual/package.json",
    "content": "{\n  \"name\": \"@flok-editor/lang-punctual\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Punctual language support for CodeMirror\",\n  \"scripts\": {\n    \"build\": \"rollup -c\"\n  },\n  \"type\": \"module\",\n  \"main\": \"dist/index.cjs\",\n  \"module\": \"dist/index.js\",\n  \"exports\": {\n    \"import\": \"./dist/index.js\",\n    \"require\": \"./dist/index.cjs\"\n  },\n  \"types\": \"dist/index.d.ts\",\n  \"sideEffects\": false,\n  \"dependencies\": {\n    \"@codemirror/language\": \"^6.0.0\",\n    \"@codemirror/legacy-modes\": \"^6.3.2\",\n    \"@lezer/highlight\": \"^1.0.0\",\n    \"@lezer/lr\": \"^1.0.0\"\n  },\n  \"devDependencies\": {\n    \"@lezer/generator\": \"^1.0.0\",\n    \"mocha\": \"^9.0.1\",\n    \"prettier\": \"^3.4.2\",\n    \"rollup\": \"^2.60.2\",\n    \"rollup-plugin-dts\": \"^4.0.1\",\n    \"rollup-plugin-ts\": \"^3.0.2\",\n    \"typescript\": \"^4.3.4\"\n  },\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/lang-punctual/rollup.config.js",
    "content": "import typescript from \"rollup-plugin-ts\";\nimport { lezer } from \"@lezer/generator/rollup\";\n\nexport default {\n  input: \"src/index.ts\",\n  external: (id) => id != \"tslib\" && !/^(\\.?\\/|\\w:)/.test(id),\n  output: [\n    { file: \"dist/index.cjs\", format: \"cjs\" },\n    { dir: \"./dist\", format: \"es\" },\n  ],\n  plugins: [lezer(), typescript()],\n};\n"
  },
  {
    "path": "packages/lang-punctual/src/indentation.ts",
    "content": "import { indentService } from \"@codemirror/language\";\n\nexport function indentation() {\n  return indentService.of((context, pos) => {\n    let { text, from } = context.lineAt(pos, -1);\n    let parse = text.slice(0, pos - from).match(/^([^$#]+)\\$.*/);\n\n    if (parse) {\n      return Math.min(parse[1].length, 8);\n    } else {\n      return 0;\n    }\n  });\n}\n"
  },
  {
    "path": "packages/lang-punctual/src/index.ts",
    "content": "import { StreamLanguage } from \"@codemirror/language\";\nimport { punctualLanguage } from \"./punctual\";\nimport { indentation } from \"./indentation\";\n\nexport function punctual() {\n  return [indentation(), StreamLanguage.define(punctualLanguage)];\n}\n"
  },
  {
    "path": "packages/lang-punctual/src/punctual.ts",
    "content": "import { haskell } from \"@codemirror/legacy-modes/mode/haskell\";\n\nexport const punctualLanguage = {\n  ...haskell,\n  name: \"punctual\",\n  languageData: {\n    ...haskell.languageData,\n    closeBrackets: { brackets: [\"(\", \"[\", \"{\", '\"'], before: ')]}\"' },\n  },\n};\n"
  },
  {
    "path": "packages/lang-punctual/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"target\": \"es6\",\n    \"module\": \"es2020\",\n    \"newLine\": \"lf\",\n    \"declaration\": true,\n    \"moduleResolution\": \"node\"\n  },\n  \"include\": [\"src/*.ts\"]\n}\n"
  },
  {
    "path": "packages/lang-tidal/.gitignore",
    "content": "/node_modules\npackage-lock.json\n/dist\n"
  },
  {
    "path": "packages/lang-tidal/.npmignore",
    "content": "/src\n/test\n/node_modules\nrollup.config.js\ntsconfig.json\n"
  },
  {
    "path": "packages/lang-tidal/LICENSE",
    "content": "MIT License\n\nCopyright (C) 2021 by Marijn Haverbeke <marijnh@gmail.com> and others\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "packages/lang-tidal/README.md",
    "content": "# CodeMirror 6 language package template\n\nThis is an example repository containing a minimal\n[CodeMirror](https://codemirror.net/6/) language support package. The idea is to\nclone it, rename it, and edit it to create support for a new language.\n\nThings you'll need to do (see the [language support example](https://codemirror.net/6/examples/lang-package/)\nfor a more detailed tutorial):\n\n- `git grep EXAMPLE` and replace all instances with your language name.\n\n- Rewrite the grammar in `src/syntax.grammar` to cover your language. See the\n  [Lezer system guide](https://lezer.codemirror.net/docs/guide/#writing-a-grammar)\n  for information on this file format.\n\n- Adjust the metadata in `src/index.ts` to work with your new grammar.\n\n- Adjust the grammar tests in `test/cases.txt`.\n\n- Build (`npm run prepare`) and test (`npm test`).\n\n- Rewrite this readme file.\n\n- Optionally add a license.\n\n- Publish. Put your package on npm under a name like `codemirror-lang-EXAMPLE`.\n"
  },
  {
    "path": "packages/lang-tidal/package.json",
    "content": "{\n  \"name\": \"@flok-editor/lang-tidal\",\n  \"version\": \"1.3.0\",\n  \"description\": \"TidalCycles language support for CodeMirror\",\n  \"scripts\": {\n    \"build\": \"rollup -c\"\n  },\n  \"type\": \"module\",\n  \"main\": \"dist/index.cjs\",\n  \"module\": \"dist/index.js\",\n  \"exports\": {\n    \"import\": \"./dist/index.js\",\n    \"require\": \"./dist/index.cjs\"\n  },\n  \"types\": \"dist/index.d.ts\",\n  \"sideEffects\": false,\n  \"dependencies\": {\n    \"@codemirror/language\": \"^6.0.0\",\n    \"@codemirror/legacy-modes\": \"^6.3.2\",\n    \"@lezer/highlight\": \"^1.0.0\",\n    \"@lezer/lr\": \"^1.0.0\"\n  },\n  \"devDependencies\": {\n    \"@lezer/generator\": \"^1.0.0\",\n    \"mocha\": \"^9.0.1\",\n    \"prettier\": \"^3.4.2\",\n    \"rollup\": \"^2.60.2\",\n    \"rollup-plugin-dts\": \"^4.0.1\",\n    \"rollup-plugin-ts\": \"^3.0.2\",\n    \"typescript\": \"^4.3.4\"\n  },\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/lang-tidal/rollup.config.js",
    "content": "import typescript from \"rollup-plugin-ts\";\nimport { lezer } from \"@lezer/generator/rollup\";\n\nexport default {\n  input: \"src/index.ts\",\n  external: (id) => id != \"tslib\" && !/^(\\.?\\/|\\w:)/.test(id),\n  output: [\n    { file: \"dist/index.cjs\", format: \"cjs\" },\n    { dir: \"./dist\", format: \"es\" },\n  ],\n  plugins: [lezer(), typescript()],\n};\n"
  },
  {
    "path": "packages/lang-tidal/src/indentation.ts",
    "content": "import { indentService } from \"@codemirror/language\";\n\nexport function indentation() {\n  return indentService.of((context, pos) => {\n    let { text, from } = context.lineAt(pos, -1);\n    let parse = text.slice(0, pos - from).match(/^([^$#]+)\\$.*/);\n\n    if (parse) {\n      return Math.min(parse[1].length, 8);\n    } else {\n      return 0;\n    }\n  });\n}\n"
  },
  {
    "path": "packages/lang-tidal/src/index.ts",
    "content": "import { StreamLanguage } from \"@codemirror/language\";\nimport { tidalLanguage } from \"./tidal\";\nimport { indentation } from \"./indentation\";\n\nexport function tidal() {\n  return [indentation(), StreamLanguage.define(tidalLanguage)];\n}\n"
  },
  {
    "path": "packages/lang-tidal/src/tidal.ts",
    "content": "import { haskell } from \"@codemirror/legacy-modes/mode/haskell\";\n\nexport const tidalLanguage = {\n  ...haskell,\n  name: \"tidal\",\n  languageData: {\n    ...haskell.languageData,\n    closeBrackets: { brackets: [\"(\", \"[\", \"{\", \"<\", '\"'], before: ')]}>\"' },\n  },\n};\n"
  },
  {
    "path": "packages/lang-tidal/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"target\": \"es6\",\n    \"module\": \"es2020\",\n    \"newLine\": \"lf\",\n    \"declaration\": true,\n    \"moduleResolution\": \"node\"\n  },\n  \"include\": [\"src/*.ts\"]\n}\n"
  },
  {
    "path": "packages/pubsub/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "packages/pubsub/README.md",
    "content": "# @flok-editor/pubsub\n\nWebSocket-based Pub/Sub client and server, used for remote code execution and\nmessage passing in Flok.\n\n## Features\n\n- Basic Publish/Subscribe functionality: `subscribe`, `unsubscribe`, `publish`,\n  `unsubscribeAll`.\n- Payload is JSON serialized, topics are any string.\n- Allows subscribing or unsubscribing without being connected by storing state\n  on the client.\n- Automatically reconnects if connection is lost, recovering client's state.\n- Ping/pong mechanism for detecting and closing broken connections both on\n  client and server.\n\n## Usage\n\n### Server\n\n```js\nimport { WebSocketServer } from \"ws\";\nimport { PubSubServer } from \"@flok-editor/pubsub\";\n\n// To use the server, you need to create a `WebSocketServer` and pass it to\n// `PubSubServer`.\nconst wss = new WebSocketServer({ port: 4000 });\nconst server = new PubSubServer({ wss });\n\nconsole.log(`PubSub server listening on`, wss.address());\n```\n\n### Client\n\n```js\nimport { PubSubClient } from \"@flok-editor/pubsub\";\n\nconst client = new PubSubClient({ url: \"ws://localhost:4000\" });\n\n// Subscribe to topics\nclient.subscribe(\"b\");\nclient.subscribe(\"a\");\n\nclient.start();\n\n// Wait for the connection to be made, otherwise published messages are discarded.\nlet internalId;\nclient.on(\"open\", () => {\n  // Publish a message (any JSON serializable object) to a topic\n  internalId = setInterval(() => {\n    client.publish(\"a\", { salutation: \"hello!\" });\n  }, 2000);\n});\n\n// Add an error event handler to ignore connection errors\nclient.on(\"error\", () => {});\n\nclient.on(\"close\", () => clearInterval(internalId));\n\nsetTimeout(() => {\n  // Unsubscribe from a topic\n  client.unsubscribe(\"b\");\n  // ... or from all topics with a single call\n  client.unsubscribeAll();\n}, 5000);\n\n// you can add a listener for all message events\nclient.on(\"message\", (topic, data) => {\n  console.log(\"message\", topic, data);\n});\n\n// ...or only from a specific topic\nclient.on(\"message:a\", (data) => {\n  console.log(\"message from topic 'a'\", data);\n});\n\n// Finally, you can subscribe and listen to messages in a single call\nclient.subscribe(\"c\", (data) => {\n  console.log(\"message from 'c'\", data);\n});\n```\n\n## Development\n\nRun `npm install` to install dependencies.\n\nRun `npm run build` to build package.\n"
  },
  {
    "path": "packages/pubsub/examples/client.js",
    "content": "import { PubSubClient } from \"../dist/index.js\";\n\nconst client = new PubSubClient({ url: \"ws://localhost:4000\" });\n\n// Subscribe to topics\nclient.subscribe(\"b\");\nclient.subscribe(\"a\");\n\nclient.start();\n\n// Wait for the connection to be made, otherwise published messages are discarded.\nlet internalId;\nclient.on(\"open\", () => {\n  // Publish a message (any JSON serializable object) to a topic\n  internalId = setInterval(() => {\n    client.publish(\"a\", { salutation: \"hello!\" });\n  }, 2000);\n});\n\n// Add an error event handler to ignore connection errors\nclient.on(\"error\", () => {});\n\nclient.on(\"close\", () => clearInterval(internalId));\n\nsetTimeout(() => {\n  // Unsubscribe from a topic\n  client.unsubscribe(\"b\");\n  // ... or from all topics with a single call\n  client.unsubscribeAll();\n}, 5000);\n\n// you can add a listener for all message events\nclient.on(\"message\", (topic, data) => {\n  console.log(\"message\", topic, data);\n});\n\n// ...or only from a specific topic\nclient.on(\"message:a\", (data) => {\n  console.log(\"message from topic 'a'\", data);\n});\n"
  },
  {
    "path": "packages/pubsub/examples/server.js",
    "content": "import { WebSocketServer } from \"ws\";\nimport { PubSubServer } from \"../dist/server.js\";\n\nconst wss = new WebSocketServer({ port: 4000 });\nconst server = new PubSubServer({ wss });\n\nconsole.log(`PubSub server listening on`, wss.address());\n"
  },
  {
    "path": "packages/pubsub/lib/client.ts",
    "content": "import WebSocket from \"isomorphic-ws\";\nimport debugModule from \"debug\";\nimport { EventEmitter } from \"events\";\nimport type { ServerMessage } from \"./server.js\";\n\nconst debug = debugModule(\"flok:pubsub:client\");\n\ntype ClientMessageType =\n  | \"publish\"\n  | \"subscribe\"\n  | \"unsubscribe\"\n  | \"unsubscribe-all\"\n  | \"state\";\n\ntype ClientEvent =\n  | \"start\"\n  | \"stop\"\n  | \"open\"\n  | \"close\"\n  | \"error\"\n  | \"message\"\n  | `message:${string}`;\n\nexport class PubSubClient {\n  readonly url: string;\n  reconnectTimeout: number = 1000;\n\n  protected _ws: WebSocket;\n  protected _started: boolean = false;\n  protected _connected: boolean = false;\n  protected _subscriptions: Set<string> = new Set();\n  protected _clientId: string;\n  protected _emitter: EventEmitter = new EventEmitter();\n\n  constructor({\n    url = \"ws://localhost:3000/\",\n    reconnectTimeout = 1000,\n  }: {\n    url: string;\n    reconnectTimeout?: number;\n  }) {\n    this.url = url;\n    this.reconnectTimeout = reconnectTimeout;\n  }\n\n  start() {\n    if (this._started) return;\n    this._connect();\n    this._started = true;\n    this._emitter.emit(\"start\");\n    debug(\"started\");\n  }\n\n  stop() {\n    if (!this._started) return;\n    if (this._ws.readyState === WebSocket.OPEN) this._ws.close();\n    this._subscriptions.clear();\n    this._started = false;\n    this._ws = null;\n    this._emitter.emit(\"stop\");\n    debug(\"stopped\");\n  }\n\n  destroy() {\n    this._subscriptions.forEach((sub) => this.removeAllListeners(sub));\n    this.stop();\n    debug(\"destroyed\");\n  }\n\n  on(eventName: ClientEvent, cb: (...args: any[]) => void) {\n    this._emitter.on(eventName, cb);\n  }\n\n  off(eventName: ClientEvent, cb: (...args: any[]) => void) {\n    this._emitter.off(eventName, cb);\n  }\n\n  once(eventName: ClientEvent, cb: (...args: any[]) => void) {\n    this._emitter.once(eventName, cb);\n  }\n\n  removeAllListeners(eventName: string) {\n    this._emitter.removeAllListeners(eventName);\n  }\n\n  publish(topic: string, msg: any) {\n    if (this._connected) this._send(\"publish\", { topic, msg });\n  }\n\n  subscribe(topic: string, cb?: (...args: any[]) => void) {\n    if (this._connected) this._send(\"subscribe\", { topic });\n    this._subscriptions.add(topic);\n    if (cb) {\n      const event: ClientEvent = `message:${topic}`;\n      this.removeAllListeners(event);\n      this.on(event, cb);\n    }\n  }\n\n  unsubscribe(topic: string) {\n    if (this._connected) this._send(\"unsubscribe\", { topic });\n    this._subscriptions.delete(topic);\n    this.removeAllListeners(`message:${topic}`);\n  }\n\n  unsubscribeAll() {\n    if (this._connected) this._send(\"unsubscribe-all\");\n    this._subscriptions.clear();\n  }\n\n  get id() {\n    return this._clientId;\n  }\n\n  protected _connect() {\n    debug(\"create WebSocket on\", this.url);\n\n    // If on Node, we need to pass `rejectUnauthorized: false` to avoid \"unable\n    // to verify certificate\" error.  This is important when using a self-signed\n    // SSL certificate.\n    if (typeof window === \"undefined\") {\n      this._ws = new WebSocket(this.url, { rejectUnauthorized: false });\n    } else {\n      this._ws = new WebSocket(this.url);\n    }\n\n    this._ws.onopen = () => {\n      if (!this._ws) return;\n      debug(\"open\");\n      this._connected = true;\n      this._notifyState();\n      this._emitter.emit(\"open\");\n    };\n\n    this._ws.onclose = () => {\n      if (!this._ws) return;\n      debug(\"close\");\n      this._connected = false;\n      if (this._started)\n        setTimeout(() => this._connect(), this.reconnectTimeout);\n      this._emitter.emit(\"close\");\n    };\n\n    this._ws.onerror = (err: any) => {\n      if (!this._ws) return;\n      debug(\"error\", err);\n      this._emitter.emit(\"error\", err);\n    };\n\n    this._ws.onmessage = (event) => {\n      if (!this._ws) return;\n      const data: ServerMessage = JSON.parse(event.data.toString());\n      const { type, payload } = data;\n      switch (type) {\n        case \"id\": {\n          debug(\"id\", payload);\n          const { id } = payload;\n          this._clientId = id;\n          break;\n        }\n        case \"publish\": {\n          debug(\"message\", payload);\n          const { topic } = payload;\n          this._emitter.emit(\"message\", payload);\n          this._emitter.emit(`message:${topic}`, payload);\n          break;\n        }\n        default: {\n          debug(\"ignoring unknown message\", type);\n        }\n      }\n    };\n  }\n\n  protected _notifyState() {\n    this._send(\"state\", { topics: [...this._subscriptions] });\n  }\n\n  protected _send(\n    type: ClientMessageType,\n    payload?: any,\n    cb?: (err?: Error) => void,\n  ) {\n    const data = JSON.stringify({ type, payload });\n    this._ws.send(data, (err?: Error) => {\n      debug(\"send\", type);\n      if (err) debug(\"error on send\", err);\n      cb && cb(err);\n    });\n  }\n}\n"
  },
  {
    "path": "packages/pubsub/lib/index.ts",
    "content": "export * from \"./client.js\";\nexport * from \"./server.js\";\n"
  },
  {
    "path": "packages/pubsub/lib/server.ts",
    "content": "import { WebSocketServer, type WebSocket } from \"ws\";\nimport { v1 as uuidv1 } from \"uuid\";\nimport debugModule from \"debug\";\n\nconst debug = debugModule(\"flok:pubsub:server\");\n\nexport type PublishServerMessage = {\n  type: \"publish\";\n  payload: {\n    topic: string;\n    message: object;\n    publisher: string;\n    fromMe: boolean;\n  };\n};\n\nexport type IdServerMessage = {\n  type: \"id\";\n  payload: {\n    id: string;\n  };\n};\n\nexport type ServerMessage = IdServerMessage | PublishServerMessage;\n\nexport class PubSubServer {\n  pingTimeout: number = 30000;\n\n  protected _wss: WebSocketServer;\n  protected _subscribers: { [topic: string]: Set<string> } = {};\n  protected _clients: { [id: string]: WebSocket } = {};\n  protected _isAlive: { [id: string]: boolean } = {};\n  protected _pingIntervalId: any;\n\n  constructor({\n    wss,\n    pingTimeout = 30000,\n  }: {\n    wss: WebSocketServer;\n    pingTimeout?: number;\n  }) {\n    this._wss = wss;\n    this.pingTimeout = pingTimeout;\n\n    this._addEventListeners();\n    this._setPingInterval();\n  }\n\n  protected _handleListening(...args: any[]) {\n    debug(\"listening\", ...args);\n  }\n\n  protected _handleClose() {\n    debug(\"closed\");\n    clearInterval(this._pingIntervalId);\n  }\n\n  protected _handleError(err: Error) {\n    debug(\"error\", err);\n  }\n\n  protected _handleConnection(ws: WebSocket) {\n    const id = uuidv1();\n\n    debug(`[${id}] connection`);\n\n    this._clients[id] = ws;\n    this._isAlive[id] = true;\n\n    this._sendClientId(id);\n\n    ws.on(\"message\", (rawData) => {\n      const data = JSON.parse(rawData.toString());\n      debug(`[${id}] message`, rawData.toString());\n\n      const { type, payload } = data;\n      switch (type) {\n        case \"publish\": {\n          const { topic, msg } = payload;\n          this._publish(topic, msg, id);\n          break;\n        }\n        case \"subscribe\": {\n          const { topic } = payload;\n          this._subscribe(topic, id);\n          break;\n        }\n        case \"unsubscribe\": {\n          const { topic } = payload;\n          this._unsubscribe(topic, id);\n          break;\n        }\n        case \"unsubscribe-all\": {\n          this._unsubscribeAll(id);\n          break;\n        }\n        case \"state\": {\n          const { topics } = payload;\n          this._updateState(id, topics);\n          break;\n        }\n        default: {\n          debug(\"ignoring unknown message type\", type);\n        }\n      }\n    });\n\n    ws.on(\"error\", (err) => {\n      debug(`[${id}] error`, err);\n    });\n\n    ws.on(\"pong\", () => {\n      this._isAlive[id] = true;\n    });\n\n    ws.on(\"close\", () => {\n      debug(`[${id}] close`);\n      // Remove ws from all subscribed topics\n      this._unsubscribeAll(id);\n      delete this._clients[id];\n      debug(\"clients after `close`:\", Object.keys(this._clients));\n    });\n  }\n\n  protected _addEventListeners() {\n    this._wss.on(\"listening\", this._handleListening.bind(this));\n    this._wss.on(\"connection\", this._handleConnection.bind(this));\n    this._wss.on(\"close\", this._handleClose.bind(this));\n    this._wss.on(\"error\", this._handleError.bind(this));\n  }\n\n  protected _setPingInterval() {\n    this._pingIntervalId = setInterval(() => {\n      Object.entries(this._clients).forEach(([id, ws]) => {\n        if (!this._isAlive[id]) return ws.terminate();\n        this._isAlive[id] = false;\n        ws.ping();\n      });\n    }, this.pingTimeout);\n  }\n\n  protected _sendClientId(id: string) {\n    const dataObj: IdServerMessage = {\n      type: \"id\",\n      payload: { id },\n    };\n    const data = JSON.stringify(dataObj);\n    this._clients[id].send(data, (err) => {\n      if (!err) return;\n      debug(`error sending id to client ${id}`, err);\n    });\n  }\n\n  protected _publish(topic: string, msg: object, publisher: string) {\n    const subs = this._subscribers;\n    if (!(topic in subs) || subs[topic].size === 0) return;\n\n    subs[topic].forEach((id) => {\n      const dataObj: PublishServerMessage = {\n        type: \"publish\",\n        payload: { topic, message: msg, publisher, fromMe: id === publisher },\n      };\n      const data = JSON.stringify(dataObj);\n      this._clients[id].send(data, (err) => {\n        if (!err) return;\n        debug(`error publishing to client ${id}`, err);\n      });\n    });\n  }\n\n  protected _subscribe(topic: string, subscriber: string) {\n    const subs = this._subscribers;\n    if (!(topic in subs)) subs[topic] = new Set();\n    subs[topic].add(subscriber);\n    debug(\"subscribers after `subscribe`:\", this._subscribers);\n  }\n\n  protected _unsubscribe(topic: string, subscriber: string) {\n    const subs = this._subscribers;\n    if (subs[topic]) subs[topic].delete(subscriber);\n    if (subs[topic] && subs[topic].size === 0) delete subs[topic];\n    debug(\"subscribers after `unsubscribe`:\", this._subscribers);\n  }\n\n  protected _unsubscribeAll(subscriber: string) {\n    Object.values(this._subscribers).forEach((subs) => {\n      subs.delete(subscriber);\n    });\n    this._deleteEmptySubscriberSets();\n    debug(\"subscribers after `unsubscribeAll`:\", this._subscribers);\n  }\n\n  protected _deleteEmptySubscriberSets() {\n    const topics = Object.keys(this._subscribers);\n    topics.forEach((topic) => {\n      if (this._subscribers[topic].size === 0) delete this._subscribers[topic];\n    });\n  }\n\n  protected _updateState(subscriber: string, topics: string[]) {\n    this._unsubscribeAll(subscriber);\n    topics.forEach((topic) => this._subscribe(topic, subscriber));\n  }\n}\n"
  },
  {
    "path": "packages/pubsub/package.json",
    "content": "{\n  \"name\": \"@flok-editor/pubsub\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Pub/Sub client-server, used for remote code execution and message passing on Flok\",\n  \"author\": \"Damián Silvani <munshkr@gmail.com>\",\n  \"license\": \"GPL-3.0+\",\n  \"type\": \"module\",\n  \"files\": [\n    \"dist\"\n  ],\n  \"types\": \"./dist/index.d.ts\",\n  \"module\": \"./dist/index.js\",\n  \"main\": \"./dist/index.cjs\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"tsc\"\n  },\n  \"dependencies\": {\n    \"bufferutil\": \"^4.0.7\",\n    \"debug\": \"^4.3.4\",\n    \"events\": \"^3.3.0\",\n    \"isomorphic-ws\": \"^5.0.0\",\n    \"utf-8-validate\": \"^6.0.3\",\n    \"uuid\": \"^9.0.0\",\n    \"ws\": \"^8.12.1\"\n  },\n  \"devDependencies\": {\n    \"@types/debug\": \"^4.1.7\",\n    \"@types/node\": \"^18.14.6\",\n    \"@types/uuid\": \"^9.0.1\",\n    \"@types/ws\": \"^8.5.4\",\n    \"prettier\": \"^3.4.2\",\n    \"typescript\": \"^4.9.4\"\n  }\n}\n"
  },
  {
    "path": "packages/pubsub/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ESNext\", \"DOM\"],\n    \"moduleResolution\": \"nodenext\",\n    \"strict\": false,\n    \"sourceMap\": true,\n    \"declaration\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"lib\"]\n}\n"
  },
  {
    "path": "packages/repl/bin/flok-repl.js",
    "content": "#!/usr/bin/env node\n\nimport dotenv from \"dotenv\";\nimport process from \"process\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { Command } from \"commander\";\nimport { CommandREPL, replClasses } from \"../dist/index.js\";\nimport { fileURLToPath } from \"url\";\nimport debugModule from \"debug\";\n\nconst debug = debugModule(\"flok:repl\");\n\ndotenv.config();\n\nconst readConfig = (path) => {\n  const raw = fs.readFileSync(path);\n  return JSON.parse(raw.toString());\n};\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\nconst packageInfo = readConfig(path.resolve(__dirname, \"../package.json\"));\nconst knownTypes = [\n  \"command\",\n  ...Object.keys(replClasses).filter((repl) => repl !== \"default\"),\n];\nconst program = new Command();\n\nprogram.version(packageInfo.version);\nprogram\n  .option(\"-t, --types <types...>\", \"Type/s of REPL\", [\"command\"])\n  .option(\"-H, --hub <url>\", 'Server (or \"hub\") address', \"ws://localhost:3000\")\n  .option(\"-s, --session-name <name>\", \"Session name\", \"default\")\n  .option(\"-n, --target-name <name>\", \"Use the specified target name\")\n  .option(\"-T, --tags <tags...>\", \"Tags for REPL messages\")\n  .option(\"--config <configfile>\", \"JSON configuration file\")\n  .option(\"--extra <options>\", \"Extra options in JSON\")\n  .option(\"--list-types\", \"List all known types of REPLs\")\n  .option(\"--path <path>\", \"Evaluation WebSockets server path\", \"/pubsub\")\n  .parse(process.argv);\n\nconst opts = program.opts();\n\n// Try to read config file (if --config was provided, or FLOK_CONFIG env var is defined)\nconst configPath = opts.config || process.env.FLOK_CONFIG;\nconst config = configPath ? readConfig(configPath) : {};\n\n// Override config with command line options\nconst options = [\"types\", \"hub\", \"sessionName\", \"targetName\", \"tags\", \"path\"];\noptions.forEach((opt) => {\n  config[opt] = config[opt] || opts[opt];\n});\n\nconst { hub, sessionName, targetName, tags, path: pubSubPath } = config;\n\n// Remove duplicates\nconst types = [...new Set(config.types)];\n\n// Prepare command and arguments\nconst cmd = program.args[0];\nconst args = program.args.slice(1);\n\n// If asked to list types, print and exit\nif (opts.listTypes) {\n  console.log(\"Known types:\", knownTypes);\n  process.exit(0);\n}\n\nconst useDefaultREPL = types.some((type) => type === \"command\");\n\n// If using default REPL and no command was specified, throw error\nif (useDefaultREPL && !cmd) {\n  console.error(\n    \"You specified a 'command' type, but forgot to specify a REPL command (e.g.: flok-repl -- cat)\",\n  );\n  program.outputHelp();\n  process.exit(1);\n}\n\n// Check if all types are known\nif (!useDefaultREPL) {\n  const unknownTypes = [\n    ...new Set(types.filter((type) => !knownTypes.includes(type))),\n  ];\n  if (unknownTypes.length > 0) {\n    console.error(\n      `Unknown types: ${unknownTypes.join(\", \")}. Must be one of:`,\n      knownTypes,\n    );\n    process.exit(1);\n  }\n}\n\n// Extra options\nconst { extra } = opts;\nlet extraOptions = config.extra || {};\nif (extra) {\n  try {\n    extraOptions = Object.assign(extraOptions, JSON.parse(extra));\n  } catch {\n    console.error(\"Invalid extra options JSON object:\", extra);\n    process.exit(1);\n  }\n}\n\n// Start...\nconsole.log(\"Hub address:\", hub);\nconsole.log(\"Session name:\", sessionName);\nif (targetName) console.log(\"Target name:\", targetName);\nconsole.log(\"Types:\", types);\nif (Object.keys(extraOptions).length > 0)\n  console.log(\"Extra options:\", extraOptions);\n\ntypes.forEach((type) => {\n  const useDefaultREPL = type === \"command\";\n\n  // Set target based on name or type\n  const target = targetName || (useDefaultREPL ? cmd : type);\n\n  let replClient;\n  if (useDefaultREPL) {\n    replClient = new CommandREPL({\n      command: cmd,\n      args: args,\n      target,\n      session: sessionName,\n      tags,\n      hub,\n      pubSubPath,\n      extraOptions,\n    });\n  } else {\n    const replClass = replClasses[type];\n    replClient = new replClass({\n      target,\n      session: sessionName,\n      tags,\n      hub,\n      pubSubPath,\n      extraOptions,\n    });\n  }\n\n  replClient.start();\n\n  replClient.emitter.on(\"data\", (data) => {\n    const line = data.lines.join(\"\\n\");\n    if (line) {\n      if (data.type === \"stdin\") {\n        console.log(`< ${line}`);\n      } else if (data.type === \"stdout\") {\n        console.log(`> ${line}`);\n      } else if (data.type === \"stderr\") {\n        console.error(`> ${line}`);\n      }\n    }\n  });\n\n  replClient.emitter.on(\"close\", ({ code }) => {\n    process.exit(code);\n  });\n});\n"
  },
  {
    "path": "packages/repl/lib/index.ts",
    "content": "import {\n  BaseREPL,\n  BaseREPLContext,\n  CommandREPL,\n  CommandREPLContext,\n} from \"./repl.js\";\nimport TidalREPL from \"./repl/tidal.js\";\nimport SclangREPL, { RemoteSclangREPL } from \"./repl/sclang.js\";\nimport FoxDotREPL from \"./repl/foxdot.js\";\nimport RenardoREPL from \"./repl/renardo.js\";\nimport MercuryREPL from \"./repl/mercury.js\";\nimport SardineREPL from \"./repl/sardine.js\";\nimport DummyREPL from \"./repl/dummy.js\";\n\nimport path from \"path\";\nimport fs from \"fs\";\n\nconst replClasses = {\n  default: CommandREPL,\n  tidal: TidalREPL,\n  sclang: SclangREPL,\n  remote_sclang: RemoteSclangREPL,\n  foxdot: FoxDotREPL,\n  renardo: RenardoREPL,\n  mercury: MercuryREPL,\n  sardine: SardineREPL,\n  dummy: DummyREPL\n};\n\nfunction createREPLFor(repl: string, ctx: CommandREPLContext) {\n  if (replClasses[repl]) {\n    return new replClasses[repl](ctx);\n  }\n\n  const replClass = replClasses.default;\n  return new replClass({ ...ctx, command: repl });\n}\n\nfunction readPackageMetadata() {\n  const packageJsonPath = path.resolve(\n    __dirname,\n    path.join(\"..\", \"package.json\"),\n  );\n  const rawBody = fs.readFileSync(packageJsonPath);\n  const body = JSON.parse(rawBody.toString());\n  return body[\"flok\"];\n}\n\nexport {\n  replClasses,\n  createREPLFor,\n  readPackageMetadata,\n  BaseREPL,\n  BaseREPLContext,\n  CommandREPL,\n  CommandREPLContext,\n};\n"
  },
  {
    "path": "packages/repl/lib/repl/dummy.ts",
    "content": "import { BaseREPL, BaseREPLContext } from \"../repl.js\";\nimport osc from \"osc\";\nimport debugModule from \"debug\";\n\nconst debug = debugModule(\"flok:repl:dummy\");\n\nconst { UDPPort } = osc;\n\n// A dummy/free/open REPL\n// The repl doesn't have any specific language, it just forwards the\n// text to an assigned OSC port 3001\n// The address used is /flok\n\n// $ flok-repl -t free\n//\n// Sends the code over OSC to port 3001 on localhost\n// Port can be assigned by choice\n//\nclass DummyREPL extends BaseREPL {\n  udpPort: typeof UDPPort;\n  port: number;\n  started: boolean;\n  portReady: boolean;\n\n  constructor(ctx: BaseREPLContext) {\n    super(ctx);\n\n    this.port = 3001;\n    this.started = false;\n    this.portReady = false;\n  }\n\n  start() {\n    super.start();\n\n    this.udpPort = new UDPPort({\n      metadata: true,\n    });\n\n    // Listen for incoming OSC messages.\n    this.udpPort.on(\"message\", function (oscMsg, timeTag, info) {\n      debug(\"An OSC message just arrived!\", oscMsg);\n      debug(\"Remote info is: \", info);\n    });\n\n    // Open the socket.\n    this.udpPort.open();\n\n    // When the port is read, send an OSC message\n    const that = this;\n    this.udpPort.on(\"ready\", function () {\n      that.portReady = true;\n    });\n\n    this.started = true;\n  }\n\n  write(body: string) {\n    if (!this.portReady) {\n      debug(\"UDP Port is not ready yet.\");\n      return;\n    }\n\n    const newBody = this.prepare(body);\n    const obj = {\n      address: \"/flok\",\n      args: [\n        {\n          type: \"s\",\n          value: newBody,\n        },\n      ],\n    };\n    this.udpPort.send(obj, \"127.0.0.1\", this.port);\n\n    const lines = newBody.split(\"\\n\");\n    this.emitter.emit(\"data\", { type: \"stdin\", lines });\n  }\n}\n\nexport default DummyREPL;"
  },
  {
    "path": "packages/repl/lib/repl/foxdot.ts",
    "content": "import { CommandREPL, CommandREPLContext } from \"../repl.js\";\n\nclass FoxDotREPL extends CommandREPL {\n  constructor(ctx: CommandREPLContext) {\n    super(ctx);\n\n    this.command = this.commandPath();\n    this.args = [\"-i\", \"-c\", '\"from FoxDot import *\\nload_startup_file()\"'];\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  prepare(body: string): string {\n    return `execute\\(\\\"${body\n      .replace(/(\\n)/gm, \"\\\\n\")\n      .replace(/(\\\")/gm, '\\\\\"')\n      .trim()}\\\"\\)\\n`;\n  }\n\n  commandPath(): string {\n    const { python } = this.extraOptions;\n    return python || \"python\";\n  }\n}\n\nexport default FoxDotREPL;\n"
  },
  {
    "path": "packages/repl/lib/repl/mercury.ts",
    "content": "import { BaseREPL, BaseREPLContext } from \"../repl.js\";\nimport osc from \"osc\";\nimport debugModule from \"debug\";\n\nconst debug = debugModule(\"flok:repl:mercury\");\n\nconst { UDPPort } = osc;\n\n// The Mercury REPL\n// $ flok-repl -t mercury\n//\n// Sends the code over OSC to port 4880 on localhost\n// Start the mercury_ide.maxproj in Max8\n// Turn on the audio if you want to code sound only\n// Turn on the visuals if you want to code visuals as well\n//\n// When executing code it should automatically receive and parse\n// Mercury only runs full pages of code (previous code is deleted)\n// So always execute full page instead of per-line\n//\nclass MercuryREPL extends BaseREPL {\n  udpPort: typeof UDPPort;\n  port: number;\n  started: boolean;\n  portReady: boolean;\n\n  constructor(ctx: BaseREPLContext) {\n    super(ctx);\n\n    this.port = 4880;\n    this.started = false;\n    this.portReady = false;\n  }\n\n  start() {\n    super.start();\n\n    this.udpPort = new UDPPort({\n      metadata: true,\n    });\n\n    // Listen for incoming OSC messages.\n    this.udpPort.on(\"message\", function (oscMsg, timeTag, info) {\n      debug(\"An OSC message just arrived!\", oscMsg);\n      debug(\"Remote info is: \", info);\n    });\n\n    // Open the socket.\n    this.udpPort.open();\n\n    // When the port is read, send an OSC message to, say, SuperCollider\n    const that = this;\n    this.udpPort.on(\"ready\", function () {\n      that.portReady = true;\n    });\n\n    this.started = true;\n  }\n\n  write(body: string) {\n    if (!this.portReady) {\n      debug(\"UDP Port is not ready yet.\");\n      return;\n    }\n\n    const newBody = this.prepare(body);\n    const obj = {\n      address: \"/mercury-code\",\n      args: [\n        {\n          type: \"s\",\n          value: newBody,\n        },\n      ],\n    };\n    this.udpPort.send(obj, \"127.0.0.1\", this.port);\n\n    const lines = newBody.split(\"\\n\");\n    this.emitter.emit(\"data\", { type: \"stdin\", lines });\n  }\n}\n\nexport default MercuryREPL;\n"
  },
  {
    "path": "packages/repl/lib/repl/renardo.ts",
    "content": "import { CommandREPL, CommandREPLContext } from \"../repl.js\";\n\nclass RenardoREPL extends CommandREPL {\n  constructor(ctx: CommandREPLContext) {\n    super(ctx);\n\n    this.command = this.commandPath();\n    this.args = [\"-i\", \"-c\", '\"from renardo_lib import *\"'];\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  prepare(body: string): string {\n    return `execute\\(\\\"${body\n      .replace(/(\\n)/gm, \"\\\\n\")\n      .replace(/(\\\")/gm, '\\\\\"')\n      .trim()}\\\"\\)\\n`;\n  }\n\n  commandPath(): string {\n    const { python } = this.extraOptions;\n    return python || \"python\";\n  }\n}\n\nexport default RenardoREPL;\n"
  },
  {
    "path": "packages/repl/lib/repl/sardine.ts",
    "content": "import { CommandREPL, CommandREPLContext } from \"../repl.js\";\n\nclass SardineREPL extends CommandREPL {\n  constructor(ctx: CommandREPLContext) {\n    super(ctx);\n\n    this.command = this.commandPath();\n    this.args = [];\n  }\n\n  commandPath(): string {\n    const { python } = this.extraOptions;\n    return python || \"sardine\";\n  }\n}\n\nexport default SardineREPL;\n"
  },
  {
    "path": "packages/repl/lib/repl/sclang.ts",
    "content": "import {\n  BaseREPL,\n  CommandREPL,\n  BaseREPLContext,\n  CommandREPLContext,\n} from \"../repl.js\";\nimport os from \"os\";\nimport osc from \"osc\";\nimport debugModule from \"debug\";\n\nconst debug = debugModule(\"flok:repl:sclang\");\n\nconst { UDPPort } = osc;\n\nclass SclangREPL extends CommandREPL {\n  constructor(ctx: CommandREPLContext) {\n    super(ctx);\n\n    this.command = this.commandPath();\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  prepare(body: string): string {\n    const fixedBody = body\n      .replace(/(\\n\\s*\\)\\s*\\n)/gm, \"\\n);\\n\")\n      .replace(/(\\n)/gm, \" \")\n      .trim();\n    return `${fixedBody}\\n`;\n  }\n\n  commandPath(): string {\n    const { sclang } = this.extraOptions;\n    return sclang || SclangREPL.defaultCommandPath();\n  }\n\n  static defaultCommandPath(): string {\n    switch (os.platform()) {\n      case \"darwin\":\n        return \"/Applications/SuperCollider.app/Contents/MacOS/sclang\";\n      case \"linux\":\n        return \"sclang\";\n      default:\n        throw \"Unsupported platform\";\n    }\n  }\n}\n\nclass RemoteSclangREPL extends BaseREPL {\n  udpPort: typeof UDPPort;\n  port: number;\n  started: boolean;\n  portReady: boolean;\n\n  constructor(ctx: BaseREPLContext) {\n    super(ctx);\n\n    this.port = 57200;\n    this.started = false;\n    this.portReady = false;\n  }\n\n  start() {\n    super.start();\n\n    this.udpPort = new UDPPort({\n      metadata: true,\n    });\n\n    // Listen for incoming OSC messages.\n    this.udpPort.on(\"message\", function (oscMsg, timeTag, info) {\n      debug(\"An OSC message just arrived!\", oscMsg);\n      debug(\"Remote info is: \", info);\n    });\n\n    // Open the socket.\n    this.udpPort.open();\n\n    // When the port is read, send an OSC message to, say, SuperCollider\n    const that = this;\n    this.udpPort.on(\"ready\", function () {\n      that.portReady = true;\n    });\n\n    this.started = true;\n  }\n\n  write(body: string) {\n    if (!this.portReady) {\n      debug(\"UDP Port is not ready yet.\");\n      return;\n    }\n\n    const newBody = this.prepare(body);\n    const obj = {\n      address: \"/flok\",\n      args: [\n        {\n          type: \"s\",\n          value: newBody,\n        },\n      ],\n    };\n    this.udpPort.send(obj, \"127.0.0.1\", this.port);\n\n    const lines = newBody.split(\"\\n\");\n    this.emitter.emit(\"data\", { type: \"stdin\", lines });\n  }\n}\n\nexport { SclangREPL, RemoteSclangREPL };\nexport default SclangREPL;\n"
  },
  {
    "path": "packages/repl/lib/repl/tidal.ts",
    "content": "import { execSync } from \"child_process\";\nimport * as path from \"path\";\nimport { CommandREPL, CommandREPLContext } from \"../repl.js\";\nimport debugModule from \"debug\";\n\nconst debug = debugModule(\"flok:repl:tidal\");\n\nclass TidalREPL extends CommandREPL {\n  constructor(ctx: CommandREPLContext) {\n    super(ctx);\n\n    this.command = this.commandPath(\"ghci\");\n    this.args = [\"-ghci-script\", this.bootScript()];\n  }\n\n  prepare(body: string): string {\n    let newBody = super.prepare(body);\n    newBody = `:{\\n${newBody}\\n:}`;\n    return newBody;\n  }\n\n  handleData(type: string, lines: string[]): string[] {\n    return type == \"stdout\"\n      ? lines.map((line) => line.replace(/(tidal> )+/i, \"\"))\n      : lines;\n  }\n\n  bootScript(): string {\n    const { bootScript } = this.extraOptions;\n    return bootScript || this.defaultBootScript();\n  }\n\n  defaultBootScript(): string {\n    return path.join(this.dataDir(), \"BootTidal.hs\");\n  }\n\n  dataDir(): string {\n    const ghciCmd = this.commandPath(\"ghci\");\n    try {\n      const dataDir = execSync(`${ghciCmd} -e Paths_tidal.getDataDir`)\n        .toString()\n        .trim()\n        .replace(/\"/g, \"\");\n      debug(\"Data dir:\", dataDir);\n      return dataDir;\n    } catch (err) {\n      debug(`Failed to get tidal data dir`);\n      debug(\n        `You will need to specify the location of your TidalCycles bootloading script.\\n` +\n          `Read more: https://github.com/munshkr/flok/wiki/Failed-to-get-tidal-data-dir`,\n      );\n      throw err;\n    }\n  }\n\n  commandPath(cmd: string): string {\n    const { ghci, useStack } = this.extraOptions;\n    if (ghci) return ghci;\n    return useStack ? `stack exec -- ${cmd}` : cmd;\n  }\n}\n\nexport default TidalREPL;\n"
  },
  {
    "path": "packages/repl/lib/repl.ts",
    "content": "import { ChildProcess, spawn } from \"child_process\";\nimport { EventEmitter } from \"events\";\nimport { PubSubClient } from \"@flok-editor/pubsub\";\nimport debugModule from \"debug\";\n\nconst debug = debugModule(\"flok:repl\");\n\ntype Message = {\n  body: string;\n  userName: string;\n};\n\ntype BaseREPLContext = {\n  target: string;\n  session: string;\n  tags: string[];\n  hub: string;\n  pubSubPath: string;\n  extraOptions?: { [option: string]: any };\n};\n\ntype CommandREPLContext = BaseREPLContext & {\n  command: string;\n  args: string[];\n};\n\nabstract class BaseREPL {\n  target: string;\n  session: string;\n  tags: string[];\n  hub: string;\n  pubSubPath: string;\n  extraOptions: { [option: string]: any };\n\n  emitter: EventEmitter;\n  pubSub: PubSubClient;\n\n  _buffers: { stdout: string; stderr: string };\n\n  constructor(ctx: BaseREPLContext) {\n    const { target, session, tags, hub, pubSubPath, extraOptions } = ctx;\n\n    this.target = target || \"default\";\n    this.session = session || \"default\";\n    this.tags = tags || [];\n    this.hub = hub || \"ws://localhost:3000\";\n    this.pubSubPath = pubSubPath || \"/pubsub\";\n    this.extraOptions = extraOptions || {};\n\n    this.emitter = new EventEmitter();\n\n    this._connectToPubSubServer();\n\n    this._buffers = { stdout: \"\", stderr: \"\" };\n  }\n\n  start() {\n    // Subscribe to pub sub\n    const { target, session } = this;\n    this.pubSub.subscribe(\n      `session:${session}:target:${target}:in`,\n      ({ message }: { message: Message }) => {\n        const { body } = message;\n        this.write(body);\n      },\n    );\n  }\n\n  abstract write(body: string);\n\n  // eslint-disable-next-line class-methods-use-this\n  prepare(body: string): string {\n    return body.trim();\n  }\n\n  _connectToPubSubServer() {\n    this.pubSub = new PubSubClient({ url: `${this.hub}${this.pubSubPath}` });\n    this.pubSub.start();\n    this.pubSub.on(\"error\", (err) => {\n      debug(\"error\", err);\n    });\n    this.pubSub.on(\"open\", () => {\n      debug(\"open\");\n    });\n  }\n}\n\nclass CommandREPL extends BaseREPL {\n  command: string;\n  args: string[];\n  repl: ChildProcess;\n\n  constructor(ctx: CommandREPLContext) {\n    const { target, session, tags, hub, pubSubPath, extraOptions } = ctx;\n    super({\n      target,\n      session,\n      tags,\n      hub,\n      pubSubPath,\n      extraOptions,\n    });\n\n    const { command, args } = ctx;\n    this.command = command;\n    this.args = args;\n  }\n\n  start() {\n    super.start();\n\n    // Spawn process\n    const cmd = this.command;\n    const args = this.args;\n    debug(`Spawn '${cmd}' with args:`, args);\n    this.repl = spawn(cmd, args, { shell: true });\n\n    // Handle stdout and stderr\n    this.repl.stdout.on(\"data\", (data: any) => {\n      this._handleData(data, \"stdout\");\n    });\n\n    this.repl.stderr.on(\"data\", (data: any) => {\n      this._handleData(data, \"stderr\");\n    });\n\n    this.repl.on(\"close\", (code: number) => {\n      this.emitter.emit(\"close\", { code });\n      debug(`Child process exited with code ${code}`);\n    });\n  }\n\n  write(body: string) {\n    const newBody = this.prepare(body);\n    this.repl.stdin.write(`${newBody}\\n\\n`);\n\n    const lines = newBody.split(\"\\n\");\n    this.emitter.emit(\"data\", { type: \"stdin\", lines });\n  }\n\n  handleData(type: string, lines: string[]): string[] {\n    return lines;\n  }\n\n  _handleData(data: any, type: string) {\n    const { target, session, tags } = this;\n    const newBuffer = this._buffers[type].concat(data.toString());\n    const rawLines = newBuffer.split(\"\\n\");\n\n    const basePath = `session:${session}:target:${target}`;\n\n    this._buffers[type] = rawLines.pop();\n\n    const lines = this.handleData(type, rawLines);\n\n    this.emitter.emit(\"data\", { type, lines });\n\n    const mustPublish = lines.length > 0;\n\n    if (mustPublish) {\n      this.pubSub.publish(`${basePath}:out`, {\n        target,\n        type,\n        body: lines,\n        tags,\n      });\n    }\n  }\n}\n\nexport { BaseREPL, BaseREPLContext, CommandREPL, CommandREPLContext };\n"
  },
  {
    "path": "packages/repl/package.json",
    "content": "{\n  \"name\": \"flok-repl\",\n  \"version\": \"1.3.0\",\n  \"description\": \"REPL client for Flok\",\n  \"author\": \"Damián Silvani <munshkr@gmail.com>\",\n  \"license\": \"GPL-3.0+\",\n  \"type\": \"module\",\n  \"files\": [\n    \"bin\",\n    \"dist\"\n  ],\n  \"bin\": \"./bin/flok-repl.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"module\": \"./dist/index.js\",\n  \"main\": \"./dist/index.cjs\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"tsc\"\n  },\n  \"dependencies\": {\n    \"@flok-editor/pubsub\": \"^1.3.0\",\n    \"command-exists\": \"^1.2.9\",\n    \"commander\": \"^10.0.0\",\n    \"debug\": \"^4.3.4\",\n    \"dotenv\": \"^16.0.3\",\n    \"glob\": \"^9.2.1\",\n    \"osc\": \"^2.4.3\"\n  },\n  \"devDependencies\": {\n    \"@types/commander\": \"^2.12.2\",\n    \"@types/debug\": \"^4.1.7\",\n    \"@types/node\": \"^18.14.6\",\n    \"prettier\": \"^3.4.2\",\n    \"typescript\": \"^4.9.4\"\n  }\n}\n"
  },
  {
    "path": "packages/repl/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ESNext\", \"DOM\"],\n    \"moduleResolution\": \"nodenext\",\n    \"strict\": false,\n    \"sourceMap\": true,\n    \"declaration\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"lib\"]\n}\n"
  },
  {
    "path": "packages/server/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "packages/server/bin/flok-server.js",
    "content": "#!/usr/bin/env node\n\nimport process from \"process\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport http from \"http\";\nimport { Command } from \"commander\";\nimport { fileURLToPath } from \"url\";\nimport withFlokServer from \"@flok-editor/server-middleware\";\n\nconst readConfig = (path) => {\n  const raw = fs.readFileSync(path);\n  return JSON.parse(raw.toString());\n};\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\nconst packageInfo = readConfig(path.resolve(__dirname, \"../package.json\"));\nconst program = new Command();\n\nprogram.version(packageInfo.version);\nprogram\n  .option(\"-H, --host [HOST]\", \"Server host\", \"localhost\")\n  .option(\"-P, --port [PORT]\", \"Server port\", 3000)\n  .parse(process.argv);\n\nconst opts = program.opts();\n\nconsole.log(`> Flok server started. Listening on ${opts.host}:${opts.port}`);\nconst server = http.createServer();\nwithFlokServer(server).listen(opts.port, opts.host);\n"
  },
  {
    "path": "packages/server/package.json",
    "content": "{\n  \"name\": \"flok-server\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Flok server, handles WebSocket connections and WebRTC signaling\",\n  \"author\": \"Damián Silvani <munshkr@gmail.com>\",\n  \"license\": \"GPL-3.0+\",\n  \"type\": \"module\",\n  \"files\": [\n    \"bin\"\n  ],\n  \"bin\": \"./bin/flok-server.js\",\n  \"scripts\": {\n    \"start\": \"node bin/flok-server.js\"\n  },\n  \"dependencies\": {\n    \"@flok-editor/server-middleware\": \"^1.3.0\",\n    \"commander\": \"^10.0.1\",\n    \"debug\": \"^4.3.4\",\n    \"lib0\": \"^0.2.63\",\n    \"y-protocols\": \"^1.0.5\",\n    \"yjs\": \"^13.6.21\"\n  },\n  \"devDependencies\": {\n    \"prettier\": \"^3.4.2\"\n  }\n}\n"
  },
  {
    "path": "packages/server-middleware/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "packages/server-middleware/lib/index.ts",
    "content": "import url from \"url\";\nimport { WebSocketServer, type WebSocket } from \"ws\";\nimport http from \"http\";\nimport { PubSubServer } from \"@flok-editor/pubsub\";\nimport onYjsWsConnection from \"./y-websocket-server.js\";\nimport onSignalingWsConnection from \"./signaling-server.js\";\nimport debugModule from \"debug\";\n\nconst debug = debugModule(\"flok:server\");\n\ntype FlokServer = http.Server & { _pubSubServer: PubSubServer };\n\nexport default function withFlokServer(server: http.Server): FlokServer {\n  const topics: Map<string, Set<any>> = new Map();\n\n  const wss = new WebSocketServer({ noServer: true });\n  const docWss = new WebSocketServer({ noServer: true });\n  const pubsubWss = new WebSocketServer({ noServer: true });\n\n  const newServer = server as FlokServer;\n\n  newServer.on(\"upgrade\", (request, socket, head) => {\n    const { pathname } = url.parse(request.url);\n\n    if (pathname.startsWith(\"/signal\")) {\n      wss.handleUpgrade(request, socket, head, (...args: any[]) => {\n        wss.emit(\"connection\", ...args);\n      });\n    } else if (pathname.startsWith(\"/doc\")) {\n      docWss.handleUpgrade(request, socket, head, (...args: any[]) => {\n        docWss.emit(\"connection\", ...args);\n      });\n    } else if (pathname.startsWith(\"/pubsub\")) {\n      pubsubWss.handleUpgrade(request, socket, head, (...args: any[]) => {\n        pubsubWss.emit(\"connection\", ...args);\n      });\n    }\n  });\n\n  wss.on(\"connection\", (conn: WebSocket) => {\n    onSignalingWsConnection(conn, topics);\n  });\n  docWss.on(\"connection\", (conn: WebSocket, req: http.IncomingMessage) => {\n    onYjsWsConnection(conn, req);\n  });\n\n  // Prepare PubSub WebScoket server (pubsub) for code evaluation\n  newServer._pubSubServer = new PubSubServer({ wss: pubsubWss });\n\n  return newServer;\n}\n"
  },
  {
    "path": "packages/server-middleware/lib/signaling-server.ts",
    "content": "import { map } from \"lib0\";\nimport debugModule from \"debug\";\n\nconst debug = debugModule(\"flok:server:signaling-server\");\n\nconst wsReadyStateConnecting = 0;\nconst wsReadyStateOpen = 1;\nconst wsReadyStateClosing = 2; // eslint-disable-line\nconst wsReadyStateClosed = 3; // eslint-disable-line\n\nconst pingTimeout = 30000;\n\nexport default (conn: any, topics: Map<string, Set<any>>) => {\n  const subscribedTopics = new Set<string>();\n  let closed = false;\n  // Check if connection is still alive\n  let pongReceived = true;\n  const pingInterval = setInterval(() => {\n    if (!pongReceived) {\n      conn.close();\n      clearInterval(pingInterval);\n    } else {\n      pongReceived = false;\n      try {\n        conn.ping();\n      } catch (e) {\n        conn.close();\n      }\n    }\n  }, pingTimeout);\n\n  conn.on(\"pong\", () => {\n    pongReceived = true;\n  });\n\n  conn.on(\"close\", () => {\n    subscribedTopics.forEach((topicName) => {\n      const subs = topics.get(topicName) || new Set();\n      subs.delete(conn);\n      if (subs.size === 0) {\n        topics.delete(topicName);\n      }\n    });\n    subscribedTopics.clear();\n    closed = true;\n  });\n\n  conn.on(\"message\", (data: Buffer) => {\n    const message = JSON.parse(data.toString());\n    if (message && message.type && !closed) {\n      switch (message.type) {\n        case \"subscribe\":\n          /** @type {Array<string>} */ (message.topics || []).forEach(\n            (topicName: string) => {\n              if (typeof topicName === \"string\") {\n                // add conn to topic\n                const topic = map.setIfUndefined(\n                  topics,\n                  topicName,\n                  () => new Set(),\n                );\n                topic.add(conn);\n                // add topic to conn\n                subscribedTopics.add(topicName);\n              }\n            },\n          );\n          break;\n        case \"unsubscribe\":\n          /** @type {Array<string>} */ (message.topics || []).forEach(\n            (topicName: string) => {\n              const subs = topics.get(topicName);\n              if (subs) {\n                subs.delete(conn);\n              }\n            },\n          );\n          break;\n        case \"publish\":\n          if (message.topic) {\n            const receivers = topics.get(message.topic);\n            if (receivers) {\n              message.clients = receivers.size;\n              receivers.forEach((receiver) => send(receiver, message));\n            }\n          }\n          break;\n        case \"ping\":\n          send(conn, { type: \"pong\" });\n          break;\n        default:\n      }\n    }\n  });\n};\n\nconst send = (conn: WebSocket, message: object) => {\n  if (\n    conn.readyState !== wsReadyStateConnecting &&\n    conn.readyState !== wsReadyStateOpen\n  ) {\n    conn.close();\n  }\n  try {\n    conn.send(JSON.stringify(message));\n  } catch (e) {\n    conn.close();\n  }\n};\n"
  },
  {
    "path": "packages/server-middleware/lib/y-websocket-server.ts",
    "content": "import { map, mutex, encoding, decoding } from \"lib0\";\nimport { Doc } from \"yjs\";\nimport * as awarenessProtocol from \"y-protocols/awareness\";\nimport * as syncProtocol from \"y-protocols/sync\";\nimport type http from \"http\";\nimport debugModule from \"debug\";\nimport type { WebSocket } from \"ws\";\n\nconst debug = debugModule(\"flok:server:y-websocket-server\");\n\nconst wsReadyStateConnecting = 0;\nconst wsReadyStateOpen = 1;\nconst wsReadyStateClosing = 2; // eslint-disable-line\nconst wsReadyStateClosed = 3; // eslint-disable-line\n\n// disable gc when using snapshots!\nconst gcEnabled = process.env.GC !== \"false\" && process.env.GC !== \"0\";\nconst persistenceDir = process.env.YPERSISTENCE;\n/**\n * @type {{bindState: function(string,WSSharedDoc):void, writeState:function(string,WSSharedDoc):Promise<any>}|null}\n */\nlet persistence = null;\nif (typeof persistenceDir === \"string\") {\n  // @ts-ignore\n  const LevelDbPersistence = require(\"y-leveldb\").LevelDbPersistence;\n  persistence = new LevelDbPersistence(persistenceDir);\n}\n\nconst setPersistence = (\n  persistence_: {\n    bindState: (arg0: string, arg1: WSSharedDoc) => void;\n    writeState: (arg0: string, arg1: WSSharedDoc) => Promise<any>;\n  } | null,\n) => {\n  persistence = persistence_;\n};\n\nconst docs: Map<string, WSSharedDoc> = new Map();\n\nconst messageSync = 0;\nconst messageAwareness = 1;\n// const messageAuth = 2\n\nconst updateHandler = (update: Uint8Array, origin: any, doc: WSSharedDoc) => {\n  const encoder = encoding.createEncoder();\n  encoding.writeVarUint(encoder, messageSync);\n  syncProtocol.writeUpdate(encoder, update);\n  const message = encoding.toUint8Array(encoder);\n  doc.conns.forEach((_, conn) => send(doc, conn, message));\n};\n\nexport class WSSharedDoc extends Doc {\n  name: string;\n  mux: mutex.mutex;\n  conns: Map<any, Set<number>>;\n  awareness: awarenessProtocol.Awareness;\n\n  constructor(name: string) {\n    super({ gc: gcEnabled });\n    this.name = name;\n    this.mux = mutex.createMutex();\n    /**\n     * Maps from conn to set of controlled user ids. Delete all user ids from awareness when this conn is closed\n     */\n    this.conns = new Map();\n    this.awareness = new awarenessProtocol.Awareness(this);\n    this.awareness.setLocalState(null);\n    /**\n     * @param {{ added: Array<number>, updated: Array<number>, removed: Array<number> }} changes\n     * @param {Object | null} conn Origin is the connection that made the change\n     */\n    const awarenessChangeHandler = (\n      {\n        added,\n        updated,\n        removed,\n      }: { added: number[]; updated: number[]; removed: number[] },\n      conn: any,\n    ) => {\n      const changedClients = added.concat(updated, removed);\n      if (conn !== null) {\n        const connControlledIDs =\n          /** @type {Set<number>} */ this.conns.get(conn);\n        if (connControlledIDs !== undefined) {\n          added.forEach((clientID) => {\n            connControlledIDs.add(clientID);\n          });\n          removed.forEach((clientID) => {\n            connControlledIDs.delete(clientID);\n          });\n        }\n      }\n      // broadcast awareness update\n      const encoder = encoding.createEncoder();\n      encoding.writeVarUint(encoder, messageAwareness);\n      encoding.writeVarUint8Array(\n        encoder,\n        awarenessProtocol.encodeAwarenessUpdate(this.awareness, changedClients),\n      );\n      const buff = encoding.toUint8Array(encoder);\n      this.conns.forEach((_, c) => {\n        send(this, c, buff);\n      });\n    };\n    this.awareness.on(\"change\", awarenessChangeHandler);\n    this.on(\"update\", updateHandler);\n  }\n}\n\nconst messageListener = (conn: any, doc: WSSharedDoc, message: Uint8Array) => {\n  const encoder = encoding.createEncoder();\n  const decoder = decoding.createDecoder(message);\n  const messageType = decoding.readVarUint(decoder);\n  switch (messageType) {\n    case messageSync:\n      encoding.writeVarUint(encoder, messageSync);\n      syncProtocol.readSyncMessage(decoder, encoder, doc, null);\n      if (encoding.length(encoder) > 1) {\n        send(doc, conn, encoding.toUint8Array(encoder));\n      }\n      break;\n    case messageAwareness: {\n      awarenessProtocol.applyAwarenessUpdate(\n        doc.awareness,\n        decoding.readVarUint8Array(decoder),\n        conn,\n      );\n      break;\n    }\n  }\n};\n\nconst closeConn = (doc: WSSharedDoc, conn: any) => {\n  if (doc.conns.has(conn)) {\n    const controlledIds: Set<number> = doc.conns.get(conn);\n    doc.conns.delete(conn);\n    awarenessProtocol.removeAwarenessStates(\n      doc.awareness,\n      Array.from(controlledIds),\n      null,\n    );\n    if (doc.conns.size === 0 && persistence !== null) {\n      // if persisted, we store state and destroy ydocument\n      persistence.writeState(doc.name, doc).then(() => {\n        doc.destroy();\n      });\n      docs.delete(doc.name);\n    }\n  }\n  conn.close();\n};\n\nconst send = (doc: WSSharedDoc, conn: any, m: Uint8Array) => {\n  if (\n    conn.readyState !== wsReadyStateConnecting &&\n    conn.readyState !== wsReadyStateOpen\n  ) {\n    closeConn(doc, conn);\n  }\n  try {\n    conn.send(\n      m,\n      /** @param {any} err */ (err) => {\n        err != null && closeConn(doc, conn);\n      },\n    );\n  } catch (e) {\n    closeConn(doc, conn);\n  }\n};\n\nconst pingTimeout = 30000;\n\nexport const setupWSConnection = (\n  conn: WebSocket,\n  req: http.IncomingMessage,\n  { docName = req.url.slice(1).split(\"?\")[0], gc = true }: any = {},\n) => {\n  conn.binaryType = \"arraybuffer\";\n  // get doc, create if it does not exist yet\n  const doc = map.setIfUndefined(docs, docName, () => {\n    const doc = new WSSharedDoc(docName);\n    doc.gc = gc;\n    if (persistence !== null) {\n      persistence.bindState(docName, doc);\n    }\n    docs.set(docName, doc);\n    return doc;\n  });\n  doc.conns.set(conn, new Set());\n  // listen and reply to events\n  conn.on(\"message\", (message: ArrayBuffer) =>\n    messageListener(conn, doc, new Uint8Array(message)),\n  );\n  conn.on(\"close\", () => {\n    closeConn(doc, conn);\n  });\n  // Check if connection is still alive\n  let pongReceived = true;\n  const pingInterval = setInterval(() => {\n    if (!pongReceived) {\n      if (doc.conns.has(conn)) {\n        closeConn(doc, conn);\n      }\n      clearInterval(pingInterval);\n    } else if (doc.conns.has(conn)) {\n      pongReceived = false;\n      try {\n        conn.ping();\n      } catch (e) {\n        closeConn(doc, conn);\n      }\n    }\n  }, pingTimeout);\n  conn.on(\"pong\", () => {\n    pongReceived = true;\n  });\n  // send sync step 1\n  const encoder = encoding.createEncoder();\n  encoding.writeVarUint(encoder, messageSync);\n  syncProtocol.writeSyncStep1(encoder, doc);\n  send(doc, conn, encoding.toUint8Array(encoder));\n  const awarenessStates = doc.awareness.getStates();\n  if (awarenessStates.size > 0) {\n    const encoder = encoding.createEncoder();\n    encoding.writeVarUint(encoder, messageAwareness);\n    encoding.writeVarUint8Array(\n      encoder,\n      awarenessProtocol.encodeAwarenessUpdate(\n        doc.awareness,\n        Array.from(awarenessStates.keys()),\n      ),\n    );\n    send(doc, conn, encoding.toUint8Array(encoder));\n  }\n};\n\nexport default setupWSConnection;\n"
  },
  {
    "path": "packages/server-middleware/package.json",
    "content": "{\n  \"name\": \"@flok-editor/server-middleware\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Server middleware for Flok, handles WebSocket connections and WebRTC signaling\",\n  \"author\": \"Damián Silvani <munshkr@gmail.com>\",\n  \"license\": \"GPL-3.0+\",\n  \"type\": \"module\",\n  \"files\": [\n    \"bin\",\n    \"dist\"\n  ],\n  \"types\": \"./dist/index.d.ts\",\n  \"module\": \"./dist/index.js\",\n  \"main\": \"./dist/index.cjs\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"tsc\"\n  },\n  \"dependencies\": {\n    \"@flok-editor/pubsub\": \"^1.3.0\",\n    \"debug\": \"^4.3.4\"\n  },\n  \"devDependencies\": {\n    \"@types/debug\": \"^4.1.7\",\n    \"@types/node\": \"^18.14.6\",\n    \"prettier\": \"^3.4.2\",\n    \"typescript\": \"^4.9.4\"\n  },\n  \"peerDependencies\": {\n    \"lib0\": \"^0.2.63\",\n    \"y-protocols\": \"^1.0.5\",\n    \"yjs\": \"^13.6.21\"\n  }\n}\n"
  },
  {
    "path": "packages/server-middleware/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ESNext\", \"DOM\"],\n    \"moduleResolution\": \"nodenext\",\n    \"strict\": false,\n    \"sourceMap\": true,\n    \"declaration\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"lib\"]\n}\n"
  },
  {
    "path": "packages/session/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "packages/session/lib/document.ts",
    "content": "import type { Session, EvalContext, EvalMode } from \"./index.js\";\nimport type * as Y from \"yjs\";\n\nexport class Document {\n  id: string;\n  session: Session;\n\n  constructor(session: Session, id: string) {\n    this.id = id;\n    this.session = session;\n  }\n\n  get content(): string {\n    return this.session.getTextString(this.id);\n  }\n\n  set content(newValue: string) {\n    this.session.setTextString(this.id, newValue);\n  }\n\n  get target(): string {\n    return this.session.getTarget(this.id);\n  }\n\n  set target(newValue: string) {\n    this.session.setTarget(this.id, newValue);\n  }\n\n  getText(): Y.Text {\n    return this.session.getText(this.id);\n  }\n\n  setTarget(newValue: string) {\n    this.target = newValue;\n    return this;\n  }\n\n  evaluate(body: string, context: EvalContext, mode: EvalMode = \"default\") {\n    return this.session.evaluate(this.id, this.target, body, context, mode);\n  }\n}\n\nexport default Document;\n"
  },
  {
    "path": "packages/session/lib/index.ts",
    "content": "export * from \"./session.js\";\nexport * from \"./document.js\";\n"
  },
  {
    "path": "packages/session/lib/session.ts",
    "content": "import type * as Y from \"yjs\";\nimport { uint32 } from \"lib0/random\";\nimport EventEmitter from \"events\";\nimport { IndexeddbPersistence } from \"y-indexeddb\";\nimport { WebrtcProvider } from \"y-webrtc\";\nimport { WebsocketProvider } from \"y-websocket\";\nimport { Awareness } from \"y-protocols/awareness.js\";\nimport { PubSubClient } from \"@flok-editor/pubsub\";\nimport { Doc } from \"yjs\";\nimport debugModule from \"debug\";\nimport { Document } from \"./document.js\";\n\nconst debug = debugModule(\"flok:session\");\n\ntype Provider = \"webrtc\" | \"websocket\" | \"indexeddb\";\ntype SessionEvent =\n  | \"sync\"\n  | \"eval\"\n  | \"message\"\n  | \"change\"\n  | `eval:${string}`\n  | `message:${string}`\n  | `change-target:${string}`\n  | \"ws:connect\"\n  | \"ws:disconnect\"\n  | \"pubsub:start\"\n  | \"pubsub:stop\"\n  | \"pubsub:open\"\n  | \"pubsub:close\"\n  | \"pubsub:error\";\n\nexport interface UserColor {\n  color: string;\n  light: string;\n}\n\nexport const userColors: UserColor[] = [\n  { color: \"#30bced\", light: \"#30bced33\" },\n  { color: \"#6eeb83\", light: \"#6eeb8333\" },\n  { color: \"#ffbc42\", light: \"#ffbc4233\" },\n  { color: \"#ecd444\", light: \"#ecd44433\" },\n  { color: \"#ee6352\", light: \"#ee635233\" },\n  { color: \"#9ac2c9\", light: \"#9ac2c933\" },\n  { color: \"#8acb88\", light: \"#8acb8833\" },\n  { color: \"#1be7ff\", light: \"#1be7ff33\" },\n];\n\nexport interface EvalContext {\n  from: number | null;\n  to: number | null;\n}\n\nexport type EvalMode =\n  | \"default\" // publish to :eval and :in topics (for REPL targets)\n  | \"web\" // emit eval events directly and publish to :eval topic (for Web targets)\n  | \"webLocal\"; // emit eval events directly, do not publish to :eval topic\n\nexport interface EvalMessage extends EvalContext {\n  docId: string;\n  body: string;\n  user: string;\n  mode: EvalMode;\n}\n\nexport interface SessionOptions {\n  hostname?: string;\n  port?: number;\n  isSecure?: boolean;\n  user?: string;\n  providers?: Provider[];\n  extraSignalingServers?: string[];\n}\n\nexport class Session {\n  hostname: string;\n  port?: number;\n  isSecure: boolean;\n  name: string;\n\n  yDoc: Doc;\n  awareness: Awareness;\n\n  _initialized: boolean = false;\n  _synced: boolean = false;\n  _wsConnected: boolean = false;\n  _user: string;\n  _userColor: UserColor;\n  _providers: Provider[];\n  _extraSignalingServers: string[];\n\n  _idbProvider: IndexeddbPersistence;\n  _webrtcProvider: WebrtcProvider;\n  _wsProvider: WebsocketProvider;\n  _pubSubClient: PubSubClient;\n\n  _emitter: EventEmitter = new EventEmitter();\n\n  constructor(name: string, opts: SessionOptions = {}) {\n    this.name = name;\n\n    this.hostname = opts?.hostname || \"localhost\";\n    this.port = opts?.port;\n    this.isSecure = opts?.isSecure || false;\n\n    this._user = opts?.user || \"Anonymous \" + Math.floor(Math.random() * 100);\n    this._userColor = userColors[uint32() % userColors.length];\n    this._providers = opts?.providers || [\"webrtc\", \"websocket\", \"indexeddb\"];\n    this._extraSignalingServers = opts?.extraSignalingServers || [];\n\n    this._handleObserveSharedTypes = this._handleObserveSharedTypes.bind(this);\n  }\n\n  initialize() {\n    if (this._initialized) return;\n    this._prepareYjs();\n    this._preparePubSub();\n    this._initialized = true;\n    this._emitter.emit(\"init\");\n    debug(\"initialized\");\n  }\n\n  get user(): string {\n    return this._user;\n  }\n\n  get userColor(): UserColor {\n    return this._userColor;\n  }\n\n  set user(newUser: string) {\n    this._user = newUser;\n    this._updateUserStateField();\n  }\n\n  set userColor(newUserColor: UserColor) {\n    this._userColor = newUserColor;\n    this._updateUserStateField();\n  }\n\n  setActiveDocuments(items: { id: string; target?: string }[]) {\n    const targets = this._yTargets();\n    const oldTargets = Object.fromEntries(targets.entries());\n\n    // Remove duplicates on items (duplicate ids) by creating an object/map\n    const newTargets = Object.fromEntries(\n      items.map(({ id, target }) => [id, target]),\n    );\n\n    // Calculate ids to delete and ids to create\n    const newIds = Object.keys(newTargets);\n    const oldIds = Array.from(targets.keys());\n    const toDelete = oldIds.filter((id) => !newIds.includes(id));\n    const toAddOrUpdate = newIds.filter(\n      (id) => !oldIds.includes(id) || oldTargets[id] !== newTargets[id],\n    );\n    debug(\"toDelete\", toDelete);\n    debug(\"toAddOrUpdate\", toAddOrUpdate);\n\n    this.yDoc.transact(() => {\n      toDelete.forEach((id) => targets.delete(id));\n      toAddOrUpdate.forEach((id) => targets.set(id, newTargets[id]));\n    });\n  }\n\n  getDocuments(): Document[] {\n    return Array.from(this._yTargets().keys()).map(\n      (id) => new Document(this, id),\n    );\n  }\n\n  getDocument(id: string): Document | null {\n    if (!this._yTargets().has(id)) return;\n    return new Document(this, id);\n  }\n\n  getTarget(id: string): string {\n    return this._yTargets().get(id);\n  }\n\n  setTarget(id: string, target: string) {\n    this._yTargets().set(id, target);\n  }\n\n  getText(id: string): Y.Text {\n    return this._yText(id);\n  }\n\n  getTextString(id: string) {\n    return this.getText(id).toString();\n  }\n\n  setTextString(id: string, text: string) {\n    const ytext = this._yText(id);\n    if (ytext.toString() === text) return;\n    this.yDoc.transact(() => {\n      ytext.delete(0, ytext.length);\n      ytext.insert(0, text);\n    });\n  }\n\n  evaluate(\n    docId: string,\n    target: string,\n    body: string,\n    context: EvalContext,\n    mode: EvalMode = \"default\",\n  ) {\n    const msg: EvalMessage = {\n      docId,\n      body,\n      user: this.user,\n      mode,\n      ...context,\n    };\n\n    // If evaluating on browser, emit events directly\n    if (mode === \"web\" || mode === \"webLocal\") {\n      this._emitter.emit(`eval`, msg);\n      this._emitter.emit(`eval:${target}`, msg);\n    }\n\n    // If not evaluating locally, publish to :eval topic\n    if (mode !== \"webLocal\") {\n      this._pubSubClient.publish(\n        `session:${this.name}:target:${target}:eval`,\n        msg,\n      );\n    }\n  }\n\n  on(eventName: SessionEvent, cb: (...args: any[]) => void) {\n    this._emitter.on(eventName, cb);\n  }\n\n  off(eventName: SessionEvent, cb: (...args: any[]) => void) {\n    this._emitter.off(eventName, cb);\n  }\n\n  once(eventName: SessionEvent, cb: (...args: any[]) => void) {\n    this._emitter.once(eventName, cb);\n  }\n\n  removeAllListeners(eventName?: SessionEvent) {\n    this._emitter.removeAllListeners(eventName);\n  }\n\n  destroy() {\n    this.removeAllListeners();\n    [\"error\", \"open\", \"close\"].forEach((e) =>\n      this._pubSubClient.removeAllListeners(e),\n    );\n    this._synced = false;\n    this._initialized = false;\n    this._pubSubClient.destroy();\n    if (this._wsProvider && this._wsProvider.wsconnected)\n      this._wsProvider.destroy();\n    if (this._webrtcProvider && !this._webrtcProvider.closed)\n      this._webrtcProvider.destroy();\n    if (this._idbProvider) this._idbProvider.destroy();\n    this._yTargets().unobserve(this._handleObserveSharedTypes);\n    this.yDoc.destroy();\n    this.awareness.destroy();\n  }\n\n  get wsUrl() {\n    const schema = this.isSecure ? `wss` : `ws`;\n    return `${schema}://${this.hostname}${this.port ? `:${this.port}` : \"\"}`;\n  }\n\n  get synced() {\n    return this._synced;\n  }\n\n  get wsConnected() {\n    return this._wsConnected;\n  }\n\n  _prepareYjs() {\n    this.yDoc = new Doc();\n    this.awareness = new Awareness(this.yDoc);\n    this._updateUserStateField();\n    this._observeSharedTypes();\n    this._createProviders();\n  }\n\n  _createProviders() {\n    if (this._providers.includes(\"indexeddb\")) {\n      this._idbProvider = new IndexeddbPersistence(this.name, this.yDoc);\n      this._idbProvider.on(\"synced\", () => {\n        if (!this._synced) {\n          this._synced = true;\n          this._emitter.emit(\"sync\", \"indexeddb\");\n          debug(\"Synced first with IndexedDB\");\n        }\n      });\n    }\n\n    if (this._providers.includes(\"webrtc\")) {\n      this._webrtcProvider = new WebrtcProvider(this.name, this.yDoc, {\n        awareness: this.awareness,\n        signaling: [`${this.wsUrl}/signal`, ...this._extraSignalingServers],\n      });\n      this._webrtcProvider.on(\"synced\", () => {\n        if (!this._synced) {\n          this._synced = true;\n          this._emitter.emit(\"sync\", \"webrtc\");\n          debug(\"Synced first with WebRTC\");\n        }\n      });\n    }\n\n    if (this._providers.includes(\"websocket\")) {\n      this._wsProvider = new WebsocketProvider(\n        `${this.wsUrl}/doc`,\n        this.name,\n        this.yDoc,\n        { awareness: this.awareness },\n      );\n      this._wsProvider.on(\"synced\", () => {\n        if (!this._synced) {\n          this._synced = true;\n          this._emitter.emit(\"sync\", \"websocket\");\n          debug(\"Synced first with WebSockets\");\n        }\n      });\n      this._wsProvider.on(\"status\", ({ status }) => {\n        if (status === \"connected\") {\n          this._wsConnected = true;\n          this._emitter.emit(\"ws:connect\");\n        } else if (status === \"disconnected\") {\n          this._wsConnected = false;\n          this._emitter.emit(\"ws:disconnect\");\n        }\n      });\n    }\n  }\n\n  _preparePubSub() {\n    this._pubSubClient = new PubSubClient({ url: `${this.wsUrl}/pubsub` });\n    this._pubSubClient.on(\"start\", () => {\n      this._emitter.emit(\"pubsub:start\");\n    });\n    this._pubSubClient.on(\"stop\", () => {\n      this._emitter.emit(\"pubsub:stop\");\n    });\n    this._pubSubClient.on(\"error\", (err) => {\n      debug(\"error on pubsub\", err);\n      this._emitter.emit(\"pubsub:error\", err);\n    });\n    this._pubSubClient.on(\"open\", () => {\n      this._emitter.emit(\"pubsub:open\");\n    });\n    this._pubSubClient.on(\"close\", () => {\n      this._emitter.emit(\"pubsub:close\");\n    });\n    this._pubSubClient.start();\n  }\n\n  _subscribeToTarget(target: string) {\n    if (!this._pubSubClient) return;\n\n    // Subscribe to messages directed to a specific target\n    this._pubSubClient.subscribe(\n      `session:${this.name}:target:${target}:eval`,\n      (args) => {\n        debug(`session:${this.name}:target:${target}:eval`, args);\n\n        const { fromMe, message } = args;\n        const { mode } = message;\n\n        // If mode is web or webLocal, and message is from me, do not emit\n        // event because we already did it when calling .evaluate()\n        if ((mode === \"web\" || mode === \"webLocal\") && fromMe) return;\n\n        this._emitter.emit(`eval`, message);\n        this._emitter.emit(`eval:${target}`, message);\n\n        // If mode is web or webLocal, do not publish to :in topics (not a REPL target)\n        if (mode === \"web\" || mode === \"webLocal\") return;\n\n        // Notify to flok-repls\n        this._pubSubClient.publish(\n          `session:${this.name}:target:${target}:in`,\n          message,\n        );\n      },\n    );\n\n    this._pubSubClient.subscribe(\n      `session:${this.name}:target:${target}:out`,\n      (args) => {\n        debug(`session:${this.name}:target:${target}:out`, args);\n        this._emitter.emit(`message`, args);\n        this._emitter.emit(`message:${target}`, args);\n      },\n    );\n\n    // Subscribes to messages directed to ourselves\n    this._pubSubClient.subscribe(\n      `session:${this.name}:target:${target}:user:${this.user}:out`,\n      (args) => {\n        debug(\n          `session:${this.name}:target:${target}:user:${this.user}:out`,\n          args,\n        );\n        this._emitter.emit(`message`, args);\n        this._emitter.emit(`message:${target}`, args);\n      },\n    );\n  }\n\n  _unsubscribeTarget(target: string) {\n    const topics = [\n      `session:${this.name}:target:${target}:eval`,\n      `session:${this.name}:target:${target}:out`,\n      `session:${this.name}:target:${target}:user:${this.user}:out`,\n    ];\n    topics.forEach((topic) => this._pubSubClient.unsubscribe(topic));\n  }\n\n  _updateUserStateField() {\n    this.awareness.setLocalStateField(\"user\", {\n      name: this.user,\n      color: this._userColor.color,\n      colorLight: this._userColor.light,\n    });\n  }\n\n  _observeSharedTypes() {\n    this._yTargets().observe(this._handleObserveSharedTypes);\n  }\n\n  protected _handleObserveSharedTypes(event: Y.YMapEvent<string>) {\n    const ymap = this._yTargets();\n    event.changes.keys.forEach((change, key) => {\n      // If a target was added or updated, subscribe and emit change event\n      if (change.action === \"add\" || change.action === \"update\") {\n        const newValue = ymap.get(key);\n        debug(\n          `Document \"${key}\" was added or updated. New target: \"${newValue}\". ` +\n            `Previous target: \"${change.oldValue}\".`,\n        );\n        debug(`Subscribe to ${newValue}`);\n        this._subscribeToTarget(newValue);\n        this._emitter.emit(`change-target:${key}`, newValue, change.oldValue);\n      }\n\n      // If a target is not present anymore, unsubscribe on PubSub\n      if (change.action === \"update\" || change.action === \"delete\") {\n        const targets = Array.from(ymap.values());\n        if (!targets.includes(change.oldValue)) {\n          debug(`Unsubscribe from ${change.oldValue}`);\n          this._unsubscribeTarget(change.oldValue);\n        }\n      }\n    });\n\n    this._emitter.emit(\"change\", this.getDocuments());\n  }\n\n  _yTargets(): Y.Map<string> {\n    return this.yDoc.getMap(\"targets\");\n  }\n\n  _yText(id: string): Y.Text {\n    return this.yDoc.getText(`text:${id}`);\n  }\n}\n\nexport default Session;\n"
  },
  {
    "path": "packages/session/package.json",
    "content": "{\n  \"name\": \"@flok-editor/session\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Flok Session package\",\n  \"author\": \"Damián Silvani <munshkr@gmail.com>\",\n  \"license\": \"GPL-3.0+\",\n  \"type\": \"module\",\n  \"files\": [\n    \"dist\"\n  ],\n  \"types\": \"./dist/index.d.ts\",\n  \"module\": \"./dist/index.js\",\n  \"main\": \"./dist/index.cjs\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"tsc\"\n  },\n  \"dependencies\": {\n    \"@flok-editor/pubsub\": \"^1.3.0\",\n    \"debug\": \"^4.3.4\",\n    \"events\": \"^3.3.0\"\n  },\n  \"devDependencies\": {\n    \"@types/debug\": \"^4.1.7\",\n    \"prettier\": \"^3.4.2\",\n    \"typescript\": \"^4.9.4\"\n  },\n  \"peerDependencies\": {\n    \"y-indexeddb\": \"^9.0.9\",\n    \"y-protocols\": \"^1.0.5\",\n    \"y-webrtc\": \"^10.2.4\",\n    \"y-websocket\": \"^1.5.0\",\n    \"yjs\": \"^13.6.21\"\n  }\n}\n"
  },
  {
    "path": "packages/session/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ESNext\", \"DOM\"],\n    \"moduleResolution\": \"nodenext\",\n    \"strict\": false,\n    \"sourceMap\": true,\n    \"declaration\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"lib\"]\n}\n"
  },
  {
    "path": "packages/web/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\n# Strudel\npublic/assets/clockwork*.js\n"
  },
  {
    "path": "packages/web/.prettierignore",
    "content": "public\nsrc/lib/punctual.js\n"
  },
  {
    "path": "packages/web/bin/flok-web.js",
    "content": "#!/usr/bin/env node\n\nimport process from \"process\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { Command } from \"commander\";\nimport { fileURLToPath } from \"url\";\nimport { startServer } from \"../server.js\";\n\nconst readConfig = (path) => {\n  const raw = fs.readFileSync(path);\n  return JSON.parse(raw.toString());\n};\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\nconst packageInfo = readConfig(path.resolve(__dirname, \"../package.json\"));\nconst program = new Command();\n\nprogram.version(packageInfo.version);\nprogram\n  .option(\"-H, --host [HOST]\", \"Server host\", \"0.0.0.0\")\n  .option(\"-P, --port [PORT]\", \"Server port\", 3000)\n  .option(\"-s, --secure\", \"Serve on https (use SSL)\", false)\n  .option(\"--ssl-cert [PATH]\", \"Path to SSL certificate file (optional)\")\n  .option(\"--ssl-key [PATH]\", \"Path to SSL key file (optional)\")\n  .option(\"--static-dir [PATH]\", \"Path to static files (optional)\")\n  .parse(process.argv);\n\nconst opts = program.opts();\n\nif (!opts.sslKey) {\n  opts.sslKey = path.resolve(__dirname, \"../cert/key.pem\");\n}\nif (!opts.sslCert) {\n  opts.sslCert = path.resolve(__dirname, \"../cert/cert.pem\");\n}\n\nstartServer({\n  mode: process.env.NODE_ENV || \"production\",\n  hostname: opts.host,\n  port: opts.port,\n  secure: opts.secure,\n  sslCert: opts.sslCert,\n  sslKey: opts.sslKey,\n  staticDir: opts.staticDir,\n});\n"
  },
  {
    "path": "packages/web/cert/cert.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIFbTCCA1WgAwIBAgIUD05r8PlDvPqVBEXaVtq85i18dPEwDQYJKoZIhvcNAQEL\nBQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\nGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAgFw0yNDAxMDcxMjQ1MjJaGA8yMTIz\nMTIxNDEyNDUyMlowRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx\nITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCAiIwDQYJKoZIhvcN\nAQEBBQADggIPADCCAgoCggIBAKZbtZk+fzwc7V9G/59l+Lk625iH4XlWYBo249WA\nQHB3ti+cODz72VVh5TKHUEj9G5q+UIgZ0QP1MqFeUxdEYZ5tnAvNaJIr54OqKp9d\nnjhfGFGFyILBDKfHsT4pxtJUjqxBQeO2Dr/vrAvy9KabGGSKoaUE75ylZ5xlGAmc\n+eS+Zrhs86C4ZvLJM1jJNaFjpS3N4c9Ly/YZ9GlpK+dXPRCCrIUbnNbqVCRaNlR7\nMBwKmHGlUPVgFdZxEWKY8g5+6LR1XvaAcLQkNESDPrTEUn2KQmP0mvMZy4qI3Vqg\ndNQ7odSiPoIg79P/pn7VRtBPwe62khQH2jTMPxn7SZFnKOteIGdEj6c/Gj69PZgn\noVON0zDquFB31u9Guiv00vNhVPdhKGLhQAo+79d9Z/XuSbR64VbHkpDeWQg9Gyy7\nkjcEJuECmQNSf5qzIbY38sG1lpEzqpY+wsh/laKa+J3QBxE8cgdnnolPD3lHfThB\nMQlpQ4tVJrXxS4+KrnjIwEcNiAJaUj+EkyCimJzOxmBGnXNJ1PeEpzF1Z4yKlnBq\ncBXUvgNOJKIsFFmJd/JNvv8nMXuM9XKg1v4GewoutrIvbS8XVyT4lsQTUu0pa5Ce\nsxK4IZ55Svty20y+MiFW4SFu4UdroOtH7ELpQnOz9yHYHZ8k5ZZBeW2cgnUrgkjl\nu7plAgMBAAGjUzBRMB0GA1UdDgQWBBQ5g9DrmNU5JcBa7lHRe7N3kIYI7jAfBgNV\nHSMEGDAWgBQ5g9DrmNU5JcBa7lHRe7N3kIYI7jAPBgNVHRMBAf8EBTADAQH/MA0G\nCSqGSIb3DQEBCwUAA4ICAQB1iPaZMMTbZ37MUeWli3t3MNnH9gmjM8mB7SpcS5OS\n0VXoxeX7ymoHf0GuOf54ccb+Bz8d7ispEITiESlHO6+TyDhj4j4ZnSdn+3S1t49Z\nPIYVvafjmZoY8EsrbTN6K+Ao1oQ2Kjmv0fC7o9hKfgSnbxiKxX1uVagjCATC/2FT\nKfGfeSEw38xV+VtmY/d0tuNs68ndt1PKCc1i1qZAKSGUUNetiW2+ruy+uwGHNNG5\ndQvpCpM+5eW4TFhuUHhMqnKBtDwbQtfdZZvb0OXOPi14Sp9VIWnSkLa9fY1QbJwk\n37aW9nif3RrCxpn2RO26v2/AK56bCc+D9ZPx/svbzDrJgA+Q8c4Uqas/l1SLaYyc\n+FGgYTfuTw/527hD9BGwyxQNX8018JdKxLH9841vy8o17WYedkwErdrtc9UFtarR\ngkZnI7qoaErOW489IdaTZVeixzgORQcHdAuYjSiXII0bZMfZRxg3tDguLrcSkgZQ\npsxD76aU7beLXNSv2Hog6UMsE/t2cleg/zJlb3FzG1O1aLeYUck2t0nALTJwbyyk\nJz49ANnI2CU8xy34ZBpczUIZHREHZKzZixDsORL2W49j3lAjLw+a/bDCbVJ9b1a6\nMqrpWsBoaoU5WRZMklL1bEJ2mjWfaY8lyb1crMkaWdVSwfA7VpposVhgtIsbAsoI\nLQ==\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "packages/web/cert/key.pem",
    "content": "-----BEGIN PRIVATE KEY-----\nMIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCmW7WZPn88HO1f\nRv+fZfi5OtuYh+F5VmAaNuPVgEBwd7YvnDg8+9lVYeUyh1BI/RuavlCIGdED9TKh\nXlMXRGGebZwLzWiSK+eDqiqfXZ44XxhRhciCwQynx7E+KcbSVI6sQUHjtg6/76wL\n8vSmmxhkiqGlBO+cpWecZRgJnPnkvma4bPOguGbyyTNYyTWhY6UtzeHPS8v2GfRp\naSvnVz0QgqyFG5zW6lQkWjZUezAcCphxpVD1YBXWcRFimPIOfui0dV72gHC0JDRE\ngz60xFJ9ikJj9JrzGcuKiN1aoHTUO6HUoj6CIO/T/6Z+1UbQT8HutpIUB9o0zD8Z\n+0mRZyjrXiBnRI+nPxo+vT2YJ6FTjdMw6rhQd9bvRror9NLzYVT3YShi4UAKPu/X\nfWf17km0euFWx5KQ3lkIPRssu5I3BCbhApkDUn+asyG2N/LBtZaRM6qWPsLIf5Wi\nmvid0AcRPHIHZ56JTw95R304QTEJaUOLVSa18UuPiq54yMBHDYgCWlI/hJMgopic\nzsZgRp1zSdT3hKcxdWeMipZwanAV1L4DTiSiLBRZiXfyTb7/JzF7jPVyoNb+BnsK\nLrayL20vF1ck+JbEE1LtKWuQnrMSuCGeeUr7cttMvjIhVuEhbuFHa6DrR+xC6UJz\ns/ch2B2fJOWWQXltnIJ1K4JI5bu6ZQIDAQABAoICAA2TRkpvEyrwoV45CPsU8ysK\nZokX7YpdRhJdkFIH2TpUSoWwFdbEJoQVLQLmj+Kk5O/HwAKbOLc99xe7/sPTTLQE\n9crwxCvJcWcJJ9lBZnvrJqzgYfBpmILIhOoxtovLYqkj2iCe5q06/asr9FL0LRVn\nSrGQqYz64m2cwk1mhe3oq7E5Eth2s8/0I0CHitzUqNIIDvk/kjFPBOblMjP6pn0G\nbNWf3ziafqtIwU47jz16j94WQ3kCkkWhjG2jVX1hVdQED+/Fo2zP14QPwbo2mxSr\nh6doeoyD+lwftxCCL4ZyJ06WvssXrPp7zjZjaRfuqkC0nU8NJP1R/YQ9QU+gP3Jz\n0vslL6GK4tTAAa7QxEUG6uANfNo0+kDwsO7cj32qVkQ+W9fw5hRYKxWunyB8RXED\nalHMCSprgAsqPXsV22S60keF8dMKcq5pQ8cJi5Z6itBKMp8G4yLocp3LdOHLTA3n\nEXUva3fahyyvleNrslPJ9LvkzVjRhk91t7Gjc7CUgd6xSKbI2LbxTS9GTSo8V7oS\nidfnpmyRLZfIQAJ22pPJYnkiG6NT0dCruTkMNz6YBQs6UpzbWdq5Zn7UXGXoekLR\n4cIcxcEBAAiZqPUsruqY4RGiud7szLQgDz13l+GU1H8GHLIbWjVmAviFD9VUsK7u\nJNqrF3Lm7WCurLBHxx6xAoIBAQDWnXos+D7AgTJBEnYVglAv/XCR6MrfwNjOvau7\nYg/cyGOm+cHEhjNu2swTgXjR4HA/L/6AzlETDgomsRfFGIpZbfwcqTotei88vVot\nLec3SYvbq0Q7Rnwlhl+k/BzYO/L8WQfqgXAgdZ8Pc4Rag5j7XYYDoyiyUIK/+VjO\n8iDE0HhT8H+l2lsGGi/YsB6Ir5Xjfeyv8nPC93PW/rcQosZPqCx2sAmCVNQH/VIG\nIdC/KF+g9UNY3aF88hAAwjRpgEOAXGY401z52agWL0qcnylM/LbvibBfApQTvXJ3\ns0jZuQC0GBlxSD+beKZSlJ/THhvkk/4OcCWWHSONEegSHs0LAoIBAQDGcAUEsbNu\nfwaa4RbZGxkKvXvINHFm2wWrZyxJmoX9wUzaJ29LKEKBOPP45GzdUv5+7o7s0uAG\niCLuv5toqpFfIz27LG+FogEBfQuPVZs0hY+7Co8FfPpryy5fvjcM9WBZySQ1qay2\nZvVGqHtXLiJLaIRiHNgqiOJ5kDOMBwQAOQN1qMhqI27G/q9tWpZNDq7DZm9Ib5vT\nRJYHRsrUS46ENhPk0lmAt9bO72NSg5SwPQjOCvJMcIzTAKMdJHFJE6GslprSiLoR\nMND2DpEturg4OmuqIz+nG4BWC9/A3Jrk5v2kBIBEuQn+sSwogBJdjcuvMTJWjIll\nKWgEz8gzL9xPAoIBAQDVo6fWkjwtd67mFhGUccePLjRcGyexO5DXpPoKK6DswFJr\nCp74Gjui841JMY5rJoe2bvljkX4lgMlcINgvrLE0OwdIJLG0SbgyN7BH3zUW1VCz\nGLdwZkb5N92IKCwymOLWj24Q5E8REOWJBQ5Q6EVmnH/mqQm/D+RIZFgikedK5NeT\nf4oiOM55saHFi/SpTljgQB9YOvs/rwMSlzb3CYJuE1RHxg+BPR5g4axATHM3h2JC\noUQsd1vlPDXv+2MfTr5jThe4I7efRCtOAj+8z7fWWo9kvmTi/3cWe3UycTdo/QAV\nRxQ0r54aDy1KcYb0KznK/gNergbMey9Do/qn5x9nAoIBADv8Mtgna4k0Zue8sS5x\n7ZD8lIWBrOIdxUn6Bz48stJxc2zizNbYVbpAYCfVzT7eTsZKEPRwDn6K+pxXWYA7\nR3SN76Q8G3426bzscukiRKeM1FUDLRbIn96j7eHNW1DUgArELej24JnG59AzMA27\niWxoLNSHyaSZ+nQq7hofKMt0cKJJokPLcDpBVQBmiNbEYHn65hrsehtUOVH7yWaB\nbJR00HC0UZACgrHNVaXk1rarzJSUZIhM4ZULNUOi94fSomXMpQKNiEmYCyLGZoZ/\nUh7VMiSdQSmfu5zHPB1N0pjtZrEFF00u7mGKZ0Ha7TJQocjUw1W8Z/AnoyUJNoia\nqCsCggEBALCIg1eg6S0TVn2kUYHHdSvfBaKQvvciKkggjA80Ijt3q0khz11zV36A\n+lLTraBqzPYc/v6Bfq8HG8Ku11pzV/S23Lx5DG4nai/0Qx346OLiquVctZQMJPi1\nGUIBiF0gm+CMFXJQcS1zh2ylOR2MbTlkWR5qd97A1OqKtyd8aRac0WZ8O7Er/AKZ\nJAaQdMmyc4AHCpyvQbMwcFx4UEGj09kBCBI4a1MOrpl+CUeqBzV5nPswwhuEyS1Z\nJ0I/5tcb1GTlkpj8GVwg2UlrgvAwhLE7RE1p85vZhXfBVEPd2lCScWZbZqHlGgJC\nPLab48CuoGIPiDPqxDddXkm1ikVYw3U=\n-----END PRIVATE KEY-----\n"
  },
  {
    "path": "packages/web/index.html",
    "content": "<!doctype html>\n<html lang=\"en\" class=\"dark\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/flok.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <meta\n      name=\"description\"\n      content=\"Web-based P2P collaborative editor for live coding sounds and images\"\n    />\n    <title>Flok</title>\n  </head>\n\n  <body\n    class=\"min-h-screen font-sans antialiased overscroll-none overflow-hidden text-slate-50\"\n  >\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/web/package.json",
    "content": "{\n  \"name\": \"flok-web\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Web server for Flok\",\n  \"author\": \"Damián Silvani <munshkr@gmail.com>\",\n  \"license\": \"GPL-3.0+\",\n  \"type\": \"module\",\n  \"bin\": \"./bin/flok-web.js\",\n  \"files\": [\n    \"bin\",\n    \"dist\",\n    \"cert\",\n    \"server.js\",\n    \"vite-express.js\",\n    \"vite.config.ts\"\n  ],\n  \"scripts\": {\n    \"dev\": \"cross-env NODE_ENV=development node ./bin/flok-web.js\",\n    \"prebuild\": \"node script/prebuild.js\",\n    \"build\": \"npm run prebuild && tsc && vite build\",\n    \"start\": \"node ./bin/flok-web.js\",\n    \"check\": \"tsc --noEmit\",\n    \"lint\": \"prettier -c .\",\n    \"format\": \"prettier -w .\"\n  },\n  \"dependencies\": {\n    \"@flok-editor/server-middleware\": \"^1.3.0\",\n    \"@strudel/draw\": \"^1.2.0\",\n    \"@uiw/codemirror-theme-andromeda\": \"^4.22.1\",\n    \"@uiw/codemirror-theme-bespin\": \"^4.22.1\",\n    \"@uiw/codemirror-theme-console\": \"^4.22.1\",\n    \"@uiw/codemirror-theme-github\": \"^4.22.1\",\n    \"@uiw/codemirror-theme-monokai\": \"^4.22.1\",\n    \"@uiw/codemirror-theme-solarized\": \"^4.22.1\",\n    \"@uiw/codemirror-theme-xcode\": \"^4.22.1\",\n    \"commander\": \"^10.0.0\",\n    \"compression\": \"^1.7.4\",\n    \"express\": \"^4.18.2\",\n    \"picocolors\": \"^1.0.0\"\n  },\n  \"devDependencies\": {\n    \"@codemirror/lang-javascript\": \"^6.2.1\",\n    \"@codemirror/lang-python\": \"^6.1.3\",\n    \"@codemirror/state\": \"^6.4.0\",\n    \"@codemirror/view\": \"^6.23.0\",\n    \"@flok-editor/cm-eval\": \"^1.3.0\",\n    \"@flok-editor/lang-tidal\": \"^1.3.0\",\n    \"@flok-editor/lang-punctual\": \"^1.3.0\",\n    \"@flok-editor/session\": \"^1.3.0\",\n    \"@radix-ui/react-dialog\": \"^1.1.4\",\n    \"@radix-ui/react-dropdown-menu\": \"^2.1.4\",\n    \"@radix-ui/react-label\": \"^2.1.1\",\n    \"@radix-ui/react-menubar\": \"^1.1.4\",\n    \"@radix-ui/react-popover\": \"^1.1.4\",\n    \"@radix-ui/react-select\": \"^2.1.4\",\n    \"@radix-ui/react-toast\": \"^1.2.4\",\n    \"@radix-ui/react-toggle\": \"^1.1.1\",\n    \"@radix-ui/react-tooltip\": \"^1.1.6\",\n    \"@replit/codemirror-vim\": \"^6.2.1\",\n    \"@strudel/codemirror\": \"^1.2.0\",\n    \"@strudel/core\": \"^1.2.0\",\n    \"@strudel/midi\": \"^1.2.0\",\n    \"@strudel/mini\": \"^1.2.0\",\n    \"@strudel/osc\": \"^1.2.0\",\n    \"@strudel/serial\": \"^1.2.0\",\n    \"@strudel/soundfonts\": \"^1.2.0\",\n    \"@strudel/tonal\": \"^1.2.0\",\n    \"@strudel/transpiler\": \"^1.2.0\",\n    \"@strudel/webaudio\": \"^1.2.0\",\n    \"@types/express\": \"^4.17.21\",\n    \"@types/p5\": \"^1.7.6\",\n    \"@types/react\": \"^18.2.43\",\n    \"@types/react-dom\": \"^18.2.17\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.14.0\",\n    \"@typescript-eslint/parser\": \"^6.14.0\",\n    \"@uiw/codemirror-themes\": \"^4.22.0\",\n    \"@uiw/react-codemirror\": \"^4.19.11\",\n    \"@vitejs/plugin-react\": \"^4.2.1\",\n    \"autoprefixer\": \"^10.4.14\",\n    \"class-variance-authority\": \"^0.4.0\",\n    \"clsx\": \"^1.2.1\",\n    \"cmdk\": \"^0.2.0\",\n    \"codemirror\": \"^6.0.1\",\n    \"cross-env\": \"^7.0.3\",\n    \"eslint\": \"^8.55.0\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-react-refresh\": \"^0.4.5\",\n    \"hydra-synth\": \"^1.3.29\",\n    \"lucide-react\": \"^0.128.0\",\n    \"mercury-engine\": \"^1.3.1\",\n    \"p5\": \"^1.9.0\",\n    \"postcss\": \"^8.4.21\",\n    \"prettier\": \"^3.4.2\",\n    \"react\": \"^19.0.0\",\n    \"react-dom\": \"^19.0.0\",\n    \"react-helmet-async\": \"^1.3.0\",\n    \"react-router-dom\": \"^6.9.0\",\n    \"tailwind-merge\": \"^1.10.0\",\n    \"tailwindcss\": \"^3.2.7\",\n    \"tailwindcss-animate\": \"^1.0.5\",\n    \"typescript\": \"^5.3.3\",\n    \"unique-names-generator\": \"^4.7.1\",\n    \"unplugin-fonts\": \"^1.1.1\",\n    \"vite\": \"^5.0.12\",\n    \"vite-plugin-node-polyfills\": \"^0.19.0\",\n    \"y-codemirror.next\": \"github:munshkr/y-codemirror.next#dee71ac8d65bc640db60a188b916d1a0147a9439\",\n    \"y-indexeddb\": \"^9.0.9\",\n    \"y-protocols\": \"^1.0.5\",\n    \"y-webrtc\": \"^10.2.5\",\n    \"y-websocket\": \"^1.5.0\",\n    \"yjs\": \"^13.6.21\"\n  }\n}\n"
  },
  {
    "path": "packages/web/postcss.config.cjs",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n};\n"
  },
  {
    "path": "packages/web/script/prebuild.js",
    "content": "// This script is executed before the build process starts. It can be used to\n// do some pre-build tasks like copying files, etc. that are required for the\n// build process.\n\nimport { existsSync, mkdirSync, readdirSync, copyFileSync } from \"fs\";\nimport { fileURLToPath } from \"url\";\nimport { resolve, dirname } from \"path\";\n\n// Strudel\n// * mkdir -p public/assets\n// * cp ../../node_modules/@strudel/core/dist/assets/clockworker--*.js to /public/assets/\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst publicAssetsDir = resolve(__dirname, \"../public/assets\");\nconst strudelAssetsDir = resolve(\n  __dirname,\n  \"../../../node_modules/@strudel/core/dist/assets\",\n);\n\nif (!existsSync(publicAssetsDir)) {\n  mkdirSync(publicAssetsDir, { recursive: true });\n}\n\nconst files = readdirSync(strudelAssetsDir).filter((file) =>\n  file.startsWith(\"clockworker--\"),\n);\nfiles.forEach((file) => {\n  const src = resolve(strudelAssetsDir, file);\n  const dest = resolve(publicAssetsDir, file);\n  copyFileSync(src, dest);\n});\n"
  },
  {
    "path": "packages/web/server.js",
    "content": "import withFlokServer from \"@flok-editor/server-middleware\";\nimport express from \"express\";\nimport compression from \"compression\";\nimport fs from \"fs\";\nimport http from \"http\";\nimport https from \"https\";\nimport { networkInterfaces } from \"os\";\nimport pc from \"picocolors\";\nimport process from \"process\";\nimport ViteExpress from \"./vite-express.js\";\nimport { fileURLToPath } from \"url\";\nimport path from \"path\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nfunction info(msg) {\n  const timestamp = new Date().toLocaleString(\"en-US\").split(\",\")[1].trim();\n  console.log(\n    `${pc.dim(timestamp)} ${pc.bold(pc.cyan(\"[flok-web]\"))} ${pc.green(msg)}`,\n  );\n}\n\nexport async function startServer({ onReady, staticDir, ...opts }) {\n  try {\n    const app = express();\n\n    app.use(compression());\n\n    if (staticDir) {\n      info(`Serving extra static files at ${pc.gray(staticDir)}`);\n      app.use(express.static(staticDir));\n    }\n\n    let viteServer;\n    if (opts.secure) {\n      info(\n        `Using SSL certificate at ${pc.gray(opts.sslCert)} (key at ${pc.gray(opts.sslKey)})`,\n      );\n      const key = fs.readFileSync(opts.sslKey);\n      const cert = fs.readFileSync(opts.sslCert);\n      viteServer = https.createServer({ key, cert }, app);\n    } else {\n      viteServer = http.createServer(app);\n    }\n\n    ViteExpress.config({\n      mode: opts?.mode || \"development\",\n      inlineViteConfig: {\n        root: path.resolve(__dirname),\n      },\n      viteConfigFile: path.resolve(__dirname, \"vite.config.ts\"),\n      vitePort: opts.port,\n    });\n    ViteExpress.bind(app, viteServer);\n\n    const server = withFlokServer(viteServer);\n\n    server.listen(\n      opts.port,\n      onReady ||\n        (() => {\n          const netResults = getPossibleIpAddresses();\n          const schema = opts.secure ? \"https\" : \"http\";\n          info(`Listening on ${schema}://localhost:${opts.port}`);\n          if (netResults.length > 1) {\n            info(\"If on LAN, try sharing with your friends one of these URLs:\");\n            Object.entries(netResults).map(([k, v]) => {\n              info(`\\t${k}: ${schema}://${v}:${opts.port}`);\n            });\n          } else {\n            info(\n              `If on LAN, try sharing with your friends ${schema}://${Object.values(netResults)[0]}:${opts.port}`,\n            );\n          }\n        }),\n    );\n  } catch (err) {\n    console.error(err);\n    process.exit(1);\n  }\n}\n\nconst getPossibleIpAddresses = () => {\n  const nets = networkInterfaces();\n  const results = Object.create(null); // Or just '{}', an empty object\n\n  for (const name of Object.keys(nets)) {\n    for (const net of nets[name]) {\n      // Skip over non-IPv4 and internal (i.e. 127.0.0.1) addresses\n      if (net.family === \"IPv4\" && !net.internal) {\n        if (!results[name]) {\n          results[name] = [];\n        }\n        results[name].push(net.address);\n      }\n    }\n  }\n\n  return results;\n};\n"
  },
  {
    "path": "packages/web/src/assets/fonts/BigBlue/LICENSE.TXT",
    "content": "Attribution-ShareAlike 4.0 International\n\n=======================================================================\n\nCreative Commons Corporation (\"Creative Commons\") is not a law firm and\ndoes not provide legal services or legal advice. Distribution of\nCreative Commons public licenses does not create a lawyer-client or\nother relationship. Creative Commons makes its licenses and related\ninformation available on an \"as-is\" basis. Creative Commons gives no\nwarranties regarding its licenses, any material licensed under their\nterms and conditions, or any related information. Creative Commons\ndisclaims all liability for damages resulting from their use to the\nfullest extent possible.\n\nUsing Creative Commons Public Licenses\n\nCreative Commons public licenses provide a standard set of terms and\nconditions that creators and other rights holders may use to share\noriginal works of authorship and other material subject to copyright\nand certain other rights specified in the public license below. The\nfollowing considerations are for informational purposes only, are not\nexhaustive, and do not form part of our licenses.\n\n     Considerations for licensors: Our public licenses are\n     intended for use by those authorized to give the public\n     permission to use material in ways otherwise restricted by\n     copyright and certain other rights. Our licenses are\n     irrevocable. Licensors should read and understand the terms\n     and conditions of the license they choose before applying it.\n     Licensors should also secure all rights necessary before\n     applying our licenses so that the public can reuse the\n     material as expected. Licensors should clearly mark any\n     material not subject to the license. This includes other CC-\n     licensed material, or material used under an exception or\n     limitation to copyright. More considerations for licensors:\n\twiki.creativecommons.org/Considerations_for_licensors\n\n     Considerations for the public: By using one of our public\n     licenses, a licensor grants the public permission to use the\n     licensed material under specified terms and conditions. If\n     the licensor's permission is not necessary for any reason--for\n     example, because of any applicable exception or limitation to\n     copyright--then that use is not regulated by the license. Our\n     licenses grant only permissions under copyright and certain\n     other rights that a licensor has authority to grant. Use of\n     the licensed material may still be restricted for other\n     reasons, including because others have copyright or other\n     rights in the material. A licensor may make special requests,\n     such as asking that all changes be marked or described.\n     Although not required by our licenses, you are encouraged to\n     respect those requests where reasonable. More_considerations\n     for the public: \n\twiki.creativecommons.org/Considerations_for_licensees\n\n=======================================================================\n\nCreative Commons Attribution-ShareAlike 4.0 International Public\nLicense\n\nBy exercising the Licensed Rights (defined below), You accept and agree\nto be bound by the terms and conditions of this Creative Commons\nAttribution-ShareAlike 4.0 International Public License (\"Public\nLicense\"). To the extent this Public License may be interpreted as a\ncontract, You are granted the Licensed Rights in consideration of Your\nacceptance of these terms and conditions, and the Licensor grants You\nsuch rights in consideration of benefits the Licensor receives from\nmaking the Licensed Material available under these terms and\nconditions.\n\n\nSection 1 -- Definitions.\n\n  a. Adapted Material means material subject to Copyright and Similar\n     Rights that is derived from or based upon the Licensed Material\n     and in which the Licensed Material is translated, altered,\n     arranged, transformed, or otherwise modified in a manner requiring\n     permission under the Copyright and Similar Rights held by the\n     Licensor. For purposes of this Public License, where the Licensed\n     Material is a musical work, performance, or sound recording,\n     Adapted Material is always produced where the Licensed Material is\n     synched in timed relation with a moving image.\n\n  b. Adapter's License means the license You apply to Your Copyright\n     and Similar Rights in Your contributions to Adapted Material in\n     accordance with the terms and conditions of this Public License.\n\n  c. BY-SA Compatible License means a license listed at\n     creativecommons.org/compatiblelicenses, approved by Creative\n     Commons as essentially the equivalent of this Public License.\n\n  d. Copyright and Similar Rights means copyright and/or similar rights\n     closely related to copyright including, without limitation,\n     performance, broadcast, sound recording, and Sui Generis Database\n     Rights, without regard to how the rights are labeled or\n     categorized. For purposes of this Public License, the rights\n     specified in Section 2(b)(1)-(2) are not Copyright and Similar\n     Rights.\n\n  e. Effective Technological Measures means those measures that, in the\n     absence of proper authority, may not be circumvented under laws\n     fulfilling obligations under Article 11 of the WIPO Copyright\n     Treaty adopted on December 20, 1996, and/or similar international\n     agreements.\n\n  f. Exceptions and Limitations means fair use, fair dealing, and/or\n     any other exception or limitation to Copyright and Similar Rights\n     that applies to Your use of the Licensed Material.\n\n  g. License Elements means the license attributes listed in the name\n     of a Creative Commons Public License. The License Elements of this\n     Public License are Attribution and ShareAlike.\n\n  h. Licensed Material means the artistic or literary work, database,\n     or other material to which the Licensor applied this Public\n     License.\n\n  i. Licensed Rights means the rights granted to You subject to the\n     terms and conditions of this Public License, which are limited to\n     all Copyright and Similar Rights that apply to Your use of the\n     Licensed Material and that the Licensor has authority to license.\n\n  j. Licensor means the individual(s) or entity(ies) granting rights\n     under this Public License.\n\n  k. Share means to provide material to the public by any means or\n     process that requires permission under the Licensed Rights, such\n     as reproduction, public display, public performance, distribution,\n     dissemination, communication, or importation, and to make material\n     available to the public including in ways that members of the\n     public may access the material from a place and at a time\n     individually chosen by them.\n\n  l. Sui Generis Database Rights means rights other than copyright\n     resulting from Directive 96/9/EC of the European Parliament and of\n     the Council of 11 March 1996 on the legal protection of databases,\n     as amended and/or succeeded, as well as other essentially\n     equivalent rights anywhere in the world.\n\n  m. You means the individual or entity exercising the Licensed Rights\n     under this Public License. Your has a corresponding meaning.\n\n\nSection 2 -- Scope.\n\n  a. License grant.\n\n       1. Subject to the terms and conditions of this Public License,\n          the Licensor hereby grants You a worldwide, royalty-free,\n          non-sublicensable, non-exclusive, irrevocable license to\n          exercise the Licensed Rights in the Licensed Material to:\n\n            a. reproduce and Share the Licensed Material, in whole or\n               in part; and\n\n            b. produce, reproduce, and Share Adapted Material.\n\n       2. Exceptions and Limitations. For the avoidance of doubt, where\n          Exceptions and Limitations apply to Your use, this Public\n          License does not apply, and You do not need to comply with\n          its terms and conditions.\n\n       3. Term. The term of this Public License is specified in Section\n          6(a).\n\n       4. Media and formats; technical modifications allowed. The\n          Licensor authorizes You to exercise the Licensed Rights in\n          all media and formats whether now known or hereafter created,\n          and to make technical modifications necessary to do so. The\n          Licensor waives and/or agrees not to assert any right or\n          authority to forbid You from making technical modifications\n          necessary to exercise the Licensed Rights, including\n          technical modifications necessary to circumvent Effective\n          Technological Measures. For purposes of this Public License,\n          simply making modifications authorized by this Section 2(a)\n          (4) never produces Adapted Material.\n\n       5. Downstream recipients.\n\n            a. Offer from the Licensor -- Licensed Material. Every\n               recipient of the Licensed Material automatically\n               receives an offer from the Licensor to exercise the\n               Licensed Rights under the terms and conditions of this\n               Public License.\n\n            b. Additional offer from the Licensor -- Adapted Material.\n               Every recipient of Adapted Material from You\n               automatically receives an offer from the Licensor to\n               exercise the Licensed Rights in the Adapted Material\n               under the conditions of the Adapter's License You apply.\n\n            c. No downstream restrictions. You may not offer or impose\n               any additional or different terms or conditions on, or\n               apply any Effective Technological Measures to, the\n               Licensed Material if doing so restricts exercise of the\n               Licensed Rights by any recipient of the Licensed\n               Material.\n\n       6. No endorsement. Nothing in this Public License constitutes or\n          may be construed as permission to assert or imply that You\n          are, or that Your use of the Licensed Material is, connected\n          with, or sponsored, endorsed, or granted official status by,\n          the Licensor or others designated to receive attribution as\n          provided in Section 3(a)(1)(A)(i).\n\n  b. Other rights.\n\n       1. Moral rights, such as the right of integrity, are not\n          licensed under this Public License, nor are publicity,\n          privacy, and/or other similar personality rights; however, to\n          the extent possible, the Licensor waives and/or agrees not to\n          assert any such rights held by the Licensor to the limited\n          extent necessary to allow You to exercise the Licensed\n          Rights, but not otherwise.\n\n       2. Patent and trademark rights are not licensed under this\n          Public License.\n\n       3. To the extent possible, the Licensor waives any right to\n          collect royalties from You for the exercise of the Licensed\n          Rights, whether directly or through a collecting society\n          under any voluntary or waivable statutory or compulsory\n          licensing scheme. In all other cases the Licensor expressly\n          reserves any right to collect such royalties.\n\n\nSection 3 -- License Conditions.\n\nYour exercise of the Licensed Rights is expressly made subject to the\nfollowing conditions.\n\n  a. Attribution.\n\n       1. If You Share the Licensed Material (including in modified\n          form), You must:\n\n            a. retain the following if it is supplied by the Licensor\n               with the Licensed Material:\n\n                 i. identification of the creator(s) of the Licensed\n                    Material and any others designated to receive\n                    attribution, in any reasonable manner requested by\n                    the Licensor (including by pseudonym if\n                    designated);\n\n                ii. a copyright notice;\n\n               iii. a notice that refers to this Public License;\n\n                iv. a notice that refers to the disclaimer of\n                    warranties;\n\n                 v. a URI or hyperlink to the Licensed Material to the\n                    extent reasonably practicable;\n\n            b. indicate if You modified the Licensed Material and\n               retain an indication of any previous modifications; and\n\n            c. indicate the Licensed Material is licensed under this\n               Public License, and include the text of, or the URI or\n               hyperlink to, this Public License.\n\n       2. You may satisfy the conditions in Section 3(a)(1) in any\n          reasonable manner based on the medium, means, and context in\n          which You Share the Licensed Material. For example, it may be\n          reasonable to satisfy the conditions by providing a URI or\n          hyperlink to a resource that includes the required\n          information.\n\n       3. If requested by the Licensor, You must remove any of the\n          information required by Section 3(a)(1)(A) to the extent\n          reasonably practicable.\n\n  b. ShareAlike.\n\n     In addition to the conditions in Section 3(a), if You Share\n     Adapted Material You produce, the following conditions also apply.\n\n       1. The Adapter's License You apply must be a Creative Commons\n          license with the same License Elements, this version or\n          later, or a BY-SA Compatible License.\n\n       2. You must include the text of, or the URI or hyperlink to, the\n          Adapter's License You apply. You may satisfy this condition\n          in any reasonable manner based on the medium, means, and\n          context in which You Share Adapted Material.\n\n       3. You may not offer or impose any additional or different terms\n          or conditions on, or apply any Effective Technological\n          Measures to, Adapted Material that restrict exercise of the\n          rights granted under the Adapter's License You apply.\n\n\nSection 4 -- Sui Generis Database Rights.\n\nWhere the Licensed Rights include Sui Generis Database Rights that\napply to Your use of the Licensed Material:\n\n  a. for the avoidance of doubt, Section 2(a)(1) grants You the right\n     to extract, reuse, reproduce, and Share all or a substantial\n     portion of the contents of the database;\n\n  b. if You include all or a substantial portion of the database\n     contents in a database in which You have Sui Generis Database\n     Rights, then the database in which You have Sui Generis Database\n     Rights (but not its individual contents) is Adapted Material,\n\n     including for purposes of Section 3(b); and\n  c. You must comply with the conditions in Section 3(a) if You Share\n     all or a substantial portion of the contents of the database.\n\nFor the avoidance of doubt, this Section 4 supplements and does not\nreplace Your obligations under this Public License where the Licensed\nRights include other Copyright and Similar Rights.\n\n\nSection 5 -- Disclaimer of Warranties and Limitation of Liability.\n\n  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE\n     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS\n     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF\n     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,\n     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,\n     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR\n     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,\n     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT\n     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT\n     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.\n\n  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE\n     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,\n     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,\n     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,\n     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR\n     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN\n     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR\n     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR\n     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.\n\n  c. The disclaimer of warranties and limitation of liability provided\n     above shall be interpreted in a manner that, to the extent\n     possible, most closely approximates an absolute disclaimer and\n     waiver of all liability.\n\n\nSection 6 -- Term and Termination.\n\n  a. This Public License applies for the term of the Copyright and\n     Similar Rights licensed here. However, if You fail to comply with\n     this Public License, then Your rights under this Public License\n     terminate automatically.\n\n  b. Where Your right to use the Licensed Material has terminated under\n     Section 6(a), it reinstates:\n\n       1. automatically as of the date the violation is cured, provided\n          it is cured within 30 days of Your discovery of the\n          violation; or\n\n       2. upon express reinstatement by the Licensor.\n\n     For the avoidance of doubt, this Section 6(b) does not affect any\n     right the Licensor may have to seek remedies for Your violations\n     of this Public License.\n\n  c. For the avoidance of doubt, the Licensor may also offer the\n     Licensed Material under separate terms or conditions or stop\n     distributing the Licensed Material at any time; however, doing so\n     will not terminate this Public License.\n\n  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public\n     License.\n\n\nSection 7 -- Other Terms and Conditions.\n\n  a. The Licensor shall not be bound by any additional or different\n     terms or conditions communicated by You unless expressly agreed.\n\n  b. Any arrangements, understandings, or agreements regarding the\n     Licensed Material not stated herein are separate from and\n     independent of the terms and conditions of this Public License.\n\n\nSection 8 -- Interpretation.\n\n  a. For the avoidance of doubt, this Public License does not, and\n     shall not be interpreted to, reduce, limit, restrict, or impose\n     conditions on any use of the Licensed Material that could lawfully\n     be made without permission under this Public License.\n\n  b. To the extent possible, if any provision of this Public License is\n     deemed unenforceable, it shall be automatically reformed to the\n     minimum extent necessary to make it enforceable. If the provision\n     cannot be reformed, it shall be severed from this Public License\n     without affecting the enforceability of the remaining terms and\n     conditions.\n\n  c. No term or condition of this Public License will be waived and no\n     failure to comply consented to unless expressly agreed to by the\n     Licensor.\n\n  d. Nothing in this Public License constitutes or may be interpreted\n     as a limitation upon, or waiver of, any privileges and immunities\n     that apply to the Licensor or You, including from the legal\n     processes of any jurisdiction or authority.\n\n\n=======================================================================\n\nCreative Commons is not a party to its public\nlicenses. Notwithstanding, Creative Commons may elect to apply one of\nits public licenses to material it publishes and in those instances\nwill be considered the “Licensor.” The text of the Creative Commons\npublic licenses is dedicated to the public domain under the CC0 Public\nDomain Dedication. Except for the limited purpose of indicating that\nmaterial is shared under a Creative Commons public license or as\notherwise permitted by the Creative Commons policies published at\ncreativecommons.org/policies, Creative Commons does not authorize the\nuse of the trademark \"Creative Commons\" or any other trademark or logo\nof Creative Commons without its prior written consent including,\nwithout limitation, in connection with any unauthorized modifications\nto any of its public licenses or any other arrangements,\nunderstandings, or agreements concerning use of licensed material. For\nthe avoidance of doubt, this paragraph does not form part of the\npublic licenses.\n\nCreative Commons may be contacted at creativecommons.org.\n\n"
  },
  {
    "path": "packages/web/src/assets/fonts/BigBlue/stylesheet.css",
    "content": "@font-face {\n  font-family: \"BigBlue TerminalPlus\";\n  src:\n    url(\"BigBlue_TerminalPlus.woff2\") format(\"woff2\"),\n    url(\"BigBlue_TerminalPlus.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 80%;\n}\n\n@font-face {\n  font-family: \"BigBlue Terminal 437TT\";\n  src:\n    url(\"BigBlue_Terminal_437TT.woff2\") format(\"woff2\"),\n    url(\"BigBlue_Terminal_437TT.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 80%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/FiraCode/README.txt",
    "content": "Installing\n==========\n\nWindows\n-------\n\nIn the ttf folder, double-click each font file, click “Install font”; to install all at once, select all files, right-click, and choose “Install”\n\nOR\n\nUse https://chocolatey.org:\n\n    choco install firacode\n\n\nmacOS\n-----\n\nIn the downloaded TTF folder:\n\n1.  Select all font files\n2.  Right click and select `Open` (alternatively `Open With Font Book`)\n3.  Select \"Install Font\"\n\nOR\n\nUse http://brew.sh:\n\n    `brew tap homebrew/cask-fonts`\n    `brew install font-fira-code`\n\n\nUbuntu Zesty (17.04), Debian Stretch (9) or newer\n-------------------------------------------------\n\n1. Make sure that the `universe` (for Ubuntu) or `contrib` (for Debian) repository is enabled (see https://askubuntu.com/questions/148638/how-do-i-enable-the-universe-repository or https://wiki.debian.org/SourcesList#Component)\n2. Install `fonts-firacode` package either by executing `sudo apt install fonts-firacode` in the terminal or via GUI tool (like “Software Center”)\n\n\nArch Linux\n----------\n\nFira Code package is available in the official repository: https://www.archlinux.org/packages/community/any/ttf-fira-code/.\n\nVariant of Fira Code package is available in the AUR: https://aur.archlinux.org/packages/otf-fira-code-git/.\n\n\nGentoo\n------\n\n    emerge -av media-fonts/fira-code\n\n\nFedora\n------\n\nTo install, perform the following commands:\n\n    dnf install fira-code-fonts\n\n\nSolus\n-----\n\nFira Code package is available in the official repository: `font-firacode-ttf` and `font-firacode-otf`.  \nThey can be installed by running:\n\n    sudo eopkg install font-firacode-ttf font-firacode-otf\n\n\nVoid linux\n----------\n\n    xbps-install font-firacode\n\n\nLinux Manual Installation\n-------------------------\n\nWith most desktop-oriented distributions, double-clicking each font file in the ttf folder and selecting “Install font” should be enough. If it isn’t, create and run `download_and_install.sh` script:\n\n    #!/usr/bin/env bash\n\n    fonts_dir=\"${HOME}/.local/share/fonts\"\n    if [ ! -d \"${fonts_dir}\" ]; then\n        echo \"mkdir -p $fonts_dir\"\n        mkdir -p \"${fonts_dir}\"\n    else\n        echo \"Found fonts dir $fonts_dir\"\n    fi\n\n    for type in Bold Light Medium Regular Retina; do\n        file_path=\"${HOME}/.local/share/fonts/FiraCode-${type}.ttf\"\n        file_url=\"https://github.com/tonsky/FiraCode/blob/master/distr/ttf/FiraCode-${type}.ttf?raw=true\"\n        if [ ! -e \"${file_path}\" ]; then\n            echo \"wget -O $file_path $file_url\"\n            wget -O \"${file_path}\" \"${file_url}\"\n        else\n      echo \"Found existing file $file_path\"\n        fi;\n    done\n\n    echo \"fc-cache -f\"\n    fc-cache -f\n\nMore details: https://github.com/tonsky/FiraCode/issues/4\n\n\nFreeBSD\n-------\n\nUsing pkg(8):\n\n    pkg install firacode\n\nOR\n\nUsing ports:\n\n    cd /usr/ports/x11-fonts/firacode && make install clean\n\n\nEnabling ligatures\n==================\n\nAtom\n----\n\nTo change your font to Fira Code, open Atom's preferences (`cmd + ,` on a Mac, `ctrl + ,` on PC), make sure the \"Settings\" tab is selected, or the \"Editor\" in Atom 1.10+, and scroll down to \"Editor Settings\". In the \"Font Family\" field, enter `Fira Code`.\n\nIf you wish to specify a font weight, for example, Light, use `Fira Code Light` as a font name (Windows) or `FiraCode-Light` (macOS).\n\nLigatures are enabled by default in Atom 1.9 and above.\n\n\nVS Code\n-------\n\nTo open the settings editor, first from the File menu choose Preferences, Settings or use keyboard shortcut `Ctrl + ,` (Windows) or `Cmd + ,` (macOS).\n\nTo enable FiraCode in the settings editor, under \"Commonly Used\", expand the \"Text Editor\" settings and then click on \"Font\". In the \"Font Family\" input box type `Fira Code`, replacing any content. Tick the check box \"Enables/Disables font ligatures\" under \"Font Ligatures\" to enable the special ligatures.\n\nIf you wish to specify a font weight, for example, Light, use `Fira Code Light` as a font name (Windows) or `FiraCode-Light` (macOS).\n\n\nIntelliJ products\n-----------------\n\n1. Enable in Settings → Editor → Font → Enable Font Ligatures\n2. Select `Fira Code` as \"Primary font\" under Settings → Editor → Font\n\nAdditionally, if a Color Scheme is selected:\n\n3. Enable in Settings → Editor → Color Scheme → Color Scheme Font → Enable Font Ligatures\n4. Select Fira Code as \"Primary font\" under Settings → Editor → Color Scheme → Color Scheme Font\n\n\nBBEdit, TextWrangler\n--------------------\n\nRun in your terminal:\n\n    defaults write com.barebones.bbedit \"EnableFontLigatures_Fira Code\" -bool YES\n\nSource: https://www.barebones.com/support/bbedit/ExpertPreferences.html\n\n\nBrackets\n--------\n\n1. From the `View` menu choose `Themes....`\n2. Paste `'Fira Code'`, at the beginning of `Font Family`\n\n\nEmacs\n-----\n\nThere are a few options when it comes down to using ligatures in\nEmacs. They are listed in order of preferred to less-preferred. Pick one!\n\n1. Using composition mode in Emacs Mac port\n\nIf you're using the latest Mac port of Emacs (https://bitbucket.org/mituharu/emacs-mac by Mitsuharu Yamamoto) for macOS, you can use:\n\n    (mac-auto-operator-composition-mode)\n\nThis is generally the easiest solution, but can only be used on macOS.\n\n2. Using prettify-symbols\n\nThese instructions are pieced together by https://github.com/Triavanicus, taking some pieces from https://github.com/minad/hasklig-mode.\n\nThis method requires you to install the Fira Code Symbol font, made by https://github.com/siegebell:\nhttps://github.com/tonsky/FiraCode/issues/211#issuecomment-239058632\n\n    (defun fira-code-mode--make-alist (list)\n      \"Generate prettify-symbols alist from LIST.\"\n      (let ((idx -1))\n        (mapcar\n         (lambda (s)\n           (setq idx (1+ idx))\n           (let* ((code (+ #Xe100 idx))\n              (width (string-width s))\n              (prefix ())\n              (suffix '(?\\s (Br . Br)))\n              (n 1))\n         (while (< n width)\n           (setq prefix (append prefix '(?\\s (Br . Bl))))\n           (setq n (1+ n)))\n         (cons s (append prefix suffix (list (decode-char 'ucs code))))))\n         list)))\n\n    (defconst fira-code-mode--ligatures\n      '(\"www\" \"**\" \"***\" \"**/\" \"*>\" \"*/\" \"\\\\\\\\\" \"\\\\\\\\\\\\\"\n        \"{-\" \"[]\" \"::\" \":::\" \":=\" \"!!\" \"!=\" \"!==\" \"-}\"\n        \"--\" \"---\" \"-->\" \"->\" \"->>\" \"-<\" \"-<<\" \"-~\"\n        \"#{\" \"#[\" \"##\" \"###\" \"####\" \"#(\" \"#?\" \"#_\" \"#_(\"\n        \".-\" \".=\" \"..\" \"..<\" \"...\" \"?=\" \"??\" \";;\" \"/*\"\n        \"/**\" \"/=\" \"/==\" \"/>\" \"//\" \"///\" \"&&\" \"||\" \"||=\"\n        \"|=\" \"|>\" \"^=\" \"$>\" \"++\" \"+++\" \"+>\" \"=:=\" \"==\"\n        \"===\" \"==>\" \"=>\" \"=>>\" \"<=\" \"=<<\" \"=/=\" \">-\" \">=\"\n        \">=>\" \">>\" \">>-\" \">>=\" \">>>\" \"<*\" \"<*>\" \"<|\" \"<|>\"\n        \"<$\" \"<$>\" \"<!--\" \"<-\" \"<--\" \"<->\" \"<+\" \"<+>\" \"<=\"\n        \"<==\" \"<=>\" \"<=<\" \"<>\" \"<<\" \"<<-\" \"<<=\" \"<<<\" \"<~\"\n        \"<~~\" \"</\" \"</>\" \"~@\" \"~-\" \"~=\" \"~>\" \"~~\" \"~~>\" \"%%\"\n        \"x\" \":\" \"+\" \"+\" \"*\"))\n\n    (defvar fira-code-mode--old-prettify-alist)\n\n    (defun fira-code-mode--enable ()\n      \"Enable Fira Code ligatures in current buffer.\"\n      (setq-local fira-code-mode--old-prettify-alist prettify-symbols-alist)\n      (setq-local prettify-symbols-alist (append (fira-code-mode--make-alist fira-code-mode--ligatures) fira-code-mode--old-prettify-alist))\n      (prettify-symbols-mode t))\n\n    (defun fira-code-mode--disable ()\n      \"Disable Fira Code ligatures in current buffer.\"\n      (setq-local prettify-symbols-alist fira-code-mode--old-prettify-alist)\n      (prettify-symbols-mode -1))\n\n    (define-minor-mode fira-code-mode\n      \"Fira Code ligatures minor mode\"\n      :lighter \" Fira Code\"\n      (setq-local prettify-symbols-unprettify-at-point 'right-edge)\n      (if fira-code-mode\n          (fira-code-mode--enable)\n        (fira-code-mode--disable)))\n\n    (defun fira-code-mode--setup ()\n      \"Setup Fira Code Symbols\"\n      (set-fontset-font t '(#Xe100 . #Xe16f) \"Fira Code Symbol\"))\n\n    (provide 'fira-code-mode)\n\nAlternative instructions: https://github.com/Profpatsch/blog/blob/master/posts/ligature-emulation-in-emacs/post.md#appendix-b-update-1-firacode-integration\n\n3. Using composition char table\n\nThanks to https://github.com/seanfarley for putting this together; extended by https://github.com/jrblevin.\n\nPut this lisp in your .emacs:\n\n    (when (window-system)\n      (set-frame-font \"Fira Code\"))\n    (let ((alist '((33 . \".\\\\(?:\\\\(?:==\\\\|!!\\\\)\\\\|[!=]\\\\)\")\n                   (35 . \".\\\\(?:###\\\\|##\\\\|_(\\\\|[#(?[_{]\\\\)\")\n                   (36 . \".\\\\(?:>\\\\)\")\n                   (37 . \".\\\\(?:\\\\(?:%%\\\\)\\\\|%\\\\)\")\n                   (38 . \".\\\\(?:\\\\(?:&&\\\\)\\\\|&\\\\)\")\n                   (42 . \".\\\\(?:\\\\(?:\\\\*\\\\*/\\\\)\\\\|\\\\(?:\\\\*[*/]\\\\)\\\\|[*/>]\\\\)\")\n                   (43 . \".\\\\(?:\\\\(?:\\\\+\\\\+\\\\)\\\\|[+>]\\\\)\")\n                   (45 . \".\\\\(?:\\\\(?:-[>-]\\\\|<<\\\\|>>\\\\)\\\\|[<>}~-]\\\\)\")\n                   (46 . \".\\\\(?:\\\\(?:\\\\.[.<]\\\\)\\\\|[.=-]\\\\)\")\n                   (47 . \".\\\\(?:\\\\(?:\\\\*\\\\*\\\\|//\\\\|==\\\\)\\\\|[*/=>]\\\\)\")\n                   (48 . \".\\\\(?:x[a-zA-Z]\\\\)\")\n                   (58 . \".\\\\(?:::\\\\|[:=]\\\\)\")\n                   (59 . \".\\\\(?:;;\\\\|;\\\\)\")\n                   (60 . \".\\\\(?:\\\\(?:!--\\\\)\\\\|\\\\(?:~~\\\\|->\\\\|\\\\$>\\\\|\\\\*>\\\\|\\\\+>\\\\|--\\\\|<[<=-]\\\\|=[<=>]\\\\||>\\\\)\\\\|[*$+~/<=>|-]\\\\)\")\n                   (61 . \".\\\\(?:\\\\(?:/=\\\\|:=\\\\|<<\\\\|=[=>]\\\\|>>\\\\)\\\\|[<=>~]\\\\)\")\n                   (62 . \".\\\\(?:\\\\(?:=>\\\\|>[=>-]\\\\)\\\\|[=>-]\\\\)\")\n                   (63 . \".\\\\(?:\\\\(\\\\?\\\\?\\\\)\\\\|[:=?]\\\\)\")\n                   (91 . \".\\\\(?:]\\\\)\")\n                   (92 . \".\\\\(?:\\\\(?:\\\\\\\\\\\\\\\\\\\\)\\\\|\\\\\\\\\\\\)\")\n                   (94 . \".\\\\(?:=\\\\)\")\n                   (119 . \".\\\\(?:ww\\\\)\")\n                   (123 . \".\\\\(?:-\\\\)\")\n                   (124 . \".\\\\(?:\\\\(?:|[=|]\\\\)\\\\|[=>|]\\\\)\")\n                   (126 . \".\\\\(?:~>\\\\|~~\\\\|[>=@~-]\\\\)\")\n                   )\n                 ))\n      (dolist (char-regexp alist)\n        (set-char-table-range composition-function-table (car char-regexp)\n                              `([,(cdr char-regexp) 0 font-shape-gstring]))))\n\n**Note!** If you get `error in process filter: Attempt to shape unibyte text`, check out https://github.com/tonsky/FiraCode/issues/42. Emacs Cider users may avoid this issue by commenting the following line from the above config:\n\n    ;; (46 . \".\\\\(?:\\\\(?:\\\\.[.<]\\\\)\\\\|[.=-]\\\\)\")\n\nChar `45` is also known to have issues in macOS Mojave.\n\nIf you are having problems with helm you can disable ligatures in helm:\n\n    (add-hook 'helm-major-mode-hook\n           (lambda ()\n             (setq auto-composition-mode nil)))\n\n4. Using font-lock keywords\n\nIf none of the above worked, you can try this method.\n\nThis method requires you to install the Fira Code Symbol font, made by https://github.com/siegebell:\nhttps://github.com/tonsky/FiraCode/issues/211#issuecomment-239058632\n\n    ;;; Fira code\n    ;; This works when using emacs --daemon + emacsclient\n    (add-hook 'after-make-frame-functions (lambda (frame) (set-fontset-font t '(#Xe100 . #Xe16f) \"Fira Code Symbol\")))\n    ;; This works when using emacs without server/client\n    (set-fontset-font t '(#Xe100 . #Xe16f) \"Fira Code Symbol\")\n    ;; I haven't found one statement that makes both of the above situations work, so I use both for now\n\n    (defconst fira-code-font-lock-keywords-alist\n      (mapcar (lambda (regex-char-pair)\n                `(,(car regex-char-pair)\n                  (0 (prog1 ()\n                       (compose-region (match-beginning 1)\n                                       (match-end 1)\n                                       ;; The first argument to concat is a string containing a literal tab\n                                       ,(concat \"   \" (list (decode-char 'ucs (cadr regex-char-pair)))))))))\n              '((\"\\\\(www\\\\)\"                   #Xe100)\n                (\"[^/]\\\\(\\\\*\\\\*\\\\)[^/]\"        #Xe101)\n                (\"\\\\(\\\\*\\\\*\\\\*\\\\)\"             #Xe102)\n                (\"\\\\(\\\\*\\\\*/\\\\)\"               #Xe103)\n                (\"\\\\(\\\\*>\\\\)\"                  #Xe104)\n                (\"[^*]\\\\(\\\\*/\\\\)\"              #Xe105)\n                (\"\\\\(\\\\\\\\\\\\\\\\\\\\)\"              #Xe106)\n                (\"\\\\(\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\"          #Xe107)\n                (\"\\\\({-\\\\)\"                    #Xe108)\n                (\"\\\\(\\\\[\\\\]\\\\)\"                #Xe109)\n                (\"\\\\(::\\\\)\"                    #Xe10a)\n                (\"\\\\(:::\\\\)\"                   #Xe10b)\n                (\"[^=]\\\\(:=\\\\)\"                #Xe10c)\n                (\"\\\\(!!\\\\)\"                    #Xe10d)\n                (\"\\\\(!=\\\\)\"                    #Xe10e)\n                (\"\\\\(!==\\\\)\"                   #Xe10f)\n                (\"\\\\(-}\\\\)\"                    #Xe110)\n                (\"\\\\(--\\\\)\"                    #Xe111)\n                (\"\\\\(---\\\\)\"                   #Xe112)\n                (\"\\\\(-->\\\\)\"                   #Xe113)\n                (\"[^-]\\\\(->\\\\)\"                #Xe114)\n                (\"\\\\(->>\\\\)\"                   #Xe115)\n                (\"\\\\(-<\\\\)\"                    #Xe116)\n                (\"\\\\(-<<\\\\)\"                   #Xe117)\n                (\"\\\\(-~\\\\)\"                    #Xe118)\n                (\"\\\\(#{\\\\)\"                    #Xe119)\n                (\"\\\\(#\\\\[\\\\)\"                  #Xe11a)\n                (\"\\\\(##\\\\)\"                    #Xe11b)\n                (\"\\\\(###\\\\)\"                   #Xe11c)\n                (\"\\\\(####\\\\)\"                  #Xe11d)\n                (\"\\\\(#(\\\\)\"                    #Xe11e)\n                (\"\\\\(#\\\\?\\\\)\"                  #Xe11f)\n                (\"\\\\(#_\\\\)\"                    #Xe120)\n                (\"\\\\(#_(\\\\)\"                   #Xe121)\n                (\"\\\\(\\\\.-\\\\)\"                  #Xe122)\n                (\"\\\\(\\\\.=\\\\)\"                  #Xe123)\n                (\"\\\\(\\\\.\\\\.\\\\)\"                #Xe124)\n                (\"\\\\(\\\\.\\\\.<\\\\)\"               #Xe125)\n                (\"\\\\(\\\\.\\\\.\\\\.\\\\)\"             #Xe126)\n                (\"\\\\(\\\\?=\\\\)\"                  #Xe127)\n                (\"\\\\(\\\\?\\\\?\\\\)\"                #Xe128)\n                (\"\\\\(;;\\\\)\"                    #Xe129)\n                (\"\\\\(/\\\\*\\\\)\"                  #Xe12a)\n                (\"\\\\(/\\\\*\\\\*\\\\)\"               #Xe12b)\n                (\"\\\\(/=\\\\)\"                    #Xe12c)\n                (\"\\\\(/==\\\\)\"                   #Xe12d)\n                (\"\\\\(/>\\\\)\"                    #Xe12e)\n                (\"\\\\(//\\\\)\"                    #Xe12f)\n                (\"\\\\(///\\\\)\"                   #Xe130)\n                (\"\\\\(&&\\\\)\"                    #Xe131)\n                (\"\\\\(||\\\\)\"                    #Xe132)\n                (\"\\\\(||=\\\\)\"                   #Xe133)\n                (\"[^|]\\\\(|=\\\\)\"                #Xe134)\n                (\"\\\\(|>\\\\)\"                    #Xe135)\n                (\"\\\\(\\\\^=\\\\)\"                  #Xe136)\n                (\"\\\\(\\\\$>\\\\)\"                  #Xe137)\n                (\"\\\\(\\\\+\\\\+\\\\)\"                #Xe138)\n                (\"\\\\(\\\\+\\\\+\\\\+\\\\)\"             #Xe139)\n                (\"\\\\(\\\\+>\\\\)\"                  #Xe13a)\n                (\"\\\\(=:=\\\\)\"                   #Xe13b)\n                (\"[^!/]\\\\(==\\\\)[^>]\"           #Xe13c)\n                (\"\\\\(===\\\\)\"                   #Xe13d)\n                (\"\\\\(==>\\\\)\"                   #Xe13e)\n                (\"[^=]\\\\(=>\\\\)\"                #Xe13f)\n                (\"\\\\(=>>\\\\)\"                   #Xe140)\n                (\"\\\\(<=\\\\)\"                    #Xe141)\n                (\"\\\\(=<<\\\\)\"                   #Xe142)\n                (\"\\\\(=/=\\\\)\"                   #Xe143)\n                (\"\\\\(>-\\\\)\"                    #Xe144)\n                (\"\\\\(>=\\\\)\"                    #Xe145)\n                (\"\\\\(>=>\\\\)\"                   #Xe146)\n                (\"[^-=]\\\\(>>\\\\)\"               #Xe147)\n                (\"\\\\(>>-\\\\)\"                   #Xe148)\n                (\"\\\\(>>=\\\\)\"                   #Xe149)\n                (\"\\\\(>>>\\\\)\"                   #Xe14a)\n                (\"\\\\(<\\\\*\\\\)\"                  #Xe14b)\n                (\"\\\\(<\\\\*>\\\\)\"                 #Xe14c)\n                (\"\\\\(<|\\\\)\"                    #Xe14d)\n                (\"\\\\(<|>\\\\)\"                   #Xe14e)\n                (\"\\\\(<\\\\$\\\\)\"                  #Xe14f)\n                (\"\\\\(<\\\\$>\\\\)\"                 #Xe150)\n                (\"\\\\(<!--\\\\)\"                  #Xe151)\n                (\"\\\\(<-\\\\)\"                    #Xe152)\n                (\"\\\\(<--\\\\)\"                   #Xe153)\n                (\"\\\\(<->\\\\)\"                   #Xe154)\n                (\"\\\\(<\\\\+\\\\)\"                  #Xe155)\n                (\"\\\\(<\\\\+>\\\\)\"                 #Xe156)\n                (\"\\\\(<=\\\\)\"                    #Xe157)\n                (\"\\\\(<==\\\\)\"                   #Xe158)\n                (\"\\\\(<=>\\\\)\"                   #Xe159)\n                (\"\\\\(<=<\\\\)\"                   #Xe15a)\n                (\"\\\\(<>\\\\)\"                    #Xe15b)\n                (\"[^-=]\\\\(<<\\\\)\"               #Xe15c)\n                (\"\\\\(<<-\\\\)\"                   #Xe15d)\n                (\"\\\\(<<=\\\\)\"                   #Xe15e)\n                (\"\\\\(<<<\\\\)\"                   #Xe15f)\n                (\"\\\\(<~\\\\)\"                    #Xe160)\n                (\"\\\\(<~~\\\\)\"                   #Xe161)\n                (\"\\\\(</\\\\)\"                    #Xe162)\n                (\"\\\\(</>\\\\)\"                   #Xe163)\n                (\"\\\\(~@\\\\)\"                    #Xe164)\n                (\"\\\\(~-\\\\)\"                    #Xe165)\n                (\"\\\\(~=\\\\)\"                    #Xe166)\n                (\"\\\\(~>\\\\)\"                    #Xe167)\n                (\"[^<]\\\\(~~\\\\)\"                #Xe168)\n                (\"\\\\(~~>\\\\)\"                   #Xe169)\n                (\"\\\\(%%\\\\)\"                    #Xe16a)\n                (\"[0\\[]\\\\(x\\\\)\"                #Xe16b)\n                (\"[^:=]\\\\(:\\\\)[^:=]\"           #Xe16c)\n                (\"[^\\\\+<>]\\\\(\\\\+\\\\)[^\\\\+<>]\"   #Xe16d)\n                (\"[^\\\\*/<>]\\\\(\\\\*\\\\)[^\\\\*/<>]\" #Xe16f))))\n\n    (defun add-fira-code-symbol-keywords ()\n      (font-lock-add-keywords nil fira-code-font-lock-keywords-alist))\n\n    (add-hook 'prog-mode-hook\n              #'add-fira-code-symbol-keywords)\n\nOn some systems, `==` will appear incorrectly as a blank space in certain modes unless you add the following lines to your init file:\n\n    (set-language-environment \"UTF-8\")\n    (set-default-coding-systems 'utf-8)\n\n\nGoormIDE\n--------\n\nIn a workspace:\n\n1. Click goormIDE, then Preferences.\n2. Go to Theme, then focus Custom Theme CSS.\n3. Copy & paste the following:\n\n    @font-face{\n        font-family: 'Fira Code';\n        src: url('https://raw.githubusercontent.com/tonsky/FiraCode/master/distr/eot/FiraCode-Regular.eot') format('embedded-opentype'),\n             url('https://raw.githubusercontent.com/tonsky/FiraCode/master/distr/woff2/FiraCode-Regular.woff2') format('woff2'),\n             url('https://raw.githubusercontent.com/tonsky/FiraCode/master/distr/woff/FiraCode-Regular.woff') format('woff'),\n             url('https://raw.githubusercontent.com/tonsky/FiraCode/master/distr/ttf/FiraCode-Regular.ttf') format('truetype');\n        font-weight: normal;\n        font-style: normal;\n    }\n\n    .editor_container pre {\n        -webkit-font-feature-settings: \"liga\" on, \"calt\" on;\n        -webkit-font-smoothing: antialiased;\n        text-rendering: optimizeLegibility;\n        font-family: 'Fira Code';\n    }\n\n4. Click Aplly or OK\n5. Happy coding!\n\n\nCloud9\n------\n\nIn a workspace:\n\n1. Click Cloud9, then Preferences (or use keyboard shortcut CTRL + ,)\n2. Go to Themes, then click on You can also style Cloud9 by editing your stylesheet (this will open a blank styles.css file in the C9 editor)\n3. Copy & paste the following:\n\n    @font-face{\n        font-family: 'Fira Code';\n        src: url('https://raw.githubusercontent.com/tonsky/FiraCode/master/distr/eot/FiraCode-Regular.eot') format('embedded-opentype'),\n             url('https://raw.githubusercontent.com/tonsky/FiraCode/master/distr/woff2/FiraCode-Regular.woff2') format('woff2'),\n             url('https://raw.githubusercontent.com/tonsky/FiraCode/master/distr/woff/FiraCode-Regular.woff') format('woff'),\n             url('https://raw.githubusercontent.com/tonsky/FiraCode/master/distr/ttf/FiraCode-Regular.ttf') format('truetype');\n        font-weight: normal;\n        font-style: normal;\n    }\n\n    .ace_editor{\n        -webkit-font-feature-settings: \"liga\" on, \"calt\" on;\n        -webkit-font-smoothing: antialiased;\n        text-rendering: optimizeLegibility;\n        font-family: 'Fira Code';\n    }\n\n4. Back in Preferences tab, click on User Settings, then click on Code Editor (Ace)\n5. In Font Family field, enter Fira Code\n6. Optionally, repeat step 5 for Preferences > User Settings > Terminal, if you want Fira Code font in C9 terminal.\n\n\nMacVim\n------\n\nAdd this to ~/.gvimrc:\n\n    set macligatures\n    set guifont=Fira\\ Code:h12\n\nMacVim supports ligatures starting from version 7.4.\n\n\nRStudio\n-------\n\nIn RStudio:\n\n1. Go to Tools > Global Options > Appearance\n2. Select \"Fira Code\" as Editor Font. In older versions of RStudio, check \"Use Ligatures\".\n3. Hit \"OK\" and enjoy\n\n\nSublime Text\n------------\n\nPreferences --> Settings\n\nAdd before \"ignored_packages\":\n\n    \"font_face\": \"Fira Code\",\n    \"font_options\": [\"subpixel_antialias\"],\n\nIf you want enable antialias, add in font_options: \"gray_antialias\"\n\n\nVisual Studio\n-------------\n\n1. Launch Visual Studio (2015 or later).\n2. Launch the Options dialog by opening the \"Tools\" menu and selecting \"Options\". \n3. In the Options dialog, under the \"Environment\" category, you'll find \"Fonts and Colors\". Click on that. You'll see a combo-box on the right hand side of the dialog labelled \"Font\". Select \"Fira Code\" from that combo-box. \n4. Click \"OK\" to dismiss.\n5. Restart Visual Studio.\n\nNow, most FiraCode ligatures will work. A notable exception is the hyphen-based ligatures (e.g. the C++ dereference '->'). See https://github.com/tonsky/FiraCode/issues/422 for details.\n\n\nTroubleshooting\n===============\n\nSee https://github.com/tonsky/FiraCode/wiki/Troubleshooting\n"
  },
  {
    "path": "packages/web/src/assets/fonts/FiraCode/stylesheet.css",
    "content": "@font-face {\n  font-family: \"Fira Code VF\";\n  src:\n    url(\"FiraCode-VF.woff2\") format(\"woff2-variations\"),\n    url(\"woff/FiraCode-VF.woff\") format(\"woff-variations\");\n  /* font-weight requires a range: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide#Using_a_variable_font_font-face_changes */\n  font-weight: 300 700;\n  font-style: normal;\n  size-adjust: 87%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/IBM Plex Mono/stylesheet.css",
    "content": "@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-Thin.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-Thin.woff\") format(\"woff\");\n  font-weight: 100;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-Regular.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-Regular.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-Bold.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-Bold.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-LightItalic.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-LightItalic.woff\") format(\"woff\");\n  font-weight: 300;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-ExtraLightItalic.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-ExtraLightItalic.woff\") format(\"woff\");\n  font-weight: 200;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-SemiBold.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-SemiBold.woff\") format(\"woff\");\n  font-weight: 600;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-Italic.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-Italic.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-ThinItalic.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-ThinItalic.woff\") format(\"woff\");\n  font-weight: 100;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-SemiBoldItalic.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-SemiBoldItalic.woff\") format(\"woff\");\n  font-weight: 600;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-Light.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-Light.woff\") format(\"woff\");\n  font-weight: 300;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-MediumItalic.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-MediumItalic.woff\") format(\"woff\");\n  font-weight: 500;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-Medium.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-Medium.woff\") format(\"woff\");\n  font-weight: 500;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-BoldItalic.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-BoldItalic.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 90%;\n}\n\n@font-face {\n  font-family: \"IBM Plex Mono\";\n  src:\n    url(\"IBMPlexMono-ExtraLight.woff2\") format(\"woff2\"),\n    url(\"IBMPlexMono-ExtraLight.woff\") format(\"woff\");\n  font-weight: 200;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 90%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/JGS/stylesheet.css",
    "content": "@font-face {\n  font-family: \"jgs7\";\n  src:\n    url(\"jgs7.woff2\") format(\"woff2\"),\n    url(\"jgs7.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 105%;\n}\n\n@font-face {\n  font-family: \"jgs\";\n  src:\n    url(\"jgs.woff2\") format(\"woff2\"),\n    url(\"jgs.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 105%;\n}\n\n@font-face {\n  font-family: \"jgs_Font\";\n  src:\n    url(\"jgs_Font.woff2\") format(\"woff2\"),\n    url(\"jgs_Font.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 105%;\n}\n\n@font-face {\n  font-family: \"jgs5\";\n  src:\n    url(\"jgs5.woff2\") format(\"woff2\"),\n    url(\"jgs5.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 105%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/JetBrains/stylesheet.css",
    "content": "@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-SemiBoldItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-SemiBoldItalic.woff\") format(\"woff\");\n  font-weight: 600;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-ExtraBoldItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-ExtraBoldItalic.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-MediumItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-MediumItalic.woff\") format(\"woff\");\n  font-weight: 500;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-LightItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-LightItalic.woff\") format(\"woff\");\n  font-weight: 300;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-LightItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-LightItalic.woff\") format(\"woff\");\n  font-weight: 300;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-ExtraBold.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-ExtraBold.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-ThinItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-ThinItalic.woff\") format(\"woff\");\n  font-weight: 100;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-ExtraBold.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-ExtraBold.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-ExtraLight.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-ExtraLight.woff\") format(\"woff\");\n  font-weight: 200;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-MediumItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-MediumItalic.woff\") format(\"woff\");\n  font-weight: 500;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-Regular.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-Regular.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-ExtraBoldItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-ExtraBoldItalic.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-Italic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-Italic.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-ExtraLightItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-ExtraLightItalic.woff\") format(\"woff\");\n  font-weight: 200;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-Medium.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-Medium.woff\") format(\"woff\");\n  font-weight: 500;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-Italic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-Italic.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-BoldItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-BoldItalic.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-ExtraLight.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-ExtraLight.woff\") format(\"woff\");\n  font-weight: 200;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-SemiBoldItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-SemiBoldItalic.woff\") format(\"woff\");\n  font-weight: 600;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-Thin.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-Thin.woff\") format(\"woff\");\n  font-weight: 100;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-SemiBold.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-SemiBold.woff\") format(\"woff\");\n  font-weight: 600;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-SemiBold.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-SemiBold.woff\") format(\"woff\");\n  font-weight: 600;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-Thin.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-Thin.woff\") format(\"woff\");\n  font-weight: 100;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-Regular.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-Regular.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-ExtraLightItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-ExtraLightItalic.woff\") format(\"woff\");\n  font-weight: 200;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-BoldItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-BoldItalic.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-ThinItalic.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-ThinItalic.woff\") format(\"woff\");\n  font-weight: 100;\n  font-style: italic;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-Light.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-Light.woff\") format(\"woff\");\n  font-weight: 300;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono NL\";\n  src:\n    url(\"JetBrainsMonoNL-Bold.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMonoNL-Bold.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n\n@font-face {\n  font-family: \"JetBrains Mono\";\n  src:\n    url(\"JetBrainsMono-Bold.woff2\") format(\"woff2\"),\n    url(\"JetBrainsMono-Bold.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 85%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/Monocraft/stylesheet.css",
    "content": "@font-face {\n  font-family: \"Monocraft Nerd Font\";\n  src:\n    url(\"MonocraftNerdFontComplete-.woff2\") format(\"woff2\"),\n    url(\"MonocraftNerdFontComplete-.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 80%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/OpenDyslexic/stylesheet.css",
    "content": "@font-face {\n  font-family: \"OpenDyslexic\";\n  font-style: normal;\n  font-weight: 400;\n  src:\n    local(\"OpenDyslexic\"),\n    url(\"OpenDyslexic-Regular.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexic\";\n  font-style: italic;\n  font-weight: 400;\n  src:\n    local(\"OpenDyslexic\"),\n    url(\"OpenDyslexic-Italic.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexic\";\n  font-style: normal;\n  font-weight: 700;\n  src:\n    local(\"OpenDyslexic\"),\n    url(\"OpenDyslexic-Bold.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexic\";\n  font-style: italic;\n  font-weight: 700;\n  src:\n    local(\"OpenDyslexic\"),\n    url(\"OpenDyslexic-BoldItalic.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexic3\";\n  font-style: normal;\n  font-weight: 400;\n  src:\n    local(\"OpenDyslexic3\"),\n    url(\"OpenDyslexic3-Regular.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexicAlta\";\n  font-style: normal;\n  font-weight: 400;\n  src:\n    local(\"OpenDyslexicAlta\"),\n    url(\"OpenDyslexicAlta-Regular.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexicMono\";\n  font-style: normal;\n  font-weight: 400;\n  src:\n    local(\"OpenDyslexicMono\"),\n    url(\"OpenDyslexicMono-Regular.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexicAlta\";\n  font-style: italic;\n  font-weight: 400;\n  src:\n    local(\"OpenDyslexicAlta\"),\n    url(\"OpenDyslexicAlta-Italic.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexic3\";\n  font-style: normal;\n  font-weight: 700;\n  src:\n    local(\"OpenDyslexic3\"),\n    url(\"OpenDyslexic3-Bold.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexicAlta\";\n  font-style: normal;\n  font-weight: 700;\n  src:\n    local(\"OpenDyslexicAlta\"),\n    url(\"OpenDyslexicAlta-Bold.woff\") format(\"woff\");\n}\n@font-face {\n  font-family: \"OpenDyslexicAlta\";\n  font-style: italic;\n  font-weight: 700;\n  src:\n    local(\"OpenDyslexicAlta\"),\n    url(\"OpenDyslexicAlta-BoldItalic.woff\") format(\"woff\");\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/RobotoMono/LICENSE.txt",
    "content": "\r\n                                 Apache License\r\n                           Version 2.0, January 2004\r\n                        http://www.apache.org/licenses/\r\n\r\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r\n\r\n   1. Definitions.\r\n\r\n      \"License\" shall mean the terms and conditions for use, reproduction,\r\n      and distribution as defined by Sections 1 through 9 of this document.\r\n\r\n      \"Licensor\" shall mean the copyright owner or entity authorized by\r\n      the copyright owner that is granting the License.\r\n\r\n      \"Legal Entity\" shall mean the union of the acting entity and all\r\n      other entities that control, are controlled by, or are under common\r\n      control with that entity. For the purposes of this definition,\r\n      \"control\" means (i) the power, direct or indirect, to cause the\r\n      direction or management of such entity, whether by contract or\r\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\r\n      outstanding shares, or (iii) beneficial ownership of such entity.\r\n\r\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\r\n      exercising permissions granted by this License.\r\n\r\n      \"Source\" form shall mean the preferred form for making modifications,\r\n      including but not limited to software source code, documentation\r\n      source, and configuration files.\r\n\r\n      \"Object\" form shall mean any form resulting from mechanical\r\n      transformation or translation of a Source form, including but\r\n      not limited to compiled object code, generated documentation,\r\n      and conversions to other media types.\r\n\r\n      \"Work\" shall mean the work of authorship, whether in Source or\r\n      Object form, made available under the License, as indicated by a\r\n      copyright notice that is included in or attached to the work\r\n      (an example is provided in the Appendix below).\r\n\r\n      \"Derivative Works\" shall mean any work, whether in Source or Object\r\n      form, that is based on (or derived from) the Work and for which the\r\n      editorial revisions, annotations, elaborations, or other modifications\r\n      represent, as a whole, an original work of authorship. For the purposes\r\n      of this License, Derivative Works shall not include works that remain\r\n      separable from, or merely link (or bind by name) to the interfaces of,\r\n      the Work and Derivative Works thereof.\r\n\r\n      \"Contribution\" shall mean any work of authorship, including\r\n      the original version of the Work and any modifications or additions\r\n      to that Work or Derivative Works thereof, that is intentionally\r\n      submitted to Licensor for inclusion in the Work by the copyright owner\r\n      or by an individual or Legal Entity authorized to submit on behalf of\r\n      the copyright owner. For the purposes of this definition, \"submitted\"\r\n      means any form of electronic, verbal, or written communication sent\r\n      to the Licensor or its representatives, including but not limited to\r\n      communication on electronic mailing lists, source code control systems,\r\n      and issue tracking systems that are managed by, or on behalf of, the\r\n      Licensor for the purpose of discussing and improving the Work, but\r\n      excluding communication that is conspicuously marked or otherwise\r\n      designated in writing by the copyright owner as \"Not a Contribution.\"\r\n\r\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\r\n      on behalf of whom a Contribution has been received by Licensor and\r\n      subsequently incorporated within the Work.\r\n\r\n   2. Grant of Copyright License. Subject to the terms and conditions of\r\n      this License, each Contributor hereby grants to You a perpetual,\r\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n      copyright license to reproduce, prepare Derivative Works of,\r\n      publicly display, publicly perform, sublicense, and distribute the\r\n      Work and such Derivative Works in Source or Object form.\r\n\r\n   3. Grant of Patent License. Subject to the terms and conditions of\r\n      this License, each Contributor hereby grants to You a perpetual,\r\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n      (except as stated in this section) patent license to make, have made,\r\n      use, offer to sell, sell, import, and otherwise transfer the Work,\r\n      where such license applies only to those patent claims licensable\r\n      by such Contributor that are necessarily infringed by their\r\n      Contribution(s) alone or by combination of their Contribution(s)\r\n      with the Work to which such Contribution(s) was submitted. If You\r\n      institute patent litigation against any entity (including a\r\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\r\n      or a Contribution incorporated within the Work constitutes direct\r\n      or contributory patent infringement, then any patent licenses\r\n      granted to You under this License for that Work shall terminate\r\n      as of the date such litigation is filed.\r\n\r\n   4. Redistribution. You may reproduce and distribute copies of the\r\n      Work or Derivative Works thereof in any medium, with or without\r\n      modifications, and in Source or Object form, provided that You\r\n      meet the following conditions:\r\n\r\n      (a) You must give any other recipients of the Work or\r\n          Derivative Works a copy of this License; and\r\n\r\n      (b) You must cause any modified files to carry prominent notices\r\n          stating that You changed the files; and\r\n\r\n      (c) You must retain, in the Source form of any Derivative Works\r\n          that You distribute, all copyright, patent, trademark, and\r\n          attribution notices from the Source form of the Work,\r\n          excluding those notices that do not pertain to any part of\r\n          the Derivative Works; and\r\n\r\n      (d) If the Work includes a \"NOTICE\" text file as part of its\r\n          distribution, then any Derivative Works that You distribute must\r\n          include a readable copy of the attribution notices contained\r\n          within such NOTICE file, excluding those notices that do not\r\n          pertain to any part of the Derivative Works, in at least one\r\n          of the following places: within a NOTICE text file distributed\r\n          as part of the Derivative Works; within the Source form or\r\n          documentation, if provided along with the Derivative Works; or,\r\n          within a display generated by the Derivative Works, if and\r\n          wherever such third-party notices normally appear. The contents\r\n          of the NOTICE file are for informational purposes only and\r\n          do not modify the License. You may add Your own attribution\r\n          notices within Derivative Works that You distribute, alongside\r\n          or as an addendum to the NOTICE text from the Work, provided\r\n          that such additional attribution notices cannot be construed\r\n          as modifying the License.\r\n\r\n      You may add Your own copyright statement to Your modifications and\r\n      may provide additional or different license terms and conditions\r\n      for use, reproduction, or distribution of Your modifications, or\r\n      for any such Derivative Works as a whole, provided Your use,\r\n      reproduction, and distribution of the Work otherwise complies with\r\n      the conditions stated in this License.\r\n\r\n   5. Submission of Contributions. Unless You explicitly state otherwise,\r\n      any Contribution intentionally submitted for inclusion in the Work\r\n      by You to the Licensor shall be under the terms and conditions of\r\n      this License, without any additional terms or conditions.\r\n      Notwithstanding the above, nothing herein shall supersede or modify\r\n      the terms of any separate license agreement you may have executed\r\n      with Licensor regarding such Contributions.\r\n\r\n   6. Trademarks. This License does not grant permission to use the trade\r\n      names, trademarks, service marks, or product names of the Licensor,\r\n      except as required for reasonable and customary use in describing the\r\n      origin of the Work and reproducing the content of the NOTICE file.\r\n\r\n   7. Disclaimer of Warranty. Unless required by applicable law or\r\n      agreed to in writing, Licensor provides the Work (and each\r\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\r\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r\n      implied, including, without limitation, any warranties or conditions\r\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r\n      PARTICULAR PURPOSE. You are solely responsible for determining the\r\n      appropriateness of using or redistributing the Work and assume any\r\n      risks associated with Your exercise of permissions under this License.\r\n\r\n   8. Limitation of Liability. In no event and under no legal theory,\r\n      whether in tort (including negligence), contract, or otherwise,\r\n      unless required by applicable law (such as deliberate and grossly\r\n      negligent acts) or agreed to in writing, shall any Contributor be\r\n      liable to You for damages, including any direct, indirect, special,\r\n      incidental, or consequential damages of any character arising as a\r\n      result of this License or out of the use or inability to use the\r\n      Work (including but not limited to damages for loss of goodwill,\r\n      work stoppage, computer failure or malfunction, or any and all\r\n      other commercial damages or losses), even if such Contributor\r\n      has been advised of the possibility of such damages.\r\n\r\n   9. Accepting Warranty or Additional Liability. While redistributing\r\n      the Work or Derivative Works thereof, You may choose to offer,\r\n      and charge a fee for, acceptance of support, warranty, indemnity,\r\n      or other liability obligations and/or rights consistent with this\r\n      License. However, in accepting such obligations, You may act only\r\n      on Your own behalf and on Your sole responsibility, not on behalf\r\n      of any other Contributor, and only if You agree to indemnify,\r\n      defend, and hold each Contributor harmless for any liability\r\n      incurred by, or claims asserted against, such Contributor by reason\r\n      of your accepting any such warranty or additional liability.\r\n\r\n   END OF TERMS AND CONDITIONS\r\n\r\n   APPENDIX: How to apply the Apache License to your work.\r\n\r\n      To apply the Apache License to your work, attach the following\r\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\r\n      replaced with your own identifying information. (Don't include\r\n      the brackets!)  The text should be enclosed in the appropriate\r\n      comment syntax for the file format. We also recommend that a\r\n      file or class name and description of purpose be included on the\r\n      same \"printed page\" as the copyright notice for easier\r\n      identification within third-party archives.\r\n\r\n   Copyright [yyyy] [name of copyright owner]\r\n\r\n   Licensed under the Apache License, Version 2.0 (the \"License\");\r\n   you may not use this file except in compliance with the License.\r\n   You may obtain a copy of the License at\r\n\r\n       http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n   Unless required by applicable law or agreed to in writing, software\r\n   distributed under the License is distributed on an \"AS IS\" BASIS,\r\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n   See the License for the specific language governing permissions and\r\n   limitations under the License.\r\n"
  },
  {
    "path": "packages/web/src/assets/fonts/RobotoMono/stylesheet.css",
    "content": "@font-face {\n  font-family: \"Roboto Mono\";\n  src:\n    url(\"RobotoMono-Regular.woff2\") format(\"woff2\"),\n    url(\"RobotoMono-Regular.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 90%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/StepsMono/COPYRIGHT.md",
    "content": "Copyright (c) 2013-2014, Raphaël Bastide <bonjour@raphaelbastide.com>\nCopyright (c) 2013-2014, Jean-Baptiste Morizot <jbmorizot@gmail.com>\n"
  },
  {
    "path": "packages/web/src/assets/fonts/StepsMono/LICENSE.txt",
    "content": "Copyright (c) 2014, Jean-Baptiste Morizot, (http://cargocollective.com/jbmrz), Raphaël Bastide (http://raphaelbastide.com/)\nwith Reserved Font Name \"Steps Mono\".\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\nSIL Open Font License v1.1\n====================================================\n\n\nPreamble\n----------\n\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\n\nDefinitions\n-------------\n\n`\"Font Software\"` refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n`\"Reserved Font Name\"` refers to any names specified as such after the\ncopyright statement(s).\n\n`\"Original Version\"` refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n`\"Modified Version\"` refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n`\"Author\"` refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\n\nPermission & Conditions\n------------------------\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1. Neither the Font Software nor any of its individual components,\n   in Original or Modified Versions, may be sold by itself.\n\n2. Original or Modified Versions of the Font Software may be bundled,\n   redistributed and/or sold with any software, provided that each copy\n   contains the above copyright notice and this license. These can be\n   included either as stand-alone text files, human-readable headers or\n   in the appropriate machine-readable metadata fields within text or\n   binary files as long as those fields can be easily viewed by the user.\n\n3. No Modified Version of the Font Software may use the Reserved Font\n   Name(s) unless explicit written permission is granted by the corresponding\n   Copyright Holder. This restriction only applies to the primary font name as\n   presented to the users.\n\n4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font\n   Software shall not be used to promote, endorse or advertise any\n   Modified Version, except to acknowledge the contribution(s) of the\n   Copyright Holder(s) and the Author(s) or with their explicit written\n   permission.\n\n5. The Font Software, modified or unmodified, in part or in whole,\n   must be distributed entirely under this license, and must not be\n   distributed under any other license. The requirement for fonts to\n   remain under this license does not apply to any document created\n   using the Font Software.\n\n\nTermination\n-----------\n\nThis license becomes null and void if any of the above conditions are\nnot met.\n\n\n    DISCLAIMER\n    \n    THE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\n    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\n    OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\n    COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n    INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\n    DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n    FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\n    OTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "packages/web/src/assets/fonts/StepsMono/stylesheet.css",
    "content": "@font-face {\n  font-family: \"Steps Mono\";\n  src:\n    url(\"Steps-Mono-Thin.woff2\") format(\"woff2\"),\n    url(\"Steps-Mono-Thin.woff\") format(\"woff\");\n  font-weight: 100;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 100%;\n}\n\n@font-face {\n  font-family: \"Steps-Mono\";\n  src:\n    url(\"Steps-Mono-Mono.woff2\") format(\"woff2\"),\n    url(\"Steps-Mono-Mono.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 95%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/SyneMono/OFL.txt",
    "content": "Copyright 2017 The Syne Project Authors (https://gitlab.com/bonjour-monde/fonderie/syne-typeface)\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttps://openfontlicense.org\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "packages/web/src/assets/fonts/SyneMono/stylesheet.css",
    "content": "@font-face {\n  font-family: \"Syne Mono\";\n  src:\n    url(\"SyneMono-Regular.woff2\") format(\"woff2\"),\n    url(\"SyneMono-Regular.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 95%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/UbuntuMono/UFL.txt",
    "content": "-------------------------------\r\nUBUNTU FONT LICENCE Version 1.0\r\n-------------------------------\r\n\r\nPREAMBLE\r\nThis licence allows the licensed fonts to be used, studied, modified and\r\nredistributed freely. The fonts, including any derivative works, can be\r\nbundled, embedded, and redistributed provided the terms of this licence\r\nare met. The fonts and derivatives, however, cannot be released under\r\nany other licence. The requirement for fonts to remain under this\r\nlicence does not require any document created using the fonts or their\r\nderivatives to be published under this licence, as long as the primary\r\npurpose of the document is not to be a vehicle for the distribution of\r\nthe fonts.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this licence and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Original Version\" refers to the collection of Font Software components\r\nas received under this licence.\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to\r\na new environment.\r\n\r\n\"Copyright Holder(s)\" refers to all individuals and companies who have a\r\ncopyright ownership of the Font Software.\r\n\r\n\"Substantially Changed\" refers to Modified Versions which can be easily\r\nidentified as dissimilar to the Font Software by users of the Font\r\nSoftware comparing the Original Version with the Modified Version.\r\n\r\nTo \"Propagate\" a work means to do anything with it that, without\r\npermission, would make you directly or secondarily liable for\r\ninfringement under applicable copyright law, except executing it on a\r\ncomputer or modifying a private copy. Propagation includes copying,\r\ndistribution (with or without modification and with or without charging\r\na redistribution fee), making available to the public, and in some\r\ncountries other activities as well.\r\n\r\nPERMISSION & CONDITIONS\r\nThis licence does not grant any rights under trademark law and all such\r\nrights are reserved.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a\r\ncopy of the Font Software, to propagate the Font Software, subject to\r\nthe below conditions:\r\n\r\n1) Each copy of the Font Software must contain the above copyright\r\nnotice and this licence. These can be included either as stand-alone\r\ntext files, human-readable headers or in the appropriate machine-\r\nreadable metadata fields within text or binary files as long as those\r\nfields can be easily viewed by the user.\r\n\r\n2) The font name complies with the following:\r\n(a) The Original Version must retain its name, unmodified.\r\n(b) Modified Versions which are Substantially Changed must be renamed to\r\navoid use of the name of the Original Version or similar names entirely.\r\n(c) Modified Versions which are not Substantially Changed must be\r\nrenamed to both (i) retain the name of the Original Version and (ii) add\r\nadditional naming elements to distinguish the Modified Version from the\r\nOriginal Version. The name of such Modified Versions must be the name of\r\nthe Original Version, with \"derivative X\" where X represents the name of\r\nthe new work, appended to that name.\r\n\r\n3) The name(s) of the Copyright Holder(s) and any contributor to the\r\nFont Software shall not be used to promote, endorse or advertise any\r\nModified Version, except (i) as required by this licence, (ii) to\r\nacknowledge the contribution(s) of the Copyright Holder(s) or (iii) with\r\ntheir explicit written permission.\r\n\r\n4) The Font Software, modified or unmodified, in part or in whole, must\r\nbe distributed entirely under this licence, and must not be distributed\r\nunder any other licence. The requirement for fonts to remain under this\r\nlicence does not affect any document created using the Font Software,\r\nexcept any version of the Font Software extracted from a document\r\ncreated using the Font Software may only be distributed under this\r\nlicence.\r\n\r\nTERMINATION\r\nThis licence becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF\r\nCOPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER\r\nDEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "packages/web/src/assets/fonts/UbuntuMono/stylesheet.css",
    "content": "@font-face {\n  font-family: \"Ubuntu Mono\";\n  src:\n    url(\"UbuntuMono-Bold.woff2\") format(\"woff2\"),\n    url(\"UbuntuMono-Bold.woff\") format(\"woff\");\n  font-weight: bold;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 105%;\n}\n"
  },
  {
    "path": "packages/web/src/assets/fonts/VT323/OFL.txt",
    "content": "Copyright 2011, The VT323 Project Authors (peter.hull@oikoi.com)\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttps://openfontlicense.org\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "packages/web/src/assets/fonts/VT323/demo.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta name=\"robots\" content=\"noindex, noarchive\" />\n    <meta name=\"format-detection\" content=\"telephone=no\" />\n    <title>Transfonter demo</title>\n    <link href=\"stylesheet.css\" rel=\"stylesheet\" />\n    <style>\n      /*\n        http://meyerweb.com/eric/tools/css/reset/\n        v2.0 | 20110126\n        License: none (public domain)\n        */\n      html,\n      body,\n      div,\n      span,\n      applet,\n      object,\n      iframe,\n      h1,\n      h2,\n      h3,\n      h4,\n      h5,\n      h6,\n      p,\n      blockquote,\n      pre,\n      a,\n      abbr,\n      acronym,\n      address,\n      big,\n      cite,\n      code,\n      del,\n      dfn,\n      em,\n      img,\n      ins,\n      kbd,\n      q,\n      s,\n      samp,\n      small,\n      strike,\n      strong,\n      sub,\n      sup,\n      tt,\n      var,\n      b,\n      u,\n      i,\n      center,\n      dl,\n      dt,\n      dd,\n      ol,\n      ul,\n      li,\n      fieldset,\n      form,\n      label,\n      legend,\n      table,\n      caption,\n      tbody,\n      tfoot,\n      thead,\n      tr,\n      th,\n      td,\n      article,\n      aside,\n      canvas,\n      details,\n      embed,\n      figure,\n      figcaption,\n      footer,\n      header,\n      hgroup,\n      menu,\n      nav,\n      output,\n      ruby,\n      section,\n      summary,\n      time,\n      mark,\n      audio,\n      video {\n        margin: 0;\n        padding: 0;\n        border: 0;\n        font-size: 100%;\n        font: inherit;\n        vertical-align: baseline;\n      }\n      /* HTML5 display-role reset for older browsers */\n      article,\n      aside,\n      details,\n      figcaption,\n      figure,\n      footer,\n      header,\n      hgroup,\n      menu,\n      nav,\n      section {\n        display: block;\n      }\n      body {\n        line-height: 1;\n      }\n      ol,\n      ul {\n        list-style: none;\n      }\n      blockquote,\n      q {\n        quotes: none;\n      }\n      blockquote:before,\n      blockquote:after,\n      q:before,\n      q:after {\n        content: \"\";\n        content: none;\n      }\n      table {\n        border-collapse: collapse;\n        border-spacing: 0;\n      }\n      /* demo styles */\n      body {\n        background: #f0f0f0;\n        color: #000;\n      }\n      .page {\n        background: #fff;\n        width: 920px;\n        margin: 0 auto;\n        padding: 20px 20px 0 20px;\n        overflow: hidden;\n      }\n      .font-container {\n        overflow-x: auto;\n        overflow-y: hidden;\n        margin-bottom: 40px;\n        line-height: 1.3;\n        white-space: nowrap;\n        padding-bottom: 5px;\n      }\n      h1 {\n        position: relative;\n        background: #444;\n        font-size: 32px;\n        color: #fff;\n        padding: 10px 20px;\n        margin: 0 -20px 12px -20px;\n      }\n      .letters {\n        font-size: 25px;\n        margin-bottom: 20px;\n      }\n      .s10:before {\n        content: \"10px\";\n      }\n      .s11:before {\n        content: \"11px\";\n      }\n      .s12:before {\n        content: \"12px\";\n      }\n      .s14:before {\n        content: \"14px\";\n      }\n      .s18:before {\n        content: \"18px\";\n      }\n      .s24:before {\n        content: \"24px\";\n      }\n      .s30:before {\n        content: \"30px\";\n      }\n      .s36:before {\n        content: \"36px\";\n      }\n      .s48:before {\n        content: \"48px\";\n      }\n      .s60:before {\n        content: \"60px\";\n      }\n      .s72:before {\n        content: \"72px\";\n      }\n      .s10:before,\n      .s11:before,\n      .s12:before,\n      .s14:before,\n      .s18:before,\n      .s24:before,\n      .s30:before,\n      .s36:before,\n      .s48:before,\n      .s60:before,\n      .s72:before {\n        font-family: Arial, sans-serif;\n        font-size: 10px;\n        font-weight: normal;\n        font-style: normal;\n        color: #999;\n        padding-right: 6px;\n      }\n      pre {\n        display: block;\n        padding: 9px;\n        margin: 0 0 12px;\n        font-family: Monaco, Menlo, Consolas, \"Courier New\", monospace;\n        font-size: 13px;\n        line-height: 1.428571429;\n        color: #333;\n        font-weight: normal;\n        font-style: normal;\n        background-color: #f5f5f5;\n        border: 1px solid #ccc;\n        overflow-x: auto;\n        border-radius: 4px;\n      }\n      /* responsive */\n      @media (max-width: 959px) {\n        .page {\n          width: auto;\n          margin: 0;\n        }\n      }\n    </style>\n  </head>\n  <body>\n    <div class=\"page\">\n      <div class=\"demo\">\n        <h1\n          style=\"\n            font-family: &quot;VT323&quot;;\n            font-weight: normal;\n            font-style: normal;\n          \"\n        >\n          VT323 Regular\n        </h1>\n        <pre title=\"Usage\">\n.your-style {\n    font-family: 'VT323';\n    font-weight: normal;\n    font-style: normal;\n}</pre\n        >\n        <pre title=\"Preload (optional)\">\n&lt;link rel=&quot;preload&quot; href=&quot;VT323-Regular.woff2&quot; as=&quot;font&quot; type=&quot;font/woff2&quot; crossorigin&gt;</pre\n        >\n        <div\n          class=\"font-container\"\n          style=\"\n            font-family: &quot;VT323&quot;;\n            font-weight: normal;\n            font-style: normal;\n          \"\n        >\n          <p class=\"letters\">\n            abcdefghijklmnopqrstuvwxyz<br />\n            ABCDEFGHIJKLMNOPQRSTUVWXYZ<br />\n            0123456789.:,;()*!?'@#&lt;&gt;$%&^+-=~\n          </p>\n          <p class=\"s10\" style=\"font-size: 10px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s11\" style=\"font-size: 11px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s12\" style=\"font-size: 12px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s14\" style=\"font-size: 14px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s18\" style=\"font-size: 18px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s24\" style=\"font-size: 24px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s30\" style=\"font-size: 30px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s36\" style=\"font-size: 36px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s48\" style=\"font-size: 48px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s60\" style=\"font-size: 60px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n          <p class=\"s72\" style=\"font-size: 72px\">\n            The quick brown fox jumps over the lazy dog.\n          </p>\n        </div>\n      </div>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/web/src/assets/fonts/VT323/stylesheet.css",
    "content": "@font-face {\n  font-family: \"VT323\";\n  src:\n    url(\"VT323-Regular.woff2\") format(\"woff2\"),\n    url(\"VT323-Regular.woff\") format(\"woff\");\n  font-weight: normal;\n  font-style: normal;\n  font-display: swap;\n  size-adjust: 120%;\n}\n"
  },
  {
    "path": "packages/web/src/components/commands-button.tsx",
    "content": "import { Button, ButtonProps } from \"./ui/button\";\nimport { Command } from \"lucide-react\";\n\nexport const CommandsButton = (props: ButtonProps) => (\n  <Button\n    variant=\"ghost\"\n    className=\"h-5 w-5 p-1 ml-2 bg-opacity-50 bg-black\"\n    {...props}\n  >\n    <Command />\n  </Button>\n);\n"
  },
  {
    "path": "packages/web/src/components/configure-dialog.tsx",
    "content": "import { Button } from \"@/components/ui/button\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Input, InputProps } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { defaultTarget, knownTargets } from \"@/settings.json\";\nimport { DialogProps } from \"@radix-ui/react-dialog\";\nimport { ChangeEvent, FormEvent, useEffect, useMemo, useState } from \"react\";\nimport { ReplsInfo } from \"./repls-info\";\n\nfunction TargetsInput(props: InputProps) {\n  return (\n    <div className=\"grid w-full items-center gap-1.5 mt-4 mb-2\">\n      <Label className=\"mb-1\" htmlFor=\"email-2\">\n        Targets\n      </Label>\n      <Input {...props} />\n      <div className=\"text-sm text-slate-500 mb-2\">\n        <span>Known targets are: </span>\n        <ul className=\"inline list-none p-0\">\n          {knownTargets.map((t) => (\n            <li\n              key={t}\n              className=\"inline after:content-[',_'] last:after:content-none\"\n            >\n              <code>{t}</code>\n            </li>\n          ))}\n        </ul>\n      </div>\n    </div>\n  );\n}\n\ninterface ConfigureDialogProps extends DialogProps {\n  targets: string[];\n  sessionName: string;\n  sessionUrl: string;\n  userName: string;\n  OS: string;\n  onAccept?: (targets: string[]) => void;\n}\n\nexport function ConfigureDialog({\n  targets,\n  sessionName,\n  sessionUrl,\n  userName,\n  OS,\n  onAccept,\n  ...props\n}: ConfigureDialogProps) {\n  const [targetsValue, setTargetsValue] = useState(\"\");\n\n  useEffect(() => {\n    if (!props.open) {\n      setTargetsValue(\"\");\n    }\n  }, [props.open]);\n\n  const newTargets = useMemo(\n    () =>\n      targetsValue\n        .split(\",\")\n        .map((t) => t.trim())\n        .filter((t) => knownTargets.includes(t)),\n    [targetsValue],\n  );\n\n  const newOrCurrentTargets = newTargets.length > 0 ? newTargets : targets;\n\n  const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    setTargetsValue(newOrCurrentTargets.join(\", \"));\n    if (onAccept) {\n      if (newOrCurrentTargets.length === 0)\n        newOrCurrentTargets.push(defaultTarget);\n      console.log(\"new targets\", newOrCurrentTargets);\n      onAccept(newOrCurrentTargets);\n    }\n    props.onOpenChange && props.onOpenChange(false);\n  };\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    setTargetsValue(e.target.value.replace(/,\\s*/g, \", \").trim());\n  };\n\n  return (\n    <Dialog {...props}>\n      <DialogContent className=\"sm:max-w-xl\">\n        <form onSubmit={handleSubmit}>\n          <DialogHeader>\n            <DialogTitle>Configure Layout</DialogTitle>\n            <DialogDescription>\n              Enter a list of targets, separated by comma.\n            </DialogDescription>\n          </DialogHeader>\n          <TargetsInput\n            value={targetsValue}\n            placeholder={targets.join(\", \")}\n            onChange={handleChange}\n          />\n          {newOrCurrentTargets.length > 0 && (\n            <ReplsInfo\n              targets={newOrCurrentTargets}\n              sessionName={sessionName}\n              sessionUrl={sessionUrl}\n              userName={userName}\n              OS={OS}\n            />\n          )}\n          <DialogFooter>\n            <Button type=\"submit\">Save changes</Button>\n          </DialogFooter>\n        </form>\n      </DialogContent>\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/display-settings-dialog.tsx",
    "content": "import { Button } from \"@/components/ui/button\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n  DisplaySettings,\n  sanitizeDisplaySettings,\n} from \"@/lib/display-settings\";\nimport { DialogProps } from \"@radix-ui/react-dialog\";\nimport { FormEvent, useState } from \"react\";\n\ninterface DisplaySettingsDialogProps extends DialogProps {\n  settings: DisplaySettings;\n  onAccept: (settings: DisplaySettings) => void;\n}\n\nexport default function DisplaySettingsDialog({\n  settings,\n  onAccept,\n  ...props\n}: DisplaySettingsDialogProps) {\n  const [unsavedSettings, setUnsavedSettings] = useState({ ...settings });\n  const sanitizeAndSetUnsavedSettings = (settings: DisplaySettings) =>\n    setUnsavedSettings(sanitizeDisplaySettings(settings));\n\n  const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    onAccept(unsavedSettings);\n    props.onOpenChange && props.onOpenChange(false);\n  };\n\n  return (\n    <Dialog {...props}>\n      <DialogContent>\n        <form onSubmit={handleSubmit}>\n          <DialogHeader>\n            <DialogTitle>Change display settings</DialogTitle>\n          </DialogHeader>\n          <div className=\"grid gap-4 py-4\">\n            <div className=\"grid grid-cols-4 items-center gap-4\">\n              <Label htmlFor=\"name\" className=\"text-right\">\n                Canvas pixel size\n              </Label>\n              <Input\n                id=\"canvasPixelSize\"\n                type=\"number\"\n                value={unsavedSettings.canvasPixelSize}\n                className=\"col-span-3\"\n                onChange={(e) =>\n                  sanitizeAndSetUnsavedSettings({\n                    ...unsavedSettings,\n                    canvasPixelSize: parseInt(e.target.value, 10),\n                  })\n                }\n              />\n            </div>\n            <div className=\"grid grid-cols-4 items-center gap-4\">\n              <Label htmlFor=\"name\" className=\"text-right\">\n                Show canvas\n              </Label>\n              <input\n                id=\"showCanvas\"\n                type=\"checkbox\"\n                checked={unsavedSettings.showCanvas}\n                className=\"w-5\"\n                onChange={(e) =>\n                  sanitizeAndSetUnsavedSettings({\n                    ...unsavedSettings,\n                    showCanvas: e.target.checked,\n                  })\n                }\n              />\n            </div>\n            <div className=\"\">\n              <div className=\"grid grid-cols-4 items-center gap-4\">\n                <Label htmlFor=\"name\" className=\"text-right\">\n                  Use FFT for visualization\n                </Label>\n                <input\n                  id=\"showCanvas\"\n                  type=\"checkbox\"\n                  checked={unsavedSettings.enableFft ?? true}\n                  className=\"w-5\"\n                  onChange={(e) =>\n                    sanitizeAndSetUnsavedSettings({\n                      ...unsavedSettings,\n                      enableFft: e.target.checked,\n                    })\n                  }\n                />\n              </div>\n              <p>You need to reload the page to apply changes to fft</p>\n            </div>\n          </div>\n          <DialogFooter>\n            <Button type=\"submit\">Save changes</Button>\n          </DialogFooter>\n        </form>\n      </DialogContent>\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/editor.tsx",
    "content": "import \"../assets/fonts/IBM Plex Mono/stylesheet.css\";\nimport \"../assets/fonts/BigBlue/stylesheet.css\";\nimport \"../assets/fonts/Monocraft/stylesheet.css\";\nimport \"../assets/fonts/JetBrains/stylesheet.css\";\nimport \"../assets/fonts/JGS/stylesheet.css\";\nimport \"../assets/fonts/StepsMono/stylesheet.css\";\nimport \"../assets/fonts/FiraCode/stylesheet.css\";\nimport \"../assets/fonts/SyneMono/stylesheet.css\";\nimport \"../assets/fonts/VT323/stylesheet.css\";\nimport \"../assets/fonts/RobotoMono/stylesheet.css\";\nimport \"../assets/fonts/UbuntuMono/stylesheet.css\";\nimport \"../assets/fonts/OpenDyslexic/stylesheet.css\";\n\nimport { useQuery } from \"@/hooks/use-query\";\nimport {\n  langByTarget as langByTargetUntyped,\n  panicCodes as panicCodesUntyped,\n  targetsWithDocumentEvalMode,\n  noAutoIndent,\n  webTargets,\n} from \"@/settings.json\";\nimport { javascript } from \"@codemirror/lang-javascript\";\nimport { python } from \"@codemirror/lang-python\";\nimport { EditorState, Prec } from \"@codemirror/state\";\nimport {\n  EditorView,\n  keymap,\n  lineNumbers as lineNumbersExtension,\n} from \"@codemirror/view\";\nimport { evalKeymap, flashField, remoteEvalFlash } from \"@flok-editor/cm-eval\";\nimport { tidal } from \"@flok-editor/lang-tidal\";\nimport { punctual } from \"@flok-editor/lang-punctual\";\nimport type { Document } from \"@flok-editor/session\";\nimport { highlightExtension } from \"@strudel/codemirror\";\nimport CodeMirror, {\n  ReactCodeMirrorProps,\n  ReactCodeMirrorRef,\n} from \"@uiw/react-codemirror\";\nimport { vim } from \"@replit/codemirror-vim\";\nimport React, { useEffect, useState } from \"react\";\nimport { yCollab } from \"y-codemirror.next\";\nimport { UndoManager } from \"yjs\";\nimport themes from \"@/lib/themes\";\nimport { toggleLineComment, insertNewline } from \"@codemirror/commands\";\n\nconst defaultLanguage = \"javascript\";\nconst langByTarget = langByTargetUntyped as { [lang: string]: string };\nconst langExtensionsByLanguage: { [lang: string]: any } = {\n  javascript: javascript,\n  python: python,\n  tidal: tidal,\n  punctual: punctual,\n};\nconst panicCodes = panicCodesUntyped as { [target: string]: string };\n\nconst panicKeymap = (\n  doc: Document,\n  keys: string[] = [\"Cmd-.\", \"Ctrl-.\", \"Alt-.\"],\n) => {\n  const panicCode = panicCodes[doc.target];\n\n  return panicCode\n    ? keymap.of([\n        ...keys.map((key) => ({\n          key,\n          run() {\n            doc.evaluate(panicCode, { from: null, to: null });\n            return true;\n          },\n        })),\n      ])\n    : [];\n};\n\n// extra keymaps\nconst extraKeymap = () => {\n  return keymap.of([\n    // fixes the Cmd/Alt-/ issue for Spanish keyboards\n    { key: \"Shift-Cmd-7\", run: toggleLineComment },\n    { key: \"Shift-Alt-7\", run: toggleLineComment },\n    { key: \"Alt-/\", run: toggleLineComment },\n    { key: \"Ctrl-/\", run: toggleLineComment },\n  ]);\n};\n\n// overwrites the default insertNewlineAndIndent command on Enter\nconst autoIndentKeymap = (doc: Document) => {\n  // if any of the targets is part of the noAutoIndent setting in settings.json\n  const noIndent = noAutoIndent.includes(doc.target);\n  // overwrite the Enter with insertNewline\n  return noIndent\n    ? Prec.high(keymap.of([{ key: \"Enter\", run: insertNewline }]))\n    : [];\n};\n\ninterface FlokSetupOptions {\n  readOnly?: boolean;\n}\n\nconst flokSetup = (\n  doc: Document,\n  { readOnly = false }: FlokSetupOptions = {},\n) => {\n  const text = doc.getText();\n  const undoManager = new UndoManager(text);\n  const defaultMode = targetsWithDocumentEvalMode.includes(doc.target)\n    ? \"document\"\n    : \"block\";\n  const web = webTargets.includes(doc.target);\n\n  return [\n    flashField(),\n    remoteEvalFlash(doc),\n    Prec.high(evalKeymap(doc, { defaultMode, web })),\n    panicKeymap(doc),\n    extraKeymap(),\n    autoIndentKeymap(doc),\n    yCollab(text, doc.session.awareness, {\n      undoManager,\n      hideCaret: readOnly,\n      showLocalCaret: true,\n    }),\n  ];\n};\n\nexport interface EditorSettings {\n  theme: string;\n  fontFamily: string;\n  lineNumbers: boolean;\n  wrapText: boolean;\n  vimMode: boolean;\n}\n\nexport interface EditorProps extends ReactCodeMirrorProps {\n  document?: Document;\n  extensionSettings?: any;\n  settings?: EditorSettings;\n  ref: React.RefObject<ReactCodeMirrorRef>;\n}\n\nexport const Editor = ({ document, settings, ref, ...props }: EditorProps) => {\n  const [mounted, setMounted] = useState(false);\n  const query = useQuery();\n\n  // useEffect only runs on the client, so now we can safely show the UI\n  useEffect(() => {\n    // Make sure query parameters are set before loading the editor\n    if (!query) return;\n    setMounted(true);\n  }, [query]);\n\n  if (!mounted || !document) {\n    return null;\n  }\n\n  const { theme, fontFamily, lineNumbers, wrapText, vimMode } = {\n    theme: \"dracula\",\n    fontFamily: \"IBM Plex Mono\",\n    lineNumbers: false,\n    wrapText: false,\n    vimMode: false,\n    ...settings,\n  };\n\n  const readOnly = !!query.get(\"readOnly\");\n  const language: string = langByTarget[document.target] || defaultLanguage;\n  const languageExtension = langExtensionsByLanguage[language] || null;\n  const extensions = [\n    EditorView.theme({\n      \"&\": {\n        fontFamily: fontFamily,\n      },\n      \".cm-content\": {\n        fontFamily: fontFamily,\n      },\n      \".cm-gutters\": {\n        fontFamily: fontFamily,\n        \"margin-right\": \"10px\",\n      },\n      \".cm-line\": {\n        \"font-size\": \"105%\",\n        \"font-weight\": \"600\",\n        background: \"rgba(0, 0, 0, 0.7)\",\n        \"max-width\": \"fit-content\",\n        padding: \"0px\",\n      },\n      \".cm-activeLine\": {\n        \"background-color\": \"rgba(0, 0, 0, 1) !important\",\n      },\n      \"& .cm-scroller\": {\n        minHeight: \"100vh\",\n      },\n      \".cm-ySelectionInfo\": {\n        opacity: \"1\",\n        fontFamily: fontFamily,\n        color: \"black\",\n        padding: \"3px 4px\",\n        fontSize: \"0.8rem\",\n        \"font-weight\": \"bold\",\n        top: \"1.25em\",\n        \"z-index\": \"1000\",\n      },\n    }),\n    flokSetup(document, { readOnly }),\n    languageExtension ? languageExtension() : [],\n    highlightExtension,\n    readOnly ? EditorState.readOnly.of(true) : [],\n    lineNumbers ? lineNumbersExtension() : [],\n    vimMode ? vim() : [],\n    wrapText ? EditorView.lineWrapping : [],\n  ];\n\n  // If it's read-only, put a div in front of the editor so that the user\n  // can't interact with it.\n  return (\n    <>\n      {readOnly && <div className=\"absolute inset-0 z-10\" />}\n      <CodeMirror\n        ref={ref}\n        value={document.content}\n        theme={themes[theme]?.ext || themes[\"dracula\"]?.ext}\n        extensions={extensions}\n        basicSetup={{\n          foldGutter: false,\n          lineNumbers: false,\n        }}\n        {...props}\n      />\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/web/src/components/evaluate-button.tsx",
    "content": "import { Button, ButtonProps } from \"./ui/button\";\nimport { Play } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nexport const EvaluateButton = (props: ButtonProps) => (\n  <Button\n    variant=\"outline\"\n    className={cn(\"p-1 bg-opacity-50 bg-black\", props?.className)}\n    {...props}\n  >\n    <Play />\n  </Button>\n);\n"
  },
  {
    "path": "packages/web/src/components/hydra-canvas.tsx",
    "content": "import React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { DisplaySettings } from \"@/lib/display-settings\";\n\ninterface HydraCanvasProps {\n  fullscreen?: boolean;\n  displaySettings: DisplaySettings;\n  ref: React.RefObject<HTMLCanvasElement>;\n}\n\nconst HydraCanvas = ({\n  fullscreen,\n  displaySettings,\n  ref,\n}: HydraCanvasProps) => (\n  <canvas\n    ref={ref}\n    className={cn(\n      \"absolute top-0 left-0\",\n      fullscreen && \"h-full w-full block overflow-hidden\",\n    )}\n    style={{\n      imageRendering: \"pixelated\",\n      display: displaySettings.showCanvas ? \"\" : \"none\",\n    }}\n    width={window.innerWidth / displaySettings.canvasPixelSize}\n    height={window.innerHeight / displaySettings.canvasPixelSize}\n  />\n);\n\nexport default React.memo(HydraCanvas);\n"
  },
  {
    "path": "packages/web/src/components/icons.tsx",
    "content": "import { Laptop, Moon, SunMedium, type Icon as LucideIcon } from \"lucide-react\";\n\nexport type Icon = LucideIcon;\n\nexport const Icons = {\n  sun: SunMedium,\n  moon: Moon,\n  laptop: Laptop,\n};\n"
  },
  {
    "path": "packages/web/src/components/messages-panel.tsx",
    "content": "import { FloatingPanel } from \"@/components/ui/floating-panel\";\nimport { cn } from \"@/lib/utils\";\nimport { Message } from \"@/routes/session\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport {\n  FloatingPanelButton,\n  FloatingPanelToggle,\n} from \"@/components/ui/floating-panel\";\nimport { View, EyeOff, X } from \"lucide-react\";\n\ntype ExtMessage = Message & { sameTarget: boolean };\n\ninterface MessagesPanelProps {\n  className?: string;\n  messages: Message[];\n  autoShowMessages: boolean;\n  hideMessagesOnEval: boolean;\n  onAutoShowToggleClick?: (pressed: boolean) => void;\n  onHideMessagesOnEvalClick?: (pressed: boolean) => void;\n  onClearMessagesClick?: () => void;\n}\n\nexport function MessagesPanel({\n  className,\n  messages,\n  autoShowMessages,\n  hideMessagesOnEval,\n  onAutoShowToggleClick,\n  onHideMessagesOnEvalClick,\n  onClearMessagesClick,\n}: MessagesPanelProps) {\n  const containerRef = useRef<HTMLUListElement>(null);\n\n  // Scroll container to the end automatically when there are new messages\n  useEffect(() => {\n    if (!containerRef.current) return;\n    const container = containerRef.current;\n    container.scrollTop = container.scrollHeight;\n  }, [containerRef, messages]);\n\n  // Include `sameTarget` prop to know if a message is from the same target as\n  // the previous message.\n  const messagesPrev = useMemo(() => {\n    let res: ExtMessage[] = [];\n    for (let i = 0; i < messages.length; i++) {\n      const curMessage = messages[i];\n      const prevMessage = i > 0 && messages[i - 1];\n      res.push({\n        ...curMessage,\n        sameTarget: prevMessage && prevMessage.target === curMessage.target,\n      });\n    }\n    return res;\n  }, [messages]);\n\n  return (\n    <FloatingPanel\n      id=\"messages\"\n      header=\"Messages\"\n      headerToolbar={\n        <>\n          <div className=\"flex-grow\"></div>\n          <FloatingPanelToggle\n            tooltip=\"Show panel when receiving new messages\"\n            pressed={autoShowMessages}\n            onPressedChange={onAutoShowToggleClick}\n          >\n            <View size={16} />\n          </FloatingPanelToggle>\n          <FloatingPanelToggle\n            tooltip=\"Hide panel after evaluation\"\n            pressed={hideMessagesOnEval}\n            onPressedChange={onHideMessagesOnEvalClick}\n          >\n            <EyeOff size={16} />\n          </FloatingPanelToggle>\n          <FloatingPanelButton\n            tooltip=\"Clear messages\"\n            onClick={onClearMessagesClick}\n          >\n            <X size={12} />\n          </FloatingPanelButton>\n        </>\n      }\n      className={className}\n    >\n      <ul ref={containerRef} className=\"h-[calc(100%-16px)] overflow-auto\">\n        {messagesPrev.map(({ sameTarget, target, body, type, tags }, i) => (\n          <li key={i} className=\"block\">\n            {!sameTarget && (\n              <div className=\"mt-1 mb-1\">\n                {[target, ...tags].map((key) => (\n                  <span\n                    key={key}\n                    className=\"rounded-lg bg-gray-400 bg-opacity-20 p-1 font-bold\"\n                  >\n                    {key}\n                  </span>\n                ))}\n              </div>\n            )}\n            {body.map((line, j) => (\n              <pre key={j} className={cn(type === \"stderr\" && \"text-red-400\")}>\n                {line}\n              </pre>\n            ))}\n          </li>\n        ))}\n      </ul>\n    </FloatingPanel>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/mosaic.tsx",
    "content": "import { ReactNode, useMemo, cloneElement } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface MosaicProps {\n  className: string;\n  items: ReactNode[];\n}\n\nexport function Mosaic({ className, items }: MosaicProps) {\n  const itemsByRows = (items: ReactNode[]) => {\n    let rows: ReactNode[][] = [];\n\n    switch (items.length) {\n      case 0:\n        rows = [];\n        break;\n      case 1:\n      case 2:\n        rows = [items];\n        break;\n      case 3:\n        rows = [items.slice(0, 2), [items[2]]];\n        break;\n      case 4:\n        rows = [items.slice(0, 2), items.slice(2, 4)];\n        break;\n      case 5:\n        rows = [items.slice(0, 3), items.slice(3, 5)];\n        break;\n      case 6:\n        rows = [items.slice(0, 3), items.slice(3, 6)];\n        break;\n      case 7:\n        rows = [items.slice(0, 4), items.slice(4, 7)];\n        break;\n      case 8:\n        rows = [items.slice(0, 4), items.slice(4, 8)];\n        break;\n      default:\n        console.warn(\"More than 8 slots are not supported right now\");\n        rows = [items.slice(0, 4), items.slice(4, 8)];\n    }\n\n    return rows;\n  };\n\n  const rows = useMemo(() => itemsByRows(items), [items]);\n  const halfHeight = rows.length > 1;\n\n  return (\n    <div\n      className={cn(\n        \"flex flex-col items-stretch p-1 h-screen gap-1 overflow-hidden\",\n        className,\n      )}\n    >\n      {rows.map((rowItems, i) => (\n        <div\n          className={cn(\n            \"flex flex-row gap-1\",\n            halfHeight ? \"h-[50vh]\" : \"h-screen\",\n          )}\n          key={i}\n        >\n          {rowItems.map((item: any, j: number) => (\n            <div\n              key={`${i}-${j}`}\n              className=\"flex-grow bg-transparent basis-full\"\n            >\n              {cloneElement(item, { halfHeight })}\n            </div>\n          ))}\n        </div>\n      ))}\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/pane.tsx",
    "content": "import { EvaluateButton } from \"@/components/evaluate-button\";\nimport TargetSelect from \"@/components/target-select\";\nimport { cn } from \"@/lib/utils\";\nimport type { Document } from \"@flok-editor/session\";\nimport { PropsWithChildren } from \"react\";\n\ninterface PaneProps extends PropsWithChildren {\n  document: Document;\n  halfHeight?: boolean;\n  onTargetChange: (document: Document, target: string) => void;\n  onEvaluateButtonClick: (document: Document) => void;\n}\n\nexport const Pane = ({\n  children,\n  document,\n  halfHeight,\n  onTargetChange,\n  onEvaluateButtonClick,\n}: PaneProps) => (\n  <div\n    className={cn(\n      \"flex overflow-auto relative\",\n      halfHeight ? \"h-[50vh]\" : \"h-screen\",\n    )}\n  >\n    <TargetSelect\n      triggerProps={{\n        className:\n          \"absolute z-10 top-0 w-auto h-6 border-none focus:ring-0 focus:ring-offset-0 p-1 bg-slate-900 bg-opacity-70\",\n      }}\n      value={document.target}\n      onValueChange={(target) => onTargetChange(document, target)}\n    />\n    {children}\n    <EvaluateButton\n      className=\"absolute z-10 right-4 top-6 sm:hidden\"\n      onClick={() => onEvaluateButtonClick(document)}\n    />\n  </div>\n);\n"
  },
  {
    "path": "packages/web/src/components/punctual-canvas.tsx",
    "content": "import React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { DisplaySettings } from \"@/lib/display-settings\";\n\ninterface PunctualCanvasProps {\n  fullscreen?: boolean;\n  displaySettings: DisplaySettings;\n  ref: React.RefObject<HTMLCanvasElement>;\n}\n\nconst PunctualCanvas = ({\n  fullscreen,\n  displaySettings,\n  ref,\n}: PunctualCanvasProps) => (\n  <canvas\n    ref={ref}\n    className={cn(\n      \"absolute top-0 left-0\",\n      fullscreen && \"h-full w-full block overflow-hidden\",\n    )}\n    style={{\n      imageRendering: \"pixelated\",\n      display: displaySettings.showCanvas ? \"\" : \"none\",\n    }}\n    width={window.innerWidth / displaySettings.canvasPixelSize}\n    height={window.innerHeight / displaySettings.canvasPixelSize}\n  />\n);\n\nexport default React.memo(PunctualCanvas);\n"
  },
  {
    "path": "packages/web/src/components/repls-button.tsx",
    "content": "import { Button, ButtonProps } from \"./ui/button\";\n\nexport const ReplsButton = (props: ButtonProps) => (\n  <Button\n    variant=\"ghost\"\n    size=\"sm\"\n    className=\"h-5 ml-2 bg-opacity-50 bg-black\"\n    {...props}\n  >\n    <span className=\"text-xs\">REPLs</span>\n  </Button>\n);\n"
  },
  {
    "path": "packages/web/src/components/repls-dialog.tsx",
    "content": "import { ReplsInfo } from \"@/components/repls-info\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { DialogProps } from \"@radix-ui/react-dialog\";\n\ninterface ReplsDialogProps extends DialogProps {\n  targets: string[];\n  sessionUrl: string;\n  sessionName: string;\n  userName: string;\n  OS: string;\n}\n\nexport function ReplsDialog({\n  targets,\n  sessionUrl,\n  sessionName,\n  userName,\n  OS,\n  ...props\n}: ReplsDialogProps) {\n  return (\n    <Dialog {...props}>\n      <DialogContent className=\"sm:max-w-xl\">\n        <DialogHeader>\n          <DialogTitle>REPL Configuration</DialogTitle>\n          <ReplsInfo\n            targets={targets}\n            sessionName={sessionName}\n            sessionUrl={sessionUrl}\n            userName={userName}\n            OS={OS}\n          />\n        </DialogHeader>\n      </DialogContent>\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/repls-info.tsx",
    "content": "import { Button } from \"@/components/ui/button\";\nimport { Check, Copy } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { webTargets } from \"@/settings.json\";\n\ninterface ReplsInfoProps {\n  targets: string[];\n  sessionUrl: string;\n  sessionName: string;\n  userName: string;\n  OS: string;\n}\n\nexport function ReplsInfo({\n  targets,\n  sessionUrl,\n  sessionName,\n  userName,\n  OS,\n}: ReplsInfoProps) {\n  const [copied, setCopied] = useState(false);\n\n  const replTargets = targets.filter((t) => !webTargets.includes(t));\n  if (replTargets.length === 0) return null;\n\n  const terminalSpec = OS === \"windows\" ? \"PowerShell \" : \"\";\n  const lineSeparator = OS === \"windows\" ? `\\`` : `\\\\`;\n\n  const replCommand =\n    `npx flok-repl@latest -H ${sessionUrl} ${lineSeparator}\\n` +\n    `  -s ${sessionName} ${lineSeparator}\\n` +\n    `  -t ${replTargets.join(\" \")} ${lineSeparator}\\n` +\n    `  -T user:${userName}`;\n\n  const copyToClipboard = () => {\n    setCopied(true);\n    setTimeout(() => setCopied(false), 1000);\n    navigator.clipboard.writeText(replCommand);\n  };\n\n  return (\n    <div>\n      <p className=\"text-sm text-slate-500 dark:text-slate-400\">\n        This session has one or more targets that need an external REPL process\n        to run on your computer. To run code executed on these targets, you will\n        need to run <code>flok-repl</code> on a {terminalSpec}terminal, like\n        this:\n      </p>\n      <div className=\"mt-4 mb-4 relative\">\n        <pre className=\"rounded bg-slate-800 mr-3 p-3 whitespace-pre-wrap w-full\">\n          {replCommand}\n        </pre>\n        <Button\n          className=\"absolute top-3 right-3 dark:hover:bg-slate-700\"\n          variant=\"outline\"\n          onClick={copyToClipboard}\n          size=\"sm\"\n          type=\"button\"\n        >\n          {copied ? <Check size={16} /> : <Copy size={16} />}\n        </Button>\n      </div>\n      <p className=\"text-sm text-slate-500 dark:text-slate-400\">\n        For more information, read{\" \"}\n        <Link\n          to=\"https://github.com/munshkr/flok#connect-repls-to-flok\"\n          reloadDocument\n          target=\"_blank\"\n        >\n          here\n        </Link>\n        .\n      </p>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/session-command-dialog.tsx",
    "content": "\"use client\";\n\nimport {\n  CommandDialog,\n  CommandDialogProps,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  Command,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/components/ui/command\";\nimport { changeLogUrl, repoUrl } from \"@/settings.json\";\nimport themes from \"@/lib/themes\";\nimport fonts from \"@/lib/fonts\";\nimport {\n  Edit2,\n  FilePlus,\n  TextCursorIcon,\n  WrapText,\n  ArrowLeft,\n  Github,\n  FileDigit,\n  Type,\n  Minus,\n  Plus,\n  Palette,\n  Settings,\n  Share,\n  Monitor,\n} from \"lucide-react\";\nimport { Link } from \"react-router-dom\";\nimport { useState } from \"react\";\nimport { EditorSettings } from \"./editor\";\nimport { DisplaySettings } from \"@/lib/display-settings\";\n\ninterface SessionCommandDialogProps extends CommandDialogProps {\n  editorSettings: EditorSettings;\n  onEditorSettingsChange: (settings: EditorSettings) => void;\n  displaySettings: DisplaySettings;\n  onDisplaySettingsChange: (settings: DisplaySettings) => void;\n  onSessionChangeUsername: () => void;\n  onSessionNew: () => void;\n  onSessionShareUrl: () => void;\n  onLayoutAdd: () => void;\n  onLayoutRemove: () => void;\n  onLayoutConfigure: () => void;\n  onEditorChangeDisplaySettings: () => void;\n}\n\nexport default function SessionCommandDialog({\n  editorSettings,\n  displaySettings,\n  onEditorSettingsChange,\n  ...props\n}: SessionCommandDialogProps) {\n  const { fontFamily, theme, vimMode, lineNumbers, wrapText } = editorSettings;\n\n  const [pages, setPages] = useState<string[]>([]);\n\n  const wrapHandler = (callback: () => void) => {\n    return () => {\n      const { onOpenChange } = props;\n      callback();\n      if (onOpenChange) onOpenChange(false);\n    };\n  };\n\n  const wrapHandlerWithValue = (callback: (value: any) => void, data: any) => {\n    return () => {\n      const { onOpenChange } = props;\n      callback(data);\n      if (onOpenChange) onOpenChange(false);\n    };\n  };\n\n  const fontSelection = (font: string) => {\n    setPages([]);\n    wrapHandler(() =>\n      onEditorSettingsChange({\n        ...editorSettings,\n        fontFamily: font,\n      }),\n    )();\n  };\n\n  const themeSelection = (theme: string) => {\n    setPages([]);\n    wrapHandler(() =>\n      onEditorSettingsChange({\n        ...editorSettings,\n        theme,\n      }),\n    )();\n  };\n\n  const page = pages[pages.length - 1];\n\n  return (\n    <CommandDialog {...props}>\n      <CommandInput placeholder=\"Type a command or search...\" />\n      <CommandEmpty>No results found.</CommandEmpty>\n      <CommandList>\n        <Command></Command>\n        <CommandSeparator />\n        {!page && (\n          <>\n            <CommandGroup heading=\"Session\">\n              <CommandItem\n                onSelect={wrapHandler(props.onSessionChangeUsername)}\n              >\n                <Edit2 className=\"mr-2 h-4 w-4\" />\n                <span>Change Username</span>\n              </CommandItem>\n              <CommandItem onSelect={wrapHandler(props.onSessionNew)}>\n                <FilePlus className=\"mr-2 h-4 w-4\" />\n                <span>New</span>\n              </CommandItem>\n              <CommandItem onSelect={wrapHandler(props.onSessionShareUrl)}>\n                <Share className=\"mr-2 h-4 w-4\" />\n                <span>Share URL</span>\n              </CommandItem>\n              {/* <CommandItem>\n                <FolderOpen className=\"mr-2 h-4 w-4\" />\n                <span>Open</span>\n              </CommandItem>\n              <CommandItem>\n                <span className=\"ml-7\">Open Recent</span>\n              </CommandItem>\n              <CommandItem>\n                <Save className=\"mr-2 h-4 w-4\" />\n                <span>Save As...</span>\n              </CommandItem> */}\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Layout\">\n              <CommandItem onSelect={wrapHandler(props.onLayoutConfigure)}>\n                <Settings className=\"mr-2 h-4 w-4\" />\n                <span>Configure</span>\n                <CommandShortcut>⌃P</CommandShortcut>\n              </CommandItem>\n              <CommandItem onSelect={wrapHandler(props.onLayoutAdd)}>\n                <Plus className=\"mr-2 h-4 w-4\" />\n                <span>Add Pane</span>\n              </CommandItem>\n              <CommandItem onSelect={wrapHandler(props.onLayoutRemove)}>\n                <Minus className=\"mr-2 h-4 w-4\" />\n                <span>Remove Pane</span>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Editor\">\n              <CommandList className=\"ml-2\">\n                <CommandItem onSelect={() => setPages([...pages, \"fonts\"])}>\n                  <Type className=\"mr-2 h-4 w-4 inline\" />\n                  <span>\n                    Change Font Family: <b>{fontFamily}</b>\n                  </span>\n                </CommandItem>\n                <CommandItem onSelect={() => setPages([...pages, \"themes\"])}>\n                  <Palette className=\"mr-2 h-4 w-4\" />\n                  <span>\n                    Change Theme: <b>{themes[theme]?.name}</b>\n                  </span>\n                </CommandItem>\n                <CommandItem\n                  onSelect={wrapHandler(() =>\n                    onEditorSettingsChange({\n                      ...editorSettings,\n                      lineNumbers: !lineNumbers,\n                    }),\n                  )}\n                >\n                  <FileDigit className=\"mr-2 h-4 w-4\" />\n                  <span>{lineNumbers ? \"Hide\" : \"Show\"} Line Numbers</span>\n                </CommandItem>\n                <CommandItem\n                  onSelect={wrapHandler(() =>\n                    onEditorSettingsChange({\n                      ...editorSettings,\n                      wrapText: !wrapText,\n                    }),\n                  )}\n                >\n                  <WrapText className=\"mr-2 h-4 w-4\" />\n                  <span>{wrapText ? \"Disable\" : \"Enable\"} Word Wrapping</span>\n                </CommandItem>\n                <CommandItem\n                  onSelect={wrapHandler(() =>\n                    onEditorSettingsChange({\n                      ...editorSettings,\n                      vimMode: !vimMode,\n                    }),\n                  )}\n                >\n                  <TextCursorIcon className=\"mr-2 h-4 w-4\" />\n                  <span>{vimMode ? \"Disable\" : \"Enable\"} Vim Mode</span>\n                </CommandItem>\n              </CommandList>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Display\">\n              <CommandList>\n                <CommandItem\n                  onSelect={wrapHandler(props.onEditorChangeDisplaySettings)}\n                >\n                  <Monitor className=\"mr-2 h-4 w-4\" />\n                  <span>Change display settings</span>\n                </CommandItem>\n              </CommandList>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Help\">\n              {/* <CommandItem>\n                <HelpCircle className=\"mr-2 h-4 w-4\" />\n                <span>Quickstart</span>\n                <CommandShortcut>⌘H</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <span className=\"ml-7\">Show All Commands</span>\n                <CommandShortcut>⌘K</CommandShortcut>\n              </CommandItem> */}\n              <Link to={changeLogUrl} reloadDocument target=\"_blank\">\n                <CommandItem>\n                  <span>Show Release Notes</span>\n                </CommandItem>\n              </Link>\n              <Link to={repoUrl} reloadDocument target=\"_blank\">\n                <CommandItem>\n                  <Github className=\"mr-2 h-4 w-4\" />\n                  <span>Go to GitHub</span>\n                </CommandItem>\n              </Link>\n            </CommandGroup>\n          </>\n        )}\n        {page === \"fonts\" && (\n          <CommandGroup heading=\"Fonts\">\n            <CommandItem onSelect={() => setPages([])} key=\"fontMenu\">\n              <ArrowLeft className=\"mr-2 h-4 w-4\" />\n              <span>Back to menu</span>\n            </CommandItem>\n            {Object.entries(fonts).map(([fontKey, fontValue]) => (\n              <CommandItem\n                onMouseEnter={() =>\n                  onEditorSettingsChange({\n                    ...editorSettings,\n                    fontFamily: fontValue,\n                  })\n                }\n                onSelect={wrapHandlerWithValue(fontSelection, fontValue)}\n                key={fontKey}\n              >\n                <Palette className=\"mr-2 h-4 w-4\" />\n                <span className=\"capitalize\" style={{ fontFamily: fontValue }}>\n                  {fontKey}\n                </span>\n              </CommandItem>\n            ))}\n          </CommandGroup>\n        )}\n        {page === \"themes\" && (\n          // <CommandList className=\"ml-2\">\n          <CommandGroup heading=\"Themes\">\n            <CommandItem onSelect={() => setPages([])} key=\"themeMenu\">\n              <ArrowLeft className=\"mr-2 h-4 w-4\" />\n              <span>Back to menu</span>\n            </CommandItem>\n            {Object.entries(themes).map(([key, { name }]) => (\n              <CommandItem\n                onMouseEnter={() =>\n                  onEditorSettingsChange({ ...editorSettings, theme: key })\n                }\n                onSelect={wrapHandlerWithValue(themeSelection, key)}\n                key={key}\n              >\n                <Palette className=\"mr-2 h-4 w-4\" />\n                <span className=\"capitalize\">{name}</span>\n              </CommandItem>\n            ))}\n            {/* </CommandList> */}\n          </CommandGroup>\n        )}\n      </CommandList>\n      <span className=\"text-xs text-slate-500 ml-3 mr-3 mt-4 mb-2\">\n        Tip: Press <kbd>⌘</kbd>+<kbd>J</kbd> or <kbd>Ctrl</kbd>+<kbd>J</kbd> to\n        open or close this prompt\n      </span>\n    </CommandDialog>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/session-menu.tsx",
    "content": "\"use client\";\n\nimport {\n  Menubar,\n  MenubarContent,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarTrigger,\n  MenubarSub,\n  MenubarSubTrigger,\n  MenubarSubContent,\n} from \"@/components/ui/menubar\";\nimport { Link } from \"react-router-dom\";\nimport { repoUrl, changeLogUrl } from \"@/settings.json\";\n\ninterface MenuProps {\n  onSessionConfigure?: (e: Event) => void;\n  onSessionChangeUsername?: (e: Event) => void;\n  onSessionNew?: (e: Event) => void;\n  onViewLayoutAdd?: (e: Event) => void;\n  onViewLayoutRemove?: (e: Event) => void;\n}\n\nexport default function SessionMenu({\n  onSessionConfigure,\n  onSessionChangeUsername,\n  onSessionNew,\n  onViewLayoutAdd,\n  onViewLayoutRemove,\n}: MenuProps) {\n  return (\n    <Menubar>\n      <MenubarMenu>\n        <MenubarTrigger>Session</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem disabled onSelect={onSessionConfigure}>\n            Configure<MenubarShortcut>⌘C</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem onSelect={onSessionChangeUsername}>\n            Change username\n          </MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem onSelect={onSessionNew}>New</MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem disabled>Open</MenubarItem>\n          <MenubarItem disabled>Open Recent</MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem disabled>Save As...</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n\n      <MenubarMenu>\n        <MenubarTrigger>View</MenubarTrigger>\n        <MenubarContent>\n          <MenubarSub>\n            <MenubarSubTrigger>Layout</MenubarSubTrigger>\n            <MenubarSubContent>\n              <MenubarItem onSelect={onViewLayoutAdd}>Add</MenubarItem>\n              <MenubarItem onSelect={onViewLayoutRemove}>Remove</MenubarItem>\n            </MenubarSubContent>\n          </MenubarSub>\n        </MenubarContent>\n      </MenubarMenu>\n\n      <MenubarMenu>\n        <MenubarTrigger>Help</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem disabled>\n            Quickstart <MenubarShortcut>⌘H</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem disabled>\n            Show All Commands <MenubarShortcut>⌘K</MenubarShortcut>\n          </MenubarItem>\n          <MenubarSeparator />\n          <Link to={changeLogUrl} reloadDocument target=\"_blank\">\n            <MenubarItem>Show Release Notes</MenubarItem>\n          </Link>\n          <Link to={repoUrl} reloadDocument target=\"_blank\">\n            <MenubarItem>Go to GitHub</MenubarItem>\n          </Link>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/share-url-dialog.tsx",
    "content": "import { Button } from \"@/components/ui/button\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { DialogProps } from \"@radix-ui/react-dialog\";\nimport { Check, Copy } from \"lucide-react\";\nimport { useState } from \"react\";\n\ninterface ConfigureDialogProps extends DialogProps {\n  url: string;\n  onAccept?: (targets: string[]) => void;\n}\n\nexport function ShareUrlDialog({ url, ...props }: ConfigureDialogProps) {\n  const [copied, setCopied] = useState(false);\n\n  const copyToClipboard = () => {\n    setCopied(true);\n    setTimeout(() => setCopied(false), 1000);\n    navigator.clipboard.writeText(url);\n  };\n\n  return (\n    <Dialog {...props}>\n      <DialogContent className=\"sm:max-w-xl\">\n        <DialogHeader>\n          <DialogTitle>Share Session</DialogTitle>\n          <DialogDescription>\n            Copy the URL below and share it with your friends. This URL contains\n            a copy of the current session layout and code.\n          </DialogDescription>\n          <div className=\"mt-4 mb-4 relative\">\n            <pre className=\"rounded bg-slate-800 p-3 whitespace-pre-wrap overflow-x-auto text-sm\">\n              {url}\n            </pre>\n            <Button\n              className=\"absolute top-3 right-3 dark:hover:bg-slate-700\"\n              variant=\"outline\"\n              onClick={copyToClipboard}\n              size=\"sm\"\n              type=\"button\"\n            >\n              {copied ? <Check size={16} /> : <Copy size={16} />}\n            </Button>\n          </div>\n        </DialogHeader>\n      </DialogContent>\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/status-bar.tsx",
    "content": "import {\n  Slash,\n  CheckCircle2,\n  CircleEllipsis,\n  Check,\n  RefreshCw,\n  LucideProps,\n  HelpCircle,\n  Mail,\n} from \"lucide-react\";\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { PropsWithChildren, ReactElement, cloneElement } from \"react\";\n\nexport type PubSubState = \"disconnected\" | \"connected\" | \"connecting\";\nexport type SyncState = \"syncing\" | \"synced\" | \"partiallySynced\";\n\ninterface StateAttributes {\n  [state: string]: {\n    icon: ReactElement<LucideProps>;\n    color: string;\n    tooltip?: string;\n  };\n}\n\nconst connectionStates: StateAttributes = {\n  disconnected: {\n    tooltip: \"Disconnected from server\",\n    color: \"red\",\n    icon: <Slash />,\n  },\n  connecting: {\n    tooltip: \"Connecting to server...\",\n    color: \"orange\",\n    icon: <CircleEllipsis />,\n  },\n  connected: {\n    tooltip: \"Connected to server\",\n    color: \"lightgreen\",\n    icon: <CheckCircle2 />,\n  },\n};\n\nconst syncStates: StateAttributes = {\n  syncing: {\n    tooltip: \"Syncing session...\",\n    color: \"orange\",\n    icon: <RefreshCw />,\n  },\n  synced: {\n    tooltip: \"Session synced\",\n    color: \"lightgreen\",\n    icon: <Check />,\n  },\n  partiallySynced: {\n    tooltip: \"Session synced, but disconnected from server\",\n    color: \"orange\",\n    icon: <HelpCircle />,\n  },\n};\n\nfunction ConnectionIndicator({\n  color,\n  tooltip,\n  icon,\n}: {\n  color: string;\n  tooltip?: string;\n  icon: ReactElement<LucideProps>;\n}) {\n  return (\n    <Tooltip>\n      <TooltipTrigger className=\"h-full\">\n        {cloneElement(icon, {\n          size: 12,\n          color,\n          className: \"mr-1\",\n        })}\n      </TooltipTrigger>\n      {tooltip && (\n        <TooltipContent align=\"start\">\n          <p>{tooltip}</p>\n        </TooltipContent>\n      )}\n    </Tooltip>\n  );\n}\n\ninterface MessagesCounterProps extends PropsWithChildren {\n  tooltip?: string;\n}\n\nfunction MessagesCounter({ children, tooltip }: MessagesCounterProps) {\n  return (\n    <Tooltip>\n      <TooltipTrigger className=\"flex flex-row\">{children}</TooltipTrigger>\n      {tooltip && (\n        <TooltipContent align=\"start\">\n          <p>{tooltip}</p>\n        </TooltipContent>\n      )}\n    </Tooltip>\n  );\n}\n\nfunction PubSubIndicator({ state }: { state: PubSubState }) {\n  return <ConnectionIndicator {...connectionStates[state]} />;\n}\n\nfunction SyncIndicator({ state }: { state: SyncState }) {\n  return <ConnectionIndicator {...syncStates[state]} />;\n}\n\nfunction MessagesPanelToggle({ onClick }: { onClick?: () => void }) {\n  return (\n    <button className=\"rounded-md p-1\" onClick={onClick}>\n      <Mail size={14} />\n    </button>\n  );\n}\n\nexport function StatusBar({\n  className,\n  pubSubState,\n  syncState,\n  messagesCount,\n  onExpandClick,\n}: {\n  className?: string;\n  pubSubState?: PubSubState;\n  syncState?: SyncState;\n  messagesCount?: number;\n  onExpandClick?: () => void;\n}) {\n  return (\n    <TooltipProvider delayDuration={50}>\n      <div\n        className={cn(\n          \"fixed bottom-0 left-0 z-10 h-8 w-screen p-1 pl-2 pr-2 text-xs flex flex-row shadow-lg shadow-black/50\",\n          className,\n        )}\n      >\n        {pubSubState && (\n          <div>\n            <PubSubIndicator state={pubSubState} />\n          </div>\n        )}\n        {syncState && (\n          <div>\n            <SyncIndicator state={syncState} />\n          </div>\n        )}\n        <div className=\"grow\" />\n        <div className=\"flex flex-row items-center bg-black bg-opacity-50 rounded-md\">\n          {messagesCount && messagesCount > 0 ? (\n            <MessagesCounter tooltip=\"Total unseen messages\">\n              {messagesCount}\n            </MessagesCounter>\n          ) : null}\n          <MessagesPanelToggle onClick={onExpandClick} />\n        </div>\n      </div>\n    </TooltipProvider>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/target-select.tsx",
    "content": "import {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\";\nimport { SelectProps, SelectTriggerProps } from \"@radix-ui/react-select\";\nimport { knownTargets } from \"@/settings.json\";\n\ninterface TargetSelectProps extends SelectProps {\n  triggerProps: SelectTriggerProps;\n}\n\nexport default function TargetSelect({\n  triggerProps,\n  ...props\n}: TargetSelectProps) {\n  return (\n    <Select {...props}>\n      <SelectTrigger {...triggerProps}>\n        <SelectValue placeholder=\"Target\" />\n      </SelectTrigger>\n      <SelectContent>\n        {knownTargets.sort().map((item) => (\n          <SelectItem key={item} value={item}>\n            {item}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/ui/button.tsx",
    "content": "import * as React from \"react\";\nimport { VariantProps, cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n  \"active:scale-95 inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 dark:hover:bg-slate-800 dark:hover:text-slate-100 disabled:opacity-50 dark:focus:ring-slate-400 disabled:pointer-events-none dark:focus:ring-offset-slate-900 data-[state=open]:bg-slate-100 dark:data-[state=open]:bg-slate-800\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-slate-900 text-white hover:bg-slate-700 dark:bg-slate-50 dark:text-slate-900\",\n        destructive:\n          \"bg-red-500 text-white hover:bg-red-600 dark:hover:bg-red-600\",\n        outline:\n          \"bg-transparent border border-slate-200 hover:bg-slate-100 dark:border-slate-700 dark:text-slate-100\",\n        subtle:\n          \"bg-slate-100 text-slate-900 hover:bg-slate-200 dark:bg-slate-700 dark:text-slate-100\",\n        ghost:\n          \"bg-transparent hover:bg-slate-100 dark:hover:bg-slate-800 dark:text-slate-100 dark:hover:text-slate-100 data-[state=open]:bg-transparent dark:data-[state=open]:bg-transparent\",\n        link: \"bg-transparent dark:bg-transparent underline-offset-4 hover:underline text-slate-900 dark:text-slate-100 hover:bg-transparent dark:hover:bg-transparent\",\n      },\n      size: {\n        default: \"h-10 py-2 px-4\",\n        sm: \"h-9 px-2 rounded-md\",\n        lg: \"h-11 px-8 rounded-md\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  },\n);\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  ref?: React.Ref<HTMLButtonElement>;\n}\n\nconst Button = ({ className, variant, size, ref, ...props }: ButtonProps) => {\n  return (\n    <button\n      className={cn(buttonVariants({ variant, size, className }))}\n      ref={ref}\n      {...props}\n    />\n  );\n};\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n"
  },
  {
    "path": "packages/web/src/components/ui/command.tsx",
    "content": "\"use client\";\nimport * as React from \"react\";\nimport { DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive>) => (\n  <CommandPrimitive\n    ref={ref}\n    className={cn(\n      \"flex h-full w-full flex-col overflow-hidden rounded-lg bg-white dark:bg-slate-800\",\n      className,\n    )}\n    {...props}\n  />\n);\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n  return (\n    <Dialog {...props}>\n      <DialogContent className=\"overflow-hidden p-0 shadow-2xl [&_[dialog-overlay]]:bg-red-100\">\n        <Command className=\"[&_[cmdk-group]]:px-2 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-slate-500 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-input]]:h-12 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5\">\n          {children}\n        </Command>\n      </DialogContent>\n    </Dialog>\n  );\n};\n\nconst CommandInput = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) => (\n  <div\n    className=\"flex items-center border-b border-b-slate-100 px-4 dark:border-b-slate-700\"\n    cmdk-input-wrapper=\"\"\n  >\n    <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n    <CommandPrimitive.Input\n      ref={ref}\n      className={cn(\n        \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-slate-400 disabled:cursor-not-allowed disabled:opacity-50 dark:text-slate-50\",\n        className,\n      )}\n      {...props}\n    />\n  </div>\n);\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) => (\n  <CommandPrimitive.List\n    ref={ref}\n    className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n    {...props}\n  />\n);\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = ({\n  ref,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) => (\n  <CommandPrimitive.Empty\n    ref={ref}\n    className=\"py-6 text-center text-sm\"\n    {...props}\n  />\n);\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) => (\n  <CommandPrimitive.Group\n    ref={ref}\n    className={cn(\n      \"overflow-hidden py-3 px-2 text-slate-700 dark:text-slate-400 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:pb-1.5 [&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-semibold [&_[cmdk-group-heading]]:text-slate-900 [&_[cmdk-group-heading]]:dark:text-slate-300\",\n      className,\n    )}\n    {...props}\n  />\n);\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) => (\n  <CommandPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 h-px bg-slate-100 dark:bg-slate-700\", className)}\n    {...props}\n  />\n);\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) => (\n  <CommandPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-md py-1.5 px-2 text-sm font-medium outline-none aria-selected:bg-slate-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:aria-selected:bg-slate-700\",\n      className,\n    )}\n    {...props}\n  />\n);\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-slate-500\",\n        className,\n      )}\n      {...props}\n    />\n  );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n};\n\nexport type { CommandDialogProps };\n"
  },
  {
    "path": "packages/web/src/components/ui/dialog.tsx",
    "content": "import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = ({\n  children,\n  ...props\n}: DialogPrimitive.DialogPortalProps) => (\n  <DialogPrimitive.Portal {...props}>\n    <div className=\"fixed inset-0 z-50 flex items-start justify-center sm:items-center\">\n      {children}\n    </div>\n  </DialogPrimitive.Portal>\n);\nDialogPortal.displayName = DialogPrimitive.Portal.displayName;\n\nconst DialogOverlay = ({\n  className,\n  children,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) => (\n  <DialogPrimitive.Overlay\n    className={cn(\n      \"data-[state=closed]:animate-out data-[state=open]:fade-in data-[state=closed]:fade-out fixed inset-0 z-50 bg-black/50 transition-all duration-100\",\n      className,\n    )}\n    {...props}\n    ref={ref}\n  />\n);\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = ({\n  className,\n  children,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"animate-in data-[state=open]:fade-in-90 data-[state=open]:slide-in-from-bottom-10 sm:zoom-in-90 data-[state=open]:sm:slide-in-from-bottom-0 fixed z-50 grid w-full gap-4 rounded-b-lg bg-white p-6 sm:max-w-lg sm:rounded-lg\",\n        \"dark:bg-slate-900\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-slate-100 dark:focus:ring-slate-400 dark:focus:ring-offset-slate-900 dark:data-[state=open]:bg-slate-800\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n);\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-2 text-center sm:text-left overflow-auto\",\n      className,\n    )}\n    {...props}\n  />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className,\n    )}\n    {...props}\n  />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\n      \"text-lg font-semibold text-slate-900\",\n      \"dark:text-slate-50\",\n      className,\n    )}\n    {...props}\n  />\n);\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-slate-500\", \"dark:text-slate-400\", className)}\n    {...props}\n  />\n);\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n  Dialog,\n  DialogTrigger,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n};\n"
  },
  {
    "path": "packages/web/src/components/ui/dropdown-menu.tsx",
    "content": "import * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = ({\n  className,\n  inset,\n  children,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n  inset?: boolean;\n}) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center rounded-sm py-1.5 px-2 text-sm font-medium outline-none focus:bg-slate-100 data-[state=open]:bg-slate-100 dark:focus:bg-slate-700 dark:data-[state=open]:bg-slate-700\",\n      inset && \"pl-8\",\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto h-4 w-4\" />\n  </DropdownMenuPrimitive.SubTrigger>\n);\nDropdownMenuSubTrigger.displayName =\n  DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"animate-in slide-in-from-left-1 z-50 min-w-[8rem] overflow-hidden rounded-md border border-slate-100 bg-white p-1 text-slate-700 shadow-md dark:border-slate-800 dark:bg-slate-800 dark:text-slate-400\",\n      className,\n    )}\n    {...props}\n  />\n);\nDropdownMenuSubContent.displayName =\n  DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = ({\n  className,\n  sideOffset = 4,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) => (\n  <DropdownMenuPrimitive.Portal>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"animate-in data-[side=right]:slide-in-from-left-2 data-[side=left]:slide-in-from-right-2 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border border-slate-100 bg-white p-1 text-slate-700 shadow-md dark:border-slate-800 dark:bg-slate-800 dark:text-slate-400\",\n        className,\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n);\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = ({\n  className,\n  inset,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n  inset?: boolean;\n}) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 px-2 text-sm font-medium outline-none focus:bg-slate-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-700\",\n      inset && \"pl-8\",\n      className,\n    )}\n    {...props}\n  />\n);\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = ({\n  className,\n  children,\n  checked,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm font-medium outline-none focus:bg-slate-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-700\",\n      className,\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n);\nDropdownMenuCheckboxItem.displayName =\n  DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = ({\n  className,\n  children,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm font-medium outline-none focus:bg-slate-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-700\",\n      className,\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n);\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = ({\n  className,\n  inset,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n  inset?: boolean;\n}) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"px-2 py-1.5 text-sm font-semibold text-slate-900 dark:text-slate-300\",\n      inset && \"pl-8\",\n      className,\n    )}\n    {...props}\n  />\n);\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) => (\n  <DropdownMenuPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-slate-100 dark:bg-slate-700\", className)}\n    {...props}\n  />\n);\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-slate-500\",\n        className,\n      )}\n      {...props}\n    />\n  );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n};\n"
  },
  {
    "path": "packages/web/src/components/ui/floating-panel.tsx",
    "content": "import { Button, ButtonProps } from \"@/components/ui/button\";\nimport { Toggle } from \"@/components/ui/toggle\";\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn, store } from \"@/lib/utils\";\nimport { ToggleProps } from \"@radix-ui/react-toggle\";\nimport { TooltipPortal } from \"@radix-ui/react-tooltip\";\nimport {\n  PropsWithChildren,\n  ReactNode,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\";\nimport { Rnd } from \"react-rnd\";\n\nexport interface FloatingPanelButtonProps extends ButtonProps {\n  tooltip?: string;\n}\n\nexport function FloatingPanelButton({\n  children,\n  tooltip,\n  className,\n  ...props\n}: FloatingPanelButtonProps) {\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>\n        <Button\n          variant=\"ghost\"\n          aria-label={tooltip}\n          className={cn(\"h-4 mt-[1px] p-0.5 mr-1 focus:ring-0\", className)}\n          {...props}\n        >\n          {children}\n        </Button>\n      </TooltipTrigger>\n      {tooltip && (\n        <TooltipPortal>\n          <TooltipContent>\n            <p>{tooltip}</p>\n          </TooltipContent>\n        </TooltipPortal>\n      )}\n    </Tooltip>\n  );\n}\n\nexport interface FloatingPanelToggleProps extends ToggleProps {\n  tooltip?: string;\n}\n\nexport function FloatingPanelToggle({\n  children,\n  tooltip,\n  className,\n  ...props\n}: FloatingPanelToggleProps) {\n  return (\n    <Tooltip>\n      <TooltipTrigger>\n        <Toggle\n          asChild\n          variant=\"outline\"\n          aria-label={tooltip}\n          className={cn(\"h-4 p-0.5 mr-1\", className)}\n          {...props}\n        >\n          {children}\n        </Toggle>\n      </TooltipTrigger>\n      {tooltip && (\n        <TooltipPortal>\n          <TooltipContent>\n            <p>{tooltip}</p>\n          </TooltipContent>\n        </TooltipPortal>\n      )}\n    </Tooltip>\n  );\n}\n\ntype Size = {\n  width: number;\n  height: number;\n};\n\ntype Position = {\n  x: number;\n  y: number;\n};\n\nfunction clamp(n: number): number {\n  return Math.min(Math.max(n, 0), 1);\n}\n\nexport interface FloatingPanelProps extends PropsWithChildren {\n  className?: string;\n  id: string;\n  header?: string;\n  headerToolbar?: ReactNode;\n  defaultSize?: Size;\n  defaultPosition?: Position;\n}\n\nexport function FloatingPanel({\n  children,\n  className,\n  id,\n  header,\n  headerToolbar,\n  defaultSize = {\n    width: 0.4,\n    height: 0.4,\n  },\n  defaultPosition = {\n    x: 0.55,\n    y: 0.55,\n  },\n}: FloatingPanelProps) {\n  const [resizeTriggered, setResizeTriggered] = useState(false);\n\n  const headerClassName = useMemo(() => `${id}-header`, [id]);\n  const sizeSettingId = useMemo(() => `panel:${id}:size`, [id]);\n  const posSettingId = useMemo(() => `panel:${id}:position`, [id]);\n\n  // Size and position are relative to window.innerWidth and window.innerHeight\n  const [size, setSize] = useState<Size>(store.get(sizeSettingId, defaultSize));\n  const [position, setPosition] = useState<Position>(\n    store.get(posSettingId, defaultPosition),\n  );\n\n  // Save position and size\n  useEffect(() => store.set(sizeSettingId, size), [size]);\n  useEffect(() => store.set(posSettingId, position), [position]);\n\n  // Resize trigger event\n  useEffect(() => {\n    const resizeHandler = () => setResizeTriggered((r) => !r);\n    window.addEventListener(\"resize\", resizeHandler);\n    return () => window.removeEventListener(\"resize\", resizeHandler);\n  }, []);\n\n  const absSize = useMemo(\n    () => ({\n      width: clamp(size.width) * innerWidth,\n      height: clamp(size.height) * innerHeight,\n    }),\n    [size, resizeTriggered],\n  );\n\n  const absPosition = useMemo(\n    () => ({\n      x: clamp(position.x) * innerWidth,\n      y: clamp(position.y) * innerHeight,\n    }),\n    [position, resizeTriggered],\n  );\n\n  return (\n    <Rnd\n      className={cn(\n        \"overflow-hidden rounded-md pl-1 pr-1 pb-2 border border-gray-800 shadow-lg shadow-black/50 text-slate-50 font-mono text-xs bg-black bg-opacity-70 z-10\",\n        className,\n      )}\n      size={absSize}\n      position={absPosition}\n      dragHandleClassName={headerClassName}\n      bounds=\"window\"\n      onDrag={(e) => e.preventDefault()}\n      onDragStop={(_e, d) => {\n        const { x, y } = d;\n        setPosition({\n          x: clamp(x / innerWidth),\n          y: clamp(y / innerHeight),\n        });\n      }}\n      onResizeStop={(_e, _direction, ref, _delta, position) => {\n        setSize({\n          width: clamp(+ref.style.width.replace(\"px\", \"\") / innerWidth),\n          height: clamp(+ref.style.height.replace(\"px\", \"\") / innerHeight),\n        });\n        setPosition({\n          x: clamp(position.x / innerWidth),\n          y: clamp(position.y / innerHeight),\n        });\n      }}\n    >\n      <div className=\"w-full h-full overflow-x-clip\">\n        <div\n          className={cn(\n            headerClassName,\n            \"font-bold sticky top-0 cursor-move pb-1\",\n          )}\n        >\n          <div className=\"flex flex-row\">\n            <span className=\"mr-2\">{header}</span>\n            <TooltipProvider delayDuration={100}>\n              {headerToolbar}\n            </TooltipProvider>\n          </div>\n        </div>\n        {children}\n      </div>\n    </Rnd>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/ui/input.tsx",
    "content": "import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface InputProps\n  extends React.InputHTMLAttributes<HTMLInputElement> {\n  ref?: React.Ref<HTMLInputElement>;\n}\n\nconst Input = ({ className, ref, ...props }: InputProps) => {\n  return (\n    <input\n      className={cn(\n        \"flex h-10 w-full rounded-md border border-slate-300 bg-transparent py-2 px-3 text-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-slate-700 dark:text-slate-50 dark:focus:ring-slate-400 dark:focus:ring-offset-slate-900\",\n        className,\n      )}\n      ref={ref}\n      {...props}\n    />\n  );\n};\nInput.displayName = \"Input\";\n\nexport { Input };\n"
  },
  {
    "path": "packages/web/src/components/ui/label.tsx",
    "content": "\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Label = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n      className,\n    )}\n    {...props}\n  />\n);\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"
  },
  {
    "path": "packages/web/src/components/ui/menubar.tsx",
    "content": "import * as React from \"react\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst MenubarMenu = MenubarPrimitive.Menu;\n\nconst MenubarGroup = MenubarPrimitive.Group;\n\nconst MenubarPortal = MenubarPrimitive.Portal;\n\nconst MenubarSub = MenubarPrimitive.Sub;\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup;\n\nconst Menubar = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) => (\n  <MenubarPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"flex h-8 items-center space-x-1  border-slate-100 bg-white dark:border-slate-800 dark:bg-slate-900 bg-opacity-50 dark:bg-opacity-50\",\n      className,\n    )}\n    {...props}\n  />\n);\nMenubar.displayName = MenubarPrimitive.Root.displayName;\n\nconst MenubarTrigger = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) => (\n  <MenubarPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center rounded-[0.2rem] py-1.5 px-3 text-sm font-medium outline-none focus:bg-slate-100 data-[state=open]:bg-slate-100 dark:focus:bg-slate-700 dark:data-[state=open]:bg-slate-700\",\n      className,\n    )}\n    {...props}\n  />\n);\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;\n\nconst MenubarSubTrigger = ({\n  className,\n  inset,\n  children,\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n  inset?: boolean;\n}) => (\n  <MenubarPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center rounded-sm py-1.5 px-2 text-sm font-medium outline-none focus:bg-slate-100 data-[state=open]:bg-slate-100 dark:focus:bg-slate-700 dark:data-[state=open]:bg-slate-700\",\n      inset && \"pl-8\",\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto h-4 w-4\" />\n  </MenubarPrimitive.SubTrigger>\n);\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;\n\nconst MenubarSubContent = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) => (\n  <MenubarPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"animate-in slide-in-from-left-1 z-50 min-w-[8rem] overflow-hidden rounded-md border border-slate-100 bg-white p-1 shadow-md dark:border-slate-700 dark:bg-slate-800\",\n      className,\n    )}\n    {...props}\n  />\n);\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;\n\nconst MenubarContent = ({\n  className,\n  align = \"start\",\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) => (\n  <MenubarPrimitive.Portal>\n    <MenubarPrimitive.Content\n      ref={ref}\n      align={align}\n      className={cn(\n        \"animate-in slide-in-from-top-1 z-50 min-w-[12rem] overflow-hidden rounded-md border border-slate-100 bg-white p-1 text-slate-700 shadow-md dark:border-slate-800 dark:bg-slate-800 dark:text-slate-400\",\n        className,\n      )}\n      {...props}\n    />\n  </MenubarPrimitive.Portal>\n);\nMenubarContent.displayName = MenubarPrimitive.Content.displayName;\n\nconst MenubarItem = ({\n  className,\n  inset,\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n  inset?: boolean;\n}) => (\n  <MenubarPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1 px-1 text-sm font-medium outline-none focus:bg-slate-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-700\",\n      inset && \"pl-8\",\n      className,\n    )}\n    {...props}\n  />\n);\nMenubarItem.displayName = MenubarPrimitive.Item.displayName;\n\nconst MenubarCheckboxItem = ({\n  className,\n  children,\n  checked,\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) => (\n  <MenubarPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm font-medium outline-none focus:bg-slate-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-700\",\n      className,\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <MenubarPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </MenubarPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </MenubarPrimitive.CheckboxItem>\n);\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;\n\nconst MenubarRadioItem = ({\n  className,\n  children,\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) => (\n  <MenubarPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm font-medium outline-none focus:bg-slate-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-700\",\n      className,\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <MenubarPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </MenubarPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </MenubarPrimitive.RadioItem>\n);\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;\n\nconst MenubarLabel = ({\n  className,\n  inset,\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n  inset?: boolean;\n}) => (\n  <MenubarPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"px-2 py-1.5 text-sm font-semibold text-slate-900 dark:text-slate-300\",\n      inset && \"pl-8\",\n      className,\n    )}\n    {...props}\n  />\n);\n\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName;\n\nconst MenubarSeparator = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) => (\n  <MenubarPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-slate-100 dark:bg-slate-700\", className)}\n    {...props}\n  />\n);\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;\n\nconst MenubarShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-slate-500\",\n        className,\n      )}\n      {...props}\n    />\n  );\n};\nMenubarShortcut.displayname = \"MenubarShortcut\";\n\nexport {\n  Menubar,\n  MenubarMenu,\n  MenubarTrigger,\n  MenubarContent,\n  MenubarItem,\n  MenubarSeparator,\n  MenubarLabel,\n  MenubarCheckboxItem,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarPortal,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarGroup,\n  MenubarSub,\n  MenubarShortcut,\n};\n"
  },
  {
    "path": "packages/web/src/components/ui/popover.tsx",
    "content": "\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = ({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ref,\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) => (\n  <PopoverPrimitive.Portal>\n    <PopoverPrimitive.Content\n      ref={ref}\n      align={align}\n      sideOffset={sideOffset}\n      className={cn(\n        \"animate-in data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2 data-[side=right]:slide-in-from-left-2 data-[side=left]:slide-in-from-right-2 z-50 w-72 rounded-md border border-slate-100 bg-white p-4 shadow-md outline-none dark:border-slate-800 dark:bg-slate-800\",\n        className,\n      )}\n      {...props}\n    />\n  </PopoverPrimitive.Portal>\n);\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n"
  },
  {
    "path": "packages/web/src/components/ui/select.tsx",
    "content": "\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = ({\n  className,\n  children,\n  ref,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger>) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"flex h-10 w-full items-center justify-between rounded-md border border-slate-300 bg-transparent py-2 px-3 text-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-slate-700 dark:text-slate-50 dark:focus:ring-slate-400 dark:focus:ring-offset-slate-900\",\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronDown className=\"h-4 w-4 opacity-50\" />\n  </SelectPrimitive.Trigger>\n);\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectContent = ({\n  className,\n  children,\n  ref,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) => (\n  <SelectPrimitive.Portal>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"animate-in fade-in-80 relative z-50 min-w-[8rem] overflow-hidden rounded-md border border-slate-100 bg-white text-slate-700 shadow-md dark:border-slate-800 dark:bg-slate-800 dark:text-slate-400\",\n        className,\n      )}\n      {...props}\n    >\n      <SelectPrimitive.Viewport className=\"p-1\">\n        {children}\n      </SelectPrimitive.Viewport>\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n);\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"py-1.5 pr-2 pl-8 text-sm font-semibold text-slate-900 dark:text-slate-300\",\n      className,\n    )}\n    {...props}\n  />\n);\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = ({\n  className,\n  children,\n  ref,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pr-2 pl-8 text-sm font-medium outline-none focus:bg-slate-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-700\",\n      className,\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <SelectPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </SelectPrimitive.ItemIndicator>\n    </span>\n\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n);\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-slate-100 dark:bg-slate-700\", className)}\n    {...props}\n  />\n);\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n  Select,\n  SelectGroup,\n  SelectValue,\n  SelectTrigger,\n  SelectContent,\n  SelectLabel,\n  SelectItem,\n  SelectSeparator,\n};\n"
  },
  {
    "path": "packages/web/src/components/ui/toast.tsx",
    "content": "import * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { VariantProps, cva } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof ToastPrimitives.Viewport>) => (\n  <ToastPrimitives.Viewport\n    ref={ref}\n    className={cn(\n      \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:top-auto sm:bottom-0 sm:right-0 sm:flex-col md:max-w-[420px]\",\n      className,\n    )}\n    {...props}\n  />\n);\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n  \"data-[swipe=move]:transition-none grow-1 group relative pointer-events-auto flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full mt-4 data-[state=closed]:slide-out-to-right-full dark:border-slate-700 last:mt-0 sm:last:mt-4\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-white border-slate-200 dark:bg-slate-800 dark:border-slate-700\",\n        warning:\n          \"group warning bg-yellow-700 text-white border-yellow-600 dark:border-yellow-600\",\n        destructive:\n          \"group destructive bg-red-700 text-white border-red-600 dark:border-red-600\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  },\n);\n\nconst Toast = ({\n  className,\n  variant,\n  ref,\n  ...props\n}: React.ComponentProps<typeof ToastPrimitives.Root> &\n  VariantProps<typeof toastVariants>) => {\n  return (\n    <ToastPrimitives.Root\n      ref={ref}\n      className={cn(toastVariants({ variant }), className)}\n      {...props}\n    />\n  );\n};\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof ToastPrimitives.Action>) => (\n  <ToastPrimitives.Action\n    ref={ref}\n    className={cn(\n      \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border border-slate-200 bg-transparent px-3 text-sm font-medium transition-colors hover:bg-slate-100 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-red-100 group-[.destructive]:hover:border-slate-50 group-[.destructive]:hover:bg-red-100 group-[.destructive]:hover:text-red-600 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600 dark:border-slate-700 dark:text-slate-100 dark:hover:bg-slate-700 dark:hover:text-slate-100 dark:focus:ring-slate-400 dark:focus:ring-offset-slate-900 dark:data-[state=open]:bg-slate-800\",\n      className,\n    )}\n    {...props}\n  />\n);\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof ToastPrimitives.Close>) => (\n  <ToastPrimitives.Close\n    ref={ref}\n    className={cn(\n      \"absolute top-2 right-2 rounded-md p-1 text-slate-500 opacity-0 transition-opacity hover:text-slate-900 focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600 dark:hover:text-slate-50\",\n      className,\n    )}\n    toast-close=\"\"\n    {...props}\n  >\n    <X className=\"h-4 w-4\" />\n  </ToastPrimitives.Close>\n);\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof ToastPrimitives.Title>) => (\n  <ToastPrimitives.Title\n    ref={ref}\n    className={cn(\"text-sm font-semibold\", className)}\n    {...props}\n  />\n);\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = ({\n  className,\n  ref,\n  ...props\n}: React.ComponentProps<typeof ToastPrimitives.Description>) => (\n  <ToastPrimitives.Description\n    ref={ref}\n    className={cn(\"text-sm opacity-90 overflow-auto\", className)}\n    {...props}\n  />\n);\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nexport {\n  type ToastProps,\n  type ToastActionElement,\n  ToastProvider,\n  ToastViewport,\n  Toast,\n  ToastTitle,\n  ToastDescription,\n  ToastClose,\n  ToastAction,\n};\n"
  },
  {
    "path": "packages/web/src/components/ui/toaster.tsx",
    "content": "import { useToast } from \"../../hooks/use-toast\";\nimport {\n  Toast,\n  ToastClose,\n  ToastDescription,\n  ToastProvider,\n  ToastTitle,\n  ToastViewport,\n} from \"../../components/ui/toast\";\n\nexport function Toaster() {\n  const { toasts } = useToast();\n\n  return (\n    <ToastProvider>\n      {toasts.map(function ({ id, title, description, action, ...props }) {\n        return (\n          <Toast key={id} {...props}>\n            <div className=\"grid gap-1\">\n              {title && <ToastTitle>{title}</ToastTitle>}\n              {description && (\n                <ToastDescription>{description}</ToastDescription>\n              )}\n            </div>\n            {action}\n            <ToastClose />\n          </Toast>\n        );\n      })}\n      <ToastViewport />\n    </ToastProvider>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/ui/toggle.tsx",
    "content": "\"use client\";\n\nimport * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { VariantProps, cva } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst toggleVariants = cva(\n  \"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors data-[state=on]:bg-slate-200 dark:hover:bg-slate-800 dark:data-[state=on]:bg-slate-700 focus:outline-none dark:text-slate-100 focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:focus:ring-offset-slate-900 hover:bg-slate-100  dark:hover:text-slate-100 dark:data-[state=on]:text-slate-100\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        outline:\n          \"bg-transparent border border-slate-200 hover:bg-slate-100 dark:border-slate-700\",\n      },\n      size: {\n        default: \"h-10 px-3\",\n        sm: \"h-9 px-2.5\",\n        lg: \"h-11 px-5\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  },\n);\n\nconst Toggle = ({\n  className,\n  variant,\n  size,\n  ref,\n  ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n  VariantProps<typeof toggleVariants>) => (\n  <TogglePrimitive.Root\n    ref={ref}\n    className={cn(toggleVariants({ variant, size, className }))}\n    {...props}\n  />\n);\n\nToggle.displayName = TogglePrimitive.Root.displayName;\n\nexport { Toggle, toggleVariants };\n"
  },
  {
    "path": "packages/web/src/components/ui/tooltip.tsx",
    "content": "\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = ({ ...props }) => <TooltipPrimitive.Root {...props} />;\nTooltip.displayName = TooltipPrimitive.Tooltip.displayName;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = ({\n  className,\n  sideOffset = 4,\n  ref,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) => (\n  <TooltipPrimitive.Content\n    ref={ref}\n    sideOffset={sideOffset}\n    className={cn(\n      \"animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=top]:slide-in-from-bottom-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 z-50 overflow-hidden rounded-md border border-slate-100 bg-white px-3 py-1.5 text-sm text-slate-700 shadow-md dark:border-slate-800 dark:bg-slate-800 dark:text-slate-400\",\n      className,\n    )}\n    {...props}\n  />\n);\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"
  },
  {
    "path": "packages/web/src/components/username-dialog.tsx",
    "content": "import {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { DialogProps } from \"@radix-ui/react-dialog\";\nimport { useState, FormEvent, useEffect } from \"react\";\n\ninterface UsernameDialogProps extends DialogProps {\n  name?: string;\n  defaultValue?: string;\n  onAccept?: (name: string) => void;\n}\n\nexport default function UsernameDialog({\n  name,\n  onAccept,\n  ...props\n}: UsernameDialogProps) {\n  const [nameValue, setNameValue] = useState(\"\");\n\n  const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    if (onAccept && nameValue) {\n      onAccept(nameValue);\n    }\n    props.onOpenChange && props.onOpenChange(false);\n  };\n\n  useEffect(() => {\n    if (!props.open) setNameValue(\"\");\n  }, [props.open]);\n\n  return (\n    <Dialog {...props}>\n      <DialogContent>\n        <form onSubmit={handleSubmit}>\n          <DialogHeader>\n            <DialogTitle>Change user name</DialogTitle>\n            <DialogDescription>\n              It will be shown below your cursor.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"grid gap-4 py-4\">\n            <div className=\"grid grid-cols-4 items-center gap-4\">\n              <Label htmlFor=\"name\" className=\"text-right\">\n                Name\n              </Label>\n              <Input\n                id=\"name\"\n                value={nameValue}\n                placeholder={name || \"Enter a username... \"}\n                className=\"col-span-3\"\n                onChange={(e) => setNameValue(e.target.value.trim())}\n              />\n            </div>\n          </div>\n          <DialogFooter>\n            <Button type=\"submit\">Save changes</Button>\n          </DialogFooter>\n        </form>\n      </DialogContent>\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/components/web-target-iframe.tsx",
    "content": "import { useQuery } from \"@/hooks/use-query\";\nimport { EvalMessage, Session } from \"@flok-editor/session\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { DisplaySettings } from \"@/lib/display-settings\";\n\nexport interface WebTargetIframeProps {\n  target: string;\n  session: Session | null;\n  displaySettings: DisplaySettings;\n}\n\nexport const WebTargetIframe = ({\n  target,\n  session,\n  displaySettings,\n}: WebTargetIframeProps) => {\n  const ref = useRef<HTMLIFrameElement | null>(null);\n\n  const query = useQuery();\n  const noWebEval = query.get(\"noWebEval\")?.split(\",\") || [];\n  const [firstEval, setFirstEval] = useState(true);\n\n  // Check if we should load the target\n  if (noWebEval.includes(target) || noWebEval.includes(\"*\")) {\n    return null;\n  }\n\n  // Handle evaluation messages from session\n  useEffect(() => {\n    if (!session || !ref.current) return;\n\n    const handler = (msg: EvalMessage) => {\n      const payload = {\n        type: \"eval\",\n        body: msg,\n      };\n      ref.current?.contentWindow?.postMessage(payload, \"*\");\n      setFirstEval(false);\n    };\n\n    session.on(`eval:${target}`, handler);\n\n    return () => {\n      session.off(`eval:${target}`, handler);\n    };\n  }, [session, ref]);\n\n  // Handle user interactions\n  useEffect(() => {\n    const handleUserInteraction = () => {\n      if (!ref.current) return;\n      const interactionMessage = { type: \"user-interaction\" };\n      ref.current.contentWindow?.postMessage(interactionMessage, \"*\");\n      setFirstEval(false);\n    };\n\n    window.addEventListener(\"click\", handleUserInteraction);\n    window.addEventListener(\"keydown\", handleUserInteraction);\n\n    return () => {\n      window.removeEventListener(\"click\", handleUserInteraction);\n      window.removeEventListener(\"keydown\", handleUserInteraction);\n    };\n  }, [ref]);\n\n  // Post display settings to iframe when the settings change, or when the\n  // first eval occurs. The latter is a bit of a hack that prevents us from\n  // having to detect when the iframe is ready to receive messages (adding\n  // `ref` to the useEffect() dependencies doesn't do the trick), and it may\n  // break if flok begins eval'ing on load (currently nothing is eval'd on\n  // load).\n  useEffect(() => {\n    const message = {\n      type: \"settings\",\n      body: { displaySettings },\n    };\n    ref.current?.contentWindow?.postMessage(message, \"*\");\n  }, [displaySettings, firstEval]);\n\n  return (\n    <iframe\n      ref={ref}\n      src={`/frames/${target}`}\n      className=\"absolute inset-0 w-full h-full\"\n    />\n  );\n};\n"
  },
  {
    "path": "packages/web/src/components/welcome-dialog.tsx",
    "content": "import { Button } from \"@/components/ui/button\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { DialogProps } from \"@radix-ui/react-dialog\";\n\ninterface ConfigureDialogProps extends DialogProps {\n  onAccept?: (targets: string[]) => void;\n}\n\nexport function WelcomeDialog({\n  onOpenChange,\n  ...props\n}: ConfigureDialogProps) {\n  return (\n    <Dialog {...props}>\n      <DialogContent className=\"sm:max-w-xl\">\n        <DialogHeader>\n          <DialogTitle>\n            <img\n              src=\"/flok.svg\"\n              alt=\"Flok logo\"\n              className=\"w-8 h-8 mr-2 mt-[-8px] inline-block\"\n            />\n            Welcome to Flok! ✨\n          </DialogTitle>\n          <DialogDescription>\n            This is a collaborative live coding editor. You can invite your\n            friends to live code together in real-time, using a number of\n            languages and tools.\n          </DialogDescription>\n          <DialogDescription>\n            Read more{\" \"}\n            <a\n              className=\"text-gray-300 font-bold\"\n              href=\"https://github.com/munshkr/flok\"\n              target=\"_blank\"\n            >\n              here\n            </a>\n            .\n          </DialogDescription>\n        </DialogHeader>\n        <DialogFooter>\n          <Button onClick={() => onOpenChange && onOpenChange(false)}>\n            Close\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/error-page.tsx",
    "content": "import { useRouteError, isRouteErrorResponse } from \"react-router-dom\";\n\nconst ErrorMessage = ({ value }: { value: unknown }) => {\n  if (isRouteErrorResponse(value)) {\n    return (\n      <p>\n        {value.status} {value.statusText}\n      </p>\n    );\n  }\n\n  return <p>{String(value) || \"Unknown Error\"}</p>;\n};\n\nexport default function ErrorPage() {\n  const error = useRouteError();\n  console.error(error);\n\n  return (\n    <div id=\"error-page\">\n      <h1>Oops!</h1>\n      <p>Sorry, an unexpected error has occurred.</p>\n      <ErrorMessage value={error} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/hooks/use-animation-frame.tsx",
    "content": "import { useRef, useEffect, useCallback } from \"react\";\n\nexport function useAnimationFrame(callback: (timestamp: number) => void) {\n  const requestId = useRef<number>();\n\n  const animate = useCallback(\n    (timestamp: number) => {\n      callback(timestamp);\n      requestId.current = requestAnimationFrame(animate);\n    },\n    [callback],\n  );\n\n  useEffect(() => {\n    requestId.current = requestAnimationFrame(animate);\n\n    return () => {\n      cancelAnimationFrame(requestId.current!);\n    };\n  }, [animate]);\n}\n"
  },
  {
    "path": "packages/web/src/hooks/use-eval-handler.tsx",
    "content": "import { EvalMessage } from \"@flok-editor/session\";\nimport { useEffect } from \"react\";\n\nexport function useEvalHandler(callback: (message: EvalMessage) => void) {\n  useEffect(() => {\n    const handleEval = (event: MessageEvent) => {\n      if (event.data.type === \"eval\") {\n        const msg = event.data.body as EvalMessage;\n        callback(msg);\n      }\n    };\n\n    window.addEventListener(\"message\", handleEval);\n\n    return () => {\n      window.removeEventListener(\"message\", handleEval);\n    };\n  }, [callback]);\n\n  return;\n}\n"
  },
  {
    "path": "packages/web/src/hooks/use-hash.tsx",
    "content": "import { useCallback, useEffect, useState } from \"react\";\n\ntype HashRecord = Record<string, string | null>;\n\nconst fromObject = (obj: HashRecord) =>\n  Object.entries(obj)\n    .filter(([_, value]) => value != null)\n    .map(([key, value]) => `${key}=${encodeURIComponent(value!)}`)\n    .join(\"&\");\n\nconst toObject = (hash: string) =>\n  hash\n    .slice(1)\n    .split(\"&\")\n    .reduce((acc, curr) => {\n      const [key, value] = curr.split(\"=\");\n      return { ...acc, [key]: decodeURIComponent(value) };\n    }, {});\n\nexport function useHash(): [\n  HashRecord,\n  (newHash: HashRecord | React.SetStateAction<HashRecord>) => void,\n] {\n  const [hash, setHash] = useState<HashRecord>(() =>\n    toObject(window.location.hash),\n  );\n\n  const hashChangeHandler = useCallback(() => {\n    setHash(toObject(window.location.hash));\n  }, []);\n\n  useEffect(() => {\n    window.addEventListener(\"hashchange\", hashChangeHandler);\n    return () => {\n      window.removeEventListener(\"hashchange\", hashChangeHandler);\n    };\n  }, []);\n\n  const updateHash = useCallback(\n    (newHash: HashRecord | React.SetStateAction<HashRecord>) => {\n      if (typeof newHash === \"function\") newHash = newHash(hash);\n      window.location.hash = fromObject(newHash);\n    },\n    [hash],\n  );\n\n  return [hash, updateHash];\n}\n"
  },
  {
    "path": "packages/web/src/hooks/use-query.tsx",
    "content": "import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport function useQuery() {\n  const { search } = useLocation();\n\n  return useMemo(() => new URLSearchParams(search), [search]);\n}\n"
  },
  {
    "path": "packages/web/src/hooks/use-settings.tsx",
    "content": "import { SettingsMessage } from \"@/lib/settings\";\nimport { useEffect } from \"react\";\n\nexport function useSettings(callback: (message: SettingsMessage) => void) {\n  useEffect(() => {\n    const handleMessage = (event: MessageEvent) => {\n      if (event.data.type !== \"settings\") return;\n      callback(event.data.body as SettingsMessage);\n    };\n\n    window.addEventListener(\"message\", handleMessage);\n\n    return () => {\n      window.removeEventListener(\"message\", handleMessage);\n    };\n  }, [callback]);\n\n  return;\n}\n"
  },
  {
    "path": "packages/web/src/hooks/use-shortcut.tsx",
    "content": "import { useEffect } from \"react\";\n\nconst modifierMethods: { [key: string]: keyof KeyboardEvent } = {\n  control: \"ctrlKey\",\n  alt: \"altKey\",\n  meta: \"metaKey\",\n  shift: \"shiftKey\",\n};\nconst allModifiers = Object.keys(modifierMethods);\n\nexport function useShortcut(\n  keyShortcuts: string[],\n  handler: (e: KeyboardEvent) => void,\n  deps: any[] = [],\n  preventDefault: boolean = true,\n) {\n  keyShortcuts.forEach((keyShortcut) => {\n    const parts = keyShortcut.toLowerCase().split(\"-\");\n    const modifiers = parts.filter((p) => allModifiers.includes(p));\n    const keys = parts.filter((p) => !allModifiers.includes(p));\n\n    if (keys.length > 1) {\n      console.error(\"Shortcut\", keyShortcut, \"has more than one key:\", keys);\n      return;\n    }\n\n    if (keys.length === 0) {\n      console.error(\"Shortcut\", keyShortcut, \"has no key\");\n      return;\n    }\n\n    const key = keys[0];\n\n    useEffect(() => {\n      const down = (e: KeyboardEvent) => {\n        const modifiersActive = allModifiers.every((m) => {\n          const prop = modifierMethods[m];\n          return modifiers.includes(m) ? e[prop] : !e[prop];\n        });\n        if (e.key === key && modifiersActive) {\n          if (preventDefault) e.preventDefault();\n          handler(e);\n        }\n      };\n\n      document.addEventListener(\"keydown\", down);\n      return () => document.removeEventListener(\"keydown\", down);\n    }, [keyShortcut, ...deps]);\n  });\n}\n"
  },
  {
    "path": "packages/web/src/hooks/use-strudel-codemirror-extensions.ts",
    "content": "import { Session } from \"@flok-editor/session\";\nimport {\n  highlightMiniLocations,\n  updateMiniLocations,\n} from \"@strudel/codemirror\";\nimport { ReactCodeMirrorRef } from \"@uiw/react-codemirror\";\nimport { useCallback } from \"react\";\nimport { useAnimationFrame } from \"./use-animation-frame\";\nimport { forEachDocumentContext } from \"@/lib/utils\";\n\nexport function useStrudelCodemirrorExtensions(\n  session: Session | null,\n  editorRefs: React.RefObject<ReactCodeMirrorRef>[],\n) {\n  useAnimationFrame(\n    useCallback(() => {\n      if (!session) return;\n\n      forEachDocumentContext(\n        (ctx, editor) => {\n          const view = editor?.view;\n          if (!view) return;\n          updateMiniLocations(view, ctx.miniLocations || []);\n          highlightMiniLocations(view, ctx.phase || 0, ctx.haps || []);\n        },\n        session,\n        editorRefs,\n      );\n    }, [session, editorRefs]),\n  );\n}\n"
  },
  {
    "path": "packages/web/src/hooks/use-toast.tsx",
    "content": "// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport { ToastActionElement, type ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 3;\nconst TOAST_REMOVE_DELAY = 1000;\n\ntype ToasterToast = ToastProps & {\n  id: string;\n  title?: React.ReactNode;\n  description?: React.ReactNode;\n  action?: ToastActionElement;\n};\n\nconst actionTypes = {\n  ADD_TOAST: \"ADD_TOAST\",\n  UPDATE_TOAST: \"UPDATE_TOAST\",\n  DISMISS_TOAST: \"DISMISS_TOAST\",\n  REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n  count = (count + 1) % Number.MAX_VALUE;\n  return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n  | {\n      type: ActionType[\"ADD_TOAST\"];\n      toast: ToasterToast;\n    }\n  | {\n      type: ActionType[\"UPDATE_TOAST\"];\n      toast: Partial<ToasterToast>;\n    }\n  | {\n      type: ActionType[\"DISMISS_TOAST\"];\n      toastId?: ToasterToast[\"id\"];\n    }\n  | {\n      type: ActionType[\"REMOVE_TOAST\"];\n      toastId?: ToasterToast[\"id\"];\n    };\n\ninterface State {\n  toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n  if (toastTimeouts.has(toastId)) {\n    return;\n  }\n\n  const timeout = setTimeout(() => {\n    toastTimeouts.delete(toastId);\n    dispatch({\n      type: \"REMOVE_TOAST\",\n      toastId: toastId,\n    });\n  }, TOAST_REMOVE_DELAY);\n\n  toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n  switch (action.type) {\n    case \"ADD_TOAST\":\n      return {\n        ...state,\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n      };\n\n    case \"UPDATE_TOAST\":\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === action.toast.id ? { ...t, ...action.toast } : t,\n        ),\n      };\n\n    case \"DISMISS_TOAST\": {\n      const { toastId } = action;\n\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\n      // but I'll keep it here for simplicity\n      if (toastId) {\n        addToRemoveQueue(toastId);\n      } else {\n        state.toasts.forEach((toast) => {\n          addToRemoveQueue(toast.id);\n        });\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === toastId || toastId === undefined\n            ? {\n                ...t,\n                open: false,\n              }\n            : t,\n        ),\n      };\n    }\n    case \"REMOVE_TOAST\":\n      if (action.toastId === undefined) {\n        return {\n          ...state,\n          toasts: [],\n        };\n      }\n      return {\n        ...state,\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\n      };\n  }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n  memoryState = reducer(memoryState, action);\n  listeners.forEach((listener) => {\n    listener(memoryState);\n  });\n}\n\ninterface Toast extends Omit<ToasterToast, \"id\"> {}\n\nfunction toast({ ...props }: Toast) {\n  const id = genId();\n\n  const update = (props: ToasterToast) =>\n    dispatch({\n      type: \"UPDATE_TOAST\",\n      toast: { ...props, id },\n    });\n  const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n  dispatch({\n    type: \"ADD_TOAST\",\n    toast: {\n      ...props,\n      id,\n      open: true,\n      onOpenChange: (open) => {\n        if (!open) dismiss();\n      },\n    },\n  });\n\n  return {\n    id: id,\n    dismiss,\n    update,\n  };\n}\n\nfunction useToast() {\n  const [state, setState] = React.useState<State>(memoryState);\n\n  React.useEffect(() => {\n    listeners.push(setState);\n    return () => {\n      const index = listeners.indexOf(setState);\n      if (index > -1) {\n        listeners.splice(index, 1);\n      }\n    };\n  }, [state]);\n\n  return {\n    ...state,\n    toast,\n    dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n  };\n}\n\nexport { useToast, toast };\n"
  },
  {
    "path": "packages/web/src/hooks/use-web-target.tsx",
    "content": "import type { EvalMessage, Session } from \"@flok-editor/session\";\nimport { useEffect, useState } from \"react\";\nimport { useQuery } from \"./use-query\";\n\nexport function useWebTarget<Controller>(\n  target: string,\n  session: Session | null,\n  load: () => Promise<Controller | null>,\n  {\n    deps,\n    loadIf,\n    onEval,\n    onError,\n  }: {\n    deps?: any[];\n    loadIf?: (deps: any[]) => boolean;\n    onEval?: (instance: Controller, evalMsg: EvalMessage) => void;\n    onError?: (err: unknown) => void;\n  },\n) {\n  const query = useQuery();\n  const noWebEval = query.get(\"noWebEval\")?.split(\",\") || [];\n\n  // Check if we should load the target\n  if (noWebEval.includes(target) || noWebEval.includes(\"*\")) {\n    return { instance: null };\n  }\n\n  const [instance, setInstance] = useState<Controller | null>(null);\n\n  // Load and initialize external library\n  useEffect(() => {\n    if (!session || instance) return;\n    if (loadIf && deps && !loadIf(deps)) return;\n\n    let abort = false;\n\n    const _load = async () => {\n      const instance = await load();\n      if (!abort && instance) setInstance(instance);\n    };\n\n    _load().catch((err) => onError && onError(err));\n\n    return () => {\n      abort = true;\n    };\n  }, [session, instance, ...(deps || [])]);\n\n  // Handle eval messages\n  useEffect(() => {\n    if (!session || !instance || !onEval) return;\n\n    const handler = (msg: EvalMessage) => onEval(instance, msg);\n    session.on(`eval:${target}`, handler);\n\n    return () => {\n      session.off(`eval:${target}`, handler);\n    };\n  }, [session, instance, onEval]);\n\n  return { instance };\n}\n"
  },
  {
    "path": "packages/web/src/index.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n::-webkit-scrollbar {\n  width: 10px;\n}\n\n::-webkit-scrollbar-track {\n  background: transparent;\n  border-radius: 8px;\n}\n\n::-webkit-scrollbar-thumb {\n  border-radius: 8px;\n  background: transparent;\n}\n\n::-webkit-scrollbar-corner {\n  color: transparent;\n}\n\n::-webkit-scrollbar-track:hover {\n  background: rgb(51, 65, 85, 30%) !important;\n}\n\n::-webkit-scrollbar-thumb:hover {\n  background: rgb(51, 65, 85, 70%) !important;\n}\n\n.text-stroke {\n  text-shadow:\n    -1px -1px 0 #000,\n    0 -1px 0 #000,\n    1px -1px 0 #000,\n    1px 0 0 #000,\n    1px 1px 0 #000,\n    0 1px 0 #000,\n    -1px 1px 0 #000,\n    -1px 0 0 #000;\n}\n\n:root {\n  --foreground: #fff;\n}\n"
  },
  {
    "path": "packages/web/src/lib/display-settings.ts",
    "content": "export interface DisplaySettings {\n  canvasPixelSize: number;\n  showCanvas: boolean;\n  enableFft: boolean;\n}\n\nexport const defaultDisplaySettings: DisplaySettings = {\n  canvasPixelSize: 1,\n  showCanvas: true,\n  enableFft: true,\n};\n\nexport function sanitizeDisplaySettings(\n  settings: DisplaySettings,\n): DisplaySettings {\n  // Pixel size should be at least 1 to prevent division-by-zero errors\n  const minPixelSize = 1;\n\n  // A maximum pixel size of 50 gives you 2-digit width/heights for a 4k\n  // canvas; should be low enough\n  const maxPixelSize = 50;\n\n  return {\n    ...settings,\n    canvasPixelSize: Math.max(\n      minPixelSize,\n      Math.min(maxPixelSize, Math.round(settings.canvasPixelSize)),\n    ),\n  };\n}\n"
  },
  {
    "path": "packages/web/src/lib/fonts.ts",
    "content": "export const fonts = {\n  \"BigBlue Terminal\": \"BigBlue TerminalPlus\",\n  Courier: \"Courier\",\n  \"Fira Code\": \"Fira Code VF\",\n  \"IBM Plex Mono\": \"IBM Plex Mono\",\n  Inconsolata: \"Inconsolata\",\n  JetBrains: \"JetBrains Mono\",\n  JGS: \"jgs_Font\",\n  Monaco: \"Monaco\",\n  MonoCraft: \"Monocraft Nerd Font\",\n  OpenDyslexic: \"OpenDyslexicMono\",\n  \"Roboto Mono\": \"Roboto Mono\",\n  \"Steps Mono\": \"Steps Mono\",\n  \"Syne Mono\": \"Syne Mono\",\n  \"Ubuntu Mono\": \"Ubuntu Mono\",\n  VT323: \"VT323\",\n};\nexport default fonts;\n"
  },
  {
    "path": "packages/web/src/lib/hydra-synth.d.ts",
    "content": "declare module \"hydra-synth\";\n"
  },
  {
    "path": "packages/web/src/lib/hydra-wrapper.ts",
    "content": "import Hydra from \"hydra-synth\";\nimport { isWebglSupported } from \"@/lib/webgl-detector.js\";\nimport { DisplaySettings } from \"@/lib/display-settings.ts\";\n\ndeclare global {\n  interface Window {\n    global: Window;\n    src: Function;\n    H: Function;\n    P5: Function;\n    fft: (index: number, buckets: number) => number;\n    P: Function;\n    useStrudelCanvas: Function;\n  }\n}\n\ntype ErrorHandler = (err: string) => void;\n\nexport class HydraWrapper {\n  initialized: boolean = false;\n\n  protected _canvas: HTMLCanvasElement;\n  protected _hydra: any;\n  protected _onError: ErrorHandler;\n  protected _onWarning: ErrorHandler;\n  protected _displaySettings: DisplaySettings;\n\n  constructor({\n    canvas,\n    onError,\n    onWarning,\n    displaySettings,\n  }: {\n    canvas: HTMLCanvasElement;\n    onError?: ErrorHandler;\n    onWarning?: ErrorHandler;\n    displaySettings: DisplaySettings;\n  }) {\n    this._canvas = canvas;\n    this._onError = onError || (() => {});\n    this._onWarning = onWarning || (() => {});\n    this._displaySettings = displaySettings;\n  }\n\n  setDisplaySettings(displaySettings: DisplaySettings) {\n    this._displaySettings = displaySettings;\n  }\n\n  async initialize() {\n    if (this.initialized) return;\n\n    if (!isWebglSupported()) {\n      this._onError(\"WebGL is not supported on this browser.\");\n      return;\n    }\n\n    // For some reason on Android mobile, Chrome has this object undefined:\n    if (!window.navigator.mediaDevices) {\n      this._onWarning(\n        \"navigator.mediaDevices is not defined. You won't be able to use the Webcam or screen capturing.\",\n      );\n    }\n\n    const { P5Wrapper } = await import(\"./p5-wrapper.js\");\n\n    window.P5 = P5Wrapper;\n    window.global = window;\n\n    try {\n      this._hydra = new Hydra({ canvas: this._canvas });\n    } catch (error) {\n      console.error(error);\n      this._onError(`${error}`);\n      return;\n    }\n\n    window.H = this._hydra;\n\n    // Enable using strudel style mini-patterns for argument control on Hydra.\n    // strudel needs to be loaded first, otherwise this will cause warnings, and rendering will not\n    // include the mini-pattern.\n    // Inspired by\n    // - https://github.com/atfornes/Hydra-strudel-extension/blob/51a93496b1b05ea00c08d1dec10e046aa3769c93/hydra-strudel.js#L72\n    // - https://github.com/tidalcycles/strudel/blob/26cc7e2920e32ec01bf22e1dae8ced716462a158/packages/hydra/hydra.mjs#L50\n    window.P = (pattern: any) => {\n      return () => {\n        // parse using the strudel mini parser\n        const reified = window.strudel.mini.minify(pattern);\n\n        const now = window.strudel.core.getTime();\n\n        // query the current value\n        const arc = reified.queryArc(now, now);\n        return arc[0].value;\n      };\n    };\n\n    // initialized a streaming canvas with the strudel draw context canvas\n    // this allows us to use the strudel output\n    window.useStrudelCanvas = (s: any) => {\n      const canvas = window.strudel.draw.getDrawContext().canvas;\n      canvas.style.display = \"none\";\n      s.init({ src: canvas });\n    };\n\n    const clamp = (num: number, min: number, max: number) =>\n      Math.min(Math.max(num, min), max);\n\n    // Enables Hydra to use Strudel frequency data\n    // with `.scrollX(() => fft(1,0)` it will influence the x-axis, according to the fft data\n    // first number is the index of the bucket, second is the number of buckets to aggregate the number too\n    window.fft = fftImpl;\n\n    const self = this;\n\n    function fftImpl(\n      index?: number,\n      buckets?: number,\n      options?: string,\n    ): number;\n    function fftImpl(\n      index?: number,\n      buckets?: number,\n      options?: {\n        min?: number;\n        max?: number;\n        scale?: number;\n        analyzerId?: string;\n      },\n    ): number;\n    function fftImpl(\n      index?: number,\n      buckets?: number,\n      options?:\n        | {\n            min?: number;\n            max?: number;\n            scale?: number;\n            analyzerId?: string;\n          }\n        | string,\n    ): number {\n      index = index ?? 0;\n      buckets = buckets ?? 1;\n      options =\n        options != null\n          ? typeof options === \"string\"\n            ? { analyzerId: options }\n            : options\n          : options;\n\n      const analyzerId = options?.analyzerId ?? \"flok-master\";\n      const min = options?.min ?? -150;\n      const scale = options?.scale ?? 1;\n      const max = options?.max ?? 0;\n\n      // Strudel is not initialized yet, so we just return a default value\n      if (window.strudel == undefined) return 0.5;\n\n      // If display settings are not enabled, we just return a default value\n      if (!(self._displaySettings.enableFft ?? true)) return 0.5;\n\n      // Enable auto-analyze\n      window.strudel.enableAutoAnalyze = true;\n\n      // If the analyzerId is not defined, we just return a default value\n      if (window.strudel.webaudio.analysers[analyzerId] == undefined) {\n        return 0.5;\n      }\n\n      const freq = window.strudel.webaudio.getAnalyzerData(\n        \"frequency\",\n        analyzerId,\n      ) as Array<number>;\n      const bucketSize = freq.length / buckets;\n\n      // inspired from https://github.com/tidalcycles/strudel/blob/a7728e3d81fb7a0a2dff9f2f4bd9e313ddf138cd/packages/webaudio/scope.mjs#L53\n      const normalized = freq.map((it: number) => {\n        const norm = clamp((it - min) / (max - min), 0, 1);\n        return norm * scale;\n      });\n\n      return (\n        normalized\n          .slice(bucketSize * index, bucketSize * (index + 1))\n          .reduce((a, b) => a + b, 0) / bucketSize\n      );\n    }\n\n    this.initialized = true;\n    console.log(\"Hydra initialized\");\n  }\n\n  async tryEval(code: string) {\n    if (!this.initialized) await this.initialize();\n\n    try {\n      await eval?.(`(async () => {\\n${code}\\n})()`);\n    } catch (error) {\n      console.error(error);\n      this._onError(`${error}`);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/web/src/lib/mercury-wrapper.ts",
    "content": "import { Mercury } from \"mercury-engine\";\n\nexport type ErrorHandler = (error: string) => void;\n\nexport class MercuryWrapper {\n  initialized: boolean = false;\n\n  protected _onError: ErrorHandler;\n  protected _onWarning: ErrorHandler;\n  protected _repl: any;\n  protected _code: any;\n\n  constructor({\n    onError,\n    onWarning,\n  }: {\n    onError?: ErrorHandler;\n    onWarning?: ErrorHandler;\n  }) {\n    this._onError = onError || (() => {});\n    this._onWarning = onWarning || (() => {});\n  }\n\n  async initialize() {\n    if (this.initialized) {\n      return;\n    }\n\n    // set initialized to true only when samples are loaded\n    this._repl = new Mercury({\n      onload: () => {\n        this._onWarning(`Ready!`);\n        // console.log('Mercury loaded');\n        this.initialized = true;\n        // retry the evaluation\n        this.tryEval(this._code);\n\n        // initialize the meter\n        this._repl.addMeter();\n      },\n      onmidi: () => {\n        console.log(\"MIDI devices ready\");\n      },\n    });\n  }\n\n  async tryEval(code: string) {\n    // store the code for retrying evaluation\n    this._code = code;\n\n    // if (!this.initialized) await this.initialize();\n    if (!this.initialized) {\n      this._onWarning(`Engine still loading`);\n      this.initialize();\n    } else {\n      try {\n        let parse = this._repl.code(code);\n\n        let prints = parse.parseTree.print;\n        if (prints.length > 0) {\n          // print prints from the code if there are any\n          this._onWarning(`${prints}`);\n        }\n        if (parse.errors.length > 0) {\n          console.log(parse.errors);\n          // print the first error that needs fixing\n          this._onError(`${parse.errors}`);\n        }\n      } catch (error) {\n        console.error(error);\n        this._onError(`${error}`);\n      }\n    }\n  }\n\n  getMeter() {\n    if (!this.initialized) return 0;\n    return this._repl.getMeter();\n  }\n}\n"
  },
  {
    "path": "packages/web/src/lib/mercury.d.ts",
    "content": "declare module \"mercury-engine\";\n"
  },
  {
    "path": "packages/web/src/lib/p5-wrapper.ts",
    "content": "import p5, { type RENDERER } from \"p5\";\n\ninterface P5libConstructorArgs {\n  width?: number;\n  height?: number;\n  mode?: RENDERER;\n}\n\nexport class P5Wrapper extends p5 {\n  mode: RENDERER;\n  canvas: HTMLCanvasElement;\n\n  constructor({ width, height, mode }: P5libConstructorArgs = {}) {\n    const canvas = document.createElement(\"canvas\");\n\n    const w = width || window.innerWidth;\n    const h = height || window.innerHeight;\n    const m = mode || \"p2d\";\n\n    super((p: p5) => {\n      p.setup = () => {\n        // Create default renderer with canvas\n        p.createCanvas(w, h, m, canvas);\n      };\n      p.draw = () => {};\n    });\n\n    this.width = w;\n    this.height = h;\n    this.mode = m;\n\n    this.canvas = canvas;\n    this.canvas.style.position = \"absolute\";\n    this.canvas.style.top = \"0px\";\n    this.canvas.style.left = \"0px\";\n    this.canvas.style.zIndex = \"-1\";\n  }\n\n  show() {\n    this.canvas.style.visibility = \"visible\";\n  }\n\n  hide() {\n    this.canvas.style.visibility = \"hidden\";\n  }\n}\n"
  },
  {
    "path": "packages/web/src/lib/punctual-wrapper.ts",
    "content": "import { DisplaySettings } from \"./display-settings.js\";\nimport { ErrorHandler } from \"./mercury-wrapper.js\";\nimport { isWebglSupported } from \"./webgl-detector.js\";\n\n// Based on https://github.com/dktr0/Punctual/blob/main/index.html\nexport class PunctualWrapper {\n  initialized: boolean = false;\n\n  protected _canvas: HTMLCanvasElement;\n  protected _punctual: any;\n  protected _animation: any;\n  protected _onError: ErrorHandler;\n  protected _onWarning: ErrorHandler;\n  protected _displaySettings: DisplaySettings;\n\n  constructor({\n    canvas,\n    onError,\n    onWarning,\n    displaySettings,\n  }: {\n    canvas: HTMLCanvasElement;\n    onError?: ErrorHandler;\n    onWarning?: ErrorHandler;\n    displaySettings: DisplaySettings;\n  }) {\n    this._canvas = canvas;\n    this._animation = null;\n    this._onError = onError || (() => {});\n    this._onWarning = onWarning || (() => {});\n    this._displaySettings = displaySettings;\n  }\n\n  setDisplaySettings(displaySettings: DisplaySettings) {\n    this._displaySettings = displaySettings;\n  }\n\n  async initialize() {\n    if (this.initialized) return;\n\n    if (!isWebglSupported()) {\n      this._onError(\"WebGL is not supported on this browser.\");\n      return;\n    }\n\n    // @ts-ignore\n    const P = await import(\"./punctual.js\");\n    const { Punctual } = P;\n\n    try {\n      this._punctual = new Punctual();\n    } catch (error) {\n      console.error(error);\n      this._onError(`${error}`);\n      return;\n    }\n\n    this._animation = requestAnimationFrame(this.animate);\n\n    this.initialized = true;\n    console.log(\"Punctual initialized\");\n  }\n\n  animate = () => {\n    if (!this.initialized) return;\n\n    const nowTime = Date.now() / 1000.0;\n    this._punctual.preRender({ canDraw: true, nowTime });\n    this._punctual.render({ canDraw: true, zone: 0, nowTime });\n    this._punctual.postRender({ canDraw: true, nowTime });\n\n    this._animation = requestAnimationFrame(this.animate);\n  };\n\n  async tryEval(code: string) {\n    if (!this.initialized) await this.initialize();\n\n    try {\n      const res = await this._punctual.define({\n        zone: 0,\n        text: code,\n        time: Date.now() / 1000.0,\n      });\n      console.log(res);\n    } catch (error) {\n      console.error(error);\n      this._onError(`${error}`);\n    }\n  }\n\n  dispose() {\n    cancelAnimationFrame(this._animation);\n    this.initialized = false;\n    console.log(\"Punctual disposed\");\n  }\n}\n"
  },
  {
    "path": "packages/web/src/lib/punctual.d.ts",
    "content": "declare module \"./punctual.js\" {\n  export class Punctual {\n    constructor();\n  }\n}\n"
  },
  {
    "path": "packages/web/src/lib/punctual.js",
    "content": "var es={compose:function(e){return function(a){return function(u){return e(a(u))}}}},as=function(e){return e.compose};var $e=function(e){return e.identity},Ue={identity:function(e){return e},Semigroupoid0:function(){return es}};var Kw=function(e,a,u,l,v,t,i){var o=new Date(Date.UTC(e,a,u,l,v,t,i));return e>=0&&e<100&&o.setUTCFullYear(e),o.getTime()};function Oy(e,a){var u=Kw(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond),l=Kw(a.year,a.month-1,a.day,a.hour,a.minute,a.second,a.millisecond);return u-l}function Uy(e){return function(a){return function(u){return function(l){var v=Kw(l.year,l.month-1,l.day,l.hour,l.minute,l.second,l.millisecond),t=new Date(v+u);return isNaN(t.getTime())?a:e({year:t.getUTCFullYear(),month:t.getUTCMonth()+1,day:t.getUTCDate(),hour:t.getUTCHours(),minute:t.getUTCMinutes(),second:t.getUTCSeconds(),millisecond:t.getUTCMilliseconds()})}}}}var pe=!0;var aa=function(e){return function(a){return function(u){return e(u)(a)}}},Oa=function(e){return function(a){return e}};var xw=function(e){return function(a){return e(a)}};var Wy=function(e){return function(a){for(var u=a.length,l=new Array(u),v=0;v<u;v++)l[v]=e(a[v]);return l}};var Ha=function(){function e(){}return e.value=new e,e}();var L=function(e){return e.map},u_=function(e){var a=L(e);return function(u){return function(l){return a(l)(u)}}},Il=function(e){return L(e)(Oa(void 0))},ni=function(e){var a=L(e);return function(u){return function(l){return a(Oa(l))(u)}}},l_=function(e){var a=L(e);return function(u){return a(Oa(u))}};var Po={map:as(es)},Fl={map:Wy};var ML=$e(Ue);var us={apply:function(e){return function(a){return function(u){return e(u)(a(u))}}},Functor0:function(){return Po}};var la=function(e){return e.apply},ER=function(e){var a=la(e),u=L(e.Functor0());return function(l){return function(v){return a(u(Oa)(l))(v)}}},ri=function(e){var a=la(e),u=L(e.Functor0());return function(l){return function(v){return a(u(Oa(ML))(l))(v)}}},bl=function(e){var a=la(e),u=L(e.Functor0());return function(l){return function(v){return function(t){return a(u(l)(v))(t)}}}},By=function(e){var a=la(e),u=L(e.Functor0());return function(l){return function(v){return function(t){return function(i){return a(a(u(l)(v))(t))(i)}}}}};var B=function(e){return e.pure};var sn=function(e){var a=B(e);return function(u){return function(l){if(u)return l;if(!u)return a(void 0);throw new Error(\"Failed pattern match at Control.Applicative (line 63, column 1 - line 63, column 63): \"+[u.constructor.name,l.constructor.name])}}},ls=function(e){var a=la(e.Apply0()),u=B(e);return function(l){return function(v){return a(u(l))(v)}}};var ed={pure:function(e){return function(a){return e}},Apply0:function(){return us}};var AL=$e(Ue),$l=function(e){return e.discard};var ud={bind:function(e){return function(a){return function(u){return a(e(u))(u)}}},Apply0:function(){return us}};var ee=function(e){return e.bind},ti=function(e){return aa(ee(e))};var Ol={discard:function(e){return ee(e)}};var ld=function(e){var a=ee(e);return function(u){return a(u)(AL)}};var ky=String.fromCharCode(65535),Vy=String.fromCharCode(0),NL=Number.POSITIVE_INFINITY,PL=Number.NEGATIVE_INFINITY;var CR=function(e){return function(a){return function(u){return function(l){return function(v){return l<v?e:l===v?a:u}}}}};var Jy=CR,jy=CR,Hy=CR,Xy=CR;var vs=function(e){return function(a){return e===a}},Yy=vs,Zy=vs,Qy=vs,Ky=vs,xy=vs;var Ul=function(e){return e.reflectSymbol};var R0=function(e){return function(a){return a[e]}},Jr=function(e){return function(a){return function(u){var l={};for(var v in u)({}).hasOwnProperty.call(u,v)&&(l[v]=u[v]);return l[e]=a,l}}};var ns={eq:xy};var mf={eq:Qy},ii={eq:Zy},rs={eq:Ky},ts={eq:Yy},qo=function(e){return e.eq1},m=function(e){return e.eq},BL=m(ts);var hf=function(e){var a=m(e);return function(u){return function(l){return BL(a(u)(l))(!1)}}};var Ne=function(){function e(){}return e.value=new e,e}(),Te=function(){function e(){}return e.value=new e,e}(),xe=function(){function e(){}return e.value=new e,e}();var e3=function(e){return function(a){return e-a|0}},a3=function(e){return function(a){return e-a}};var u3=function(e){return function(a){return e+a|0}},l3=function(e){return function(a){return e*a|0}},v3=function(e){return function(a){return e+a}},n3=function(e){return function(a){return e*a}};var ol=function(e){return e.zero};var I0={add:v3,zero:0,mul:n3,one:1},$o={add:u3,zero:0,mul:l3,one:1};var Wl=function(e){return e.one};var Fu=function(e){return e.mul};var Qu=function(e){return e.add};var Tv=function(e){return e.sub};var Oo={sub:a3,Semiring0:function(){return I0}},is={sub:e3,Semiring0:function(){return $o}};var gf=function(e){var a=Tv(e),u=ol(e.Semiring0());return function(l){return a(u)(l)}};var uu=function(){return{compare:Hy(Ne.value)(xe.value)(Te.value),Eq0:function(){return ns}}}();var Bl=function(){return{compare:jy(Ne.value)(xe.value)(Te.value),Eq0:function(){return mf}}}(),_a=function(){return{compare:Jy(Ne.value)(xe.value)(Te.value),Eq0:function(){return ii}}}(),MR=function(){return{compare:Xy(Ne.value)(xe.value)(Te.value),Eq0:function(){return rs}}}();var je=function(e){return e.compare};var v_=function(e){var a=je(e);return function(u){return function(l){var v=a(u)(l);return v instanceof Te}}},os=function(e){var a=je(e);return function(u){return function(l){var v=a(u)(l);return!(v instanceof Ne)}}},n_=function(e){var a=je(e);return function(u){return function(l){var v=a(u)(l);return v instanceof Ne}}},t3=function(e){var a=n_(e),u=v_(e);return function(l){var v=l.Semiring0(),t=ol(v),i=gf(l),o=Wl(v);return function(_){var s=a(_)(t);if(s)return i(o);var b=u(_)(t);return b?o:_}}},cs=function(e){var a=je(e);return function(u){return function(l){var v=a(u)(l);return!(v instanceof Te)}}},Wu=function(e){var a=je(e);return function(u){return function(l){var v=a(u)(l);if(v instanceof Ne)return l;if(v instanceof xe||v instanceof Te)return u;throw new Error(\"Failed pattern match at Data.Ord (line 181, column 3 - line 184, column 12): \"+[v.constructor.name])}}},Dn=function(e){var a=je(e);return function(u){return function(l){var v=a(u)(l);if(v instanceof Ne||v instanceof xe)return u;if(v instanceof Te)return l;throw new Error(\"Failed pattern match at Data.Ord (line 172, column 3 - line 175, column 12): \"+[v.constructor.name])}}};var _s=function(e){var a=os(e);return function(u){var l=ol(u.Semiring0()),v=gf(u);return function(t){var i=a(t)(l);return i?t:v(t)}}};var Mv=function(e){return e.top};var SR={top:2147483647,bottom:-2147483648,Ord0:function(){return _a}},r_={top:ky,bottom:Vy,Ord0:function(){return MR}};var zl=function(e){return e.bottom};var eA=function(e,a,u){var l=new Date(Date.UTC(e,a,u));return e>=0&&e<100&&l.setUTCFullYear(e),l};function i3(e,a,u,l){var v=eA(a,u-1,l);return e(v.getUTCFullYear())(v.getUTCMonth()+1)(v.getUTCDate())}function Uo(e){return e.charCodeAt(0)}function o3(e){return String.fromCharCode(e)}var c3=function(e){return function(a){return e+a}},_3=function(e){return function(a){return e.length===0?a:a.length===0?e:e.concat(a)}};var p3={append:c3},yf={appendRecord:function(e){return function(a){return function(u){return{}}}}};var Lv={append:_3},s3=function(e){return e.appendRecord},Ff=function(){return function(e){return{append:s3(e)(Ha.value)}}},re=function(e){return e.append};var Du=function(e){var a=Ul(e);return function(){return function(u){var l=s3(u);return function(v){var t=re(v);return{appendRecord:function(i){return function(o){return function(_){var s=l(Ha.value)(o)(_),b=a(Ha.value),P=Jr(b),A=R0(b);return P(t(A(o))(A(_)))(s)}}}}}}}};var Za=function(e){return e.alt};var Rv=function(e){return e.empty};var R3=function(e){return e.toString()},I3=function(e){var a=e.toString();return isNaN(a+\".0\")?a:a+\".0\"},G3=function(e){var a=e.charCodeAt(0);if(a<32||a===127){switch(e){case\"\\x07\":return\"'\\\\a'\";case\"\\b\":return\"'\\\\b'\";case\"\\f\":return\"'\\\\f'\";case`\n`:return\"'\\\\n'\";case\"\\r\":return\"'\\\\r'\";case\"\t\":return\"'\\\\t'\";case\"\\v\":return\"'\\\\v'\"}return\"'\\\\\"+a.toString(10)+\"'\"}return e===\"'\"||e===\"\\\\\"?\"'\\\\\"+e+\"'\":\"'\"+e+\"'\"},w3=function(e){var a=e.length;return'\"'+e.replace(/[\\0-\\x1F\\x7F\"\\\\]/g,function(u,l){switch(u){case'\"':case\"\\\\\":return\"\\\\\"+u;case\"\\x07\":return\"\\\\a\";case\"\\b\":return\"\\\\b\";case\"\\f\":return\"\\\\f\";case`\n`:return\"\\\\n\";case\"\\r\":return\"\\\\r\";case\"\t\":return\"\\\\t\";case\"\\v\":return\"\\\\v\"}var v=l+1,t=v<a&&e[v]>=\"0\"&&e[v]<=\"9\"?\"\\\\&\":\"\";return\"\\\\\"+u.charCodeAt(0).toString(10)+t})+'\"'},d3=function(e){return function(a){for(var u=[],l=0,v=a.length;l<v;l++)u[l]=e(a[l]);return\"[\"+u.join(\",\")+\"]\"}};var Av={show:w3};var m3=function(e){return e.showRecordFields},LR=function(){return function(){return function(e){var a=m3(e);return{show:function(u){return\"{\"+(a(Ha.value)(u)+\"}\")}}}}};var Nv={show:I3},Va={show:R3},AR={show:G3};var X=function(e){return e.show},fs=function(e){return{show:d3(X(e))}},ps=function(e){var a=Ul(e);return function(u){var l=m3(u);return function(v){var t=X(v);return{showRecordFields:function(i){return function(o){var _=l(Ha.value)(o),s=a(Ha.value),b=R0(s)(o);return\" \"+(s+(\": \"+(t(b)+(\",\"+_))))}}}}}},NR=function(e){var a=Ul(e);return function(u){var l=X(u);return{showRecordFields:function(v){return function(t){var i=a(Ha.value),o=R0(i)(t);return\" \"+(i+(\": \"+(l(o)+\" \")))}}}}};var bu=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),ze=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),t_=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}();var Xv=function(){function e(){}return e.value=new e,e}();var h3=function(e){return e.from};var g3=$e(Ue),I=function(){function e(){}return e.value=new e,e}(),R=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}();var y3=function(e){return function(a){return function(u){if(u instanceof I)return e(void 0);if(u instanceof R)return a(u.value0);throw new Error(\"Failed pattern match at Data.Maybe (line 250, column 1 - line 250, column 62): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},yu=function(e){return function(a){return function(u){if(u instanceof I)return e;if(u instanceof R)return a(u.value0);throw new Error(\"Failed pattern match at Data.Maybe (line 237, column 1 - line 237, column 51): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},oi=yu(!0)(Oa(!1)),Bo=yu(!1)(Oa(!0));var Ua={map:function(e){return function(a){return a instanceof R?new R(e(a.value0)):I.value}}},rA=L(Ua);var F3=function(e){return y3(e)(g3)},zo=function(e){return yu(e)(g3)},uv=function(){return function(e){if(e instanceof R)return e.value0;throw new Error(\"Failed pattern match at Data.Maybe (line 288, column 1 - line 288, column 46): \"+[e.constructor.name])}};var Hr={apply:function(e){return function(a){if(e instanceof R)return rA(e.value0)(a);if(e instanceof I)return I.value;throw new Error(\"Failed pattern match at Data.Maybe (line 67, column 1 - line 69, column 30): \"+[e.constructor.name,a.constructor.name])}},Functor0:function(){return Ua}};var Xr={bind:function(e){return function(a){if(e instanceof R)return a(e.value0);if(e instanceof I)return I.value;throw new Error(\"Failed pattern match at Data.Maybe (line 125, column 1 - line 127, column 28): \"+[e.constructor.name,a.constructor.name])}},Apply0:function(){return Hr}};var Ef=function(){return{pure:R.create,Apply0:function(){return Hr}}}();var b3={alt:function(e){return function(a){return e instanceof I?a:e}},Functor0:function(){return Ua}};var S=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),te=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}();var ss={map:function(e){return function(a){if(a instanceof S)return new S(a.value0);if(a instanceof te)return new te(e(a.value0));throw new Error(\"Failed pattern match at Data.Either (line 0, column 0 - line 0, column 0): \"+[a.constructor.name])}}};var In=function(e){return function(a){return function(u){if(u instanceof S)return e(u.value0);if(u instanceof te)return a(u.value0);throw new Error(\"Failed pattern match at Data.Either (line 208, column 1 - line 208, column 64): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},E3=function(){return In(Oa(I.value))(R.create)}();var tA=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}};var Yr=function(e){return e.defer},rd=function(e){var a=Yr(e);return function(u){var l=tA(\"go\",\"Control.Lazy\",function(){return a(function(t){return u(l(25))})}),v=l(25);return v}};var C3=function(e){return function(a){return e&&a}},T3=function(e){return function(a){return e||a}},M3=function(e){return!e};var Cf=function(e){return e.not};var Ds=function(e){return e.ff};var Tf=function(e){return e.disj},cl={ff:!1,tt:!0,implies:function(e){return function(a){return Tf(cl)(Cf(cl)(e))(a)}},conj:C3,disj:T3,not:M3};var S3=function(e){return Math.min(Math.abs(e),2147483647)},L3=function(e){return function(a){return a===0?0:a>0?Math.floor(e/a):-Math.floor(e/-a)}},A3=function(e){return function(a){if(a===0)return 0;var u=Math.abs(a);return(e%u+u)%u}},N3=function(e){return function(a){return e/a}};var P3={Ring0:function(){return Oo}},q3={Ring0:function(){return is}};var qv=function(e){return e.mod},td=function(e){var a=m(e);return function(u){var l=ol(u.CommutativeRing0().Ring0().Semiring0()),v=qv(u);return function(t){return function(i){var o=a(i)(l);return o?t:td(e)(u)(i)(v(t)(i))}}}},PR={degree:function(e){return 1},div:N3,mod:function(e){return function(a){return 0}},CommutativeRing0:function(){return P3}},Gn={degree:S3,div:L3,mod:A3,CommutativeRing0:function(){return q3}},lv=function(e){return e.div};var _A=Ff();var m0={mempty:\"\",Semigroup0:function(){return p3}},Mf={memptyRecord:function(e){return{}},SemigroupRecord0:function(){return yf}};var $3=function(e){return e.memptyRecord},Sf=function(){return function(e){var a=_A(e.SemigroupRecord0());return{mempty:$3(e)(Ha.value),Semigroup0:function(){return a}}}},Fa=function(e){return e.mempty};var ma=function(e){var a=Ul(e),u=Du(e)();return function(l){var v=Fa(l),t=l.Semigroup0();return function(){return function(i){var o=$3(i),_=u(i.SemigroupRecord0())(t);return{memptyRecord:function(s){var b=o(Ha.value),P=a(Ha.value),A=Jr(P);return A(v)(b)},SemigroupRecord0:function(){return _}}}}}};var k=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),cd=function(e){return function(a){return e(a.value0)(a.value1)}};var kl=function(e){return e.value1};var Rs={map:function(e){return function(a){return new k(a.value0,e(a.value1))}}};var Iv=function(e){return e.value0};var O3=function(e){return function(a){return function(u){return function(l){return function(v){return function(t){for(var i=[],o=t;;){var _=v(o);if(e(_))return i;var s=a(_);i.push(u(s)),o=l(s)}}}}}}};var sA=function(){function e(v){return[v]}function a(v){return function(t){return[v,t]}}function u(v){return function(t){return function(i){return[v,t,i]}}}function l(v){return function(t){return v.concat(t)}}return function(v){return function(t){return function(i){return function(o){return function(_){function s(b,P){switch(P-b){case 0:return i([]);case 1:return t(e)(o(_[b]));case 2:return v(t(a)(o(_[b])))(o(_[b+1]));case 3:return v(v(t(u)(o(_[b])))(o(_[b+1])))(o(_[b+2]));default:var A=b+Math.floor((P-b)/4)*2;return v(t(l)(s(b,A)))(s(A,P))}}return s(0,_.length)}}}}}}();var W3=function(e){return function(a){return function(u){for(var l=a,v=u.length,t=v-1;t>=0;t--)l=e(u[t])(l);return l}}},B3=function(e){return function(a){return function(u){for(var l=a,v=u.length,t=0;t<v;t++)l=e(l)(u[t]);return l}}};var wA=$e(Ue),o_=function(e){return e.bimap},V3=function(e){var a=o_(e);return function(u){return a(u)(wA)}};var Is={bimap:function(e){return function(a){return function(u){return new k(e(u.value0),a(u.value1))}}}};var ws=function(e){return e};var c_=function(e){var a=Tf(e);return{append:function(u){return function(l){return a(u)(l)}}}};var ci=function(e){var a=c_(e);return{mempty:Ds(e),Semigroup0:function(){return a}}},pd={map:function(e){return function(a){return e(a)}}},H3=function(e){return e};var EA={apply:function(e){return function(a){return e(a)}},Functor0:function(){return pd}};var X3={pure:ws,Apply0:function(){return EA}};var $v=function(e){return e};var ds=function(){return $v};var ms=ds(),Pf=function(){return ms},CA=Pf(),Eu=function(){return ms};var Z3=function(){return function(){return function(e){return ms}}};var Dd=function(){return function(){return function(){return function(){return function(e){return ms}}}}},Q3=function(){return function(){return function(){return function(e){return function(a){return ms(a(CA))}}}}};var AA=$e(Ue);var NA=Dd()()()(),Cu=function(e){return e.foldr};var qf=function(e){var a=ri(e.Apply0()),u=B(e);return function(l){var v=Cu(l);return function(t){return v(function(i){return a(t(i))})(u(void 0))}}};var Ja=function(e){return e.foldl},x3=function(e){var a=Ja(e);return function(u){var l=function(t){return function(i){if(t.elem instanceof R)return t;var o=t.pos===u;return o?{elem:new R(i),pos:t.pos}:{pos:t.pos+1|0,elem:t.elem}}},v=a(l)({elem:I.value,pos:0});return function(t){return function(i){return i.elem}(v(t))}}},fi=function(e){var a=Ja(e);return function(u){var l=re(u.Semigroup0()),v=Fa(u);return function(t){return function(i){var o=function(_){return function(s){return _.init?{init:!1,acc:s}:{init:!1,acc:l(_.acc)(l(t)(s))}}};return a(o)({init:!0,acc:v})(i).acc}}}};var e4=function(e){var a=Cu(e);return function(u){var l=re(u.Semigroup0()),v=Fa(u);return function(t){return a(function(i){return function(o){return l(t(i))(o)}})(v)}}},Gl={foldr:W3,foldl:B3,foldMap:function(e){return e4(Gl)(e)}},Id=function(e){var a=Ja(e);return function(u){var l=re(u.Semigroup0()),v=Fa(u);return function(t){return a(function(i){return function(o){return l(i)(t(o))}})(v)}}},Vl=function(e){return e.foldMap};var $f=function(e){var a=Ja(e);return function(u){var l=ee(u.Bind1()),v=B(u.Applicative0());return function(t){return function(i){return a(function(o){return function(_){return l(o)(aa(t)(_))}})(v(i))}}}},Yv=function(e){var a=Vl(e);return function(u){return a(u)(AA)}};var Of=function(e){var a=Ja(e);return function(u){var l=function(v){return function(t){return v instanceof I&&u(t)?new R(t):v}};return a(l)(I.value)}},Vo=function(e){var a=Vl(e);return function(u){return NA(ws)(a(ci(u)))}};var pi=function(e){return e};var h0={map:function(e){return function(a){return e(a)}}};var a4={apply:function(e){return function(a){return e(a)}},Functor0:function(){return h0}},PA={bind:function(e){return function(a){return a(e)}},Apply0:function(){return a4}},qA={pure:pi,Apply0:function(){return a4}},xu={Applicative0:function(){return qA},Bind1:function(){return PA}};var DN=$e(Ue),Iu=function(e){return e.traverse};var o4=function(e){var a=Iu(e);return function(u){return a(u)(DN)}};var vv=function(e){return e.sequence};var BR=function(e){return function(a){var u=Iu(a)(e);return function(l){return function(v){return u(v)(l)}}}};var c4=function(e){return function(a){return function(u){return function(l){return function(v){return function(t){for(var i=[],o=t;;){var _=v(o);i.push(u(_));var s=l(_);if(e(s))return i;o=a(s)}}}}}}};var _4=function(e){return e};var f4=function(e){var a=Wu(e);return{append:function(u){return function(l){return a(u)(l)}}}};var wN=Q3()()();var Jo=function(e){return e.foldl1};var gd=function(e){return e.foldMap1};var p4=function(e){var a=f4(e);return function(u){return wN(_4)(gd(u)(a))}};var yN=uv(),nv=function(e){return e.unfoldr1};var yd={unfoldr1:c4(oi)(yN)(Iv)(kl)},Zr=function(e){var a=nv(e);return function(u){return function(l){var v=function(t){if(t<=0)return new k(l,I.value);if(pe)return new k(l,new R(t-1|0));throw new Error(\"Failed pattern match at Data.Unfoldable1 (line 68, column 5 - line 68, column 39): \"+[t.constructor.name])};return a(v)(u-1|0)}}};var si=function(e){return Zr(e)(1)},wn=function(e){var a=nv(e);return function(u){return function(l){var v=function(i){return function(o){var _=o+i|0;return new k(o,function(){var s=o===l;return s?I.value:new R(_)}())}},t=function(){var i=l>=u;return i?1:-1}();return a(v(t))(u)}}},Uf=function(e){var a=nv(e);return function(u){return function(l){return function(v){var t=function(i){return new k(i.value0,function(){var o=i.value1>0;return o?new R(new k(l(i.value0),i.value1-1|0)):I.value}())};return a(t)(new k(v,u-1|0))}}}};var bN=uv(),g0=function(e){return e.unfoldr};var Wf={unfoldr:O3(oi)(bN)(Iv)(kl),Unfoldable10:function(){return yd}},kR=function(e){var a=g0(e);return function(u){return function(l){var v=function(t){var i=t<=0;return i?I.value:new R(new k(l,t-1|0))};return a(v)(u)}}};var R4=zl(r_),I4=Mv(r_);var Ta=function(e){return e.toEnum};var Ia=function(e){return e.fromEnum},G4=function(e){var a=Ta(e),u=Ia(e),l=zl(e.Bounded0());return function(v){return function(t){return function(i){var o=a(i);if(o instanceof R)return o.value0;if(o instanceof I){var _=i<u(l);return _?v:t}throw new Error(\"Failed pattern match at Data.Enum (line 158, column 33 - line 160, column 62): \"+[o.constructor.name])}}}};var bd=function(e){return function(a){return function(u){return e(a(u)+1|0)}}},Ed=function(e){return function(a){return function(u){return e(a(u)-1|0)}}};var Fd=function(e){return e>=Uo(R4)&&e<=Uo(I4)?new R(o3(e)):I.value},EN={succ:bd(Fd)(Uo),pred:Ed(Fd)(Uo),Ord0:function(){return MR}};var Ho=function(){return{cardinality:Uo(I4)-Uo(R4)|0,toEnum:Fd,fromEnum:Uo,Bounded0:function(){return r_},Enum1:function(){return EN}}}();var Cd=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}};var F0=function(){function e(){}return e.value=new e,e}(),dn=function(){function e(){}return e.value=new e,e}(),mn=function(){function e(){}return e.value=new e,e}(),hn=function(){function e(){}return e.value=new e,e}(),gn=function(){function e(){}return e.value=new e,e}(),yn=function(){function e(){}return e.value=new e,e}(),Fn=function(){function e(){}return e.value=new e,e}(),bn=function(){function e(){}return e.value=new e,e}(),En=function(){function e(){}return e.value=new e,e}(),Cn=function(){function e(){}return e.value=new e,e}(),Tn=function(){function e(){}return e.value=new e,e}(),Kr=function(){function e(){}return e.value=new e,e}();var Td=_a,Md=_a,w4=ii;var Sd={eq:function(e){return function(a){return e instanceof F0&&a instanceof F0||e instanceof dn&&a instanceof dn||e instanceof mn&&a instanceof mn||e instanceof hn&&a instanceof hn||e instanceof gn&&a instanceof gn||e instanceof yn&&a instanceof yn||e instanceof Fn&&a instanceof Fn||e instanceof bn&&a instanceof bn||e instanceof En&&a instanceof En||e instanceof Cn&&a instanceof Cn||e instanceof Tn&&a instanceof Tn||e instanceof Kr&&a instanceof Kr}}},Ld={compare:function(e){return function(a){if(e instanceof F0&&a instanceof F0)return xe.value;if(e instanceof F0)return Ne.value;if(a instanceof F0)return Te.value;if(e instanceof dn&&a instanceof dn)return xe.value;if(e instanceof dn)return Ne.value;if(a instanceof dn)return Te.value;if(e instanceof mn&&a instanceof mn)return xe.value;if(e instanceof mn)return Ne.value;if(a instanceof mn)return Te.value;if(e instanceof hn&&a instanceof hn)return xe.value;if(e instanceof hn)return Ne.value;if(a instanceof hn)return Te.value;if(e instanceof gn&&a instanceof gn)return xe.value;if(e instanceof gn)return Ne.value;if(a instanceof gn)return Te.value;if(e instanceof yn&&a instanceof yn)return xe.value;if(e instanceof yn)return Ne.value;if(a instanceof yn)return Te.value;if(e instanceof Fn&&a instanceof Fn)return xe.value;if(e instanceof Fn)return Ne.value;if(a instanceof Fn)return Te.value;if(e instanceof bn&&a instanceof bn)return xe.value;if(e instanceof bn)return Ne.value;if(a instanceof bn)return Te.value;if(e instanceof En&&a instanceof En)return xe.value;if(e instanceof En)return Ne.value;if(a instanceof En)return Te.value;if(e instanceof Cn&&a instanceof Cn)return xe.value;if(e instanceof Cn)return Ne.value;if(a instanceof Cn)return Te.value;if(e instanceof Tn&&a instanceof Tn)return xe.value;if(e instanceof Tn)return Ne.value;if(a instanceof Tn)return Te.value;if(e instanceof Kr&&a instanceof Kr)return xe.value;throw new Error(\"Failed pattern match at Data.Date.Component (line 0, column 0 - line 0, column 0): \"+[e.constructor.name,a.constructor.name])}},Eq0:function(){return Sd}},d4=ii,m4=function(){return{bottom:-271820,top:275759,Ord0:function(){return Td}}}();var h4=function(){return{bottom:F0.value,top:Kr.value,Ord0:function(){return Ld}}}(),Xo={cardinality:547580,toEnum:function(e){if(e>=-271820&&e<=275759)return new R(e);if(pe)return I.value;throw new Error(\"Failed pattern match at Data.Date.Component (line 35, column 1 - line 40, column 24): \"+[e.constructor.name])},fromEnum:function(e){return e},Bounded0:function(){return m4},Enum1:function(){return CN(0)}},CN=Cd(\"enumYear\",\"Data.Date.Component\",function(){return{succ:function(){var e=Ta(Xo),a=Ia(Xo);return function(u){return e(function(l){return l+1|0}(a(u)))}}(),pred:function(){var e=Ta(Xo),a=Ia(Xo);return function(u){return e(function(l){return l-1|0}(a(u)))}}(),Ord0:function(){return Td}}});var Zv={cardinality:12,toEnum:function(e){return e===1?new R(F0.value):e===2?new R(dn.value):e===3?new R(mn.value):e===4?new R(hn.value):e===5?new R(gn.value):e===6?new R(yn.value):e===7?new R(Fn.value):e===8?new R(bn.value):e===9?new R(En.value):e===10?new R(Cn.value):e===11?new R(Tn.value):e===12?new R(Kr.value):I.value},fromEnum:function(e){if(e instanceof F0)return 1;if(e instanceof dn)return 2;if(e instanceof mn)return 3;if(e instanceof hn)return 4;if(e instanceof gn)return 5;if(e instanceof yn)return 6;if(e instanceof Fn)return 7;if(e instanceof bn)return 8;if(e instanceof En)return 9;if(e instanceof Cn)return 10;if(e instanceof Tn)return 11;if(e instanceof Kr)return 12;throw new Error(\"Failed pattern match at Data.Date.Component (line 87, column 14 - line 99, column 19): \"+[e.constructor.name])},Bounded0:function(){return h4},Enum1:function(){return TN(0)}},TN=Cd(\"enumMonth\",\"Data.Date.Component\",function(){return{succ:function(){var e=Ta(Zv),a=Ia(Zv);return function(u){return e(function(l){return l+1|0}(a(u)))}}(),pred:function(){var e=Ta(Zv),a=Ia(Zv);return function(u){return e(function(l){return l-1|0}(a(u)))}}(),Ord0:function(){return Ld}}});var g4={bottom:1,top:31,Ord0:function(){return Md}},Yo={cardinality:31,toEnum:function(e){if(e>=1&&e<=31)return new R(e);if(pe)return I.value;throw new Error(\"Failed pattern match at Data.Date.Component (line 133, column 1 - line 138, column 23): \"+[e.constructor.name])},fromEnum:function(e){return e},Bounded0:function(){return g4},Enum1:function(){return MN(0)}},MN=Cd(\"enumDay\",\"Data.Date.Component\",function(){return{succ:function(){var e=Ta(Yo),a=Ia(Yo);return function(u){return e(function(l){return l+1|0}(a(u)))}}(),pred:function(){var e=Ta(Yo),a=Ia(Yo);return function(u){return e(function(l){return l-1|0}(a(u)))}}(),Ord0:function(){return Md}}});var y4=function(e){return function(a){return function(u){return(u|0)===u?e(u):a}}},Da=function(e){return e};var VR=isFinite;var JR=Math.abs,hs=Math.acos,gs=Math.asin,ys=Math.atan,Nd=function(e){return function(a){return Math.atan2(e,a)}},Bf=Math.ceil,Mn=Math.cos,Fs=Math.exp,Zo=Math.floor,bs=Math.log;var __=function(e){return function(a){return Math.pow(e,a)}},Pd=function(e){return function(a){return e%a}},f_=Math.round,Es=Math.sign?Math.sign:function(e){return e===0||e!==e?e:e<0?-1:1},Qo=Math.sin,Cs=Math.sqrt,Ts=Math.tan,zf=Math.trunc?Math.trunc:function(e){return e<0?Math.ceil(e):Math.floor(e)};var jR=3.141592653589793;var F4=Mv(SR),b4=zl(SR);var HR=function(){return y4(R.create)(I.value)}(),E4=function(e){if(!VR(e))return 0;if(e>=Da(F4))return F4;if(e<=Da(b4))return b4;if(pe)return zo(0)(HR(e));throw new Error(\"Failed pattern match at Data.Int (line 72, column 1 - line 72, column 29): \"+[e.constructor.name])},C4=function(e){return E4(f_(e))};var s_=function(e){return E4(Zo(e))};var T4=Z3()();var M4=$e(Ue),qN=function(e){return e};var S4=function(e){return e};var Ms=function(e){return e.toDuration};var qd=Bl;var $d=function(e){return e.fromDuration};var Di={fromDuration:T4(qN)(function(e){return e*1e3}),toDuration:T4(S4)(function(e){return e/1e3})};var XR={fromDuration:M4,toDuration:M4};var VN=Ia(Zv),JN=uv();var jN=m(w4),HN=m(Sd),XN=m(d4);var YN=Ta(Zv);var L4=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Ss=function(e){return e.value0};var Ls=function(e){return e.value1};var A4={eq:function(e){return function(a){return jN(e.value0)(a.value0)&&HN(e.value1)(a.value1)&&XN(e.value2)(a.value2)}}},ZN=m(A4);var As=function(e){return e.value2},YR=function(e){return function(a){return function(u){var l=function(v){return function(t){return function(i){return new L4(v,JN(YN(t)),i)}}};return i3(l,e,VN(a),u)}}},Od=function(e){return function(a){return function(u){var l=new L4(e,a,u),v=ZN(YR(e)(a)(u))(l);return v?new R(l):I.value}}};var ZR=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}};var Ud=_a,Wd=_a,Bd=_a,zd=_a;var kd={bottom:0,top:59,Ord0:function(){return Ud}},Vd={bottom:0,top:59,Ord0:function(){return Wd}},Jd={bottom:0,top:999,Ord0:function(){return Bd}},jd={bottom:0,top:23,Ord0:function(){return zd}},xo={cardinality:60,toEnum:function(e){if(e>=0&&e<=59)return new R(e);if(pe)return I.value;throw new Error(\"Failed pattern match at Data.Time.Component (line 90, column 1 - line 95, column 26): \"+[e.constructor.name])},fromEnum:function(e){return e},Bounded0:function(){return kd},Enum1:function(){return QN(0)}},QN=ZR(\"enumSecond\",\"Data.Time.Component\",function(){return{succ:function(){var e=Ta(xo),a=Ia(xo);return function(u){return e(function(l){return l+1|0}(a(u)))}}(),pred:function(){var e=Ta(xo),a=Ia(xo);return function(u){return e(function(l){return l-1|0}(a(u)))}}(),Ord0:function(){return Ud}}});var ec={cardinality:60,toEnum:function(e){if(e>=0&&e<=59)return new R(e);if(pe)return I.value;throw new Error(\"Failed pattern match at Data.Time.Component (line 61, column 1 - line 66, column 26): \"+[e.constructor.name])},fromEnum:function(e){return e},Bounded0:function(){return Vd},Enum1:function(){return KN(0)}},KN=ZR(\"enumMinute\",\"Data.Time.Component\",function(){return{succ:function(){var e=Ta(ec),a=Ia(ec);return function(u){return e(function(l){return l+1|0}(a(u)))}}(),pred:function(){var e=Ta(ec),a=Ia(ec);return function(u){return e(function(l){return l-1|0}(a(u)))}}(),Ord0:function(){return Wd}}});var ac={cardinality:1e3,toEnum:function(e){if(e>=0&&e<=999)return new R(e);if(pe)return I.value;throw new Error(\"Failed pattern match at Data.Time.Component (line 120, column 1 - line 125, column 31): \"+[e.constructor.name])},fromEnum:function(e){return e},Bounded0:function(){return Jd},Enum1:function(){return xN(0)}},xN=ZR(\"enumMillisecond\",\"Data.Time.Component\",function(){return{succ:function(){var e=Ta(ac),a=Ia(ac);return function(u){return e(function(l){return l+1|0}(a(u)))}}(),pred:function(){var e=Ta(ac),a=Ia(ac);return function(u){return e(function(l){return l-1|0}(a(u)))}}(),Ord0:function(){return Bd}}});var uc={cardinality:24,toEnum:function(e){if(e>=0&&e<=23)return new R(e);if(pe)return I.value;throw new Error(\"Failed pattern match at Data.Time.Component (line 32, column 1 - line 37, column 24): \"+[e.constructor.name])},fromEnum:function(e){return e},Bounded0:function(){return jd},Enum1:function(){return eP(0)}},eP=ZR(\"enumHour\",\"Data.Time.Component\",function(){return{succ:function(){var e=Ta(uc),a=Ia(uc);return function(u){return e(function(l){return l+1|0}(a(u)))}}(),pred:function(){var e=Ta(uc),a=Ia(uc);return function(u){return e(function(l){return l-1|0}(a(u)))}}(),Ord0:function(){return zd}}});var Ns=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}();var Ps=function(e){return e.value2},qs=function(e){return e.value1},$s=function(e){return e.value3};var Os=function(e){return e.value0};var lP=Ia(Xo),vP=Ia(Zv),nP=Ia(Yo),rP=Ia(uc),tP=Ia(ec),iP=Ia(xo),oP=Ia(ac);var cP=ee(Xr),kf=la(Hr),Xd=L(Ua),_P=ld(Xr),fP=Ta(Xo),pP=Ta(Zv),sP=Ta(Yo),DP=Ta(uc),RP=Ta(ec),IP=Ta(xo),GP=Ta(ac),Zd=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),Yd=function(e){return{year:lP(Ss(e.value0)),month:vP(Ls(e.value0)),day:nP(As(e.value0)),hour:rP(Os(e.value1)),minute:tP(qs(e.value1)),second:iP(Ps(e.value1)),millisecond:oP($s(e.value1))}};var Vf=function(e){var a=Ms(e);return function(u){return function(l){return a(Oy(Yd(u),Yd(l)))}}};var Jf=function(e){var a=$d(e);return function(u){return function(l){return cP(Uy(R.create)(I.value)(a(u))(Yd(l)))(function(v){return kf(Xd(Zd.create)(_P(kf(kf(Xd(Od)(fP(v.year)))(pP(v.month)))(sP(v.day)))))(kf(kf(kf(Xd(Ns.create)(DP(v.hour)))(RP(v.minute)))(IP(v.second)))(GP(v.millisecond)))})}}};var wP=function(e,a,u,l,v,t,i){var o=new Date(Date.UTC(e,a,u,l,v,t,i));return e>=0&&e<100&&o.setUTCFullYear(e),o};function q4(e,a,u,l,v,t,i){return wP(e,a-1,u,l,v,t,i).getTime()}function $4(e){return function(a){var u=new Date(a);return e(u.getUTCFullYear())(u.getUTCMonth()+1)(u.getUTCDate())(u.getUTCHours())(u.getUTCMinutes())(u.getUTCSeconds())(u.getUTCMilliseconds())}}var mP=uv(),hP=Ta(Zv);var gP=Ia(Zv);var jf=function(e){return e},R_=function(){var e=function(a){return function(u){return function(l){return function(v){return function(t){return function(i){return function(o){return new Zd(YR(a)(mP(hP(u)))(l),new Ns(v,t,i,o))}}}}}}};return $4(e)}();var yP=qd,QR=function(e){if(e>=-86399778816e5&&e<=8639977881599999)return new R(e);if(pe)return I.value;throw new Error(\"Failed pattern match at Data.DateTime.Instant (line 44, column 1 - line 44, column 41): \"+[e.constructor.name])},Us=function(e){return q4(Ss(e.value0),gP(Ls(e.value0)),As(e.value0),Os(e.value1),qs(e.value1),Ps(e.value1),$s(e.value1))};var O4=function(){return{bottom:-86399778816e5,top:8639977881599999,Ord0:function(){return yP}}}();var Qd=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}();var Bs=function(e){var a=td(e.Eq0()),u=t3(e),l=_s(e);return function(v){var t=a(v),i=lv(v),o=v.CommutativeRing0().Ring0(),_=Fu(o.Semiring0()),s=u(o),b=l(o);return function(P){return function(A){var K=t(P)(A),Ve=i(A)(K);return new Qd(_(i(P)(K))(s(Ve)),b(Ve))}}}},KR=function(e){var a=Bs(e);return function(u){var l=u.CommutativeRing0().Ring0().Semiring0(),v=Wl(l),t=a(u),i=Fu(l),o=Qu(l);return{one:new Qd(v,v),mul:function(_){return function(s){return t(i(_.value0)(s.value0))(i(_.value1)(s.value1))}},zero:new Qd(ol(l),v),add:function(_){return function(s){return t(o(i(_.value0)(s.value1))(i(_.value1)(s.value0)))(i(_.value1)(s.value1))}}}}},Kd=function(e){var a=Bs(e),u=KR(e);return function(l){var v=a(l),t=l.CommutativeRing0().Ring0(),i=Tv(t),o=Fu(t.Semiring0()),_=u(l);return{sub:function(s){return function(b){return v(i(o(s.value0)(b.value1))(o(s.value1)(b.value0)))(o(s.value1)(b.value1))}},Semiring0:function(){return _}}}},xd=function(e){return e.value0};var e1=function(e){return e.value1},U4=function(e){var a=Kd(e);return function(u){var l=a(u);return{Ring0:function(){return l}}}},W4=function(e){var a=Bs(e),u=KR(e),l=U4(e);return function(v){var t=a(v),i=Fu(v.CommutativeRing0().Ring0().Semiring0()),o=ol(u(v)),_=l(v);return{degree:function(s){return 1},div:function(s){return function(b){return t(i(s.value0)(b.value1))(i(s.value1)(b.value0))}},mod:function(s){return function(b){return o}},CommutativeRing0:function(){return _}}}};var I_=e=>BigInt(e);var zs=e=>Number(e),B4=e=>a=>e+a,z4=e=>a=>e*a,k4=e=>a=>e-a,a1=e=>a=>{if(a===0n)return 0n;let u=a<0n?-a:a;return(e%u+u)%u},V4=e=>a=>a===0n?0n:(e-a1(e)(a))/a,J4=e=>e<0n?-e:e,j4=0n,H4=1n;var X4=e=>a=>e==a,Y4=e=>a=>e===a?0:e>a?1:-1;var u1={add:B4,zero:j4,mul:z4,one:H4};var NP={sub:k4,Semiring0:function(){return u1}},xR={eq:X4};var ks={compare:function(e){return function(a){var u=Y4(e)(a);return u===1?Te.value:u===0?xe.value:Ne.value}},Eq0:function(){return xR}},PP={Ring0:function(){return NP}},lc={degree:J4,div:V4,mod:a1,CommutativeRing0:function(){return PP}};var eI=Bs(ks)(lc);var Hf={toRational:function(e){return function(a){return eI(I_(e))(I_(a))}}},Q4={toRational:function(e){return function(a){return eI(e)(a)}}};var vc=KR(ks)(lc),aI=Kd(ks)(lc);var uI=W4(ks)(lc);var G_=function(e){return e.toRational},Sn=function(e){return zs(xd(e))/zs(e1(e))},l1=function(e){return xd(e)},v1=function(e){return eI(I_(e))(I_(1))},K4=function(e){return eI(e)(I_(1))},n1=function(e){return e1(e)};var x4=function(e){return function(a){return a.join(e)}};var e7=re(Lv),Vs={genericShowArgs:function(e){return[]}},Ri=function(e){var a=X(e);return{genericShowArgs:function(u){return[a(u)]}}},r1=function(e){return e.genericShowArgs},Js=function(e){var a=r1(e);return function(u){var l=r1(u);return{genericShowArgs:function(v){return e7(a(v.value0))(l(v.value1))}}}},b0=function(e){var a=r1(e);return function(u){var l=Ul(u);return{\"genericShow'\":function(v){var t=l(Ha.value),i=a(v);return i.length===0?t:\"(\"+(x4(\" \")(e7([t])(i))+\")\")}}}},t1=function(e){return e[\"genericShow'\"]};var Wv=function(e){var a=t1(e);return function(u){var l=t1(u);return{\"genericShow'\":function(v){if(v instanceof bu)return a(v.value0);if(v instanceof ze)return l(v.value0);throw new Error(\"Failed pattern match at Data.Show.Generic (line 26, column 1 - line 28, column 40): \"+[v.constructor.name])}}}},Ln=function(e){var a=h3(e);return function(u){var l=t1(u);return function(v){return l(a(v))}}};function js(){return Date.now()}var a7=function(e){return function(){return e}},u7=function(e){return function(a){return function(){return a(e())()}}};var E0=function(e){var a=ee(e.Bind1()),u=B(e.Applicative0());return function(l){return function(v){return a(l)(function(t){return a(v)(function(i){return u(t(i))})})}}};var l7=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}},d_={Applicative0:function(){return dl},Bind1:function(){return rc}},rc={bind:u7,Apply0:function(){return n7(0)}},dl={pure:a7,Apply0:function(){return n7(0)}},v7=l7(\"functorEffect\",\"Effect\",function(){return{map:ls(dl)}}),n7=l7(\"applyEffect\",\"Effect\",function(){return{apply:E0(d_),Functor0:function(){return v7(0)}}}),nl=v7(20);var UP=L(nl);var Hs=UP(R_)(js);var WP=Eu(),BP=Vf(XR),zP=G_(Hf),o1=Qu(vc),c1=Fu(vc),_1=lv(uI),t7=$e(Ue),i7=Jf(Di),kP=uv(),r7=G_(Q4),VP=m(xR),JP=qv(lc),jP=ol(u1),HP=lv(lc),XP=Tv(aI),YP=Wl(vc);var m_=function(e){return function(a){var u=WP(BP(a)(e.time)),l=zP(s_(u))(1e3);return o1(c1(l)(e.freq))(e.count)}},Xs=function(e){var a=_1(c1(e.count)(v1(-1)))(e.freq);return yu(e.time)(t7)(i7(Sn(a))(e.time))},o7=function(e){return function(){var u=Hs();return{freq:e,time:u,count:v1(0)}}},c7=function(e){var a=R_(kP(QR(e.time*1e3))),u=r7(e.freqNumerator)(e.freqDenominator),l=r7(e.countNumerator)(e.countDenominator);return{freq:u,time:a,count:l}},ZP=function(e){if(VP(JP(l1(e))(n1(e)))(jP))return e;if(pe)return K4(HP(l1(e))(n1(e)));throw new Error(\"Failed pattern match at Data.Tempo (line 114, column 1 - line 114, column 38): \"+[e.constructor.name])},f1=function(e){return function(a){return function(u){return o1(c1(o1(ZP(_1(XP(u)(a))(e)))(YP))(e))(a)}}},p1=function(e){return function(a){return yu(e.time)(t7)(i7(Sn(_1(a)(e.freq)))(Xs(e)))}};var _7=Pf(),xP=lv(uI),Xf=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),s1=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}();var vI=function(e){return function(a){if(a instanceof Xf)return _7(a.value0);if(a instanceof s1)return _7(Sn(xP(a.value0)(e.freq)));throw new Error(\"Failed pattern match at Duration (line 19, column 1 - line 19, column 42): \"+[e.constructor.name,a.constructor.name])}};var uq=$e(Ue),lq=Jf(Di),vq=G_(Hf),nq=Fu(vc),rq=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),nI=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}();var f7=function(e){return function(a){return function(u){if(u instanceof rq){var l=vI(e)(u.value0);return yu(a)(uq)(lq(l)(a))}if(u instanceof nI&&u.value1 instanceof Xf){var v=vq(s_(u.value1.value0*1e3))(1e3),l=f1(u.value0)(nq(v)(e.freq))(m_(e)(a));return p1(e)(l)}if(u instanceof nI&&u.value1 instanceof s1){var l=f1(u.value0)(u.value1.value0)(m_(e)(a));return p1(e)(l)}throw new Error(\"Failed pattern match at DefTime (line 22, column 1 - line 22, column 56): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}};var Yf=b0(Vs),p7=Ri(Va),I1=Wu(_a),xr=function(){function e(){}return e.value=new e,e}(),et=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),tc=function(){function e(){}return e.value=new e,e}(),ic=function(){function e(){}return e.value=new e,e}(),oc=function(){function e(){}return e.value=new e,e}(),cc=function(){function e(){}return e.value=new e,e}(),_c=function(){function e(){}return e.value=new e,e}(),tq={to:function(e){if(e instanceof bu)return xr.value;if(e instanceof ze&&e.value0 instanceof bu)return new et(e.value0.value0.value0,e.value0.value0.value1);if(e instanceof ze&&e.value0 instanceof ze&&e.value0.value0 instanceof bu)return tc.value;if(e instanceof ze&&e.value0 instanceof ze&&e.value0.value0 instanceof ze&&e.value0.value0.value0 instanceof bu)return ic.value;if(e instanceof ze&&e.value0 instanceof ze&&e.value0.value0 instanceof ze&&e.value0.value0.value0 instanceof ze&&e.value0.value0.value0.value0 instanceof bu)return oc.value;if(e instanceof ze&&e.value0 instanceof ze&&e.value0.value0 instanceof ze&&e.value0.value0.value0 instanceof ze&&e.value0.value0.value0.value0 instanceof ze&&e.value0.value0.value0.value0.value0 instanceof bu)return cc.value;if(e instanceof ze&&e.value0 instanceof ze&&e.value0.value0 instanceof ze&&e.value0.value0.value0 instanceof ze&&e.value0.value0.value0.value0 instanceof ze&&e.value0.value0.value0.value0.value0 instanceof ze)return _c.value;throw new Error(\"Failed pattern match at Output (line 17, column 1 - line 17, column 33): \"+[e.constructor.name])},from:function(e){if(e instanceof xr)return new bu(Xv.value);if(e instanceof et)return new ze(new bu(new t_(e.value0,e.value1)));if(e instanceof tc)return new ze(new ze(new bu(Xv.value)));if(e instanceof ic)return new ze(new ze(new ze(new bu(Xv.value))));if(e instanceof oc)return new ze(new ze(new ze(new ze(new bu(Xv.value)))));if(e instanceof cc)return new ze(new ze(new ze(new ze(new ze(new bu(Xv.value))))));if(e instanceof _c)return new ze(new ze(new ze(new ze(new ze(new ze(Xv.value))))));throw new Error(\"Failed pattern match at Output (line 17, column 1 - line 17, column 33): \"+[e.constructor.name])}},rI={show:Ln(tq)(Wv(Yf({reflectSymbol:function(){return\"Audio\"}}))(Wv(b0(Js(p7)(p7))({reflectSymbol:function(){return\"AOut\"}}))(Wv(Yf({reflectSymbol:function(){return\"Blend\"}}))(Wv(Yf({reflectSymbol:function(){return\"RGBA\"}}))(Wv(Yf({reflectSymbol:function(){return\"Add\"}}))(Wv(Yf({reflectSymbol:function(){return\"Mul\"}}))(Yf({reflectSymbol:function(){return\"RGB\"}}))))))))},s7={eq:function(e){return function(a){return e instanceof xr&&a instanceof xr?!0:e instanceof et&&a instanceof et?e.value0===a.value0&&e.value1===a.value1:e instanceof tc&&a instanceof tc||e instanceof ic&&a instanceof ic||e instanceof oc&&a instanceof oc||e instanceof cc&&a instanceof cc||e instanceof _c&&a instanceof _c}}},Zs=function(e){return e instanceof xr||e instanceof et},D7=function(){var e=Cf(cl);return function(a){return e(Zs(a))}}(),R7=function(e){return e instanceof et?I1(e.value0)(0):0},I7=function(e){return function(a){return a instanceof xr?I1(e)(1):a instanceof et?I1(a.value1)(1):1}};var U=function(e){return e.channels};var w7=function(e){return function(){return{value:e}}};var ve=function(e){return function(){return e.value}};var Ae=function(e){return function(a){return function(){a.value=e}}};var va=w7;var ku=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Vu=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Qv=function(e){return e.tailRecM};var _q=function(e){var a=function(u){var l=!1,v;function t(i){if(i instanceof ku){u=e(i.value0);return}if(i instanceof Vu)return l=!0,i.value0;throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 103, column 3 - line 103, column 25): \"+[i.constructor.name])}for(;!l;)v=t(u);return v};return function(u){return a(e(u))}};var d7={tailRecM:function(e){var a=function(l){return l},u=_q(function(l){return a(e(l))});return function(l){return pi(u(l))}},Monad0:function(){return xu}};var m7={bimap:function(e){return function(a){return function(u){if(u instanceof ku)return new ku(e(u.value0));if(u instanceof Vu)return new Vu(a(u.value0));throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 33, column 1 - line 35, column 34): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}}};var Ks=function(e){return e.foldrWithIndex};var xs=function(e){return e.traverseWithIndex};var sq=L(Rs),Dq=L(Ua),El=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),d1=function(e){var a=g0(e);return{unfoldr1:function(u){return function(l){return cd(El.create)(sq(a(Dq(u)))(u(l)))}}}};var aD=function(e){var a=Rv(e);return function(u){return new El(u,a)}};var tI=function(e){var a=L(e);return{map:function(u){return function(l){return new El(u(l.value0),a(u)(l.value1))}}}};var uD=function(e){var a=Vl(e),u=Ja(e),l=Cu(e);return{foldMap:function(v){var t=re(v.Semigroup0()),i=a(v);return function(o){return function(_){return t(o(_.value0))(i(o)(_.value1))}}},foldl:function(v){return function(t){return function(i){return u(v)(v(t)(i.value0))(i.value1)}}},foldr:function(v){return function(t){return function(i){return v(i.value0)(l(v)(t)(i.value1))}}}}};var m1=function(e){var a=vv(e),u=Iu(e),l=tI(e.Functor0()),v=uD(e.Foldable1());return{sequence:function(t){var i=t.Apply0(),o=la(i),_=L(i.Functor0()),s=a(t);return function(b){return o(_(El.create)(b.value0))(s(b.value1))}},traverse:function(t){var i=t.Apply0(),o=la(i),_=L(i.Functor0()),s=u(t);return function(b){return function(P){return o(_(El.create)(b(P.value0)))(s(b)(P.value1))}}},Functor0:function(){return l},Foldable1:function(){return v}}};var F7=function(e){var a=Ja(e),u=Cu(e),l=uD(e);return{foldMap1:function(v){var t=re(v);return function(i){return function(o){return a(function(_){return function(s){return t(_)(i(s))}})(i(o.value0))(o.value1)}}},foldr1:function(v){return function(t){return yu(t.value0)(v(t.value0))(u(function(i){var o=yu(i)(v(i));return function(_){return R.create(o(_))}})(I.value)(t.value1))}},foldl1:function(v){return function(t){return a(v)(t.value0)(t.value1)}},Foldable0:function(){return l}}};var gq=$e(Ue),h=function(){function e(){}return e.value=new e,e}(),w=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),oI=function(e){return e},E7=function(e){return new w(e.value0,e.value1)};var yq=function(e){var a=function(u){return function(l){var v=u,t=!1,i;function o(_,s){if(s instanceof w&&s.value1 instanceof w&&s.value1.value1 instanceof w){v=new w(s,_),l=s.value1.value1.value1;return}var b=function(A){return A instanceof w&&A.value1 instanceof w&&A.value1.value1 instanceof h?new w(e(A.value0),new w(e(A.value1.value0),h.value)):A instanceof w&&A.value1 instanceof h?new w(e(A.value0),h.value):h.value},P=function(A){return function(K){var Ve=A,Ga=!1,$u;function Dl(Ou,_u){if(Ou instanceof w&&Ou.value0 instanceof w&&Ou.value0.value1 instanceof w&&Ou.value0.value1.value1 instanceof w){Ve=Ou.value1,K=new w(e(Ou.value0.value0),new w(e(Ou.value0.value1.value0),new w(e(Ou.value0.value1.value1.value0),_u)));return}return Ga=!0,_u}for(;!Ga;)$u=Dl(Ve,K);return $u}};return t=!0,P(_)(b(s))}for(;!t;)i=o(v,l);return i}};return a(h.value)},rv={map:yq},Fq=L(rv),wv=tI(rv),xa={foldr:function(e){return function(a){var u=function(){var v=function(t){return function(i){var o=t,_=!1,s;function b(P,A){if(A instanceof h)return _=!0,P;if(A instanceof w){o=new w(A.value0,P),i=A.value1;return}throw new Error(\"Failed pattern match at Data.List.Types (line 107, column 7 - line 107, column 23): \"+[P.constructor.name,A.constructor.name])}for(;!_;)s=b(o,i);return s}};return v(h.value)}(),l=Ja(xa)(aa(e))(a);return function(v){return l(u(v))}}},foldl:function(e){var a=function(u){return function(l){var v=u,t=!1,i;function o(_,s){if(s instanceof h)return t=!0,_;if(s instanceof w){v=e(_)(s.value0),l=s.value1;return}throw new Error(\"Failed pattern match at Data.List.Types (line 111, column 12 - line 113, column 30): \"+[s.constructor.name])}for(;!t;)i=o(v,l);return i}};return a},foldMap:function(e){var a=re(e.Semigroup0()),u=Fa(e);return function(l){return Ja(xa)(function(v){var t=a(v);return function(i){return t(l(i))}})(u)}}},iI=Ja(xa),bq=Cu(xa);var C0=uD(xa);var Gi={append:function(e){return function(a){return bq(w.create)(a)(e)}}},xf=re(Gi);var g_={append:function(e){return function(a){return new El(e.value0,xf(e.value1)(E7(a)))}}};var T0={traverse:function(e){var a=e.Apply0(),u=L(a.Functor0()),l=bl(a),v=B(e);return function(t){var i=u(iI(aa(w.create))(h.value)),o=iI(function(_){var s=l(aa(w.create))(_);return function(b){return s(t(b))}})(v(h.value));return function(_){return i(o(_))}}},sequence:function(e){return Iu(T0)(e)(gq)},Functor0:function(){return rv},Foldable1:function(){return xa}},Nn=m1(T0);var fc={unfoldr1:function(e){return function(a){var u=function(l){return function(v){var t=l,i=!1,o;function _(s,b){var P=e(s);if(P.value1 instanceof R){t=P.value1.value0,v=new w(P.value0,b);return}if(P.value1 instanceof I)return i=!0,iI(aa(w.create))(h.value)(new w(P.value0,b));throw new Error(\"Failed pattern match at Data.List.Types (line 135, column 22 - line 137, column 61): \"+[P.constructor.name])}for(;!i;)o=_(t,v);return o}};return u(a)(h.value)}}},y_={unfoldr:function(e){return function(a){var u=function(l){return function(v){var t=l,i=!1,o;function _(s,b){var P=e(s);if(P instanceof I)return i=!0,iI(aa(w.create))(h.value)(b);if(P instanceof R){t=P.value0.value1,v=new w(P.value0.value0,b);return}throw new Error(\"Failed pattern match at Data.List.Types (line 142, column 22 - line 144, column 52): \"+[P.constructor.name])}for(;!i;)o=_(t,v);return o}};return u(a)(h.value)}},Unfoldable10:function(){return fc}},Jl=d1(y_),at=F7(xa);var Eq={eq1:function(e){var a=m(e);return function(u){return function(l){var v=function(t){return function(i){return function(o){var _=t,s=i,b=!1,P;function A(K,Ve,Ga){if(!Ga)return b=!0,!1;if(K instanceof h&&Ve instanceof h)return b=!0,Ga;if(K instanceof w&&Ve instanceof w){_=K.value1,s=Ve.value1,o=Ga&&a(Ve.value0)(K.value0);return}return b=!0,!1}for(;!b;)P=A(_,s,o);return P}}};return v(u)(l)(!0)}}}},Cq=qo(Eq);var cI=function(e){return{eq:Cq(e)}};var h1={apply:function(e){return function(a){if(e instanceof h)return h.value;if(e instanceof w)return xf(Fq(e.value0)(a))(la(h1)(e.value1)(a));throw new Error(\"Failed pattern match at Data.List.Types (line 157, column 1 - line 159, column 48): \"+[e.constructor.name,a.constructor.name])}},Functor0:function(){return rv}},b7=la(h1),C7={apply:function(e){return function(a){return new El(e.value0(a.value0),xf(b7(e.value1)(new w(a.value0,h.value)))(b7(new w(e.value0,e.value1))(a.value1)))}},Functor0:function(){return wv}},g1={bind:function(e){return function(a){if(e instanceof h)return h.value;if(e instanceof w)return xf(a(e.value0))(ee(g1)(e.value1)(a));throw new Error(\"Failed pattern match at Data.List.Types (line 164, column 1 - line 166, column 37): \"+[e.constructor.name,a.constructor.name])}},Apply0:function(){return h1}},Tq=ee(g1),_I={bind:function(e){return function(a){var u=a(e.value0);return new El(u.value0,xf(u.value1)(Tq(e.value1)(function(l){return E7(a(l))})))}},Apply0:function(){return C7}};var Mq={alt:xf,Functor0:function(){return rv}},y1=function(){return{empty:h.value,Alt0:function(){return Mq}}}();var pc={pure:function(){var e=aD(y1);return function(a){return oI(e(a))}}(),Apply0:function(){return C7}};var E1=L(Ua);var Pq=o_(m7),qq=Ja(xa);var $q=$e(Ue);var C1=function(e){if(e instanceof h)return I.value;if(e instanceof w)return new R({head:e.value0,tail:e.value1});throw new Error(\"Failed pattern match at Data.List (line 259, column 1 - line 259, column 66): \"+[e.constructor.name])},sI=function(e){return g0(e)(function(a){return E1(function(u){return new k(u.head,u.tail)})(C1(a))})},Oq=function(e){if(e instanceof h)return I.value;if(e instanceof w)return new R(e.value1);throw new Error(\"Failed pattern match at Data.List (line 245, column 1 - line 245, column 43): \"+[e.constructor.name])};var F_=function(){var e=function(a){return function(u){var l=a,v=!1,t;function i(o,_){if(_ instanceof h)return v=!0,o;if(_ instanceof w){l=new w(_.value0,o),u=_.value1;return}throw new Error(\"Failed pattern match at Data.List (line 368, column 3 - line 368, column 19): \"+[o.constructor.name,_.constructor.name])}for(;!v;)t=i(l,u);return t}};return e(h.value)}();var A7=function(e){var a=function(u){return function(l){var v=u,t=!1,i;function o(_,s){if(_ instanceof h)return t=!0,I.value;if(_ instanceof w&&_.value1 instanceof h)return t=!0,new R({revInit:s,last:_.value0});if(_ instanceof w){v=_.value1,l=new w(_.value0,s);return}throw new Error(\"Failed pattern match at Data.List (line 270, column 3 - line 270, column 21): \"+[_.constructor.name,s.constructor.name])}for(;!t;)i=o(v,l);return i}};return E1(function(u){return{init:F_(u.revInit),last:u.last}})(a(e)(h.value))},lD=function(e){return function(a){return function(u){var l=function(v){return function(t){return function(i){var o=v,_=t,s=!1,b;function P(A,K,Ve){if(A instanceof h||K instanceof h)return s=!0,Ve;if(A instanceof w&&K instanceof w){o=A.value1,_=K.value1,i=new w(e(A.value0)(K.value0),Ve);return}throw new Error(\"Failed pattern match at Data.List (line 779, column 3 - line 779, column 21): \"+[A.constructor.name,K.constructor.name,Ve.constructor.name])}for(;!s;)b=P(o,_,i);return b}}};return F_(l(a)(u)(h.value))}}},b_=function(){return lD(k.create)}();var fI=function(e){var a=function(u){return function(l){var v=u,t=!1,i;function o(_,s){if(s instanceof h)return t=!0,F_(_);if(s instanceof w){var b=e(s.value0);if(b instanceof I){v=_,l=s.value1;return}if(b instanceof R){v=new w(b.value0,_),l=s.value1;return}throw new Error(\"Failed pattern match at Data.List (line 419, column 5 - line 421, column 32): \"+[b.constructor.name])}throw new Error(\"Failed pattern match at Data.List (line 417, column 3 - line 417, column 27): \"+[_.constructor.name,s.constructor.name])}for(;!t;)i=o(v,l);return i}};return a(h.value)},N7=function(e){var a=ee(e.Monad0().Bind1()),u=Qv(e);return function(l){var v=l.Plus1().Alt0(),t=Za(v),i=L(v.Functor0()),o=B(l.Applicative0());return function(_){var s=function(b){return a(t(i(ku.create)(_))(o(new Vu(void 0))))(function(P){return o(Pq(function(A){return new w(A,b)})(function(A){return F_(b)})(P))})};return u(s)(h.value)}}};var Uq=function(e){var a=la(e.Applicative0().Apply0()),u=L(e.Plus1().Alt0().Functor0());return function(l){var v=Yr(l);return function(t){return a(u(w.create)(t))(v(function(i){return T1(e)(l)(t)}))}}},T1=function(e){var a=Za(e.Plus1().Alt0()),u=B(e.Applicative0());return function(l){return function(v){return a(Uq(e)(l)(v))(u(h.value))}}},Cl=qq(function(e){return function(a){return e+1|0}})(0),P7=function(e){var a=!1,u;function l(v){if(v instanceof w&&v.value1 instanceof h)return a=!0,new R(v.value0);if(v instanceof w){e=v.value1;return}return a=!0,I.value}for(;!a;)u=l(e);return u};var q7=function(e){return E1(function(a){return a.init})(A7(e))};var Wq=function(e){if(e instanceof h)return I.value;if(e instanceof w)return new R(e.value0);throw new Error(\"Failed pattern match at Data.List (line 230, column 1 - line 230, column 22): \"+[e.constructor.name])},pI=function(e){if(e instanceof h)return h.value;if(e instanceof w&&e.value0 instanceof h)return pI(e.value1);if(e instanceof w&&e.value0 instanceof w)return new w(new w(e.value0.value0,fI(Wq)(e.value1)),pI(new w(e.value0.value1,fI(Oq)(e.value1))));throw new Error(\"Failed pattern match at Data.List (line 813, column 1 - line 813, column 54): \"+[e.constructor.name])};var DI=function(e){var a=function(u){return function(l){var v=u,t=!1,i;function o(_,s){if(s instanceof h)return t=!0,F_(_);if(s instanceof w){if(e(s.value0)){v=new w(s.value0,_),l=s.value1;return}if(pe){v=_,l=s.value1;return}}throw new Error(\"Failed pattern match at Data.List (line 390, column 3 - line 390, column 27): \"+[_.constructor.name,s.constructor.name])}for(;!t;)i=o(v,l);return i}};return a(h.value)};var $7=function(e){return function(a){var u=e,l=!1,v;function t(i,o){if(i<1)return l=!0,o;if(o instanceof h)return l=!0,h.value;if(o instanceof w){u=i-1|0,a=o.value1;return}throw new Error(\"Failed pattern match at Data.List (line 536, column 1 - line 536, column 42): \"+[i.constructor.name,o.constructor.name])}for(;!l;)v=t(u,a);return v}};var Pn=fI($q);var O7=function(e){return e()};var U7=function(e){throw new Error(e)};var W7=function(){return U7};var Vq=W7(),Jq=O7,vD=function(e){return Jq(function(){return Vq(e)})};var Hq=ee(_I),Xq=$e(Ue);var dv=function(e){return function(a){return function(u){return new El(e(a.value0)(u.value0),lD(e)(a.value1)(u.value1))}}};var E_=function(e){return new w(e.value0,e.value1)};var Ma=function(e){return e.value1};var ha=function(){var e=aD(y1);return function(a){return oI(e(a))}}();var Yq=function(e){return function(a){return e(new w(a.value0,a.value1))}};var ba=function(e){return 1+Cl(e.value1)|0},RI=function(e){return zo(e.value0)(P7(e.value1))};var II=function(e){return yu(h.value)(function(a){return new w(e.value0,a)})(q7(e.value1))};var Y=function(e){return e.value0};var fa=function(e){if(e instanceof h)return I.value;if(e instanceof w)return new R(new El(e.value0,e.value1));throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 121, column 1 - line 121, column 57): \"+[e.constructor.name])};var di=function(e){return Yq($7(e))},C_=function(e){return function(a){return new El(e,a)}},lu=function(e){return function(a){return new El(e,new w(a.value0,a.value1))}};var hl=function(e){return Hq(e)(Xq)};var T_=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}};var Zq=$e(Ue);var Ba=function(){function e(){}return e.value=new e,e}(),Na=function(){function e(a,u,l,v,t,i){this.value0=a,this.value1=u,this.value2=l,this.value3=v,this.value4=t,this.value5=i}return e.create=function(a){return function(u){return function(l){return function(v){return function(t){return function(i){return new e(a,u,l,v,t,i)}}}}}},e}();var GI=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),B7=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),M0=function(e,a,u,l){if(u instanceof Ba){if(l instanceof Ba)return new Na(1,1,e,a,u,l);if(l instanceof Na)return new Na(1+l.value0|0,1+l.value1|0,e,a,u,l);throw new Error(\"Failed pattern match at Data.Map.Internal (line 680, column 5 - line 684, column 39): \"+[l.constructor.name])}if(u instanceof Na){if(l instanceof Ba)return new Na(1+u.value0|0,1+u.value1|0,e,a,u,l);if(l instanceof Na)return new Na(1+function(){var v=u.value0>l.value0;return v?u.value0:l.value0}()|0,(1+u.value1|0)+l.value1|0,e,a,u,l);throw new Error(\"Failed pattern match at Data.Map.Internal (line 686, column 5 - line 690, column 68): \"+[l.constructor.name])}throw new Error(\"Failed pattern match at Data.Map.Internal (line 678, column 32 - line 690, column 68): \"+[u.constructor.name])};var wI=function(e){return function(a){return new Na(1,1,e,a,Ba.value,Ba.value)}},ut=function(){var e=function(l){if(l instanceof Ba)return 0;if(l instanceof Na)return l.value0;throw new Error(\"Failed pattern match at Data.Map.Internal (line 735, column 12 - line 737, column 26): \"+[l.constructor.name])},a=function(l,v,t,i,o,_,s){return _ instanceof Na&&_.value0>e(s)?M0(_.value2,_.value3,M0(l,v,t,_.value4),M0(i,o,_.value5,s)):M0(i,o,M0(l,v,t,_),s)},u=function(l,v,t,i,o,_,s){return _ instanceof Na&&e(o)<=_.value0?M0(_.value2,_.value3,M0(t,i,o,_.value4),M0(l,v,_.value5,s)):M0(t,i,o,M0(l,v,_,s))};return function(l,v,t,i){if(t instanceof Ba)return i instanceof Ba?wI(l)(v):i instanceof Na&&i.value0>1?a(l,v,t,i.value2,i.value3,i.value4,i.value5):M0(l,v,t,i);if(t instanceof Na){if(i instanceof Na){if(i.value0>(t.value0+1|0))return a(l,v,t,i.value2,i.value3,i.value4,i.value5);if(t.value0>(i.value0+1|0))return u(l,v,t.value2,t.value3,t.value4,t.value5,i)}return i instanceof Ba&&t.value0>1?u(l,v,t.value2,t.value3,t.value4,t.value5,i):M0(l,v,t,i)}throw new Error(\"Failed pattern match at Data.Map.Internal (line 695, column 40 - line 716, column 34): \"+[t.constructor.name])}}(),S1=T_(\"unsafeSplit\",\"Data.Map.Internal\",function(){return function(e,a,u){if(u instanceof Ba)return new GI(I.value,Ba.value,Ba.value);if(u instanceof Na){var l=e(a)(u.value2);if(l instanceof Ne){var v=S1(771)(e,a,u.value4);return new GI(v.value0,v.value1,ut(u.value2,u.value3,v.value2,u.value5))}if(l instanceof Te){var v=S1(774)(e,a,u.value5);return new GI(v.value0,ut(u.value2,u.value3,u.value4,v.value1),v.value2)}if(l instanceof xe)return new GI(new R(u.value3),u.value4,u.value5);throw new Error(\"Failed pattern match at Data.Map.Internal (line 769, column 5 - line 777, column 30): \"+[l.constructor.name])}throw new Error(\"Failed pattern match at Data.Map.Internal (line 765, column 34 - line 777, column 30): \"+[u.constructor.name])}}),Qq=S1(764),z7=T_(\"unsafeSplitLast\",\"Data.Map.Internal\",function(){return function(e,a,u,l){if(l instanceof Ba)return new B7(e,a,u);if(l instanceof Na){var v=z7(757)(l.value2,l.value3,l.value4,l.value5);return new B7(v.value0,v.value1,ut(e,a,u,v.value2))}throw new Error(\"Failed pattern match at Data.Map.Internal (line 754, column 37 - line 758, column 57): \"+[l.constructor.name])}}),Kq=z7(753),xq=function(e,a){if(e instanceof Ba)return a;if(e instanceof Na){var u=Kq(e.value2,e.value3,e.value4,e.value5);return ut(u.value0,u.value1,u.value2,a)}throw new Error(\"Failed pattern match at Data.Map.Internal (line 742, column 25 - line 746, column 38): \"+[e.constructor.name,a.constructor.name])};var L1=T_(\"unsafeUnionWith\",\"Data.Map.Internal\",function(){return function(e,a,u,l){if(u instanceof Ba)return l;if(l instanceof Ba)return u;if(l instanceof Na){var v=Qq(e,l.value2,u),t=L1(787)(e,a,v.value1,l.value4),i=L1(788)(e,a,v.value2,l.value5);if(v.value0 instanceof R)return ut(l.value2,a(v.value0.value0)(l.value3),t,i);if(v.value0 instanceof I)return ut(l.value2,l.value3,t,i);throw new Error(\"Failed pattern match at Data.Map.Internal (line 789, column 5 - line 793, column 46): \"+[v.value0.constructor.name])}throw new Error(\"Failed pattern match at Data.Map.Internal (line 782, column 42 - line 793, column 46): \"+[u.constructor.name,l.constructor.name])}}),e$=L1(781),a$=function(e){var a=je(e);return function(u){return function(l){return function(v){return e$(a,u,l,v)}}}},dI=function(e){return a$(e)(Oa)};var $n=function(e){var a=je(e);return function(u){var l=function(v){var t=!1,i;function o(_){if(_ instanceof Ba)return t=!0,I.value;if(_ instanceof Na){var s=a(u)(_.value2);if(s instanceof Ne){v=_.value4;return}if(s instanceof Te){v=_.value5;return}if(s instanceof xe)return t=!0,new R(_.value3);throw new Error(\"Failed pattern match at Data.Map.Internal (line 281, column 7 - line 284, column 22): \"+[s.constructor.name])}throw new Error(\"Failed pattern match at Data.Map.Internal (line 278, column 8 - line 284, column 22): \"+[_.constructor.name])}for(;!t;)i=o(v);return i};return l}};var lt=function(e){var a=je(e);return function(u){return function(l){var v=function(t){if(t instanceof Ba)return wI(u)(l);if(t instanceof Na){var i=a(u)(t.value2);if(i instanceof Ne)return ut(t.value2,t.value3,v(t.value4),t.value5);if(i instanceof Te)return ut(t.value2,t.value3,t.value4,v(t.value5));if(i instanceof xe)return new Na(t.value0,t.value1,u,l,t.value4,t.value5);throw new Error(\"Failed pattern match at Data.Map.Internal (line 469, column 7 - line 472, column 35): \"+[i.constructor.name])}throw new Error(\"Failed pattern match at Data.Map.Internal (line 466, column 8 - line 472, column 35): \"+[t.constructor.name])};return v}}},k7={map:function(e){var a=function(u){if(u instanceof Ba)return Ba.value;if(u instanceof Na)return new Na(u.value0,u.value1,u.value2,e(u.value3),a(u.value4),a(u.value5));throw new Error(\"Failed pattern match at Data.Map.Internal (line 145, column 10 - line 148, column 39): \"+[u.constructor.name])};return a}},u$={mapWithIndex:function(e){var a=function(u){if(u instanceof Ba)return Ba.value;if(u instanceof Na)return new Na(u.value0,u.value1,u.value2,e(u.value2)(u.value3),a(u.value4),a(u.value5));throw new Error(\"Failed pattern match at Data.Map.Internal (line 153, column 10 - line 156, column 41): \"+[u.constructor.name])};return a},Functor0:function(){return k7}},mI={foldr:function(e){return function(a){var u=T_(\"go\",\"Data.Map.Internal\",function(){return function(v,t){if(v instanceof Ba)return t;if(v instanceof Na)return u(170)(v.value4,e(v.value3)(u(170)(v.value5,t)));throw new Error(\"Failed pattern match at Data.Map.Internal (line 167, column 26 - line 170, column 43): \"+[v.constructor.name])}}),l=u(167);return function(v){return l(v,a)}}},foldl:function(e){return function(a){var u=T_(\"go\",\"Data.Map.Internal\",function(){return function(v,t){if(t instanceof Ba)return v;if(t instanceof Na)return u(176)(e(u(176)(v,t.value4))(t.value3),t.value5);throw new Error(\"Failed pattern match at Data.Map.Internal (line 173, column 26 - line 176, column 43): \"+[t.constructor.name])}}),l=u(173);return function(v){return l(a,v)}}},foldMap:function(e){var a=Fa(e),u=re(e.Semigroup0());return function(l){var v=function(t){if(t instanceof Ba)return a;if(t instanceof Na)return u(v(t.value4))(u(l(t.value3))(v(t.value5)));throw new Error(\"Failed pattern match at Data.Map.Internal (line 179, column 10 - line 182, column 28): \"+[t.constructor.name])};return v}}},V7={foldrWithIndex:function(e){return function(a){var u=T_(\"go\",\"Data.Map.Internal\",function(){return function(v,t){if(v instanceof Ba)return t;if(v instanceof Na)return u(190)(v.value4,e(v.value2)(v.value3)(u(190)(v.value5,t)));throw new Error(\"Failed pattern match at Data.Map.Internal (line 187, column 26 - line 190, column 45): \"+[v.constructor.name])}}),l=u(187);return function(v){return l(v,a)}}},foldlWithIndex:function(e){return function(a){var u=T_(\"go\",\"Data.Map.Internal\",function(){return function(v,t){if(t instanceof Ba)return v;if(t instanceof Na)return u(196)(e(t.value2)(u(196)(v,t.value4))(t.value3),t.value5);throw new Error(\"Failed pattern match at Data.Map.Internal (line 193, column 26 - line 196, column 45): \"+[t.constructor.name])}}),l=u(193);return function(v){return l(a,v)}}},foldMapWithIndex:function(e){var a=Fa(e),u=re(e.Semigroup0());return function(l){var v=function(t){if(t instanceof Ba)return a;if(t instanceof Na)return u(v(t.value4))(u(l(t.value2)(t.value3))(v(t.value5)));throw new Error(\"Failed pattern match at Data.Map.Internal (line 199, column 10 - line 202, column 30): \"+[t.constructor.name])};return v}},Foldable0:function(){return mI}},J7=function(){return Ks(V7)(function(e){return function(a){return function(u){return new w(e,u)}}})(h.value)}(),j7={traverse:function(e){var a=B(e),u=e.Apply0(),l=la(u),v=L(u.Functor0());return function(t){var i=function(o){if(o instanceof Ba)return a(Ba.value);if(o instanceof Na)return l(l(v(function(_){return function(s){return function(b){return new Na(o.value0,o.value1,o.value2,s,_,b)}}})(i(o.value4)))(t(o.value3)))(i(o.value5));throw new Error(\"Failed pattern match at Data.Map.Internal (line 207, column 10 - line 213, column 19): \"+[o.constructor.name])};return i}},sequence:function(e){return Iu(j7)(e)(Zq)},Functor0:function(){return k7},Foldable1:function(){return mI}},H7={traverseWithIndex:function(e){var a=B(e),u=e.Apply0(),l=la(u),v=L(u.Functor0());return function(t){var i=function(o){if(o instanceof Ba)return a(Ba.value);if(o instanceof Na)return l(l(v(function(_){return function(s){return function(b){return new Na(o.value0,o.value1,o.value2,s,_,b)}}})(i(o.value4)))(t(o.value2)(o.value3)))(i(o.value5));throw new Error(\"Failed pattern match at Data.Map.Internal (line 219, column 10 - line 225, column 19): \"+[o.constructor.name])};return i}},FunctorWithIndex0:function(){return u$},FoldableWithIndex1:function(){return V7},Traversable2:function(){return j7}};var fl=function(){return Ba.value}(),hI=function(e){var a=lt(e);return function(u){return Ja(u)(function(l){return function(v){return a(v.value0)(v.value1)(l)}})(fl)}};var A1=function(e){var a=je(e);return function(u){var l=function(v){if(v instanceof Ba)return Ba.value;if(v instanceof Na){var t=a(u)(v.value2);if(t instanceof Ne)return ut(v.value2,v.value3,l(v.value4),v.value5);if(t instanceof Te)return ut(v.value2,v.value3,v.value4,l(v.value5));if(t instanceof xe)return xq(v.value4,v.value5);throw new Error(\"Failed pattern match at Data.Map.Internal (line 496, column 7 - line 499, column 43): \"+[t.constructor.name])}throw new Error(\"Failed pattern match at Data.Map.Internal (line 493, column 8 - line 499, column 43): \"+[v.constructor.name])};return l}};var v$=ds();var n$=function(e){return v$(dI(e))};var r$=function(e){return J7(e)},X7=function(e){var a=sI(e);return function(u){return a(r$(u))}};var N1=function(e){return wI(e)(void 0)};var nD=function(e){return{append:n$(e)}};var t$=fl;var ep=function(e){var a=nD(e);return{mempty:t$,Semigroup0:function(){return a}}};var Y7=b0(Vs),de=function(){function e(){}return e.value=new e,e}(),Ge=function(){function e(){}return e.value=new e,e}(),i$={to:function(e){if(e instanceof bu)return de.value;if(e instanceof ze)return Ge.value;throw new Error(\"Failed pattern match at MultiMode (line 10, column 1 - line 10, column 36): \"+[e.constructor.name])},from:function(e){if(e instanceof de)return new bu(Xv.value);if(e instanceof Ge)return new ze(Xv.value);throw new Error(\"Failed pattern match at MultiMode (line 10, column 1 - line 10, column 36): \"+[e.constructor.name])}},P1={show:Ln(i$)(Wv(Y7({reflectSymbol:function(){return\"Combinatorial\"}}))(Y7({reflectSymbol:function(){return\"Pairwise\"}})))},q1={eq:function(e){return function(a){return e instanceof de&&a instanceof de||e instanceof Ge&&a instanceof Ge}}};var Sa=m(q1),o$=Fu($o),a8=lv(Gn),$1=Yv(xa)(m0),c$=kR(y_),Z7=X(Nv),Q7=L(rv),ap=X(Va),Pa=X(P1),Pu=B(X3),O1=ep(uu),K7=Fa(O1),vt=ci(cl),_$=Vl(xa)(Sf()(ma({reflectSymbol:function(){return\"ain\"}})(vt)()(ma({reflectSymbol:function(){return\"fft\"}})(vt)()(ma({reflectSymbol:function(){return\"hi\"}})(vt)()(ma({reflectSymbol:function(){return\"ifft\"}})(vt)()(ma({reflectSymbol:function(){return\"ihi\"}})(vt)()(ma({reflectSymbol:function(){return\"ilo\"}})(vt)()(ma({reflectSymbol:function(){return\"imgURLs\"}})(O1)()(ma({reflectSymbol:function(){return\"imid\"}})(vt)()(ma({reflectSymbol:function(){return\"lo\"}})(vt)()(ma({reflectSymbol:function(){return\"mid\"}})(vt)()(ma({reflectSymbol:function(){return\"vidURLs\"}})(O1)()(ma({reflectSymbol:function(){return\"webcam\"}})(vt)()(Mf)))))))))))))),L_=Wu(_a),x7=Jo(at),e8=L(wv),ju=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),el=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),S0=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),Un=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),nt=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Wn=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),rt=function(){function e(){}return e.value=new e,e}(),sc=function(){function e(){}return e.value=new e,e}(),Dc=function(){function e(){}return e.value=new e,e}(),hi=function(){function e(){}return e.value=new e,e}(),On=function(){function e(){}return e.value=new e,e}(),Rc=function(){function e(){}return e.value=new e,e}(),Ic=function(){function e(){}return e.value=new e,e}(),L0=function(){function e(){}return e.value=new e,e}(),gi=function(){function e(){}return e.value=new e,e}(),Gc=function(){function e(){}return e.value=new e,e}(),wc=function(){function e(){}return e.value=new e,e}(),yi=function(){function e(){}return e.value=new e,e}(),Fi=function(){function e(){}return e.value=new e,e}(),bi=function(){function e(){}return e.value=new e,e}(),Ei=function(){function e(){}return e.value=new e,e}(),Ci=function(){function e(){}return e.value=new e,e}(),Ti=function(){function e(){}return e.value=new e,e}(),tt=function(){function e(){}return e.value=new e,e}(),it=function(){function e(){}return e.value=new e,e}(),ot=function(){function e(){}return e.value=new e,e}(),ct=function(){function e(){}return e.value=new e,e}(),_t=function(){function e(){}return e.value=new e,e}(),dc=function(){function e(){}return e.value=new e,e}(),A0=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),Mi=function(){function e(){}return e.value=new e,e}(),Si=function(){function e(){}return e.value=new e,e}(),Li=function(){function e(){}return e.value=new e,e}(),ft=function(){function e(){}return e.value=new e,e}(),pt=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),st=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Bn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),zn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Ai=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Ni=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Pi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),qi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),$i=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Oi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Ui=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Wi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Bi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),zi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),ki=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Dt=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Rt=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),It=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),kn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Vn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Jn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),jn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Hn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Xn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Yn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Zn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Qn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Kn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),xn=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),er=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),ar=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),ur=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),lr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),vr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),nr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),rr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),tr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),ir=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),or=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),cr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),_r=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),fr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),pr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),sr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Dr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Rr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Ir=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Gr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),wr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Vi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Ji=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),ji=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Gt=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),wt=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Hi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Xi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Yi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Zi=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),dr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),mr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),hr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),gr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),yr=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Qi=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),Ki=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),xi=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),eo=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),dt=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),ao=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),uo=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),lo=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),vo=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),no=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),ro=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),to=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),io=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),N0=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),P0=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),Kv=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Bv=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),q0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),mv=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),$0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),O0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),U0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),W0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),B0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),xv=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),z0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),k0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),V0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),J0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),j0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),mt=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),ht=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),H0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),X0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Y0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),gt=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),yt=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Ft=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),bt=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Et=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Ct=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Z0=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Q0=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),K0=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),Fr=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),br=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),hv=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),Er=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),Tt=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),e0=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),Mt=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),St=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),Lt=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),oo=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}();var y={eq:function(e){return function(a){return e instanceof ju&&a instanceof ju?e.value0===a.value0:e instanceof el&&a instanceof el?Sa(e.value0)(a.value0)&&m(cI(y))(e.value1)(a.value1):e instanceof S0&&a instanceof S0?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof Un&&a instanceof Un?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof nt&&a instanceof nt?m(y)(e.value0)(a.value0):e instanceof Wn&&a instanceof Wn?e.value0===a.value0&&m(y)(e.value1)(a.value1):e instanceof rt&&a instanceof rt||e instanceof sc&&a instanceof sc||e instanceof Dc&&a instanceof Dc||e instanceof hi&&a instanceof hi||e instanceof On&&a instanceof On||e instanceof Rc&&a instanceof Rc||e instanceof Ic&&a instanceof Ic||e instanceof L0&&a instanceof L0||e instanceof gi&&a instanceof gi||e instanceof Gc&&a instanceof Gc||e instanceof wc&&a instanceof wc||e instanceof yi&&a instanceof yi||e instanceof Fi&&a instanceof Fi||e instanceof bi&&a instanceof bi||e instanceof Ei&&a instanceof Ei||e instanceof Ci&&a instanceof Ci||e instanceof Ti&&a instanceof Ti||e instanceof tt&&a instanceof tt||e instanceof it&&a instanceof it||e instanceof ot&&a instanceof ot||e instanceof ct&&a instanceof ct||e instanceof _t&&a instanceof _t||e instanceof dc&&a instanceof dc?!0:e instanceof A0&&a instanceof A0?e.value0===a.value0&&e.value1===a.value1:e instanceof Mi&&a instanceof Mi||e instanceof Si&&a instanceof Si||e instanceof Li&&a instanceof Li||e instanceof ft&&a instanceof ft?!0:e instanceof pt&&a instanceof pt||e instanceof st&&a instanceof st?e.value0===a.value0:e instanceof Bn&&a instanceof Bn?m(y)(e.value0)(a.value0):e instanceof zn&&a instanceof zn?m(y)(e.value0)(a.value0):e instanceof Ai&&a instanceof Ai?m(y)(e.value0)(a.value0):e instanceof Ni&&a instanceof Ni?m(y)(e.value0)(a.value0):e instanceof Pi&&a instanceof Pi?m(y)(e.value0)(a.value0):e instanceof qi&&a instanceof qi?m(y)(e.value0)(a.value0):e instanceof $i&&a instanceof $i?m(y)(e.value0)(a.value0):e instanceof Oi&&a instanceof Oi?m(y)(e.value0)(a.value0):e instanceof Ui&&a instanceof Ui?m(y)(e.value0)(a.value0):e instanceof Wi&&a instanceof Wi?m(y)(e.value0)(a.value0):e instanceof Bi&&a instanceof Bi?m(y)(e.value0)(a.value0):e instanceof zi&&a instanceof zi?m(y)(e.value0)(a.value0):e instanceof ki&&a instanceof ki?m(y)(e.value0)(a.value0):e instanceof Dt&&a instanceof Dt?m(y)(e.value0)(a.value0):e instanceof Rt&&a instanceof Rt?m(y)(e.value0)(a.value0):e instanceof It&&a instanceof It?m(y)(e.value0)(a.value0):e instanceof kn&&a instanceof kn?m(y)(e.value0)(a.value0):e instanceof Vn&&a instanceof Vn?m(y)(e.value0)(a.value0):e instanceof Jn&&a instanceof Jn?m(y)(e.value0)(a.value0):e instanceof jn&&a instanceof jn?m(y)(e.value0)(a.value0):e instanceof Hn&&a instanceof Hn?m(y)(e.value0)(a.value0):e instanceof Xn&&a instanceof Xn?m(y)(e.value0)(a.value0):e instanceof Yn&&a instanceof Yn?m(y)(e.value0)(a.value0):e instanceof Zn&&a instanceof Zn?m(y)(e.value0)(a.value0):e instanceof Qn&&a instanceof Qn?m(y)(e.value0)(a.value0):e instanceof Kn&&a instanceof Kn?m(y)(e.value0)(a.value0):e instanceof xn&&a instanceof xn?m(y)(e.value0)(a.value0):e instanceof er&&a instanceof er?m(y)(e.value0)(a.value0):e instanceof ar&&a instanceof ar?m(y)(e.value0)(a.value0):e instanceof ur&&a instanceof ur?m(y)(e.value0)(a.value0):e instanceof lr&&a instanceof lr?m(y)(e.value0)(a.value0):e instanceof vr&&a instanceof vr?m(y)(e.value0)(a.value0):e instanceof nr&&a instanceof nr?m(y)(e.value0)(a.value0):e instanceof rr&&a instanceof rr?m(y)(e.value0)(a.value0):e instanceof tr&&a instanceof tr?m(y)(e.value0)(a.value0):e instanceof ir&&a instanceof ir?m(y)(e.value0)(a.value0):e instanceof or&&a instanceof or?m(y)(e.value0)(a.value0):e instanceof cr&&a instanceof cr?m(y)(e.value0)(a.value0):e instanceof _r&&a instanceof _r?m(y)(e.value0)(a.value0):e instanceof fr&&a instanceof fr?m(y)(e.value0)(a.value0):e instanceof pr&&a instanceof pr?m(y)(e.value0)(a.value0):e instanceof sr&&a instanceof sr?m(y)(e.value0)(a.value0):e instanceof Dr&&a instanceof Dr?m(y)(e.value0)(a.value0):e instanceof Rr&&a instanceof Rr?m(y)(e.value0)(a.value0):e instanceof Ir&&a instanceof Ir?m(y)(e.value0)(a.value0):e instanceof Gr&&a instanceof Gr?m(y)(e.value0)(a.value0):e instanceof wr&&a instanceof wr?m(y)(e.value0)(a.value0):e instanceof Vi&&a instanceof Vi?m(y)(e.value0)(a.value0):e instanceof Ji&&a instanceof Ji?m(y)(e.value0)(a.value0):e instanceof ji&&a instanceof ji?m(y)(e.value0)(a.value0):e instanceof Gt&&a instanceof Gt?m(y)(e.value0)(a.value0):e instanceof wt&&a instanceof wt?m(y)(e.value0)(a.value0):e instanceof Hi&&a instanceof Hi?m(y)(e.value0)(a.value0):e instanceof Xi&&a instanceof Xi?m(y)(e.value0)(a.value0):e instanceof Yi&&a instanceof Yi?m(y)(e.value0)(a.value0):e instanceof Zi&&a instanceof Zi?m(y)(e.value0)(a.value0):e instanceof dr&&a instanceof dr?m(y)(e.value0)(a.value0):e instanceof mr&&a instanceof mr?m(y)(e.value0)(a.value0):e instanceof hr&&a instanceof hr?m(y)(e.value0)(a.value0):e instanceof gr&&a instanceof gr?m(y)(e.value0)(a.value0):e instanceof yr&&a instanceof yr?m(y)(e.value0)(a.value0):e instanceof Qi&&a instanceof Qi?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof Ki&&a instanceof Ki?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof xi&&a instanceof xi?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof eo&&a instanceof eo?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof dt&&a instanceof dt?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof ao&&a instanceof ao?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof uo&&a instanceof uo?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof lo&&a instanceof lo?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof vo&&a instanceof vo?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof no&&a instanceof no?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof ro&&a instanceof ro?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof to&&a instanceof to?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof io&&a instanceof io?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof N0&&a instanceof N0?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof P0&&a instanceof P0?m(y)(e.value0)(a.value0)&&m(y)(e.value1)(a.value1):e instanceof Kv&&a instanceof Kv?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof Bv&&a instanceof Bv?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof q0&&a instanceof q0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof mv&&a instanceof mv?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof $0&&a instanceof $0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof O0&&a instanceof O0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof U0&&a instanceof U0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof W0&&a instanceof W0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof B0&&a instanceof B0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof xv&&a instanceof xv?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof z0&&a instanceof z0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof k0&&a instanceof k0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof V0&&a instanceof V0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof J0&&a instanceof J0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof j0&&a instanceof j0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof mt&&a instanceof mt?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof ht&&a instanceof ht?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof H0&&a instanceof H0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof X0&&a instanceof X0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof Y0&&a instanceof Y0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof gt&&a instanceof gt?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof yt&&a instanceof yt?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof Ft&&a instanceof Ft?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof bt&&a instanceof bt?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof Et&&a instanceof Et?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof Ct&&a instanceof Ct?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof Z0&&a instanceof Z0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):e instanceof Q0&&a instanceof Q0?Sa(e.value0)(a.value0)&&e.value1===a.value1&&m(y)(e.value2)(a.value2)&&m(y)(e.value3)(a.value3):e instanceof K0&&a instanceof K0?Sa(e.value0)(a.value0)&&e.value1===a.value1&&m(y)(e.value2)(a.value2)&&m(y)(e.value3)(a.value3):e instanceof Fr&&a instanceof Fr?e.value0===a.value0&&m(y)(e.value1)(a.value1):e instanceof br&&a instanceof br?m(y)(e.value0)(a.value0):e instanceof hv&&a instanceof hv?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2)&&m(y)(e.value3)(a.value3):e instanceof Er&&a instanceof Er?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2)&&m(y)(e.value3)(a.value3):e instanceof Tt&&a instanceof Tt?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2)&&m(y)(e.value3)(a.value3):e instanceof e0&&a instanceof e0?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2)&&m(y)(e.value3)(a.value3):e instanceof Mt&&a instanceof Mt?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2)&&m(y)(e.value3)(a.value3):e instanceof St&&a instanceof St?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2)&&m(y)(e.value3)(a.value3):e instanceof Lt&&a instanceof Lt?Sa(e.value0)(a.value0)&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2)&&m(y)(e.value3)(a.value3):e instanceof oo&&a instanceof oo?e.value0===a.value0&&m(y)(e.value1)(a.value1)&&m(y)(e.value2)(a.value2):!1}}},U1=function(e){return new ju(0)},f$=function(e){if(e instanceof ju)return h.value;if(e instanceof el)return e.value1;if(e instanceof S0)return new w(e.value0,new w(e.value1,h.value));if(e instanceof Un)return new w(e.value0,new w(e.value1,h.value));if(e instanceof nt)return new w(e.value0,h.value);if(e instanceof Wn)return new w(e.value1,h.value);if(e instanceof rt)return h.value;if(e instanceof sc)return h.value;if(e instanceof Dc)return h.value;if(e instanceof hi)return h.value;if(e instanceof On)return h.value;if(e instanceof Rc)return h.value;if(e instanceof Ic)return h.value;if(e instanceof L0)return h.value;if(e instanceof gi)return h.value;if(e instanceof Gc)return h.value;if(e instanceof wc)return h.value;if(e instanceof yi)return h.value;if(e instanceof Fi)return h.value;if(e instanceof bi)return h.value;if(e instanceof Ei)return h.value;if(e instanceof Ci)return h.value;if(e instanceof Ti)return h.value;if(e instanceof tt)return h.value;if(e instanceof it)return h.value;if(e instanceof ot)return h.value;if(e instanceof ct)return h.value;if(e instanceof _t)return h.value;if(e instanceof dc)return h.value;if(e instanceof A0)return h.value;if(e instanceof Mi)return h.value;if(e instanceof Si)return h.value;if(e instanceof Li)return h.value;if(e instanceof ft)return h.value;if(e instanceof pt)return h.value;if(e instanceof st)return h.value;if(e instanceof Bn)return new w(e.value0,h.value);if(e instanceof zn)return new w(e.value0,h.value);if(e instanceof Ai)return new w(e.value0,h.value);if(e instanceof Ni)return new w(e.value0,h.value);if(e instanceof Pi)return new w(e.value0,h.value);if(e instanceof qi)return new w(e.value0,h.value);if(e instanceof $i)return new w(e.value0,h.value);if(e instanceof Oi)return new w(e.value0,h.value);if(e instanceof Ui)return new w(e.value0,h.value);if(e instanceof Wi)return new w(e.value0,h.value);if(e instanceof Bi)return new w(e.value0,h.value);if(e instanceof zi)return new w(e.value0,h.value);if(e instanceof ki)return new w(e.value0,h.value);if(e instanceof Dt)return new w(e.value0,h.value);if(e instanceof Rt)return new w(e.value0,h.value);if(e instanceof It)return new w(e.value0,h.value);if(e instanceof kn)return new w(e.value0,h.value);if(e instanceof Vn)return new w(e.value0,h.value);if(e instanceof Jn)return new w(e.value0,h.value);if(e instanceof jn)return new w(e.value0,h.value);if(e instanceof Hn)return new w(e.value0,h.value);if(e instanceof Xn)return new w(e.value0,h.value);if(e instanceof Yn)return new w(e.value0,h.value);if(e instanceof Zn)return new w(e.value0,h.value);if(e instanceof Qn)return new w(e.value0,h.value);if(e instanceof Kn)return new w(e.value0,h.value);if(e instanceof xn)return new w(e.value0,h.value);if(e instanceof er)return new w(e.value0,h.value);if(e instanceof ar)return new w(e.value0,h.value);if(e instanceof ur)return new w(e.value0,h.value);if(e instanceof lr)return new w(e.value0,h.value);if(e instanceof vr)return new w(e.value0,h.value);if(e instanceof nr)return new w(e.value0,h.value);if(e instanceof rr)return new w(e.value0,h.value);if(e instanceof tr)return new w(e.value0,h.value);if(e instanceof ir)return new w(e.value0,h.value);if(e instanceof or)return new w(e.value0,h.value);if(e instanceof cr)return new w(e.value0,h.value);if(e instanceof _r)return new w(e.value0,h.value);if(e instanceof fr)return new w(e.value0,h.value);if(e instanceof pr)return new w(e.value0,h.value);if(e instanceof sr)return new w(e.value0,h.value);if(e instanceof Dr)return new w(e.value0,h.value);if(e instanceof Rr)return new w(e.value0,h.value);if(e instanceof Ir)return new w(e.value0,h.value);if(e instanceof Gr)return new w(e.value0,h.value);if(e instanceof wr)return new w(e.value0,h.value);if(e instanceof Vi)return new w(e.value0,h.value);if(e instanceof Ji)return new w(e.value0,h.value);if(e instanceof ji)return new w(e.value0,h.value);if(e instanceof Gt)return new w(e.value0,h.value);if(e instanceof wt)return new w(e.value0,h.value);if(e instanceof Hi)return new w(e.value0,h.value);if(e instanceof Xi)return new w(e.value0,h.value);if(e instanceof Yi)return new w(e.value0,h.value);if(e instanceof Zi)return new w(e.value0,h.value);if(e instanceof dr)return new w(e.value0,h.value);if(e instanceof mr)return new w(e.value0,h.value);if(e instanceof hr)return new w(e.value0,h.value);if(e instanceof gr)return new w(e.value0,h.value);if(e instanceof yr)return new w(e.value0,h.value);if(e instanceof Qi)return new w(e.value0,new w(e.value1,h.value));if(e instanceof Ki)return new w(e.value0,new w(e.value1,h.value));if(e instanceof xi)return new w(e.value0,new w(e.value1,h.value));if(e instanceof eo)return new w(e.value0,new w(e.value1,h.value));if(e instanceof dt)return new w(e.value0,new w(e.value1,h.value));if(e instanceof ao)return new w(e.value0,new w(e.value1,h.value));if(e instanceof uo)return new w(e.value0,new w(e.value1,h.value));if(e instanceof lo)return new w(e.value0,new w(e.value1,h.value));if(e instanceof vo)return new w(e.value0,new w(e.value1,h.value));if(e instanceof no)return new w(e.value0,new w(e.value1,h.value));if(e instanceof ro)return new w(e.value0,new w(e.value1,h.value));if(e instanceof to)return new w(e.value0,new w(e.value1,h.value));if(e instanceof io)return new w(e.value0,new w(e.value1,h.value));if(e instanceof N0)return new w(e.value0,new w(e.value1,h.value));if(e instanceof P0)return new w(e.value0,new w(e.value1,h.value));if(e instanceof Kv)return new w(e.value1,new w(e.value2,h.value));if(e instanceof Bv)return new w(e.value1,new w(e.value2,h.value));if(e instanceof q0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof mv)return new w(e.value1,new w(e.value2,h.value));if(e instanceof $0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof O0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof U0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof W0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof B0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof xv)return new w(e.value1,new w(e.value2,h.value));if(e instanceof z0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof k0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof V0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof J0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof j0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof mt)return new w(e.value1,new w(e.value2,h.value));if(e instanceof ht)return new w(e.value1,new w(e.value2,h.value));if(e instanceof H0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof X0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof Y0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof gt)return new w(e.value1,new w(e.value2,h.value));if(e instanceof yt)return new w(e.value1,new w(e.value2,h.value));if(e instanceof Ft)return new w(e.value1,new w(e.value2,h.value));if(e instanceof bt)return new w(e.value1,new w(e.value2,h.value));if(e instanceof Et)return new w(e.value1,new w(e.value2,h.value));if(e instanceof Ct)return new w(e.value1,new w(e.value2,h.value));if(e instanceof Z0)return new w(e.value1,new w(e.value2,h.value));if(e instanceof Q0)return new w(e.value2,new w(e.value3,h.value));if(e instanceof K0)return new w(e.value2,new w(e.value3,h.value));if(e instanceof Fr)return new w(e.value1,h.value);if(e instanceof br)return new w(e.value0,h.value);if(e instanceof Er)return new w(e.value1,new w(e.value2,new w(e.value3,h.value)));if(e instanceof Tt)return new w(e.value1,new w(e.value2,new w(e.value3,h.value)));if(e instanceof e0)return new w(e.value1,new w(e.value2,new w(e.value3,h.value)));if(e instanceof hv)return new w(e.value1,new w(e.value2,new w(e.value3,h.value)));if(e instanceof Mt)return new w(e.value1,new w(e.value2,new w(e.value3,h.value)));if(e instanceof St)return new w(e.value1,new w(e.value2,new w(e.value3,h.value)));if(e instanceof Lt)return new w(e.value1,new w(e.value2,new w(e.value3,h.value)));if(e instanceof oo)return new w(e.value1,new w(e.value2,h.value));throw new Error(\"Failed pattern match at Signal (line 413, column 1 - line 413, column 36): \"+[e.constructor.name])},ea=function(e){return function(a){return function(u){return(a8(u-1|0)(a)+1|0)*e|0}}},yI=function(e){return function(a){return function(u){return function(l){var v=new el(e,new w(a,new w(u,h.value))),t=new el(Ge.value,new w(new ju(-1),new w(new ju(1),h.value)));return new e0(e,t,v,l)}}}},u8=function(e){return function(a){var u=new Bv(Ge.value,e,a),l=new Kv(Ge.value,e,a);return yI(Ge.value)(u)(l)}},p$=function(e){if(e<=4)return 1;if(pe){var a=ea(1)(2)(e);return a8(a*(a-1|0)|0)(2)}throw new Error(\"Failed pattern match at Signal (line 714, column 1 - line 714, column 27): \"+[e.constructor.name])},l8=function(e){return N0.create(new Bv(Ge.value,new ju(0),e))},N=function(e){return $1(c$(e)(\" \"))},F=function(e){return function(a){if(a instanceof ju)return N(e)+(\"Constant \"+(Z7(a.value0)+`\n`));if(a instanceof el&&a.value0 instanceof de)return N(e)+(`[\n`+($1(Q7(F(e+1|0))(a.value1))+(N(e)+`]\n`)));if(a instanceof el&&a.value0 instanceof Ge)return N(e)+(`{\n`+($1(Q7(F(e+1|0))(a.value1))+(N(e)+`}\n`)));if(a instanceof S0)return N(e)+(`Append\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof Un)return N(e)+(`Zip\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof nt)return N(e)+(`Mono\n`+F(e+1|0)(a.value0));if(a instanceof Wn)return N(e)+(\"Rep \"+(ap(a.value0)+(`\n`+F(e+1|0)(a.value1))));if(a instanceof rt)return N(e)+`Pi\n`;if(a instanceof sc)return N(e)+`Px\n`;if(a instanceof Dc)return N(e)+`Py\n`;if(a instanceof hi)return N(e)+`Pxy\n`;if(a instanceof On)return N(e)+`Aspect\n`;if(a instanceof Rc)return N(e)+`Fx\n`;if(a instanceof Ic)return N(e)+`Fy\n`;if(a instanceof L0)return N(e)+`Fxy\n`;if(a instanceof gi)return N(e)+`FRt\n`;if(a instanceof Gc)return N(e)+`FR\n`;if(a instanceof wc)return N(e)+`FT\n`;if(a instanceof yi)return N(e)+`Lo\n`;if(a instanceof Fi)return N(e)+`Mid\n`;if(a instanceof bi)return N(e)+`Hi\n`;if(a instanceof Ei)return N(e)+`ILo\n`;if(a instanceof Ci)return N(e)+`IMid\n`;if(a instanceof Ti)return N(e)+`IHi\n`;if(a instanceof tt)return N(e)+`Cps\n`;if(a instanceof it)return N(e)+`Time\n`;if(a instanceof ot)return N(e)+`Beat\n`;if(a instanceof ct)return N(e)+`EBeat\n`;if(a instanceof _t)return N(e)+`ETime\n`;if(a instanceof dc)return N(e)+`Rnd\n`;if(a instanceof A0)return N(e)+(\"AIn \"+(ap(a.value0)+(\" \"+(ap(a.value1)+`\n`))));if(a instanceof Mi)return N(e)+`FFT\n`;if(a instanceof Si)return N(e)+`IFFT\n`;if(a instanceof Li)return N(e)+`Fb\n`;if(a instanceof ft)return N(e)+`Cam\n`;if(a instanceof pt)return N(e)+(\"Img \"+(a.value0+`\n`));if(a instanceof st)return N(e)+(\"Vid \"+(a.value0+`\n`));if(a instanceof Bn)return N(e)+(`Bipolar\n`+F(e+1|0)(a.value0));if(a instanceof zn)return N(e)+(`Unipolar\n`+F(e+1|0)(a.value0));if(a instanceof Ai)return N(e)+(`Blend\n`+F(e+1|0)(a.value0));if(a instanceof Ni)return N(e)+(`Add\n`+F(e+1|0)(a.value0));if(a instanceof Pi)return N(e)+(`Mul\n`+F(e+1|0)(a.value0));if(a instanceof qi)return N(e)+(`RgbHsv\n`+F(e+1|0)(a.value0));if(a instanceof $i)return N(e)+(`HsvRgb\n`+F(e+1|0)(a.value0));if(a instanceof Oi)return N(e)+(`HsvR\n`+F(e+1|0)(a.value0));if(a instanceof Ui)return N(e)+(`HsvG\n`+F(e+1|0)(a.value0));if(a instanceof Wi)return N(e)+(`HsvB\n`+F(e+1|0)(a.value0));if(a instanceof Bi)return N(e)+(`RgbH\n`+F(e+1|0)(a.value0));if(a instanceof zi)return N(e)+(`RgbS\n`+F(e+1|0)(a.value0));if(a instanceof ki)return N(e)+(`RgbV\n`+F(e+1|0)(a.value0));if(a instanceof Dt)return N(e)+(`RgbR\n`+F(e+1|0)(a.value0));if(a instanceof Rt)return N(e)+(`RgbG\n`+F(e+1|0)(a.value0));if(a instanceof It)return N(e)+(`RgbB\n`+F(e+1|0)(a.value0));if(a instanceof kn)return N(e)+(`Osc\n`+F(e+1|0)(a.value0));if(a instanceof Vn)return N(e)+(`Tri\n`+F(e+1|0)(a.value0));if(a instanceof Jn)return N(e)+(`Saw\n`+F(e+1|0)(a.value0));if(a instanceof jn)return N(e)+(`Sqr\n`+F(e+1|0)(a.value0));if(a instanceof Hn)return N(e)+(`LFTri\n`+F(e+1|0)(a.value0));if(a instanceof Xn)return N(e)+(`LFSaw\n`+F(e+1|0)(a.value0));if(a instanceof Yn)return N(e)+(`LFSqr\n`+F(e+1|0)(a.value0));if(a instanceof Zn)return N(e)+(`Abs\n`+F(e+1|0)(a.value0));if(a instanceof Qn)return N(e)+(`Acos\n`+F(e+1|0)(a.value0));if(a instanceof Kn)return N(e)+(`Acosh\n`+F(e+1|0)(a.value0));if(a instanceof xn)return N(e)+(`Asin\n`+F(e+1|0)(a.value0));if(a instanceof er)return N(e)+(`Asinh\n`+F(e+1|0)(a.value0));if(a instanceof ar)return N(e)+(`Atan\n`+F(e+1|0)(a.value0));if(a instanceof ur)return N(e)+(`Atanh\n`+F(e+1|0)(a.value0));if(a instanceof lr)return N(e)+(`Cbrt\n`+F(e+1|0)(a.value0));if(a instanceof vr)return N(e)+(`Ceil\n`+F(e+1|0)(a.value0));if(a instanceof nr)return N(e)+(`Cos\n`+F(e+1|0)(a.value0));if(a instanceof rr)return N(e)+(`Cosh\n`+F(e+1|0)(a.value0));if(a instanceof tr)return N(e)+(`Exp\n`+F(e+1|0)(a.value0));if(a instanceof ir)return N(e)+(`Floor\n`+F(e+1|0)(a.value0));if(a instanceof or)return N(e)+(`Log\n`+F(e+1|0)(a.value0));if(a instanceof cr)return N(e)+(`Log2\n`+F(e+1|0)(a.value0));if(a instanceof _r)return N(e)+(`Log10\n`+F(e+1|0)(a.value0));if(a instanceof fr)return N(e)+(`Round\n`+F(e+1|0)(a.value0));if(a instanceof pr)return N(e)+(`Sign\n`+F(e+1|0)(a.value0));if(a instanceof sr)return N(e)+(`Sin\n`+F(e+1|0)(a.value0));if(a instanceof Dr)return N(e)+(`Sinh\n`+F(e+1|0)(a.value0));if(a instanceof Rr)return N(e)+(`Sqrt\n`+F(e+1|0)(a.value0));if(a instanceof Ir)return N(e)+(`Tan\n`+F(e+1|0)(a.value0));if(a instanceof Gr)return N(e)+(`Tanh\n`+F(e+1|0)(a.value0));if(a instanceof wr)return N(e)+(`Trunc\n`+F(e+1|0)(a.value0));if(a instanceof Vi)return N(e)+(`RtXy\n`+F(e+1|0)(a.value0));if(a instanceof Ji)return N(e)+(`RtX\n`+F(e+1|0)(a.value0));if(a instanceof ji)return N(e)+(`RtY\n`+F(e+1|0)(a.value0));if(a instanceof Gt)return N(e)+(`XyRt\n`+F(e+1|0)(a.value0));if(a instanceof wt)return N(e)+(`XyR\n`+F(e+1|0)(a.value0));if(a instanceof Hi)return N(e)+(`XyT\n`+F(e+1|0)(a.value0));if(a instanceof Xi)return N(e)+(`Point\n`+F(e+1|0)(a.value0));if(a instanceof Yi)return N(e)+(`Dist\n`+F(e+1|0)(a.value0));if(a instanceof Zi)return N(e)+(`Prox\n`+F(e+1|0)(a.value0));if(a instanceof dr)return N(e)+(`MidiCps\n`+F(e+1|0)(a.value0));if(a instanceof mr)return N(e)+(`CpsMidi\n`+F(e+1|0)(a.value0));if(a instanceof hr)return N(e)+(`DbAmp\n`+F(e+1|0)(a.value0));if(a instanceof gr)return N(e)+(`AmpDb\n`+F(e+1|0)(a.value0));if(a instanceof yr)return N(e)+(`Fract\n`+F(e+1|0)(a.value0));if(a instanceof Qi)return N(e)+(`SetFx\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof Ki)return N(e)+(`SetFy\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof xi)return N(e)+(`SetFxy\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof eo)return N(e)+(`Zoom\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof dt)return N(e)+(`ZoomXy\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof ao)return N(e)+(`ZoomX\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof uo)return N(e)+(`ZoomY\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof lo)return N(e)+(`Move\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof vo)return N(e)+(`Tile\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof no)return N(e)+(`TileXy\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof ro)return N(e)+(`TileX\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof to)return N(e)+(`TileY\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof io)return N(e)+(`Spin\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof N0)return N(e)+(`Early\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof P0)return N(e)+(`Slow\n`+(F(e+1|0)(a.value0)+F(e+1|0)(a.value1)));if(a instanceof Kv)return N(e)+(\"Addition \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof Bv)return N(e)+(\"Difference \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof q0)return N(e)+(\"Product \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof mv)return N(e)+(\"Division \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof $0)return N(e)+(\"Mod \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof O0)return N(e)+(\"Pow \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof U0)return N(e)+(\"Equal \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof W0)return N(e)+(\"NotEqual \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof B0)return N(e)+(\"GreaterThan \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof xv)return N(e)+(\"GreaterThanEqual \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof z0)return N(e)+(\"LessThan \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof k0)return N(e)+(\"LessThanEqual \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof V0)return N(e)+(\"Max \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof J0)return N(e)+(\"Min \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof j0)return N(e)+(\"Gate \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof mt)return N(e)+(\"Circle \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof ht)return N(e)+(\"Rect \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof H0)return N(e)+(\"Clip \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof X0)return N(e)+(\"Between \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof Y0)return N(e)+(\"SmoothStep \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof gt)return N(e)+(\"VLine \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof yt)return N(e)+(\"HLine \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof Ft)return N(e)+(\"Chain \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof bt)return N(e)+(\"Lines \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof Et)return N(e)+(\"ILines \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof Ct)return N(e)+(\"Mesh \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof Z0)return N(e)+(\"Spr \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));if(a instanceof Q0)return N(e)+(\"Btw \"+(Pa(a.value0)+(\" \"+(ap(a.value1)+(`\n`+(F(e+1|0)(a.value2)+F(e+1|0)(a.value3)))))));if(a instanceof K0)return N(e)+(\"Pan \"+(Pa(a.value0)+(\" \"+(ap(a.value1)+(`\n`+(F(e+1|0)(a.value2)+F(e+1|0)(a.value3)))))));if(a instanceof Fr)return N(e)+(\"Splay \"+(ap(a.value0)+(`\n`+F(e+1|0)(a.value1))));if(a instanceof br)return N(e)+(`Seq\n`+F(e+1|0)(a.value0));if(a instanceof hv)return N(e)+(\"Mix \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+(F(e+1|0)(a.value2)+F(e+1|0)(a.value3))))));if(a instanceof Er)return N(e)+(\"ILine \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+(F(e+1|0)(a.value2)+F(e+1|0)(a.value3))))));if(a instanceof Tt)return N(e)+(\"Line\"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+(F(e+1|0)(a.value2)+F(e+1|0)(a.value3))))));if(a instanceof e0)return N(e)+(\"LinLin \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+(F(e+1|0)(a.value2)+F(e+1|0)(a.value3))))));if(a instanceof Mt)return N(e)+(\"LPF \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+(F(e+1|0)(a.value2)+F(e+1|0)(a.value3))))));if(a instanceof St)return N(e)+(\"HPF \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+(F(e+1|0)(a.value2)+F(e+1|0)(a.value3))))));if(a instanceof Lt)return N(e)+(\"BPF \"+(Pa(a.value0)+(`\n`+(F(e+1|0)(a.value1)+(F(e+1|0)(a.value2)+F(e+1|0)(a.value3))))));if(a instanceof oo)return N(e)+(\"Delay \"+(Z7(a.value0)+(`\n`+(F(e+1|0)(a.value1)+F(e+1|0)(a.value2)))));throw new Error(\"Failed pattern match at Signal (line 146, column 1 - line 146, column 40): \"+[e.constructor.name,a.constructor.name])}};var v8=function(e){return function(a){var u=new el(de.value,new w(new mv(Ge.value,e,On.value),new w(new ju(1),h.value))),l=new el(de.value,new w(new mv(Ge.value,e,On.value),new w(new ju(1),h.value))),v=new xv(de.value,On.value,e),t=new hv(de.value,l,u,v);return new dt(t,a)}},n8=function(e){return P0.create(new mv(Ge.value,new ju(1),e))},O={webcam:Pu(!1),fft:Pu(!1),lo:Pu(!1),mid:Pu(!1),hi:Pu(!1),ifft:Pu(!1),ilo:Pu(!1),imid:Pu(!1),ihi:Pu(!1),ain:Pu(!1),imgURLs:K7,vidURLs:K7},rD=function(e){return e instanceof ft?{fft:O.fft,lo:O.lo,mid:O.mid,hi:O.hi,ifft:O.ifft,ilo:O.ilo,imid:O.imid,ihi:O.ihi,ain:O.ain,imgURLs:O.imgURLs,vidURLs:O.vidURLs,webcam:Pu(!0)}:e instanceof Ei?{webcam:O.webcam,fft:O.fft,lo:O.lo,mid:O.mid,hi:O.hi,ifft:O.ifft,imid:O.imid,ihi:O.ihi,imgURLs:O.imgURLs,vidURLs:O.vidURLs,ilo:Pu(!0),ain:Pu(!0)}:e instanceof Ci?{webcam:O.webcam,fft:O.fft,lo:O.lo,mid:O.mid,hi:O.hi,ifft:O.ifft,ilo:O.ilo,ihi:O.ihi,imgURLs:O.imgURLs,vidURLs:O.vidURLs,imid:Pu(!0),ain:Pu(!0)}:e instanceof Ti?{webcam:O.webcam,fft:O.fft,lo:O.lo,mid:O.mid,hi:O.hi,ifft:O.ifft,ilo:O.ilo,imid:O.imid,imgURLs:O.imgURLs,vidURLs:O.vidURLs,ihi:Pu(!0),ain:Pu(!0)}:e instanceof Si?{webcam:O.webcam,fft:O.fft,lo:O.lo,mid:O.mid,hi:O.hi,ilo:O.ilo,imid:O.imid,ihi:O.ihi,imgURLs:O.imgURLs,vidURLs:O.vidURLs,ifft:Pu(!0),ain:Pu(!0)}:e instanceof A0?{webcam:O.webcam,fft:O.fft,lo:O.lo,mid:O.mid,hi:O.hi,ifft:O.ifft,ilo:O.ilo,imid:O.imid,ihi:O.ihi,imgURLs:O.imgURLs,vidURLs:O.vidURLs,ain:Pu(!0)}:e instanceof yi?{webcam:O.webcam,fft:O.fft,mid:O.mid,hi:O.hi,ifft:O.ifft,ilo:O.ilo,imid:O.imid,ihi:O.ihi,ain:O.ain,imgURLs:O.imgURLs,vidURLs:O.vidURLs,lo:Pu(!0)}:e instanceof Fi?{webcam:O.webcam,fft:O.fft,lo:O.lo,hi:O.hi,ifft:O.ifft,ilo:O.ilo,imid:O.imid,ihi:O.ihi,ain:O.ain,imgURLs:O.imgURLs,vidURLs:O.vidURLs,mid:Pu(!0)}:e instanceof bi?{webcam:O.webcam,fft:O.fft,lo:O.lo,mid:O.mid,ifft:O.ifft,ilo:O.ilo,imid:O.imid,ihi:O.ihi,ain:O.ain,imgURLs:O.imgURLs,vidURLs:O.vidURLs,hi:Pu(!0)}:e instanceof Mi?{webcam:O.webcam,lo:O.lo,mid:O.mid,hi:O.hi,ifft:O.ifft,ilo:O.ilo,imid:O.imid,ihi:O.ihi,ain:O.ain,imgURLs:O.imgURLs,vidURLs:O.vidURLs,fft:Pu(!0)}:e instanceof pt?{webcam:O.webcam,fft:O.fft,lo:O.lo,mid:O.mid,hi:O.hi,ifft:O.ifft,ilo:O.ilo,imid:O.imid,ihi:O.ihi,ain:O.ain,vidURLs:O.vidURLs,imgURLs:N1(e.value0)}:e instanceof st?{webcam:O.webcam,fft:O.fft,lo:O.lo,mid:O.mid,hi:O.hi,ifft:O.ifft,ilo:O.ilo,imid:O.imid,ihi:O.ihi,ain:O.ain,imgURLs:O.imgURLs,vidURLs:N1(e.value0)}:_$(rD)(f$(e))},s$=function(e){if(e<=4)return 1;if(pe)return ea(1)(2)(e)-1|0;throw new Error(\"Failed pattern match at Signal (line 709, column 1 - line 709, column 28): \"+[e.constructor.name])},za=function(e){return function(a){return function(u){if(e instanceof de&&u===1)return{columns:a,rows:1};if(e instanceof de)return{columns:u,rows:a};if(e instanceof Ge)return{columns:L_(a)(u),rows:1};throw new Error(\"Failed pattern match at Signal (line 724, column 1 - line 724, column 87): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},mi=function(e){return function(a){return function(u){if(e instanceof de)return a*u|0;if(e instanceof Ge)return L_(a)(u);throw new Error(\"Failed pattern match at Signal (line 729, column 1 - line 729, column 57): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},ne=function(e){if(e instanceof el&&e.value0 instanceof de){var a=fa(e.value1);if(a instanceof I)return{rows:1,columns:1};if(a instanceof R)return{rows:x7(o$)(e8(U(W))(a.value0)),columns:ba(a.value0)};throw new Error(\"Failed pattern match at Signal (line 570, column 3 - line 572, column 77): \"+[a.constructor.name])}if(e instanceof el&&e.value0 instanceof Ge){var a=fa(e.value1);if(a instanceof I)return{rows:1,columns:1};if(a instanceof R)return{rows:x7(L_)(e8(U(W))(a.value0)),columns:ba(a.value0)};throw new Error(\"Failed pattern match at Signal (line 574, column 3 - line 576, column 77): \"+[a.constructor.name])}return e instanceof S0?{rows:1,columns:U(W)(e.value0)+U(W)(e.value1)|0}:e instanceof Un?{rows:1,columns:ea(2)(2)(U(W)(e.value0))+ea(2)(2)(U(W)(e.value1))|0}:e instanceof Wn?{rows:e.value0,columns:U(W)(e.value1)}:e instanceof A0?{rows:1,columns:e.value0}:e instanceof hi?{rows:1,columns:2}:e instanceof L0?{rows:1,columns:2}:e instanceof gi?{rows:1,columns:2}:e instanceof Li?{rows:1,columns:3}:e instanceof ft?{rows:1,columns:3}:e instanceof pt?{rows:1,columns:3}:e instanceof st?{rows:1,columns:3}:e instanceof Bn||e instanceof zn?ne(e.value0):e instanceof Ai?{rows:1,columns:4}:e instanceof Ni?{rows:1,columns:3}:e instanceof Pi?{rows:1,columns:3}:e instanceof qi?{rows:ne(e.value0).rows,columns:ea(3)(3)(ne(e.value0).columns)}:e instanceof $i?{rows:ne(e.value0).rows,columns:ea(3)(3)(ne(e.value0).columns)}:e instanceof Oi?{rows:ne(e.value0).rows,columns:ea(1)(3)(ne(e.value0).columns)}:e instanceof Ui?{rows:ne(e.value0).rows,columns:ea(1)(3)(ne(e.value0).columns)}:e instanceof Wi?{rows:ne(e.value0).rows,columns:ea(1)(3)(ne(e.value0).columns)}:e instanceof Bi?{rows:ne(e.value0).rows,columns:ea(1)(3)(ne(e.value0).columns)}:e instanceof zi?{rows:ne(e.value0).rows,columns:ea(1)(3)(ne(e.value0).columns)}:e instanceof ki?{rows:ne(e.value0).rows,columns:ea(1)(3)(ne(e.value0).columns)}:e instanceof Dt?{rows:ne(e.value0).rows,columns:ea(1)(3)(ne(e.value0).columns)}:e instanceof Rt?{rows:ne(e.value0).rows,columns:ea(1)(3)(ne(e.value0).columns)}:e instanceof It?{rows:ne(e.value0).rows,columns:ea(1)(3)(ne(e.value0).columns)}:e instanceof kn||e instanceof Vn||e instanceof Jn||e instanceof jn||e instanceof Hn||e instanceof Xn||e instanceof Yn||e instanceof Zn||e instanceof Qn||e instanceof Kn||e instanceof xn||e instanceof er||e instanceof ar||e instanceof ur||e instanceof lr||e instanceof vr||e instanceof nr||e instanceof rr||e instanceof tr||e instanceof ir||e instanceof or||e instanceof cr||e instanceof _r||e instanceof fr||e instanceof pr||e instanceof sr||e instanceof Dr||e instanceof Rr||e instanceof Ir||e instanceof Gr||e instanceof wr||e instanceof dr||e instanceof mr||e instanceof hr||e instanceof gr||e instanceof yr?ne(e.value0):e instanceof Vi?{rows:ne(e.value0).rows,columns:ea(2)(2)(ne(e.value0).columns)}:e instanceof Ji?{rows:ne(e.value0).rows,columns:ea(1)(2)(ne(e.value0).columns)}:e instanceof ji?{rows:ne(e.value0).rows,columns:ea(1)(2)(ne(e.value0).columns)}:e instanceof Gt?{rows:ne(e.value0).rows,columns:ea(2)(2)(ne(e.value0).columns)}:e instanceof wt?{rows:ne(e.value0).rows,columns:ea(1)(2)(ne(e.value0).columns)}:e instanceof Xi?{rows:ne(e.value0).rows,columns:ea(1)(2)(ne(e.value0).columns)}:e instanceof Yi?{rows:ne(e.value0).rows,columns:ea(1)(2)(ne(e.value0).columns)}:e instanceof Zi?{rows:ne(e.value0).rows,columns:ea(1)(2)(ne(e.value0).columns)}:e instanceof Qi?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof Ki?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof xi?{rows:ea(1)(2)(U(W)(e.value0)),columns:U(W)(e.value1)}:e instanceof eo?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof dt?{rows:ea(1)(2)(U(W)(e.value0)),columns:U(W)(e.value1)}:e instanceof ao?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof uo?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof lo?{rows:ea(1)(2)(U(W)(e.value0)),columns:U(W)(e.value1)}:e instanceof vo?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof no?{rows:ea(1)(2)(U(W)(e.value0)),columns:U(W)(e.value1)}:e instanceof ro?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof to?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof io?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof N0?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof P0?{rows:U(W)(e.value0),columns:U(W)(e.value1)}:e instanceof Kv?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof Bv?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof q0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof mv?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof $0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof O0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof U0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof W0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof B0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof xv?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof z0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof k0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof V0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof J0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof j0?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof mt?za(e.value0)(ea(1)(2)(U(W)(e.value1)))(U(W)(e.value2)):e instanceof ht?za(e.value0)(ea(1)(2)(U(W)(e.value1)))(ea(1)(2)(U(W)(e.value2))):e instanceof H0?za(e.value0)(ea(1)(2)(U(W)(e.value1)))(U(W)(e.value2)):e instanceof X0?za(e.value0)(ea(1)(2)(U(W)(e.value1)))(U(W)(e.value2)):e instanceof Y0?za(e.value0)(ea(1)(2)(U(W)(e.value1)))(U(W)(e.value2)):e instanceof gt?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof yt?za(e.value0)(U(W)(e.value1))(U(W)(e.value2)):e instanceof Ft?za(e.value0)(s$(U(W)(e.value1)))(U(W)(e.value2)):e instanceof bt?za(e.value0)(ea(1)(4)(U(W)(e.value1)))(U(W)(e.value2)):e instanceof Et?za(e.value0)(ea(1)(4)(U(W)(e.value1)))(U(W)(e.value2)):e instanceof Ct?za(e.value0)(p$(U(W)(e.value1)))(U(W)(e.value2)):e instanceof Z0?za(e.value0)(U(W)(e.value2))(ne(e.value1).rows):e instanceof Q0?{columns:L_(1)(e.value1),rows:mi(e.value0)(U(W)(e.value2))(U(W)(e.value3))}:e instanceof K0?{columns:L_(1)(e.value1),rows:mi(e.value0)(U(W)(e.value2))(U(W)(e.value3))}:e instanceof Fr?{rows:1,columns:L_(1)(e.value0)}:e instanceof br?{rows:1,columns:ne(e.value0).rows}:e instanceof hv?za(e.value0)(L_(U(W)(e.value1))(U(W)(e.value2)))(U(W)(e.value3)):e instanceof Er?za(e.value0)(mi(e.value0)(ea(1)(2)(U(W)(e.value1)))(ea(1)(2)(U(W)(e.value2))))(U(W)(e.value3)):e instanceof Tt?za(e.value0)(mi(e.value0)(ea(1)(2)(U(W)(e.value1)))(ea(1)(2)(U(W)(e.value2))))(U(W)(e.value3)):e instanceof Er?za(e.value0)(mi(e.value0)(ea(1)(2)(U(W)(e.value1)))(ea(1)(2)(U(W)(e.value2))))(U(W)(e.value3)):e instanceof e0?za(e.value0)(mi(e.value0)(ea(1)(2)(U(W)(e.value1)))(ea(1)(2)(U(W)(e.value2))))(U(W)(e.value3)):e instanceof Mt?za(e.value0)(mi(e.value0)(ea(1)(2)(U(W)(e.value1)))(ea(1)(2)(U(W)(e.value2))))(U(W)(e.value3)):e instanceof St?za(e.value0)(mi(e.value0)(ea(1)(2)(U(W)(e.value1)))(ea(1)(2)(U(W)(e.value2))))(U(W)(e.value3)):e instanceof Lt?za(e.value0)(mi(e.value0)(ea(1)(2)(U(W)(e.value1)))(ea(1)(2)(U(W)(e.value2))))(U(W)(e.value3)):e instanceof oo?{rows:U(W)(e.value1),columns:U(W)(e.value2)}:{rows:1,columns:1}},W={channels:function(e){var a=ne(e);return a.rows*a.columns|0}};var r8=Pf(),W1=function(){function e(){}return e.value=new e,e}(),B1=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),D$=function(){function e(){}return e.value=new e,e}();var t8=function(e){return function(a){if(a instanceof W1)return r8(.25);if(a instanceof B1)return vI(e)(a.value0);if(a instanceof D$)return r8(.005);throw new Error(\"Failed pattern match at Transition (line 23, column 1 - line 23, column 52): \"+[e.constructor.name,a.constructor.name])}};var R$=Wl(vc),k1=X(Va),I$=X(rI),G$=$e(Ue),w$=Jf(Di),tD=Eu(),i8=Vf(Di),FI=function(e){return{signal:e,defTime:new nI(R$,new Xf(0)),transition:W1.value,output:xr.value}},V1=function(e){var a=ne(e.signal),u=k1(a.rows*a.columns|0)+(\" channels (\"+(k1(a.columns)+(\" cols x \"+(k1(a.rows)+` rows)\n`))));return\"  \"+(I$(e.output)+(\": \"+(u+F(4)(e.signal))))},o8=function(e){return function(a){return{signal:e.signal,defTime:e.defTime,transition:e.transition,output:a}}},c8=function(e){return function(a){return{signal:e.signal,defTime:e.defTime,output:e.output,transition:new B1(new Xf(a))}}},_8=function(e){return function(a){return function(u){var l=f7(e)(a)(u.defTime),v=yu(a)(G$)(w$(t8(e)(u.transition))(l));return new k(l,v)}}},f8=function(e){return function(a){return function(u){var l=_8(e)(a)(u),v=tD(i8(l.value1)(a)),t=tD(i8(l.value0)(a));return new k(t,v)}}},J1=function(e){return function(a){return function(u){return function(l){var v=_8(e)(a)(l),t=tD(jf(Us(v.value1)))/1e3,i=t-u,o=tD(jf(Us(v.value0)))/1e3,_=o-u;return new k(_,i)}}}},j1=function(e){return D7(e.output)},H1=function(e){return Zs(e.output)},p8=function(e){return tD(rD(e.signal).ain)};var X1=e=>a=>u=>l=>v=>t=>()=>{var i={connected:!1,audioWorkletNode:null},o=window.URL.createObjectURL(new Blob([v],{type:\"text/javascript\"}));return e.audioWorklet.addModule(o).then(()=>{let _=new AudioWorkletNode(e,l,{outputChannelCount:[t],channelInterpretation:\"discrete\"});a?.connect(_),_.connect(u),i.audioWorkletNode=_,i.connected=!0}),i},A_=e=>a=>u=>()=>{e.parameters.get(a).value=u};function At(e){return new Error(e)}var fu=function(e){return e.throwError};var x0=function(e){return e.catchError};var Y1=function(e){var a=x0(e),u=e.MonadThrow0().Monad0(),l=L(u.Bind1().Apply0().Functor0()),v=B(u.Applicative0());return function(t){return a(l(te.create)(t))(function(i){return v(S.create(i))})}};var Nt=function(e){return e.ask};var Cr=function(e){return e.state},hc=function(e){var a=Cr(e);return function(u){return a(function(l){return new k(void 0,u)})}},Pt=function(e){var a=Cr(e);return function(u){return a(function(l){return new k(void 0,u(l))})}};var qt=function(e){return Cr(e)(function(a){return new k(a,a)})};var Gu=function(e){return e.lift};var P_={liftEffect:$e(Ue),Monad0:function(){return d_}},Lu=function(e){return e.liftEffect};var Z1=function(e){return e};var _D={lift:function(e){var a=ee(e.Bind1()),u=B(e.Applicative0());return function(l){return function(v){return a(l)(function(t){return u(new k(t,v))})}}}},Q1=Gu(_D);var q_=function(e){var a=L(e);return{map:function(u){return function(l){return function(v){return a(function(t){return new k(u(t.value0),t.value1)})(l(v))}}}}};var co=function(e){return{Applicative0:function(){return _o(e)},Bind1:function(){return Mr(e)}}},Mr=function(e){var a=ee(e.Bind1());return{bind:function(u){return function(l){return function(v){return a(u(v))(function(t){var i=l(t.value0);return i(t.value1)})}}},Apply0:function(){return MI(e)}}},MI=function(e){var a=q_(e.Bind1().Apply0().Functor0());return{apply:E0(co(e)),Functor0:function(){return a}}},_o=function(e){var a=B(e.Applicative0());return{pure:function(u){return function(l){return a(new k(u,l))}},Apply0:function(){return MI(e)}}};var R8=function(e){var a=e.Monad0(),u=co(a);return{ask:Q1(a)(Nt(e)),Monad0:function(){return u}}};var I8=function(e){var a=e.Monad0(),u=co(a);return{liftEffect:function(){var l=Q1(a),v=Lu(e);return function(t){return l(v(t))}}(),Monad0:function(){return u}}};var gc=function(e){var a=B(e.Applicative0()),u=co(e);return{state:function(l){return function(v){return a(l(v))}},Monad0:function(){return u}}};var G8=function(e){var a=e.Monad0(),u=Q1(a),l=fu(e),v=co(a);return{throwError:function(t){return u(l(t))},Monad0:function(){return v}}};function w8(e,a,u){return e==null?a:u(e)}function fD(e){return e}var fo=function(e){return w8(e,I.value,R.create)};var gl=function(e){return function(){console.log(e)}};var Fc=function(e){var a=Lu(e);return function(u){return a(gl(u))}};var N$=Eu();var NI=function(e){return function(a){return N$(e(a))}};var P$=x3(C0),sD=L(wv),T8=L(rv),E8=ee(_I),q$=B(pc),C8=Zr(Jl),$$=lv(Gn),O$=p4(_a)(at),U$=Wu(_a),W$=nv(Jl),M8=function(e){var a=Y(e),u=function(){var t=P$(1)(e);if(t instanceof R)return t.value0;if(t instanceof I)return a;throw new Error(\"Failed pattern match at NonEmptyList (line 109, column 11 - line 111, column 25): \"+[t.constructor.name])}(),l=new k(a,u),v=fa(di(2)(e));if(v instanceof I)return new k(l,I.value);if(v instanceof R)return new k(l,new R(v.value0));throw new Error(\"Failed pattern match at NonEmptyList (line 113, column 6 - line 115, column 34): \"+[v.constructor.name])},B$=function(e){var a=pI(E_(sD(Ma)(e)));return C_(sD(Y)(e))(Pn(T8(fa)(a)))},x1=function(e){var a=fa(Ma(e));if(a instanceof I)return sD(ha)(Y(e));if(a instanceof R)return E8(Y(e))(function(u){return E8(x1(a.value0))(function(l){return q$(lu(u)(l))})});throw new Error(\"Failed pattern match at NonEmptyList (line 99, column 3 - line 104, column 24): \"+[a.constructor.name])},K1=function(e){return function(a){var u=C8(e)(1),l=$$(e)(ba(a))+1|0,v=hl(C8(l)(a));return dv(function(t){return function(i){return t}})(v)(u)}},z$=function(e){var a=O$(sD(ba)(e));return sD(K1(a))(e)},PI=function(e){return B$(z$(e))},k$=function(e){return function(a){var u=U$(ba(e))(ba(a));return new k(K1(u)(e),K1(u)(a))}},po=function(e){return function(a){return function(u){var l=k$(a)(u);return dv(e)(l.value0)(l.value1)}}},V$=function(e){var a=fa(T8(k.create(Y(e)))(Ma(e))),u=function(){var v=fa(Ma(e));if(v instanceof I)return I.value;if(v instanceof R){var t=ba(v.value0)>=2;return t?new R(v.value0):I.value}throw new Error(\"Failed pattern match at NonEmptyList (line 55, column 10 - line 57, column 63): \"+[v.constructor.name])}(),l=function(){if(a instanceof I)return ha(new k(Y(e),Y(e)));if(a instanceof R)return a.value0;throw new Error(\"Failed pattern match at NonEmptyList (line 52, column 9 - line 54, column 24): \"+[a.constructor.name])}();return new k(l,u)},S8=function(e){return hl(W$(V$)(e))},L8=function(e){var a=fa(b_(II(e))(Ma(e)));if(a instanceof R)return a.value0;if(a instanceof I)return ha(new k(Y(e),Y(e)));throw new Error(\"Failed pattern match at NonEmptyList (line 40, column 5 - line 42, column 55): \"+[a.constructor.name])};var $_=L(wv);var qI=B(pc),J$=Zr(Jl),j$=Ja(C0),H$=Cu(C0),X$=Iu(Nn),Y$=re(g_),lm=function(e){return e},DD={map:function(e){return function(a){return $_($_(e))(a)}}},am=L(DD);var vp=function(e){return e};var A8=function(e){return Y(Y(e))},La=function(e){return function(a){return $_(e)(a)}},N8=function(e){return ba(e)===1&&ba(Y(e))===1},al=function(e){return lm(qI(e))},he=function(e){return hl(e)},np=function(e){return he(am(he)(e))},$I=function(e){if(ba(e)===1)return Y(e);if(pe)return x1($_(he)(e));throw new Error(\"Failed pattern match at Matrix (line 32, column 1 - line 32, column 71): \"+[e.constructor.name])},OI=function(e){return function(a){return al(hl(J$(e)(he(a))))}},q8=function(e){return function(a){return po(function(u){return function(l){return lu(u)(ha(l))}})(he(e))(he(a))}},vm={apply:function(e){return function(a){if(N8(e))return am(A8(e))(a);if(N8(a))return am(function(u){return u(A8(a))})(e);if(pe)return $_(function(u){return $_(u)(he(a))})(he(e));throw new Error(\"Failed pattern match at Matrix (line 59, column 1 - line 63, column 71): \"+[e.constructor.name,a.constructor.name])}},Functor0:function(){return DD}},Z$=By(vm),Q$=bl(vm),RD={pure:function(e){return lm(qI(qI(e)))},Apply0:function(){return vm}},P8=B(RD),$8={foldl:function(e){return function(a){return function(u){return j$(e)(a)(he(u))}}},foldr:function(e){return function(a){return function(u){return H$(e)(a)(he(u))}}},foldMap:function(e){return Id($8)(e)}},O_={traverse:function(e){var a=L(e.Apply0().Functor0()),u=X$(e);return function(l){return function(v){return a(lm)(u(u(l))(v))}}},sequence:function(e){return o4(O_)(e)},Functor0:function(){return DD},Foldable1:function(){return $8}},ID={append:function(e){return function(a){return qI(Y$(he(e))(he(a)))}}},K$=re(ID),U_={unfoldr1:function(e){return function(a){var u=e(a);if(u.value1 instanceof I)return P8(u.value0);if(u.value1 instanceof R)return K$(P8(u.value0))(nv(U_)(e)(u.value1.value0));throw new Error(\"Failed pattern match at Matrix (line 84, column 18 - line 86, column 62): \"+[u.constructor.name])}}},x$=nv(U_),UI=function(e){return x$(M8)(he(e))},GD=function(e){return $_(he)(e)},um=function(e){return function(a){return function(u){return al(po(e)(he(a))(he(u)))}}},so=function(e){return function(a){return function(u){return function(l){return function(v){if(a instanceof de)return Z$(e)(u)(l)(v);if(a instanceof Ge)return um(xw)(um(e)(u)(l))(v);throw new Error(\"Failed pattern match at Matrix (line 104, column 1 - line 104, column 108): \"+[e.constructor.name,a.constructor.name,u.constructor.name,l.constructor.name,v.constructor.name])}}}}},ul=function(e){return function(a){if(a instanceof de)return Q$(e);if(a instanceof Ge)return um(e);throw new Error(\"Failed pattern match at Matrix (line 100, column 1 - line 100, column 88): \"+[e.constructor.name,a.constructor.name])}};var wD=Math.acosh,dD=Math.asinh,mD=Math.atanh,hD=Math.cbrt,gD=Math.cosh,yD=Math.log2,rm=Math.log10,FD=Math.sinh,bD=Math.tanh;var O8=X(Nv),tm=Wu(Bl),im=Dn(Bl),U8=Dn(_a),W_=function(e){if(e<0)return\"(\"+(O8(e)+\")\");if(pe)return O8(e);throw new Error(\"Failed pattern match at Number (line 41, column 1 - line 41, column 31): \"+[e.constructor.name])},W8=function(e){return function(a){return e/a}},B_=function(e){return function(a){return a===0?0:e/a}},BI=function(e){return function(a){return function(u){return tm(e)(im(a)(u))}}},B8=function(e){return function(a){return function(u){return BI(im(e)(a))(tm(e)(a))(u)}}},z8=function(e){return function(a){return function(u){var l=BI(0)(1)(B_(u-e)(a-e));return l*l*(3-2*l)}}},om=function(e){return function(a){return function(u){var l=u>=im(e)(a)&&u<=tm(e)(a);return l?1:0}}},WI=64,eO=function(e){return function(a){if(a>=e)return e+U8(a-e|0)(WI-1|0)|0;if(pe)return e-U8(e-a|0)(WI-1|0)|0;throw new Error(\"Failed pattern match at Number (line 50, column 1 - line 50, column 36): \"+[e.constructor.name,a.constructor.name])}},k8=function(e){var a=wn(e);return function(u){var l=L(u);return function(v){return function(t){return l(Da)(a(v)(eO(v)(t)))}}}},aO=function(e){return function(a){return function(u){var l=u+a,v=function(){var t=l+a<=e-a*.5;return t?I.value:new R(l)}();return new k(l,v)}}},uO=function(e){return function(a){return function(u){var l=u+a,v=function(){var t=l+a>=e-a*.5;return t?I.value:new R(l)}();return new k(l,v)}}},lO=function(e){return function(a){return function(u){return(u-e)/(a-e)+1}}},cm=function(e){var a=si(e),u=nv(e);return function(l){var v=re(l);return function(t){return function(i){return function(o){if(t===i||t===o)return a(t);if(i===o)return v(a(t))(a(i));if(i>t&&o<t||i<t&&o>t)return a(t);if(lO(t)(i)(o)>Da(WI))return cm(e)(l)(t)(i)(t+(i-t)*(Da(WI)-1));if(t<o)return v(a(t))(v(u(uO(o)(i-t))(t))(a(o)));if(pe)return v(a(t))(v(u(aO(o)(i-t))(t))(a(o)));throw new Error(\"Failed pattern match at Number (line 58, column 1 - line 58, column 104): \"+[t.constructor.name,i.constructor.name,o.constructor.name])}}}}};var Gm=gc(xu),pm=Pt(Gm),Y8=Mr(xu),M=ee(Y8),k_=qt(Gm),ip=_o(xu),sm=BR(ip)(Nn),jl=$l(Ol)(Y8),Ce=B(ip),wm=hc(Gm),vO=Qu($o),Ot=X(Va),kI=_s(Bl)(Oo),nO=Fu(I0),rO=Tv(Oo),VI=L(wv),dm=Uf(Jl),tO=Qu(I0),Z8=vv(Nn)(ip),Q8=$f(C0)(co(xu)),en=vv(O_)(ip),zv=B(RD),z_=Iu(Nn)(ip),Ml=L(q_(h0)),iO=B(pc),K8=Zr(Jl),mm=re(g_),Dm=si(Jl),oO=si(U_),rl=Iu(O_)(ip),cO=re(ID),_O=wn(Jl),fO=Wu(_a),pO=function(){return new S(0)}(),an=function(e){return pm(function(a){var u={};for(var l in a)({}).hasOwnProperty.call(a,l)&&(u[l]=a[l]);return u.code=a.code+e,u})},V8=function(e){return function(a){return M(k_)(function(u){return M(sm(e)(function(l){return jl(pm(function(v){var t={};for(var i in v)({}).hasOwnProperty.call(v,i)&&(t[i]=v[i]);return t.time=l.time,t.beat=l.beat,t.etime=l.etime,t.ebeat=l.ebeat,t}))(function(){return a})}))(function(l){return jl(pm(function(v){var t={};for(var i in v)({}).hasOwnProperty.call(v,i)&&(t[i]=v[i]);return t.time=u.time,t.beat=u.beat,t.etime=u.etime,t.ebeat=u.ebeat,t}))(function(){return Ce(GD(l))})})})}},rp=function(e){return function(a){return function(u){if(u instanceof S)return new S(e(u.value0));if(u instanceof te)return new te(a+(\"(\"+(u.value0+\")\")));throw new Error(\"Failed pattern match at W (line 439, column 1 - line 439, column 67): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},hm=function(){return new te(\"(2.0*Math.PI)\")}(),ye=function(e){if(e instanceof S)return W_(e.value0);if(e instanceof te)return e.value0;throw new Error(\"Failed pattern match at W (line 42, column 1 - line 42, column 31): \"+[e.constructor.name])},ED=function(){return new te(\"sampleRate\")}(),x8=function(e){return NI(e)({allocatedFloats:0,allocatedInts:0,code:\"\",time:new te(\"time\"),beat:new te(\"beat\"),etime:new te(\"eTime\"),ebeat:new te(\"eBeat\")})},eF=M(k_)(function(e){return jl(wm(function(){var a={};for(var u in e)({}).hasOwnProperty.call(e,u)&&(a[u]=e[u]);return a.allocatedInts=e.allocatedInts+1|0,a}()))(function(){return Ce(\"i[\"+(Ot(e.allocatedInts)+\"]\"))})}),J8=function(e){return M(eF)(function(a){return jl(an(a+(\"=\"+(e+`;\n`))))(function(){return Ce(a)})})},sO=function(e){return M(k_)(function(a){return jl(wm(function(){var u={};for(var l in a)({}).hasOwnProperty.call(a,l)&&(u[l]=a[l]);return u.allocatedFloats=a.allocatedFloats+e|0,u}()))(function(){return Ce(a.allocatedFloats)})})},bc=M(k_)(function(e){return jl(wm(function(){var a={};for(var u in e)({}).hasOwnProperty.call(e,u)&&(a[u]=e[u]);return a.allocatedFloats=e.allocatedFloats+1|0,a}()))(function(){return Ce(\"f[\"+(Ot(e.allocatedFloats)+\"]\"))})}),vu=function(e){return M(bc)(function(a){return jl(an(a+(\"=\"+(e+`;\n`))))(function(){return Ce(new te(a))})})},DO=function(e){return vu(\"20 * Math.log10(\"+(ye(e)+\")\"))},tp=function(e){if(e instanceof S)return Ce(new S(e.value0));if(e instanceof te)return vu(e.value0);throw new Error(\"Failed pattern match at W (line 61, column 1 - line 61, column 39): \"+[e.constructor.name])},RO=function(e){return function(a){if(e.value0 instanceof S&&e.value1 instanceof S&&a instanceof S)return Ce(new S(om(e.value0.value0)(e.value1.value0)(a.value0)));var u=\"Math.min(\"+(ye(e.value0)+(\",\"+(ye(e.value1)+\")\"))),l=\"Math.max(\"+(ye(e.value0)+(\",\"+(ye(e.value1)+\")\")));return vu(\"(\"+(ye(a)+(\">=\"+(u+(\"&&\"+(ye(a)+(\"<=\"+(l+\")?1:0\"))))))))}},IO=function(e){return function(a){if(e.value0 instanceof S&&e.value1 instanceof S&&a instanceof S)return Ce(new S(om(e.value0.value0)(e.value1.value0)(a.value0)));var u=\"Math.min(\"+(ye(e.value0)+(\",\"+(ye(e.value1)+\")\"))),l=\"Math.max(\"+(ye(e.value0)+(\",\"+(ye(e.value1)+\")\")));return vu(\"(\"+(ye(a)+(\">=\"+(u+(\"&&\"+(ye(a)+(\"<\"+(l+\")?1:0\"))))))))}},j8=function(e){return vu(ye(e)+\"*2-1\")},aF=function(e){return function(a){if(e.value0 instanceof S&&e.value1 instanceof S&&a instanceof S)return Ce(new S(B8(e.value0.value0)(e.value1.value0)(a.value0)));var u=\"Math.min(\"+(ye(e.value0)+(\",\"+(ye(e.value1)+\")\"))),l=\"Math.max(\"+(ye(e.value0)+(\",\"+(ye(e.value1)+\")\")));return vu(\"Math.max(\"+(u+(\",Math.min(\"+(l+(\",\"+(ye(a)+\"))\"))))))}},GO=function(e){return vu(\"69 + (12 * (Math.log2(\"+(ye(e)+\"/440)))\"))},wO=function(e){return vu(\"10 ** (\"+(ye(e)+\"/20)\"))},Do=function(e){return function(a){return e instanceof S&&a instanceof S?Ce(new S(B_(e.value0)(a.value0))):e instanceof S&&e.value0===0?Ce(new S(0)):a instanceof S&&a.value0===0?Ce(new S(0)):a instanceof S&&a.value0===1?Ce(e):vu(ye(a)+(\"!=0? \"+(ye(e)+(\"/\"+(ye(a)+\" : 0\")))))}},J_=function(e){return function(a){return e instanceof S&&a instanceof S?Ce(new S(W8(e.value0)(a.value0))):e instanceof S&&e.value0===0?Ce(new S(0)):a instanceof S&&a.value0===1?Ce(e):vu(ye(e)+(\"/\"+ye(a)))}},H8=function(e){return vu(\"Math.abs(\"+(ye(e)+\"%1)\"))},uF=function(e){return function(a){return function(u){return function(l){return u instanceof S&&l instanceof S?Ce(new S(e(u.value0)(l.value0))):vu(a+(\"(\"+(ye(u)+(\",\"+(ye(l)+\")\")))))}}}},dO=uF(Wu(Bl))(\"Math.max\"),mO=uF(Dn(Bl))(\"Math.min\"),hO=function(e){if(e instanceof S){if(kI(e.value0)>=1)return Ce(new S(0));if(pe)return Ce(new S(Mn(kI(e.value0)*jR/2)))}if(e instanceof te)return vu(\"Math.abs(\"+(e.value0+(\")>1?0:Math.cos(Math.abs(\"+(e.value0+\")*Math.PI/2)\"))));throw new Error(\"Failed pattern match at W (line 655, column 1 - line 655, column 39): \"+[e.constructor.name])},gO=function(e){return function(a){return e instanceof S&&a instanceof S?Ce(new S(function(){var u=kI(a.value0)>=e.value0;return u?a.value0:0}())):vu(\"Math.abs(\"+(ye(a)+(\")>=\"+(ye(e)+(\"?\"+(ye(a)+\":0\"))))))}},yO=function(e){return vu(\"440 * (2 ** ((\"+(ye(e)+\"-69)/12))\"))},Sr=function(e){return function(a){return function(u){return function(l){return u instanceof S&&l instanceof S?Ce(new S(e(u.value0)(l.value0))):vu(ye(u)+(a+ye(l)))}}}},u0=function(e){return function(a){return a instanceof S&&a.value0===0?Ce(e):Sr(rO)(\"-\")(e)(a)}},FO=Sr(function(e){return function(a){var u=e===a;return u?1:0}})(\"==\"),bO=Sr(function(e){return function(a){var u=e>a;return u?1:0}})(\">\"),EO=Sr(function(e){return function(a){var u=e>=a;return u?1:0}})(\">=\"),CO=Sr(function(e){return function(a){var u=e<a;return u?1:0}})(\"<\"),TO=Sr(function(e){return function(a){var u=e<=a;return u?1:0}})(\"<=\"),MO=Sr(qv(PR))(\"%\"),SO=Sr(function(e){return function(a){var u=e!==a;return u?1:0}})(\"!=\"),LO=Sr(__)(\"**\"),Xu=function(e){return function(a){return e instanceof S&&e.value0===0?Ce(new S(0)):e instanceof S&&e.value0===1?Ce(a):a instanceof S&&a.value0===0?Ce(new S(0)):a instanceof S&&a.value0===1?Ce(e):Sr(nO)(\"*\")(e)(a)}},AO=function(e){return function(a){return function(u){var l=C4(e*48e3);return M(sO(l))(function(v){return M(eF)(function(t){return jl(an(\"f[\"+(Ot(v)+(\"+\"+(t+(\"]=\"+(ye(u)+`;\n`)))))))(function(){return M(Xu(a)(ED))(function(i){return M(J8(\"Math.round(\"+(ye(i)+\")\")))(function(o){return M(J8(t+(\"-\"+o)))(function(_){return jl(an(_+(\"=\"+(_+(\">=0?(\"+(Ot(v)+(\"+\"+(_+(\"):(\"+(Ot(v)+(\"+\"+(Ot(l)+(\"+\"+(_+`);\n`))))))))))))))(function(){return M(vu(\"f[\"+(_+\"]\")))(function(s){return jl(an(t+(\"=(\"+(t+(\"+1)%\"+(Ot(l)+`;\n`))))))(function(){return Ce(s)})})})})})})})})})}}},NO=function(e){return function(a){if(e.value0 instanceof S&&e.value1 instanceof S&&a instanceof S)return Ce(new S(z8(e.value0.value0)(e.value1.value0)(a.value0)));var u=\"(\"+(ye(a)+(\"-\"+(ye(e.value0)+(\")/(\"+(ye(e.value1)+(\"-\"+(ye(e.value0)+\")\")))))));return M(vu(\"Math.max(0.0,Math.min(1.0,\"+(u+\"))\")))(function(l){var v=ye(l);return vu(v+(\"*\"+(v+(\"*(3-(2*\"+(v+\"))\")))))})}},gm=function(){var e=fi(C0)(m0)(\"+\"),a=VI(ye);return function(u){return vu(e(a(he(u))))}}(),X8=function(e){return function(a){var u=ba(e),l=1/Da(u),v=dm(u)(function(i){return i+l})(0),t=function(i){return function(o){return M(IO(new k(new S(o),new S(o+l)))(a))(Xu(i))}};return M(Z8(dv(t)(e)(v)))(function(i){return gm(al(i))})}},_m=function(e){return vu(ye(e)+\"*0.5+0.5\")},ym=function(e){return function(a){return function(u){return function(l){return function(v){return function(t){return function(i){return M(bc)(function(o){return M(bc)(function(_){return M(bc)(function(s){return M(bc)(function(b){return M(bc)(function(P){return M(bc)(function(A){return jl(an(s+(\"=\"+(_+`;\n`))))(function(){return jl(an(_+(\"=\"+(o+`;\n`))))(function(){return jl(an(o+(\"=\"+(ye(i)+`;\n`))))(function(){return jl(an(A+(\"=\"+(P+`;\n`))))(function(){return jl(an(P+(\"=\"+(b+`;\n`))))(function(){var K=\"(\"+(o+(\"*\"+(ye(e)+(\"/\"+(ye(l)+\")\"))))),Ve=\"(\"+(_+(\"*\"+(ye(a)+(\"/\"+(ye(l)+\")\"))))),Ga=\"(\"+(s+(\"*\"+(ye(u)+(\"/\"+(ye(l)+\")\"))))),$u=\"(\"+(P+(\"*\"+(ye(v)+(\"/\"+(ye(l)+\")\"))))),Dl=\"(\"+(A+(\"*\"+(ye(t)+(\"/\"+(ye(l)+\")\")))));return jl(an(b+(\"=\"+(K+(\"+\"+(Ve+(\"+\"+(Ga+(\"-\"+($u+(\"-\"+(Dl+`;\n`))))))))))))(function(){return Ce(new te(b))})})})})})})})})})})})})}}}}}}},V_=function(e){return M(J_(e)(ED))(function(a){return M(bc)(function(u){return jl(an(u+(\"=(\"+(u+(\"+\"+(ye(a)+`)%1;\n`))))))(function(){return Ce(new te(u))})})})};var tv=function(e){return function(a){return e instanceof S&&e.value0===0?Ce(a):a instanceof S&&a.value0===0?Ce(e):Sr(tO)(\"+\")(e)(a)}},PO=function(e){return function(a){return function(u){return M(Xu(hm)(e))(function(l){return M(J_(l)(ED))(function(v){return M(tp(rp(Mn)(\"Math.cos\")(v)))(function(t){return M(tp(rp(Qo)(\"Math.sin\")(v)))(function(i){return M(M(Xu(new S(2))(a))(Do(i)))(function(o){var _=new S(0);return M(Xu(new S(-1))(o))(function(s){return M(tv(new S(1))(o))(function(b){return M(Xu(new S(-2))(t))(function(P){return M(u0(new S(1))(o))(function(A){return ym(o)(_)(s)(b)(P)(A)(u)})})})})})})})})})}}},qO=function(e){return function(a){return function(u){return M(Xu(hm)(e))(function(l){return M(J_(l)(ED))(function(v){return M(tp(rp(Mn)(\"Math.cos\")(v)))(function(t){return M(tv(new S(1))(t))(function(i){return M(tp(rp(Qo)(\"Math.sin\")(v)))(function(o){return M(M(Xu(new S(2))(a))(Do(o)))(function(_){return M(J_(i)(new S(2)))(function(s){return M(Xu(new S(-1))(i))(function(b){return M(tv(new S(1))(_))(function(P){return M(Xu(new S(-2))(t))(function(A){return M(u0(new S(1))(_))(function(K){return ym(s)(b)(s)(P)(A)(K)(u)})})})})})})})})})})})}}},$O=function(e){return function(a){return function(u){return e.value0 instanceof S&&e.value1 instanceof S&&a.value0 instanceof S&&a.value1 instanceof S&&u instanceof S?Ce(new S(B_(u.value0-e.value0.value0)(e.value1.value0-e.value0.value0)*(a.value1.value0-a.value0.value0)+a.value0.value0)):M(u0(u)(e.value0))(function(l){return M(u0(a.value1)(a.value0))(function(v){return M(M(M(u0(e.value1)(e.value0))(Do(l)))(Xu(v)))(tv(a.value0))})})}}},OO=function(e){return function(a){return function(u){return M(Xu(hm)(e))(function(l){return M(J_(l)(ED))(function(v){return M(tp(rp(Mn)(\"Math.cos\")(v)))(function(t){return M(u0(new S(1))(t))(function(i){return M(tp(rp(Qo)(\"Math.sin\")(v)))(function(o){return M(M(Xu(new S(2))(a))(Do(o)))(function(_){return M(J_(i)(new S(2)))(function(s){return M(tv(new S(1))(_))(function(b){return M(Xu(new S(-2))(t))(function(P){return M(u0(new S(1))(_))(function(A){return ym(s)(i)(s)(b)(P)(A)(u)})})})})})})})})})})}}},UO=function(e){return function(a){return e.value0 instanceof S&&e.value1 instanceof S&&a instanceof S?Ce(new S((e.value1.value0-e.value0.value0)*a.value0+e.value0.value0)):M(M(u0(e.value1)(e.value0))(Xu(a)))(tv(e.value0))}},WO=function(e){return Q8(function(a){return function(u){return en(ul(tv)(Ge.value)(a)(u))}})(zv(new S(0)))(e)},JI=function(e){return function(a){return function(u){return M(Xu(u)(new S(Da(a))))(function(l){return M(vu(\"Math.floor(\"+(ye(l)+\")\")))(function(v){return M(tv(v)(new S(1)))(function(t){return M(u0(t)(l))(function(i){return M(u0(l)(v))(function(o){return M(vu(e+(\"[\"+(ye(v)+(\"%\"+(Ot(a)+\"]\"))))))(function(_){return M(vu(e+(\"[\"+(ye(t)+(\"%\"+(Ot(a)+\"]\"))))))(function(s){return M(Xu(_)(i))(function(b){return M(Xu(s)(o))(function(P){return tv(b)(P)})})})})})})})})})}}},BO=function(e){return M(V_(e))(JI(\"sin\")(16384))},zO=function(e){return M(V_(e))(JI(\"saw\")(4096))},kO=function(e){return M(V_(e))(JI(\"sqr\")(4096))},VO=function(e){return M(V_(e))(JI(\"tri\")(4096))},lF=function(e){if(e instanceof S)return Ce(new S(kI(e.value0)));if(e instanceof te)return vu(\"Math.abs(\"+(e.value0+\")\"));throw new Error(\"Failed pattern match at W (line 604, column 1 - line 604, column 26): \"+[e.constructor.name])},Rm=function(e){return function(a){return function(u){if(e<=1)return Ce(zv(u));if(pe)return M(Xu(a)(new S(Da(e-1|0))))(function(l){var v=dm(e)(function(t){return t+1})(0);return M(z_(function(t){return M(M(u0(new S(t))(l))(lF))(aF(new k(new S(0),new S(1))))})(v))(function(t){return M(z_(hO)(t))(function(i){return Ml(al)(z_(Xu(u))(i))})})});throw new Error(\"Failed pattern match at W (line 645, column 1 - line 645, column 42): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},Im=function(e){return function(a){if(e<=1)return Ml(iO)(gm(a));if(ba(he(a))===1)return Ml(he)(Rm(e)(new S(.5))(Y(he(a))));if(pe){var u=he(a),l=ba(u),v=1/Da(l-1|0),t=VI(S.create)(dm(l)(function(i){return i+v})(0));return M(Z8(dv(Rm(e))(t)(u)))(function(i){return Ml(he)(WO(i))})}throw new Error(\"Failed pattern match at W (line 608, column 1 - line 608, column 49): \"+[e.constructor.name,a.constructor.name])}},vF=function(e){return function(a){return function(u){var l=a<=0;if(l)return Im(e)(u);if(!l){var v=K8(a)(pO);return M(Im(e)(u))(function(t){return Ce(mm(v)(t))})}throw new Error(\"Failed pattern match at W (line 622, column 3 - line 627, column 20): \"+[l.constructor.name])}}},JO=function(e){return function(a){return M(tv(a)(RI(e)))(function(u){return Ce(mm(e)(Dm(u)))})}},jO=function(e){return function(a){return function(u){if(e<2)return M(M(tv(a)(u))(Xu(new S(.5))))(function(l){return Ce(oO(l))});if(pe)return M(u0(u)(a))(function(l){return M(J_(l)(new S(Da(e-1|0))))(function(v){return M(Q8(JO)(Dm(a))(K8(e-2|0)(v)))(function(t){return Ce(al(mm(t)(Dm(u))))})})});throw new Error(\"Failed pattern match at W (line 629, column 1 - line 629, column 42): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},Hu=function(e){return function(a){return function(u){return M(Pe(u))(function(l){var v=function(t){if(t instanceof S)return Ce(new S(e(t.value0)));if(t instanceof te)return vu(a+(\"(\"+(t.value0+\")\")));throw new Error(\"Failed pattern match at W (line 434, column 13 - line 436, column 60): \"+[t.constructor.name])};return rl(v)(l)})}}},Pe=function(e){if(e instanceof ju)return Ce(zv(new S(e.value0)));if(e instanceof el&&e.value0 instanceof de){var a=fa(e.value1);if(a instanceof I)return Ce(zv(new S(0)));if(a instanceof R)return Ml($I)(z_(Pe)(a.value0));throw new Error(\"Failed pattern match at W (line 230, column 3 - line 232, column 69): \"+[a.constructor.name])}if(e instanceof el&&e.value0 instanceof Ge){var a=fa(e.value1);if(a instanceof I)return Ce(zv(new S(0)));if(a instanceof R)return M(Ml(VI(he))(z_(Pe)(a.value0)))(function(v){return Ce(PI(v))});throw new Error(\"Failed pattern match at W (line 235, column 3 - line 239, column 36): \"+[a.constructor.name])}if(e instanceof S0)return M(Pe(e.value0))(function(l){return M(Pe(e.value1))(function(v){return Ce(cO(l)(v))})});if(e instanceof Un)return M(Pe(e.value0))(function(l){return M(Pe(e.value1))(function(v){return Ce(q8(l)(v))})});if(e instanceof nt)return Ml(zv)(M(Pe(e.value0))(gm));if(e instanceof Wn)return Ml(OI(e.value0))(Pe(e.value1));if(e instanceof rt)return Ce(zv(new te(\"Math.PI\")));if(e instanceof tt)return Ce(zv(new te(\"cps\")));if(e instanceof it)return Ce(zv(new te(\"time\")));if(e instanceof ot)return Ce(zv(new te(\"beat\")));if(e instanceof _t)return Ce(zv(new te(\"eTime\")));if(e instanceof ct)return Ce(zv(new te(\"eBeat\")));if(e instanceof dc)return Ml(zv)(vu(\"Math.random()*2-1\"));if(e instanceof A0){var u=VI(vO(e.value1))(_O(0)(fO(0)(e.value0-1|0)));return M(z_(function(l){return vu(\"ain(input,\"+(Ot(l)+\")[n]\"))})(u))(function(l){return Ce(al(l))})}return e instanceof Bn?M(Pe(e.value0))(rl(j8)):e instanceof zn?M(Pe(e.value0))(rl(_m)):e instanceof kn?M(Pe(e.value0))(rl(BO)):e instanceof Vn?M(Pe(e.value0))(rl(VO)):e instanceof Jn?M(Pe(e.value0))(rl(zO)):e instanceof jn?M(Pe(e.value0))(rl(kO)):e instanceof Hn?M(M(Pe(e.value0))(rl(V_)))(function(l){return rl(function(v){return vu(ye(v)+(\"<0.5?(\"+(ye(v)+(\"*4-1):(\"+(ye(v)+\"*(-4)+3)\")))))})(l)}):e instanceof Xn?M(M(Pe(e.value0))(rl(V_)))(rl(j8)):e instanceof Yn?M(M(Pe(e.value0))(rl(V_)))(function(l){return rl(function(v){return vu(ye(v)+\">=0.5?1:-1\")})(l)}):e instanceof Zn?M(Pe(e.value0))(rl(lF)):e instanceof Qn?Hu(hs)(\"Math.acos\")(e.value0):e instanceof Kn?Hu(wD)(\"Math.acosh\")(e.value0):e instanceof xn?Hu(gs)(\"Math.asin\")(e.value0):e instanceof er?Hu(dD)(\"Math.asinh\")(e.value0):e instanceof ar?Hu(ys)(\"Math.atan\")(e.value0):e instanceof ur?Hu(mD)(\"Math.atanh\")(e.value0):e instanceof lr?Hu(hD)(\"Math.cbrt\")(e.value0):e instanceof vr?Hu(Bf)(\"Math.ceil\")(e.value0):e instanceof nr?Hu(Mn)(\"Math.cos\")(e.value0):e instanceof rr?Hu(gD)(\"Math.cosh\")(e.value0):e instanceof tr?Hu(Fs)(\"Math.exp\")(e.value0):e instanceof ir?Hu(Zo)(\"Math.floor\")(e.value0):e instanceof or?Hu(bs)(\"Math.log\")(e.value0):e instanceof cr?Hu(yD)(\"Math.log2\")(e.value0):e instanceof _r?Hu(rm)(\"Math.log10\")(e.value0):e instanceof fr?Hu(f_)(\"Math.round\")(e.value0):e instanceof pr?Hu(Es)(\"Math.sign\")(e.value0):e instanceof sr?Hu(Qo)(\"Math.sin\")(e.value0):e instanceof Dr?Hu(FD)(\"Math.sinh\")(e.value0):e instanceof Rr?Hu(Cs)(\"Math.sqrt\")(e.value0):e instanceof Ir?Hu(Ts)(\"Math.tan\")(e.value0):e instanceof Gr?Hu(bD)(\"Math.tanh\")(e.value0):e instanceof wr?Hu(zf)(\"Math.trunc\")(e.value0):e instanceof dr?M(Pe(e.value0))(rl(yO)):e instanceof mr?M(Pe(e.value0))(rl(GO)):e instanceof hr?M(Pe(e.value0))(rl(wO)):e instanceof gr?M(Pe(e.value0))(rl(DO)):e instanceof yr?M(Pe(e.value0))(rl(H8)):e instanceof N0?M(Ml(he)(Pe(e.value0)))(function(l){return M(k_)(function(v){return M(sm(l)(function(t){return M(tv(v.time)(t))(function(i){return M(Xu(t)(new te(\"cps\")))(function(o){return M(tv(v.beat)(o))(function(_){return M(tv(v.etime)(t))(function(s){return M(tv(v.ebeat)(o))(function(b){return Ce({time:i,beat:_,etime:s,ebeat:b})})})})})})}))(function(t){return V8(t)(Pe(e.value1))})})}):e instanceof P0?M(Ml(he)(Pe(e.value0)))(function(l){return M(k_)(function(v){return M(sm(l)(function(t){return M(Do(v.time)(t))(function(i){return M(Do(v.beat)(t))(function(o){return M(Do(v.etime)(t))(function(_){return M(Do(v.ebeat)(t))(function(s){return Ce({time:i,beat:o,etime:_,ebeat:s})})})})})}))(function(t){return V8(t)(Pe(e.value1))})})}):e instanceof Kv?gv(tv)(e.value0)(e.value1)(e.value2):e instanceof Bv?gv(u0)(e.value0)(e.value1)(e.value2):e instanceof q0?gv(Xu)(e.value0)(e.value1)(e.value2):e instanceof mv?gv(Do)(e.value0)(e.value1)(e.value2):e instanceof $0?gv(MO)(e.value0)(e.value1)(e.value2):e instanceof O0?gv(LO)(e.value0)(e.value1)(e.value2):e instanceof U0?gv(FO)(e.value0)(e.value1)(e.value2):e instanceof W0?gv(SO)(e.value0)(e.value1)(e.value2):e instanceof B0?gv(bO)(e.value0)(e.value1)(e.value2):e instanceof xv?gv(EO)(e.value0)(e.value1)(e.value2):e instanceof z0?gv(CO)(e.value0)(e.value1)(e.value2):e instanceof k0?gv(TO)(e.value0)(e.value1)(e.value2):e instanceof V0?gv(dO)(e.value0)(e.value1)(e.value2):e instanceof J0?gv(mO)(e.value0)(e.value1)(e.value2):e instanceof j0?gv(gO)(e.value0)(e.value1)(e.value2):e instanceof H0?fm(aF)(e.value0)(e.value1)(e.value2):e instanceof X0?fm(RO)(e.value0)(e.value1)(e.value2):e instanceof Y0?fm(NO)(e.value0)(e.value1)(e.value2):e instanceof Z0?M(M(Pe(e.value1))(function(l){return Ce(al(vp(l)))}))(function(l){return M(M(Pe(e.value2))(rl(_m)))(function(v){return en(ul(X8)(e.value0)(l)(v))})}):e instanceof Q0?M(Pe(e.value2))(function(l){return M(Pe(e.value3))(function(v){return M(en(ul(jO(e.value1))(e.value0)(l)(v)))(function(t){return Ce(np(t))})})}):e instanceof K0?M(M(Pe(e.value2))(rl(_m)))(function(l){return M(Pe(e.value3))(function(v){return M(en(ul(Rm(e.value1))(e.value0)(l)(v)))(function(t){return Ce(np(t))})})}):e instanceof Fr?M(M(Pe(e.value1))(Im(e.value0)))(function(l){return Ce(al(l))}):e instanceof br?M(Ml(vp)(Pe(e.value0)))(function(l){return M(M(Ml(function(v){return v.beat})(k_))(H8))(function(v){return M(z_(function(t){return X8(t)(v)})(l))(function(t){return Ce(al(t))})})}):e instanceof hv?M(Ml(he)(Pe(e.value1)))(function(l){return M(Ml(he)(Pe(e.value2)))(function(v){var t=al(po(k.create)(l)(v));return M(Pe(e.value3))(function(i){return en(ul(UO)(e.value0)(t)(i))})})}):e instanceof e0?M(Ml(UI)(Pe(e.value1)))(function(l){return M(Ml(UI)(Pe(e.value2)))(function(v){return M(Pe(e.value3))(function(t){return en(so($O)(e.value0)(l)(v)(t))})})}):e instanceof Mt?M(Pe(e.value1))(function(l){return M(Pe(e.value2))(function(v){return M(Pe(e.value3))(function(t){return en(so(OO)(e.value0)(l)(v)(t))})})}):e instanceof St?M(Pe(e.value1))(function(l){return M(Pe(e.value2))(function(v){return M(Pe(e.value3))(function(t){return en(so(qO)(e.value0)(l)(v)(t))})})}):e instanceof Lt?M(Pe(e.value1))(function(l){return M(Pe(e.value2))(function(v){return M(Pe(e.value3))(function(t){return en(so(PO)(e.value0)(l)(v)(t))})})}):e instanceof oo?M(Pe(e.value1))(function(l){return M(Pe(e.value2))(function(v){return en(ul(AO(e.value0))(de.value)(l)(v))})}):Ce(zv(new S(0)))},fm=function(e){return function(a){return function(u){return function(l){return M(Ml(UI)(Pe(u)))(function(v){return M(Pe(l))(function(t){return en(ul(e)(a)(v)(t))})})}}}},gv=function(e){return function(a){return function(u){return function(l){return M(Pe(u))(function(v){return M(Pe(l))(function(t){return en(ul(e)(a)(v)(t))})})}}}};var XO=B(dl),YO=Fc(P_),ZO=ee(Mr(xu)),QO=wn(Jl),jI=X(Va),KO=Yv(C0)(m0),nF=X(Nv),rF=function(e){return function(a){return function(u){return function(l){var v=fo(l[\"audioWorklet'\"].audioWorkletNode);if(v instanceof I)return XO(void 0);if(v instanceof R)return function(){return A_(v.value0)(\"cps\")(e)(),A_(v.value0)(\"originAudio\")(a)(),A_(v.value0)(\"evalTimeAudio\")(u)()};throw new Error(\"Failed pattern match at AudioWorklet (line 54, column 3 - line 59, column 59): \"+[v.constructor.name])}}}},HI=function(e){return function(a){return function(u){var l=fo(e[\"audioWorklet'\"].audioWorkletNode);if(l instanceof I)return YO(\"strange internal error in Punctual: attempt to stop AudioWorklet with no valid WebAudioNode\");if(l instanceof R)return function(){return A_(l.value0)(\"fOutStart\")(a)(),A_(l.value0)(\"fOutDur\")(u)()};throw new Error(\"Failed pattern match at AudioWorklet (line 43, column 3 - line 47, column 47): \"+[l.constructor.name])}}},xO=function(e){return function(a){return function(u){return function(l){return function(v){return function(t){var i=x8(ZO(Pe(e))(vF(a)(u))),o=\"registerProcessor('\"+(l+(\"',\"+(l+`);\n`))),_=QO(0)((a+u|0)-1|0),s=function(Ve){return function(Ga){return\"if(output[\"+(jI(Ve)+(\"]!=null){output[\"+(jI(Ve)+(\"][n] = \"+(ye(Ga)+`*fade};\n`)))))}},b=KO(dv(s)(_)(i.value0)),P=\"const fIn = clamp(0,1,(t-\"+(nF(v)+(\")/\"+(nF(t)+`);\nconst fade = Math.min(fIn,fOut);\n`))),A=\"constructor() { super(); this.sin=genSin(); this.saw=genSaw(); this.sqr=genSqr(); this.tri=genTri(); this.framesOut=0; this.runTime=currentTime; this.f=new Float32Array(\"+(jI(i.value1.allocatedFloats)+(\").fill(0); this.i=new Int32Array(\"+(jI(i.value1.allocatedInts)+`).fill(0);}\n\n`))),K=\"class \"+(l+` extends AudioWorkletProcessor {\n\n`);return`'use strict';\n\nfunction clamp(min,max,x) { return Math.max(Math.min(max,x),min); }\nfunction ain(input,n) { return (n >= input.length ? 0.0 : input[n]); }\nfunction genSin() {\n  var r = new Float32Array(16384).fill(0);\n  for(var t=0;t<16384;t++) {\n    r[t] = Math.sin(Math.PI * 2.0 * t / 16384);\n  }\n  return r;\n}\nfunction genSaw() {\n  var r = new Float32Array(4096).fill(0.5);\n  for(var k=1;k<=84;k++) { // with 84 harmonics, highest harmonic of middle C is just below 22050 Hz\n    var x = Math.pow(-1,k);\n    for(var t=0;t<4096;t++) {\n      r[t] -= Math.sin(Math.PI * 2.0 * k * t / 4096) * x / (k * Math.PI);\n    }\n  }\n  return r;\n}\nfunction genSqr() {\n  var r = new Float32Array(4096).fill(0.5);\n  for(var k=1;k<=83;k+=2) { // with 84 harmonics, highest harmonic of middle C is just below 22050 Hz\n    for(var t=0;t<4096;t++) {\n      r[t] += Math.sin(Math.PI * 2.0 * k * t / 4096) * 4 / (k * Math.PI);\n    }\n  }\n  return r;\n}\nfunction genTri() {\n  var r = new Float32Array(4096).fill(0.5);\n  for(var k=1;k<=83;k+=2) { // with 84 harmonics, highest harmonic of middle C is just below 22050 Hz\n    var x = Math.pow(-1,(k-1)*0.5);\n    for(var t=0;t<4096;t++) {\n      r[t] += Math.sin(Math.PI * 2.0 * k * t / 4096) * 8 * x / (k * k * Math.PI * Math.PI);\n    }\n  }\n  return r;\n}\n\n`+(K+(`static get parameterDescriptors() {\nreturn [\n  { name:'fOutStart', defaultValue:-1.0 },\n  { name:'fOutDur', defaultValue:5.0 },\n  { name:'cps', defaultValue:1.0 },\n  { name:'originAudio', defaultValue:0.0 },\n  { name:'evalTimeAudio', defaultValue:0.0 }\n];}\n\n`+(A+(`process(inputs,outputs,parameters) {\nconst input = inputs[0];\nconst output = outputs[0];\nconst blockSize = 128;\nconst cps = parameters.cps[0];\nconst originAudio = parameters.originAudio[0];\nconst evalTimeAudio = parameters.evalTimeAudio[0];\nconst fOutDur = parameters.fOutDur[0];\nconst fOutEnd = parameters.fOutStart[0] == -1.0 ? -1.0 : parameters.fOutStart[0] + fOutDur;\nconst f = this.f;\nconst i = this.i;\nfor(let n=0; n<blockSize; n++){\nconst t = currentTime + (n/sampleRate);\nconst time = t - originAudio;\nconst beat = time * cps;\nconst eTime = t - evalTimeAudio;\nconst eBeat = eTime * cps;\nconst fOut = fOutEnd == -1.0 ? 1.0 : clamp(0,1,(fOutEnd-t)/fOutDur);\nconst sin = this.sin;\nconst saw = this.saw;\nconst sqr = this.sqr;\nconst tri = this.tri;\n`+(P+(i.value1.code+(b+(`}\nthis.framesOut += blockSize;\nreturn (fOutEnd == -1.0 ? true : (currentTime + (blockSize/sampleRate) <= fOutEnd));\n}\n}\n\n`+o))))))))}}}}}},tF=function(e){return function(a){return function(u){return function(l){return function(v){return function(t){return function(i){return function(o){return function(_){var s=I7(t)(i),b=R7(i),P=xO(v)(s)(b)(l)(o)(_);return function(){var K=X1(e)(a)(u)(l)(P)(s+b|0)();return{name:l,signal:v,output:i,code:P,\"audioWorklet'\":K}}}}}}}}}}};var Fm=()=>{var e=document.createElement(\"video\");return e.width=2048,e.height=2048,e.autoplay=!0,e.isPlaying=!1,e.addEventListener(\"playing\",function(){e.isPlaying=!0}),navigator.mediaDevices.getUserMedia({video:!0}).then(function(a){e.srcObject=a}),e},bm=e=>()=>e.srcObject.getTracks().forEach(function(a){a.stop()}),Em=e=>a=>u=>()=>{u.isPlaying&&(e.activeTexture(e.TEXTURE3),e.bindTexture(e.TEXTURE_2D,a),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,u),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR))},Cm=e=>()=>{var a=new Image;return a.crossOrigin=\"Anonymous\",a.loaded=!1,a.onload=function(){a.loaded=!0},a.src=e,a},Tm=e=>()=>e.loaded,Mm=e=>()=>{var a=document.createElement(\"video\");return a.crossOrigin=\"Anonymous\",a.autoplay=!0,a.muted=!0,a.loop=!0,a.isPlaying=!1,a.addEventListener(\"playing\",function(){a.isPlaying=!0}),a.src=e,a.play(),a},Sm=e=>()=>e.isPlaying;var Lm=e=>()=>new Uint8Array(e),Am=e=>a=>()=>e.getByteFrequencyData(a),Nm=e=>()=>{for(var a=0,u=0;u<8;u++)a=a+e[u];return a=a/2048,a},Pm=e=>()=>{for(var a=0,u=0;u<80;u++)a=a+e[u];return a=a/18432,a},qm=e=>()=>{for(var a=0,u=0;u<512;u++)a=a+e[u];return a=a/110592,a};var $m=()=>new AudioContext,CD=e=>()=>e.resume(),op=e=>()=>e.currentTime,Om=e=>()=>e.destination,XI=e=>a=>()=>new GainNode(e,{gain:a}),Um=e=>a=>u=>()=>new AnalyserNode(e,{fftSize:a,smoothingTimeConstant:u}),Wm=e=>()=>{var a=new GainNode(e);return navigator.mediaDevices.getUserMedia({audio:!0,video:!1}).then(function(u){var l=new MediaStreamAudioSourceNode(e,{mediaStream:u});l.connect(a)}),a},Ro=e=>a=>()=>e.connect(a),Ec=e=>a=>()=>e.disconnect(a);var YI=Eu(),zm=re(c_(cl)),km=sn(dl),iF=function(e){return function(a){return function(){var l=ve(e.mAnalyserNode)();return function(){if(l instanceof R){var v=ve(e.sourceNode)();return Ec(v)(l.value0)(),Ro(a)(l.value0)()}if(l instanceof I)return void 0;throw new Error(\"Failed pattern match at AudioAnalyser (line 86, column 3 - line 91, column 25): \"+[l.constructor.name])}(),Ae(a)(e.sourceNode)()}}},Vm=function(e){return function(a){return function(){var l=va(a)(),v=va(I.value)(),t=Lm(512)(),i=va(0)(),o=va(0)(),_=va(0)();return{webAudioContext:e,sourceNode:l,mAnalyserNode:v,analyserArray:t,lo:i,mid:o,hi:_}}}},lU=function(e){return function(){var u=ve(e.mAnalyserNode)();if(u instanceof I)return void 0;if(u instanceof R){var l=ve(e.sourceNode)();return Ec(l)(u.value0)(),Ae(I.value)(e.mAnalyserNode)(),gl(\"punctual: disactivating an audio analyser...\")()}throw new Error(\"Failed pattern match at AudioAnalyser (line 44, column 3 - line 50, column 57): \"+[u.constructor.name])}},vU=function(e){return function(){var u=ve(e.mAnalyserNode)();if(u instanceof R)return u.value0;if(u instanceof I){var l=Um(e.webAudioContext)(1024)(.5)(),v=ve(e.sourceNode)();return Ro(v)(l)(),Ae(new R(l))(e.mAnalyserNode)(),gl(\"punctual: activating an audio analyser...\")(),l}throw new Error(\"Failed pattern match at AudioAnalyser (line 55, column 3 - line 63, column 24): \"+[u.constructor.name])}},Jm=function(e){return function(a){var u=YI(zm(a.fft)(zm(a.lo)(zm(a.mid)(a.hi))));if(!u)return lU(e);if(u)return function(){CD(e.webAudioContext)();var v=vU(e)();return Am(v)(e.analyserArray)(),km(YI(a.lo))(function(){var i=Nm(e.analyserArray)();return Ae(i)(e.lo)()})(),km(YI(a.mid))(function(){var i=Pm(e.analyserArray)();return Ae(i)(e.mid)()})(),km(YI(a.hi))(function(){var i=qm(e.analyserArray)();return Ae(i)(e.hi)()})()};throw new Error(\"Failed pattern match at AudioAnalyser (line 67, column 3 - line 81, column 21): \"+[u.constructor.name])}};var rU=ee(rc),oF=$n(uu),cF=lt(uu),jm=Eu(),tU=L(nl),iU=G_(Hf),oU=Jo(at),cU=Qu(I0),_F=function(e){return function(a){return function(){var l=ve(e.mWebcamElementRef)();if(l instanceof R)return Em(a.gl)(a.webcamTexture)(l.value0)();if(l instanceof I)return void 0;throw new Error(\"Failed pattern match at SharedResources (line 170, column 3 - line 172, column 25): \"+[l.constructor.name])}}},fF=function(e){return function(a){if(a)return function(){var l=ve(e.mWebcamElementRef)();if(l instanceof R)return void 0;if(l instanceof I){gl(\"punctual: activating webcam\")();var v=Fm();return Ae(new R(v))(e.mWebcamElementRef)()}throw new Error(\"Failed pattern match at SharedResources (line 146, column 3 - line 151, column 42): \"+[l.constructor.name])};if(!a)return function(){var l=ve(e.mWebcamElementRef)();if(l instanceof R)return gl(\"punctual: disactivating webcam\")(),bm(l.value0)(),Ae(I.value)(e.mWebcamElementRef)();if(l instanceof I)return void 0;throw new Error(\"Failed pattern match at SharedResources (line 154, column 3 - line 159, column 25): \"+[l.constructor.name])};throw new Error(\"Failed pattern match at SharedResources (line 143, column 1 - line 143, column 61): \"+[e.constructor.name,a.constructor.name])}},pF=function(e){return function(a){return Ae(a)(e.tempo)}},sF=function(e){return function(a){return Ae(a)(e.outputChannelCount)}},DF=function(e){return function(a){return Ae(a)(e.brightness)}},RF=function(e){return function(a){return function(){var l=ve(e.externalAudioOutputNode)();return Ec(e.internalAudioOutputNode)(l)(),Ro(e.internalAudioOutputNode)(a)(),Ae(a)(e.externalAudioOutputNode)(),iF(e.outputAnalyser)(a)()}}},IF=function(e){return function(a){return function(){var l=ve(e.mExternalAudioInputNode)();return function(){if(l instanceof I)return void 0;if(l instanceof R){Ec(l.value0)(e.internalAudioInputNode)();var v=a();return Ro(v)(e.internalAudioInputNode)(),Ae(new R(v))(e.mExternalAudioInputNode)()}throw new Error(\"Failed pattern match at SharedResources (line 227, column 3 - line 233, column 72): \"+[l.constructor.name])}(),Ae(a)(e.audioInputGetter)()}}},Hm=function(e){return function(a){return function(){var l=ve(e.videos)(),v=oF(a)(l);if(v instanceof I){var t=Mm(a)();return Ae(cF(a)(t)(l))(e.videos)(),I.value}if(v instanceof R){var i=Sm(v.value0)();if(i)return new R(v.value0);if(!i)return I.value;throw new Error(\"Failed pattern match at SharedResources (line 212, column 7 - line 214, column 30): \"+[i.constructor.name])}throw new Error(\"Failed pattern match at SharedResources (line 205, column 3 - line 214, column 30): \"+[v.constructor.name])}}},ZI=function(e){return ve(e.tempo)},GF=function(e){return ve(e.outputChannelCount)},wF=function(e){return function(a){return function(){var l=ve(e.images)(),v=oF(a)(l);if(v instanceof I){var t=Cm(a)();return Ae(cF(a)(t)(l))(e.images)(),I.value}if(v instanceof R){var i=Tm(v.value0)();if(i)return new R(v.value0);if(!i)return I.value;throw new Error(\"Failed pattern match at SharedResources (line 189, column 7 - line 191, column 30): \"+[i.constructor.name])}throw new Error(\"Failed pattern match at SharedResources (line 182, column 3 - line 191, column 30): \"+[v.constructor.name])}}};var _U=function(e){return function(){var u=ve(e.mExternalAudioInputNode)();if(u instanceof I)return void 0;if(u instanceof R)return Ec(u.value0)(e.internalAudioInputNode)(),Ae(I.value)(e.mExternalAudioInputNode)(),gl(\"punctual audio input disactivated\")();throw new Error(\"Failed pattern match at SharedResources (line 253, column 3 - line 258, column 46): \"+[u.constructor.name])}},Xm=function(e){return function(a){return function(){var l=ve(e.clockDiff)(),v=jm(jf(Us(a)))/1e3;return v-l}}},Ym=function(e){return function(){var u=ve(e.mExternalAudioInputNode)();if(u instanceof I){var l=ve(e.audioInputGetter)(),v=l();return Ro(v)(e.internalAudioInputNode)(),Ae(new R(v))(e.mExternalAudioInputNode)(),gl(\"punctual audio input activated\")()}if(u instanceof R)return void 0;throw new Error(\"Failed pattern match at SharedResources (line 240, column 3 - line 247, column 24): \"+[u.constructor.name])}},dF=function(e){return function(a){return function(){return function(){var l=jm(a.ain);if(l)return Ym(e)();if(!l)return _U(e)();throw new Error(\"Failed pattern match at SharedResources (line 98, column 3 - line 100, column 38): \"+[l.constructor.name])}(),Jm(e.inputAnalyser)({fft:a.ifft,lo:a.ilo,mid:a.imid,hi:a.ihi})(),Jm(e.outputAnalyser)(a)()}}},mF=function(e){return function(){var u=op(e)(),l=tU(function(v){return function(t){return t/1e3}(jm(jf(v)))})(js)();return l-u}},hF=function(e){return function(){var u=rU(o7(iU(1)(1)))(va)(),l=va(I.value)(),v=va(fl)(),t=va(fl)(),i=va(fl)(),o=function(){if(e instanceof I)return $m();if(e instanceof R)return e.value0;throw new Error(\"Failed pattern match at SharedResources (line 57, column 22 - line 59, column 40): \"+[e.constructor.name])}(),_=mF(o)(),s=va(_)(),b=va(ha(_))(),P=va(Wm(o))(),A=va(I.value)(),K=Om(o)(),Ve=va(K)(),Ga=XI(o)(1)(),$u=XI(o)(1)();Ro($u)(K)();var Dl=Vm(o)(Ga)(),Ou=Vm(o)($u)(),_u=va(0)(),f0=va(1)(),Be=va(2)();return{tempo:u,mWebcamElementRef:l,images:v,videos:t,libraries:i,webAudioContext:o,clockDiff:s,clockDiffList:b,audioInputGetter:P,mExternalAudioInputNode:A,externalAudioOutputNode:Ve,internalAudioInputNode:Ga,internalAudioOutputNode:$u,inputAnalyser:Dl,outputAnalyser:Ou,audioWorkletCount:_u,brightness:f0,outputChannelCount:Be}}},gF=function(e){return function(){var u=mF(e.webAudioContext)(),l=ve(e.clockDiffList)(),v=function(){var i=ba(l)<=9;if(i)return lu(u)(l);if(!i)return C_(u)(II(l));throw new Error(\"Failed pattern match at SharedResources (line 115, column 17 - line 117, column 99): \"+[i.constructor.name])}();Ae(v)(e.clockDiffList)();var t=oU(cU)(v)/10;return Ae(t)(e.clockDiff)()}};var fU=ee(rc),TD=L(nl),EF=qf(dl)(xa),QI=B(dl),pU=re(Gi),sU=Zr(fc),DU=Yv(xa)(m0),Qm=L(rv),yF=Fc(P_),RU=X(Va),IU=m(y),GU=m(s7),wU=Iu(T0)(dl),dU=Wu(_a),mU=vv(T0)(dl),CF=function(e){return function(){var u=ve(e.sharedResources.tempo)(),l=Sn(u.freq),v=Xm(e.sharedResources)(Xs(u))(),t=fU(ve(e.evalTime))(Xm(e.sharedResources))(),i=TD(Pn)(ve(e.worklets))();return EF(rF(l)(v)(t))(i)()}},hU=function(e){return function(a){return function(u){if(u instanceof I)return QI(void 0);if(u instanceof R)return HI(u.value0)(e)(a);throw new Error(\"Failed pattern match at AudioZone (line 129, column 1 - line 129, column 74): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},TF=function(e){if(e instanceof I)return I.value;if(e instanceof R){if(Zs(e.value0.output))return new R(e.value0);if(pe)return I.value}throw new Error(\"Failed pattern match at AudioZone (line 42, column 1 - line 42, column 49): \"+[e.constructor.name])},FF=function(e){return function(a){return function(u){if(Cl(u)>=a)return u;if(pe)return pU(u)(sU(a-Cl(u)|0)(e));throw new Error(\"Failed pattern match at AudioZone (line 108, column 1 - line 108, column 58): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},MF=function(e){return function(){var u=ve(e.worklets)(),l=op(e.sharedResources.webAudioContext)();return EF(hU(l+.25)(.1))(u)(),Ae(h.value)(e.worklets)()}},SF=function(e){return function(){var u=TD(Pn)(ve(e.worklets))();return DU(Qm(function(l){return function(v){return v+`\n`}(function(v){return v.code}(l))})(u))}},bF=function(e){return function(a){return function(u){return function(l){return function(){var t=ve(e.audioWorkletCount)();Ae(t+1|0)(e.audioWorkletCount)();var i=function(){var _=p8(a);if(_)return yF(\"worklet has audio input\")(),Ym(e)(),TD(fD)(QI(e.internalAudioInputNode))();if(!_)return yF(\"worklet does not have audio input\")(),null;throw new Error(\"Failed pattern match at AudioZone (line 72, column 11 - line 79, column 24): \"+[_.constructor.name])}(),o=GF(e)();return tF(e.webAudioContext)(i)(e.internalAudioOutputNode)(\"W\"+RU(t))(a.signal)(o)(a.output)(u)(l-u)()}}}}},LF=function(e){return function(a){return function(u){return function(l){return function(v){if(l instanceof I&&v instanceof I)return QI(I.value);if(l instanceof I&&v instanceof R)return function(){var o=ve(e.tempo)(),_=J1(o)(a)(u)(v.value0);return TD(R.create)(bF(e)(v.value0)(_.value0)(_.value1))()};if(l instanceof R&&v instanceof I)return function(){var o=op(e.webAudioContext)();return HI(l.value0)(o+.25)(.1)(),I.value};if(l instanceof R&&v instanceof R){var t=IU(l.value0.signal)(v.value0.signal)&&GU(l.value0.output)(v.value0.output);if(t)return QI(new R(l.value0));if(!t)return function(){var o=ve(e.tempo)(),_=J1(o)(a)(u)(v.value0);return HI(l.value0)(_.value0)(_.value1-_.value0)(),TD(R.create)(bF(e)(v.value0)(_.value0)(_.value1))()};throw new Error(\"Failed pattern match at AudioZone (line 59, column 3 - line 65, column 55): \"+[t.constructor.name])}throw new Error(\"Failed pattern match at AudioZone (line 48, column 1 - line 48, column 129): \"+[e.constructor.name,a.constructor.name,u.constructor.name,l.constructor.name,v.constructor.name])}}}}},AF=function(e){return function(a){return function(){CD(e.webAudioContext)();var l=ve(e.clockDiff)(),v=Qm(TF)(a.actions),t=va(a.evalTime)(),i=wU(LF(e)(a.evalTime)(l)(I.value))(v)(),o=va(i)();return{sharedResources:e,evalTime:t,worklets:o}}}},NF=function(e){return function(a){return function(){var l=ve(e.worklets)(),v=dU(Cl(l))(Cl(a.actions)),t=FF(I.value)(v)(l),i=FF(I.value)(v)(a.actions),o=ve(e.sharedResources.clockDiff)(),_=mU(lD(LF(e.sharedResources)(a.evalTime)(o))(t)(Qm(TF)(i)))();return Ae(_)(e.worklets)(),Ae(a.evalTime)(e.evalTime)()}}};function PF(e){return function(){return new Promise(function(a,u){var l=function(t){return function(){return a(t)}},v=function(t){return function(){return u(t)}};try{e(l)(v)()}catch(t){u(t)}})}}var FU=L(ss);var Km=function(e){return e};var cp=function(e){return e};var xm={lift:function(e){var a=ee(e.Bind1()),u=B(e.Applicative0());return function(l){return a(l)(function(v){return u(new te(v))})}}},bU=Gu(xm),KI=function(e){return function(a){return e(a)}},qF=function(e){var a=L(e);return{map:function(u){return KI(a(FU(u)))}}};var MD=function(e){return{Applicative0:function(){return ah(e)},Bind1:function(){return EU(e)}}},EU=function(e){var a=ee(e.Bind1()),u=B(e.Applicative0());return{bind:function(l){return function(v){return a(l)(In(function(t){return u(S.create(t))})(function(t){var i=v(t);return i}))}},Apply0:function(){return eh(e)}}},eh=function(e){var a=qF(e.Bind1().Apply0().Functor0());return{apply:E0(MD(e)),Functor0:function(){return a}}},ah=function(e){return{pure:function(){var a=B(e.Applicative0());return function(u){return Km(a(te.create(u)))}}(),Apply0:function(){return eh(e)}}};var $F=function(e){var a=e.Monad0(),u=MD(a);return{liftEffect:function(){var l=bU(a),v=Lu(e);return function(t){return l(v(t))}}(),Monad0:function(){return u}}};var xI=function(e){var a=MD(e);return{throwError:function(){var u=B(e.Applicative0());return function(l){return Km(u(S.create(l)))}}(),Monad0:function(){return a}}};var TU=Eu();var uh=function(e){return TU(cp(e))};var iv=function(){var e={},a=\"Pure\",u=\"Throw\",l=\"Catch\",v=\"Sync\",t=\"Async\",i=\"Bind\",o=\"Bracket\",_=\"Fork\",s=\"Sequential\",b=\"Map\",P=\"Apply\",A=\"Alt\",K=\"Cons\",Ve=\"Resume\",Ga=\"Release\",$u=\"Finalizer\",Dl=\"Finalized\",Ou=\"Forked\",_u=\"Fiber\",f0=\"Thunk\";function Be(we,ga,mu,$a){this.tag=we,this._1=ga,this._2=mu,this._3=$a}function ev(we){var ga=function(mu,$a,qe){return new Be(we,mu,$a,qe)};return ga.tag=we,ga}function xc(we){return new Be(a,void 0)}function _n(we){try{we()}catch(ga){setTimeout(function(){throw ga},0)}}function Gf(we,ga,mu){try{return ga(mu())}catch($a){return we($a)}}function wf(we,ga,mu){try{return ga(mu)()}catch($a){return mu(we($a))(),xc}}var vi=function(){var we=1024,ga=0,mu=0,$a=new Array(we),qe=!1;function ce(){var Aa;for(qe=!0;ga!==0;)ga--,Aa=$a[mu],$a[mu]=void 0,mu=(mu+1)%we,Aa();qe=!1}return{isDraining:function(){return qe},enqueue:function(Aa){var ra,su;ga===we&&(su=qe,ce(),qe=su),$a[(mu+ga)%we]=Aa,ga++,qe||ce()}}}();function df(we){var ga={},mu=0,$a=0;return{register:function(qe){var ce=mu++;qe.onComplete({rethrow:!0,handler:function(Aa){return function(){$a--,delete ga[ce]}}})(),ga[ce]=qe,$a++},isEmpty:function(){return $a===0},killAll:function(qe,ce){return function(){if($a===0)return ce();var Aa=0,ra={};function su(ta){ra[ta]=ga[ta].kill(qe,function(hu){return function(){delete ra[ta],Aa--,we.isLeft(hu)&&we.fromLeft(hu)&&setTimeout(function(){throw we.fromLeft(hu)},0),Aa===0&&ce()}})()}for(var Uu in ga)ga.hasOwnProperty(Uu)&&(Aa++,su(Uu));return ga={},mu=0,$a=0,function(ta){return new Be(v,function(){for(var hu in ra)ra.hasOwnProperty(hu)&&ra[hu]()})}}}}}var kr=0,yl=1,Lo=2,Ao=3,No=4,ql=5,Vr=6;function e_(we,ga,mu){var $a=0,qe=kr,ce=mu,Aa=null,ra=null,su=null,Uu=null,ta=null,hu=0,fn=0,av=null,p0=!0;function f(G){for(var g,Q,De;;)switch(g=null,Q=null,De=null,qe){case Lo:qe=yl;try{ce=su(ce),Uu===null?su=null:(su=Uu._1,Uu=Uu._2)}catch(gu){qe=ql,Aa=we.left(gu),ce=null}break;case Ao:we.isLeft(ce)?(qe=ql,Aa=ce,ce=null):su===null?qe=ql:(qe=Lo,ce=we.fromRight(ce));break;case yl:switch(ce.tag){case i:su&&(Uu=new Be(K,su,Uu)),su=ce._2,qe=yl,ce=ce._1;break;case a:su===null?(qe=ql,ce=we.right(ce._1)):(qe=Lo,ce=ce._1);break;case v:qe=Ao,ce=Gf(we.left,we.right,ce._1);break;case t:qe=No,ce=wf(we.left,ce._1,function(gu){return function(){$a===G&&($a++,vi.enqueue(function(){$a===G+1&&(qe=Ao,ce=gu,f($a))}))}});return;case u:qe=ql,Aa=we.left(ce._1),ce=null;break;case l:su===null?ta=new Be(K,ce,ta,ra):ta=new Be(K,ce,new Be(K,new Be(Ve,su,Uu),ta,ra),ra),su=null,Uu=null,qe=yl,ce=ce._1;break;case o:hu++,su===null?ta=new Be(K,ce,ta,ra):ta=new Be(K,ce,new Be(K,new Be(Ve,su,Uu),ta,ra),ra),su=null,Uu=null,qe=yl,ce=ce._1;break;case _:qe=Ao,g=e_(we,ga,ce._2),ga&&ga.register(g),ce._1&&g.run(),ce=we.right(g);break;case s:qe=yl,ce=xp(we,ga,ce._1);break}break;case ql:if(su=null,Uu=null,ta===null)qe=Vr,ce=ra||Aa||ce;else switch(g=ta._3,De=ta._1,ta=ta._2,De.tag){case l:ra&&ra!==g&&hu===0?qe=ql:Aa&&(qe=yl,ce=De._2(we.fromLeft(Aa)),Aa=null);break;case Ve:ra&&ra!==g&&hu===0||Aa?qe=ql:(su=De._1,Uu=De._2,qe=Lo,ce=we.fromRight(ce));break;case o:hu--,Aa===null&&(Q=we.fromRight(ce),ta=new Be(K,new Be(Ga,De._2,Q),ta,g),(ra===g||hu>0)&&(qe=yl,ce=De._3(Q)));break;case Ga:ta=new Be(K,new Be(Dl,ce,Aa),ta,ra),qe=yl,ra&&ra!==g&&hu===0?ce=De._1.killed(we.fromLeft(ra))(De._2):Aa?ce=De._1.failed(we.fromLeft(Aa))(De._2):ce=De._1.completed(we.fromRight(ce))(De._2),Aa=null,hu++;break;case $u:hu++,ta=new Be(K,new Be(Dl,ce,Aa),ta,ra),qe=yl,ce=De._1;break;case Dl:hu--,qe=ql,ce=De._1,Aa=De._2;break}break;case Vr:for(var sa in av)av.hasOwnProperty(sa)&&(p0=p0&&av[sa].rethrow,_n(av[sa].handler(ce)));av=null,ra&&Aa?setTimeout(function(){throw we.fromLeft(Aa)},0):we.isLeft(ce)&&p0&&setTimeout(function(){if(p0)throw we.fromLeft(ce)},0);return;case kr:qe=yl;break;case No:return}}function wa(G){return function(){if(qe===Vr)return p0=p0&&G.rethrow,G.handler(ce)(),function(){};var g=fn++;return av=av||{},av[g]=G,function(){av!==null&&delete av[g]}}}function Oe(G,g){return function(){if(qe===Vr)return g(we.right(void 0))(),function(){};var Q=wa({rethrow:!1,handler:function(){return g(we.right(void 0))}})();switch(qe){case kr:ra=we.left(G),qe=Vr,ce=ra,f($a);break;case No:ra===null&&(ra=we.left(G)),hu===0&&(qe===No&&(ta=new Be(K,new Be($u,ce(G)),ta,ra)),qe=ql,ce=null,Aa=null,f(++$a));break;default:ra===null&&(ra=we.left(G)),hu===0&&(qe=ql,ce=null,Aa=null)}return Q}}function D(G){return function(){var g=wa({rethrow:!1,handler:G})();return qe===kr&&f($a),g}}return{kill:Oe,join:D,onComplete:wa,isSuspended:function(){return qe===kr},run:function(){qe===kr&&(vi.isDraining()?f($a):vi.enqueue(function(){f($a)}))}}}function Kp(we,ga,mu,$a){var qe=0,ce={},Aa=0,ra={},su=new Error(\"[ParAff] Early exit\"),Uu=null,ta=e;function hu(wa,Oe,D){var G=Oe,g=null,Q=null,De=0,sa={},gu,a_;e:for(;;)switch(gu=null,G.tag){case Ou:if(G._3===e&&(gu=ce[G._1],sa[De++]=gu.kill(wa,function(x){return function(){De--,De===0&&D(x)()}})),g===null)break e;G=g._2,Q===null?g=null:(g=Q._1,Q=Q._2);break;case b:G=G._2;break;case P:case A:g&&(Q=new Be(K,g,Q)),g=G,G=G._1;break}if(De===0)D(we.right(void 0))();else for(a_=0,gu=De;a_<gu;a_++)sa[a_]=sa[a_]();return sa}function fn(wa,Oe,D){var G,g,Q,De,sa,gu;we.isLeft(wa)?(G=wa,g=null):(g=wa,G=null);e:for(;;){if(Q=null,De=null,sa=null,gu=null,Uu!==null)return;if(Oe===null){$a(G||g)();return}if(Oe._3!==e)return;switch(Oe.tag){case b:G===null?(Oe._3=we.right(Oe._1(we.fromRight(g))),g=Oe._3):Oe._3=G;break;case P:if(Q=Oe._1._3,De=Oe._2._3,G){if(Oe._3=G,sa=!0,gu=Aa++,ra[gu]=hu(su,G===Q?Oe._2:Oe._1,function(){return function(){delete ra[gu],sa?sa=!1:D===null?fn(G,null,null):fn(G,D._1,D._2)}}),sa){sa=!1;return}}else{if(Q===e||De===e)return;g=we.right(we.fromRight(Q)(we.fromRight(De))),Oe._3=g}break;case A:if(Q=Oe._1._3,De=Oe._2._3,Q===e&&we.isLeft(De)||De===e&&we.isLeft(Q))return;if(Q!==e&&we.isLeft(Q)&&De!==e&&we.isLeft(De))G=g===Q?De:Q,g=null,Oe._3=G;else if(Oe._3=g,sa=!0,gu=Aa++,ra[gu]=hu(su,g===Q?Oe._2:Oe._1,function(){return function(){delete ra[gu],sa?sa=!1:D===null?fn(g,null,null):fn(g,D._1,D._2)}}),sa){sa=!1;return}break}D===null?Oe=null:(Oe=D._1,D=D._2)}}function av(wa){return function(Oe){return function(){delete ce[wa._1],wa._3=Oe,fn(Oe,wa._2._1,wa._2._2)}}}function p0(){var wa=yl,Oe=mu,D=null,G=null,g,Q;e:for(;;)switch(g=null,Q=null,wa){case yl:switch(Oe.tag){case b:D&&(G=new Be(K,D,G)),D=new Be(b,Oe._1,e,e),Oe=Oe._2;break;case P:D&&(G=new Be(K,D,G)),D=new Be(P,e,Oe._2,e),Oe=Oe._1;break;case A:D&&(G=new Be(K,D,G)),D=new Be(A,e,Oe._2,e),Oe=Oe._1;break;default:Q=qe++,wa=ql,g=Oe,Oe=new Be(Ou,Q,new Be(K,D,G),e),g=e_(we,ga,g),g.onComplete({rethrow:!1,handler:av(Oe)})(),ce[Q]=g,ga&&ga.register(g)}break;case ql:if(D===null)break e;D._1===e?(D._1=Oe,wa=yl,Oe=D._2,D._2=e):(D._2=Oe,Oe=D,G===null?D=null:(D=G._1,G=G._2))}for(ta=Oe,Q=0;Q<qe;Q++)ce[Q].run()}function f(wa,Oe){Uu=we.left(wa);var D;for(var G in ra)if(ra.hasOwnProperty(G)){D=ra[G];for(G in D)D.hasOwnProperty(G)&&D[G]()}ra=null;var g=hu(wa,ta,Oe);return function(Q){return new Be(t,function(De){return function(){for(var sa in g)g.hasOwnProperty(sa)&&g[sa]();return xc}})}}return p0(),function(wa){return new Be(t,function(Oe){return function(){return f(wa,Oe)}})}}function xp(we,ga,mu){return new Be(t,function($a){return function(){return Kp(we,ga,mu,$a)}})}return Be.EMPTY=e,Be.Pure=ev(a),Be.Throw=ev(u),Be.Catch=ev(l),Be.Sync=ev(v),Be.Async=ev(t),Be.Bind=ev(i),Be.Bracket=ev(o),Be.Fork=ev(_),Be.Seq=ev(s),Be.ParMap=ev(b),Be.ParApply=ev(P),Be.ParAlt=ev(A),Be.Fiber=e_,Be.Supervisor=df,Be.Scheduler=vi,Be.nonCanceler=xc,Be}(),UF=iv.Pure,WF=iv.Throw;function BF(e){return function(a){return iv.Catch(e,a)}}function zF(e){return function(a){return a.tag===iv.Pure.tag?iv.Pure(e(a._1)):iv.Bind(a,function(u){return iv.Pure(e(u))})}}function kF(e){return function(a){return iv.Bind(e,a)}}var VF=iv.Sync;function JF(e){return function(a){return iv.ParMap(e,a)}}function jF(e){return function(a){return iv.ParApply(e,a)}}var SD=iv.Async;function HF(e,a){return function(){return iv.Fiber(e,null,a)}}var MU=function(){function e(u,l){return u===0&&typeof setImmediate<\"u\"?setImmediate(l):setTimeout(l,u)}function a(u,l){return u===0&&typeof clearImmediate<\"u\"?clearImmediate(l):clearTimeout(l)}return function(u,l){return iv.Async(function(v){return function(){var t=e(l,v(u()));return function(){return iv.Sync(function(){return u(a(l,t))})}}})}}(),XF=iv.Seq;var ab=function(e){return e};var ub=function(e){return e};var vh={lift:function(e){return function(a){return ab(Oa(a))}}},lb=Gu(vh),vb=function(e){return function(a){return function(u){return e(a(u))}}},WU=function(e){return{map:function(){var a=L(e);return function(u){return vb(a(u))}}()}};var nh=function(e){var a=la(e),u=WU(e.Functor0());return{apply:function(l){return function(v){return function(t){return a(l(t))(v(t))}}},Functor0:function(){return u}}},BU=function(e){var a=ee(e),u=nh(e.Apply0());return{bind:function(l){return function(v){return function(t){return a(l(t))(function(i){var o=v(i);return o(t)})}}},Apply0:function(){return u}}};var zU=function(e){var a=nh(e.Apply0());return{pure:function(){var u=B(e);return function(l){return ab(Oa(u(l)))}}(),Apply0:function(){return a}}},LD=function(e){var a=zU(e.Applicative0()),u=BU(e.Bind1());return{Applicative0:function(){return a},Bind1:function(){return u}}},nb=function(e){var a=LD(e);return{ask:B(e.Applicative0()),Monad0:function(){return a}}};var rb=function(e){var a=e.Monad0(),u=LD(a);return{liftEffect:function(){var l=lb(a),v=Lu(e);return function(t){return l(v(t))}}(),Monad0:function(){return u}}};var tb=function(e){var a=e.Monad0(),u=LD(a);return{throwError:function(){var l=lb(a),v=fu(e);return function(t){return l(v(t))}}(),Monad0:function(){return u}}};var uG=function(e){return e.sequential},_p=function(e){return e.parallel};var HU=$e(Ue),XU=function(e){var a=uG(e),u=_p(e);return function(l){var v=qf(l);return function(t){var i=v(t);return function(o){var _=i(function(s){return u(o(s))});return function(s){return a(_(s))}}}}};var cb=function(e){var a=XU(e);return function(u){var l=a(u);return function(v){return l(v)(HU)}}};var KU=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}};var xU=Il(nl);var eW={map:JF},aW={map:zF};var uW=function(){var e=function(l){if(l instanceof te)return l.value0;if(l instanceof S)return vD(\"unsafeFromRight: Left\");throw new Error(\"Failed pattern match at Effect.Aff (line 412, column 21 - line 414, column 54): \"+[l.constructor.name])},a=function(l){if(l instanceof S)return l.value0;if(l instanceof te)return vD(\"unsafeFromLeft: Right\");throw new Error(\"Failed pattern match at Effect.Aff (line 407, column 20 - line 409, column 55): \"+[l.constructor.name])},u=function(l){if(l instanceof S)return!0;if(l instanceof te)return!1;throw new Error(\"Failed pattern match at Effect.Aff (line 402, column 12 - line 404, column 21): \"+[l.constructor.name])};return{isLeft:u,fromLeft:a,fromRight:e,left:S.create,right:te.create}}(),lW=function(e){return HF(uW,e)},vW=function(e){return function(){var u=lW(e)();return u.run(),u}};var pb={apply:jF,Functor0:function(){return eW}};var fp={Applicative0:function(){return Tc},Bind1:function(){return un}},un={bind:kF,Apply0:function(){return rh(0)}},Tc={pure:UF,Apply0:function(){return rh(0)}},rh=KU(\"applyAff\",\"Effect.Aff\",function(){return{apply:E0(fp),Functor0:function(){return aW}}}),nW=rh(73),sb=B(Tc);var rW=ti(un);var Db={parallel:$v,sequential:XF,Apply0:function(){return nW},Apply1:function(){return pb}},tW=_p(Db),iW={pure:function(e){return tW(sb(e))},Apply0:function(){return pb}};var oW=cb(Db)(iW)(Gl);var cW={append:function(e){return function(a){return function(u){return oW([e(u),a(u)])}}}};var l0={liftEffect:VF,Monad0:function(){return fp}},_W=Lu(l0);var th={throwError:WF,Monad0:function(){return fp}},fW={catchError:BF,MonadThrow0:function(){return th}},pW=Y1(fW);var sW=function(e){return function(a){return vW(rW(function(u){return _W(e(u))})(pW(a)))}},lG=function(e){return function(a){return xU(sW(e)(a))}};var DW=Oa(sb(void 0)),ih={mempty:DW,Semigroup0:function(){return cW}};function vG(e){return Object.prototype.toString.call(e).slice(8,-1)}var Rb=Array.isArray||function(e){return Object.prototype.toString.call(e)===\"[object Array]\"};var AD=function(e){return e.join(\"\")},sp=function(e){return e.split(\"\")},Mc=function(e){return e};var Ib=function(e){return function(a){return function(u){return u.length===1?e(u):a}}},Sc=function(e){return e.length};var Lc=function(e){return function(a){return a.substring(e)}};var oh=function(e){return function(a){return{before:a.substring(0,e),after:a.substring(e)}}};var Io=function(e){return function(a){if(e>=0&&e<a.length)return a.charAt(e);throw new Error(\"Data.String.Unsafe.charAt: Invalid index.\")}};var wb=function(e){return e===\"\"?I.value:new R({head:Io(0)(e),tail:Lc(1)(e)})},nG=function(){return Ib(R.create)(I.value)}();var _h=function(e){return function(a){var u=oh(Sc(e))(a),l=u.before===e;return l?new R(u.after):I.value}};var mW=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}();var db=$v,hW=$v;var gW=function(e){var a=fu(xI(e));return function(u){return a(ha(u))}};var mb=function(e){var a=B(ah(e)),u=gW(e);return function(l){return function(v){if(vG(v)===l)return a(hW(v));if(pe)return u(new mW(l,vG(v)));throw new Error(\"Failed pattern match at Foreign (line 123, column 1 - line 123, column 104): \"+[l.constructor.name,v.constructor.name])}}};var fh=function(e){return mb(e)(\"String\")};var gb=function(e){return PF(function(a){return function(u){return lG(In(u)(a))(e)}})};var FW=zl(O4),ph=function(e){var a=QR(e*1e3);if(a instanceof R)return R_(a.value0);if(a instanceof I)return R_(FW);throw new Error(\"Failed pattern match at DateTime (line 10, column 22 - line 12, column 31): \"+[a.constructor.name])};var j_=function(e){var a=null;return function(){return e===void 0||(a=e(),e=void 0),a}},Rp=function(e){return e()};var CW=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}};var TW=X(Av),MW=Eu();var Ut=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),nu=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}();var yb=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Fb=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),sh=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}();var H_={defer:function(e){var a=j_(e);return function(u,l,v,t,i){var o=Rp(a);return o(u,l,v,t,i)}}},SW={to:function(e){return e},from:function(e){return e}},LW=Ln(SW)(b0(Ri(LR()()(ps({reflectSymbol:function(){return\"column\"}})(ps({reflectSymbol:function(){return\"index\"}})(NR({reflectSymbol:function(){return\"line\"}})(Va))(Va))(Va))))({reflectSymbol:function(){return\"Position\"}})),Dh={show:function(e){return LW(e)}},AW=X(Dh),ov={map:function(e){return function(a){return function(u,l,v,t,i){return l(function(o){return a(u,l,v,t,function(_,s){return l(function(b){return i(_,e(s))})})})}}}};var Wt={apply:function(e){return function(a){return function(u,l,v,t,i){return l(function(o){return e(u,l,v,t,function(_,s){return l(function(b){return a(_,l,v,t,function(P,A){return l(function(K){return i(P,s(A))})})})})})}}},Functor0:function(){return ov}};var v0={bind:function(e){return function(a){return function(u,l,v,t,i){return l(function(o){return e(u,l,v,t,function(_,s){return l(function(b){var P=a(s);return P(_,l,v,t,i)})})})}}},Apply0:function(){return Wt}},NW=ti(v0);var Bt={pure:function(e){return function(a,u,l,v,t){return t(a,e)}},Apply0:function(){return Wt}};var bb={Applicative0:function(){return Bt},Bind1:function(){return v0}};var tG={tailRecM:function(e){return function(a){return function(u,l,v,t,i){var o=CW(\"loop\",\"Parsing\",function(){return function(s,b,P){var A=e(b);return A(s,l,v,t,function(K,Ve){if(Ve instanceof ku){var Ga=P===0;return Ga?l(function($u){return o(277)(K,Ve.value0,30)}):o(279)(K,Ve.value0,P-1|0)}if(Ve instanceof Vu)return i(K,Ve.value0);throw new Error(\"Failed pattern match at Parsing (line 273, column 39 - line 281, column 43): \"+[Ve.constructor.name])})}}),_=o(270);return _(u,a,30)}}},Monad0:function(){return bb}};var Eb={throwError:function(e){return function(a,u,l,v,t){return v(a,e)}},Monad0:function(){return bb}},PW=fu(Eb);var Lr={alt:function(e){return function(a){return function(u,l,v,t,i){return l(function(o){return e(new Ut(u.value0,u.value1,!1),l,v,function(_,s){return l(function(b){return _.value2?t(_,s):a(u,l,v,t,i)})},i)})}}},Functor0:function(){return ov}},Cb=function(e){return function(a,u,l,v,t){var i=e(a);return t(i.value1,i.value0)}},Rh={show:function(e){return\"(ParseError \"+(TW(e.value0)+(\" \"+(AW(e.value1)+\")\")))}},qW=function(e){var a=e.Monad0(),u=L(a.Bind1().Apply0().Functor0()),l=B(a.Applicative0()),v=Qv(e);return function(t){return function(i){var o=function(_){var s=!1,b;function P(A){var K=A(void 0);if(K instanceof yb){_=K.value0;return}if(K instanceof Fb)return s=!0,u(ku.create)(K.value0);if(K instanceof sh)return s=!0,l(new Vu(new k(K.value1,K.value0)));throw new Error(\"Failed pattern match at Parsing (line 152, column 13 - line 158, column 32): \"+[K.constructor.name])}for(;!s;)b=P(_);return b};return v(o)(function(_){return i(t,yb.create,Fb.create,function(s,b){return new sh(s,new S(b))},function(s,b){return new sh(s,new te(b))})})}}};var Sl=Cb(function(e){return new k(e.value1,e)});var $W={index:0,line:1,column:1},OW=function(e){var a=L(e.Monad0().Bind1().Apply0().Functor0()),u=qW(e);return function(l){return function(v){var t=new Ut(l,$W,!1);return a(Iv)(u(t)(v))}}},UW=OW(d7),Tb=function(e){var a=UW(e);return function(u){return MW(a(u))}};var WW=function(e){return function(a){return PW(new nu(e,a))}},kv=function(e){return NW(WW(e))(Sl)};var Ih={empty:kv(\"No alternative\"),Alt0:function(){return Lr}},Ip={Applicative0:function(){return Bt},Plus1:function(){return Ih}};var Vt=Za(Lr),Sb=Yr(H_),YW=ni(ov),kt=B(Bt),iG=ri(Wt),Gh=Qv(tG),Ac=ee(v0);var Lb=L(ov),wh=N7(tG)(Ip);var ZW=la(Wt),QW=ER(Wt),KW=Rv(Ih),xW=Ja(xa),dh=function(e){return function(a){return Vt(e)(Sb(function(u){return kv(\"Expected \"+a(void 0))}))}},Ea=function(e){return function(a){return Vt(e)(kv(\"Expected \"+a))}};var ru=function(e){return function(a,u,l,v,t){return e(a,u,l,function(i,o){return v(new Ut(i.value0,i.value1,a.value2),o)},t)}},ND=function(e){var a=function(u){return Vt(YW(e)(new ku(void 0)))(kt(new Vu(void 0)))};return iG(e)(Gh(a)(void 0))},Gp=function(e){return Vt(ND(e))(kt(void 0))};var oG=function(e){return function(a){return Ac(e)(function(u){return Ac(wh(iG(a)(e)))(function(l){return kt(C_(u)(l))})})}},mh=function(e){return function(a){return Vt(Lb(E_)(oG(e)(a)))(kt(h.value))}};var PD=function(e){return function(a){return Vt(a)(kt(e))}};var hh=function(e){return ru(Vt(iG(ru(e))(kv(\"Negated parser succeeded\")))(kt(void 0)))};var gh=function(e){return ZW(Lb(C_)(e))(wh(e))},Ab=wh,cG=function(e){return function(a,u,l,v,t){return e(a,u,l,function(i,o){return v(a,o)},function(i,o){return t(a,o)})}};var X_=function(e){var a=function(v){return function(t){if(t instanceof I)return new R(v);if(t instanceof R)return new R(Vt(v)(t.value0));throw new Error(\"Failed pattern match at Parsing.Combinators (line 358, column 11 - line 360, column 32): \"+[t.constructor.name])}},u=zo(KW),l=Cu(e)(a)(I.value);return function(v){return u(l(v))}},Nb=function(e){return function(a){var u=function(v){return function(t){return t.value1(t.value0)(v)}},l=function(v){return Vt(Ac(a)(function(t){return Ac(e)(function(i){return kt(new ku({last:i,init:new w(new k(v.last,t),v.init)}))})}))(Sb(function(t){return kt(new Vu(xW(u)(v.last)(v.init)))}))};return Ac(e)(function(v){return Gh(l)({last:v,init:h.value})})}};var Y_=function(e){return function(a){var u=function(l){return Vt(Ac(a)(function(v){return Ac(e)(function(t){return kt(new ku(v(l)(t)))})}))(kt(new Vu(l)))};return Ac(e)(function(l){return Gh(u)(l)})}};var Z_=function(e){return function(a){return function(u){return QW(iG(e)(u))(a)}}},yh=aa(Ea);var eB=function(e,a){if(e<1)return[];var u=new Array(e);return u.fill(a)},aB=function(e,a){for(var u=[],l=0,v=0;v<e;v++)u[l++]=a;return u},uB=typeof Array.prototype.fill==\"function\"?eB:aB,lB=function(){function e(v,t){this.head=v,this.tail=t}var a={};function u(v){return function(t){return new e(v,t)}}function l(v){for(var t=[],i=0,o=v;o!==a;)t[i++]=o.head,o=o.tail;return t}return function(v,t){return l(v(u)(a)(t))}}(),Q_=function(e){return e.length},Pb=function(e,a,u){return u.length===0?e({}):a(u[0])(u.slice(1))};var qb=function(e,a,u,l){for(var v=0,t=l.length;v<t;v++)if(u(l[v]))return e(v);return a};var $b=function(){function e(a,u,l,v,t,i){var o,_,s,b,P,A,K;for(o=t+(i-t>>1),o-t>1&&e(a,u,v,l,t,o),i-o>1&&e(a,u,v,l,o,i),_=t,s=o,b=t;_<o&&s<i;)P=v[_],A=v[s],K=u(a(P)(A)),K>0?(l[b++]=A,++s):(l[b++]=P,++_);for(;_<o;)l[b++]=v[_++];for(;s<i;)l[b++]=v[s++]}return function(a,u,l){var v;return l.length<2?l:(v=l.slice(0),e(a,u,v,l.slice(0),0,l.length),v)}}();var Ob=function(e,a,u){for(var l=a.length<u.length?a.length:u.length,v=new Array(l),t=0;t<l;t++)v[t]=e(a[t])(u[t]);return v};var Ub=function(e,a){return e[a]};var nB=function(){function e(a,u,l,v,t,i){var o,_,s,b,P,A,K;for(o=t+(i-t>>1),o-t>1&&e(a,u,v,l,t,o),i-o>1&&e(a,u,v,l,o,i),_=t,s=o,b=t;_<o&&s<i;)P=v[_],A=v[s],K=u(a(P)(A)),K>0?(l[b++]=A,++s):(l[b++]=P,++_);for(;_<o;)l[b++]=v[_++];for(;s<i;)l[b++]=v[s++]}return function(a,u,l){return l.length<2||e(a,u,l,l.slice(0),0,l.length),l}}();var wp=function(e){return function(a,u,l,v,t){return e(a)(u)(l)(v)(t)}};var K_=function(e){return function(a){return function(u){return e(a,u)}}},x_=function(e){return function(a){return function(u){return function(l){return e(a,u,l)}}}},Fh=function(e){return function(a){return function(u){return function(l){return function(v){return e(a,u,l,v)}}}}};var dB=re(Lv);var Bb=x_(Ob);var _G=function(){return Bb(k.create)}();var bh=function(){return K_(Ub)};var Eh=function(){return x_(Pb)(Oa(I.value))(function(e){return function(a){return new R({head:e,tail:a})}})}();var zb=function(e){return x_($b)(e)(function(a){if(a instanceof Te)return 1;if(a instanceof xe)return 0;if(a instanceof Ne)return-1;throw new Error(\"Failed pattern match at Data.Array (line 897, column 38 - line 900, column 11): \"+[a.constructor.name])})};var Ch=function(e){var a=je(e);return function(u){return zb(a)(u)}};var kb=function(){return Fh(qb)(R.create)(I.value)}();var $D=function(e){var a=m(e);return function(u){return kb(function(l){return a(l)(u)})}},Th=function(e){var a=$D(e);return function(u){return function(l){return oi(a(u)(l))}}},Mh=function(e){var a=$D(e);return function(u){return function(l){return Bo(a(u)(l))}}};var Vb=function(e){return function(a){return dB([e])(a)}},fG=function(e){var a=la(e.Applicative0().Apply0()),u=L(e.Plus1().Alt0().Functor0());return function(l){var v=Yr(l);return function(t){return a(u(Vb)(t))(v(function(i){return Sh(e)(l)(t)}))}}},Sh=function(e){var a=Za(e.Plus1().Alt0()),u=B(e.Applicative0());return function(l){return function(v){return a(fG(e)(l)(v))(u([]))}}};var mB=function(){function e(i){this.fn=i}var a={},u=function(i,o){this.head=i,this.tail=o};function l(i){return new u(i,a)}function v(i){return function(o){return new u(i,o)}}function t(i){for(var o=[],_=i;_!==a;)o.push(_.head),_=_.tail;return o}return function(i,o,_){var s=function(P,A){return i(o(v)(_(P)))(A)},b=function(P,A,K){if(A===0)return P;var Ve=K[A-1];return new e(function(){var Ga=b(s(Ve,P),A-1,K);return Ga})};return function(P){for(var A=o(l)(_(P[P.length-1])),K=b(A,P.length-1,P);K instanceof e;)K=K.fn();return o(t)(K)}}}();var EB=typeof Array.from==\"function\",CB=typeof Symbol<\"u\"&&Symbol!=null&&typeof Symbol.iterator<\"u\"&&typeof String.prototype[Symbol.iterator]==\"function\",TB=typeof String.prototype.fromCodePoint==\"function\",MB=typeof String.prototype.codePointAt==\"function\",Jb=function(e){return MB?function(a){return a.codePointAt(0)}:e},jb=function(e){return function(a){return function(u){return function(l){return function(v){return function(t){var i=t.length;if(v<0||v>=i)return u;if(CB)for(var o=t[Symbol.iterator](),_=v;;--_){var s=o.next();if(s.done)return u;if(_===0)return a(l(s.value))}return e(v)(t)}}}}}};var Hb=function(e){return TB?function(a){return a.length<1e4?String.fromCodePoint.apply(String,a):a.map(e).join(\"\")}:function(a){return a.map(e).join(\"\")}};var Xb=function(e){return function(a){return EB?function(u){return Array.from(u,a)}:e}};var Go=function(e){return e.toLowerCase()};var wo=function(e){return e===\"\"};var NB=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}},hp=Ia(Ho),PB=L(Ua),qB=g0(Wf),$B=lv(Gn),OB=qv(Gn),UB=je(_a),WB=function(e){return e},Qb=function(e){return function(a){return(((e-55296|0)*1024|0)+(a-56320|0)|0)+65536|0}};var Kb=function(e){return 56320<=e&&e<=57343},xb=function(e){return 55296<=e&&e<=56319},gp=function(e){var a=Sc(e);if(a===0)return I.value;if(a===1)return new R({head:hp(Io(0)(e)),tail:\"\"});var u=hp(Io(1)(e)),l=hp(Io(0)(e)),v=xb(l)&&Kb(u);return v?new R({head:Qb(l)(u),tail:Lc(2)(e)}):new R({head:l,tail:Lc(1)(e)})},BB=function(e){return PB(function(a){return new k(a.head,a.tail)})(gp(e))},zB=function(e){return qB(BB)(e)},kB=function(e){var a=hp(Io(0)(e)),u=xb(a)&&Sc(e)>1;if(u){var l=hp(Io(1)(e)),v=Kb(l);return v?Qb(a)(l):a}return a},Ah=Jb(kB),eE=Xb(zB)(Ah);var Lh=function(){var e=G4(Ho)(zl(r_))(Mv(r_));return function(a){return Mc(e(a))}}(),VB=function(e){if(e<=65535)return Lh(e);var a=$B(e-65536|0)(1024)+55296|0,u=OB(e-65536|0)(1024)+56320|0;return Lh(a)+Lh(u)},aE=Hb(VB);var Nh={eq:function(e){return function(a){return e===a}}},Ph={compare:function(e){return function(a){return UB(e)(a)}},Eq0:function(){return Nh}};var qc=function(e){return WB(hp(e))},JB=function(e){return function(a){var u=e,l=!1,v;function t(i,o){var _=gp(o);if(_ instanceof R){var s=i===0;if(s)return l=!0,new R(_.value0.head);u=i-1|0,a=_.value0.tail;return}return l=!0,I.value}for(;!l;)v=t(u,a);return v}},uE=function(e){return function(a){return e<0?I.value:e===0&&a===\"\"?I.value:e===0?new R(Ah(a)):jb(JB)(R.create)(I.value)(Ah)(e)(a)}},jB={bottom:0,top:1114111,Ord0:function(){return Ph}},Pc=function(){return{cardinality:1114111+1|0,fromEnum:function(e){return e},toEnum:function(e){if(e>=0&&e<=1114111)return new R(e);if(pe)return I.value;throw new Error(\"Failed pattern match at Data.String.CodePoints (line 63, column 1 - line 68, column 26): \"+[e.constructor.name])},Bounded0:function(){return jB},Enum1:function(){return HB(0)}}}(),HB=NB(\"enumCodePoint\",\"Data.String.CodePoints\",function(){return{succ:bd(Ta(Pc))(Ia(Pc)),pred:Ed(Ta(Pc))(Ia(Pc)),Ord0:function(){return Ph}}});var qh=Ia(Pc),QB=qv(Gn),KB=uv(),xB=Ta(Ho);var ez=X(Av),az=X(AR);var pG=function(e){return function(a){return function(u){var l=qh(a);if(l===10)return{index:e.index+1|0,line:e.line+1|0,column:1};if(l===13){var v=uE(0)(u);return v instanceof R&&qh(v.value0)===10?{index:e.index+1|0,line:e.line,column:e.column}:{index:e.index+1|0,line:e.line+1|0,column:1}}return l===9?{index:e.index+1|0,line:e.line,column:(e.column+8|0)-QB(e.column-1|0)(8)|0}:{index:e.index+1|0,line:e.line,column:e.column+1|0}}}},uz=function(e){return function(a){return function(u){var l=e,v=a,t=!1,i;function o(_,s,b){var P=gp(s);if(P instanceof I)return t=!0,_;if(P instanceof R){var A=function(){if(wo(P.value0.tail))return pG(_)(P.value0.head)(b);if(pe)return pG(_)(P.value0.head)(P.value0.tail);throw new Error(\"Failed pattern match at Parsing.String (line 165, column 7 - line 167, column 52): \"+[])}();l=A,v=P.value0.tail,u=b;return}throw new Error(\"Failed pattern match at Parsing.String (line 161, column 36 - line 168, column 38): \"+[P.constructor.name])}for(;!t;)i=o(l,v,u);return i}}},$h=function(e){return wp(function(a){return function(u){return function(l){return function(v){return function(t){var i=gp(a.value0);if(i instanceof I)return v(a,new nu(\"Unexpected EOF\",a.value1));if(i instanceof R){var o=e(i.value0.head);return o?t(new Ut(i.value0.tail,pG(a.value1)(i.value0.head)(i.value0.tail),!0),i.value0.head):v(a,new nu(\"Predicate unsatisfied\",a.value1))}throw new Error(\"Failed pattern match at Parsing.String (line 136, column 7 - line 143, column 73): \"+[i.constructor.name])}}}}})},mo=function(e){return wp(function(a){return function(u){return function(l){return function(v){return function(t){var i=gp(a.value0);if(i instanceof I)return v(a,new nu(\"Unexpected EOF\",a.value1));if(i instanceof R){var o=qh(i.value0.head),_=o<0||o>65535;if(_)return v(a,new nu(\"Expected Char\",a.value1));var s=KB(xB(o)),b=e(s);return b?t(new Ut(i.value0.tail,pG(a.value1)(i.value0.head)(i.value0.tail),!0),s):v(a,new nu(\"Predicate unsatisfied\",a.value1))}throw new Error(\"Failed pattern match at Parsing.String (line 114, column 7 - line 129, column 75): \"+[i.constructor.name])}}}}})};var Oh=wp(function(e){return function(a){return function(u){return function(l){return function(v){var t=wo(e.value0);return t?v(new Ut(e.value0,e.value1,!0),void 0):l(e,new nu(\"Expected EOF\",e.value1))}}}}}),vE=function(e){return wp(function(a){return function(u){return function(l){return function(v){return function(t){var i=e(a.value0);if(i instanceof S)return v(a,new nu(i.value0,a.value1));if(i instanceof te)return t(new Ut(i.value0.remainder,uz(a.value1)(i.value0.consumed)(i.value0.remainder),!wo(i.value0.consumed)),i.value0.value);throw new Error(\"Failed pattern match at Parsing.String (line 286, column 7 - line 290, column 121): \"+[i.constructor.name])}}}}})};var Jt=function(e){return vE(function(a){var u=_h(e)(a);return u instanceof R?new te({value:e,consumed:e,remainder:u.value0}):new S(\"Expected \"+ez(e))})};var Yu=function(e){return Ea(mo(function(a){return a===e}))(az(e))};var Ar=Ia(Ho),Uh=Ta(Ho);var lz=bh(),tE=$D(ii);var ie=function(){function e(){}return e.value=new e,e}(),Z=function(){function e(){}return e.value=new e,e}(),qG=function(){function e(){}return e.value=new e,e}(),iE=function(){function e(){}return e.value=new e,e}(),oE=function(){function e(){}return e.value=new e,e}(),zh=function(){function e(){}return e.value=new e,e}(),cE=function(){function e(){}return e.value=new e,e}(),_E=function(){function e(){}return e.value=new e,e}(),fE=function(){function e(){}return e.value=new e,e}(),$G=function(){function e(){}return e.value=new e,e}(),pE=function(){function e(){}return e.value=new e,e}(),sE=function(){function e(){}return e.value=new e,e}(),DE=function(){function e(){}return e.value=new e,e}(),RE=function(){function e(){}return e.value=new e,e}(),IE=function(){function e(){}return e.value=new e,e}(),GE=function(){function e(){}return e.value=new e,e}(),wE=function(){function e(){}return e.value=new e,e}(),dE=function(){function e(){}return e.value=new e,e}(),mE=function(){function e(){}return e.value=new e,e}(),hE=function(){function e(){}return e.value=new e,e}(),gE=function(){function e(){}return e.value=new e,e}(),OG=function(){function e(){}return e.value=new e,e}(),yE=function(){function e(){}return e.value=new e,e}(),FE=function(){function e(){}return e.value=new e,e}(),bE=function(){function e(){}return e.value=new e,e}(),EE=function(){function e(){}return e.value=new e,e}(),CE=function(){function e(){}return e.value=new e,e}(),TE=function(){function e(){}return e.value=new e,e}(),ME=function(){function e(){}return e.value=new e,e}(),SE=function(){function e(){}return e.value=new e,e}();var vz=7;var nz=63,rz=1332,tz=3396;var LE=2,Vv=function(){return{category:LE,unicodeCat:yE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),iz=[{start:32,length:1,convRule:Vv},{start:160,length:1,convRule:Vv},{start:5760,length:1,convRule:Vv},{start:8192,length:11,convRule:Vv},{start:8239,length:1,convRule:Vv},{start:8287,length:1,convRule:Vv},{start:12288,length:1,convRule:Vv}],oz=67108864,cz=function(){return{category:oz,unicodeCat:bE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),_z=33554432,fz=function(){return{category:_z,unicodeCat:FE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),kh=8192,E=function(){return{category:kh,unicodeCat:OG.value,possible:0,updist:0,lowdist:0,titledist:0}}(),AE=function(){return{category:kh,unicodeCat:OG.value,possible:1,updist:0,lowdist:26,titledist:0}}(),NE=function(){return{category:kh,unicodeCat:OG.value,possible:1,updist:-26,lowdist:0,titledist:-26}}(),pz=64,Fe=function(){return{category:pz,unicodeCat:mE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),sz=1024,tu=function(){return{category:sz,unicodeCat:gE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),Dz=8,tl=function(){return{category:Dz,unicodeCat:hE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),Rz=16,_e=function(){return{category:Rz,unicodeCat:RE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),Iz=4,C=function(){return{category:Iz,unicodeCat:dE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),Gz=32768,Nr=function(){return{category:Gz,unicodeCat:GE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),wz=262144,jt=function(){return{category:wz,unicodeCat:wE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),dz=32,se=function(){return{category:dz,unicodeCat:IE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),mz=128,Ll=function(){return{category:mz,unicodeCat:DE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),hz=2048,yp=function(){return{category:hz,unicodeCat:sE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),PE=131072,Re=function(){return{category:PE,unicodeCat:pE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),UG=16777216,ln=function(){return{category:UG,unicodeCat:$G.value,possible:0,updist:0,lowdist:0,titledist:0}}(),qE=function(){return{category:UG,unicodeCat:$G.value,possible:1,updist:0,lowdist:16,titledist:0}}(),$E=function(){return{category:UG,unicodeCat:$G.value,possible:1,updist:-16,lowdist:0,titledist:-16}}(),OE=256,Se=function(){return{category:OE,unicodeCat:fE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),Vh=2097152,p=function(){return{category:Vh,unicodeCat:zh.value,possible:0,updist:0,lowdist:0,titledist:0}}(),UE=function(){return{category:Vh,unicodeCat:zh.value,possible:1,updist:84,lowdist:0,titledist:84}}(),WE=4194304,UD=function(){return{category:WE,unicodeCat:_E.value,possible:0,updist:0,lowdist:0,titledist:0}}(),BE=8388608,T=function(){return{category:BE,unicodeCat:cE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),le=512,gz=function(){return{category:le,unicodeCat:SE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),DG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:8,titledist:0}}(),ia=function(){return{category:le,unicodeCat:ie.value,possible:0,updist:0,lowdist:0,titledist:0}}(),zE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-60,titledist:0}}(),RG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-7,titledist:0}}(),kE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:80,titledist:0}}(),VE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:15,titledist:0}}(),IG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:48,titledist:0}}(),Fp=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:7264,titledist:0}}(),JE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:38864,titledist:0}}(),GG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-3008,titledist:0}}(),jE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-7615,titledist:0}}(),Tu=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-8,titledist:0}}(),HE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-74,titledist:0}}(),XE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-86,titledist:0}}(),YE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-100,titledist:0}}(),ZE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-112,titledist:0}}(),QE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-128,titledist:0}}(),KE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-126,titledist:0}}(),xE=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-7517,titledist:0}}(),e6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-8383,titledist:0}}(),a6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-8262,titledist:0}}(),u6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:28,titledist:0}}(),l6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-10743,titledist:0}}(),v6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-3814,titledist:0}}(),n6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-10727,titledist:0}}(),r6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-10780,titledist:0}}(),t6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-10749,titledist:0}}(),i6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-10783,titledist:0}}(),o6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-10782,titledist:0}}(),c6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-10815,titledist:0}}(),_6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-35332,titledist:0}}(),f6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-42280,titledist:0}}(),wG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-42308,titledist:0}}(),p6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-42319,titledist:0}}(),s6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-42315,titledist:0}}(),D6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-42305,titledist:0}}(),R6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-42258,titledist:0}}(),I6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-42282,titledist:0}}(),G6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-42261,titledist:0}}(),w6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:928,titledist:0}}(),d6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-48,titledist:0}}(),m6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-42307,titledist:0}}(),h6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-35384,titledist:0}}(),dG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:40,titledist:0}}(),g6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:34,titledist:0}}(),n=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:1,titledist:0}}(),y6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-199,titledist:0}}(),F6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-121,titledist:0}}(),b6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:210,titledist:0}}(),E6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:206,titledist:0}}(),mG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:205,titledist:0}}(),C6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:79,titledist:0}}(),T6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:202,titledist:0}}(),M6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:203,titledist:0}}(),S6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:207,titledist:0}}(),hG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:211,titledist:0}}(),L6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:209,titledist:0}}(),A6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:213,titledist:0}}(),N6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:214,titledist:0}}(),bp=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:218,titledist:0}}(),P6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:217,titledist:0}}(),q6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:219,titledist:0}}(),$c=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:2,titledist:1}}(),$6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-97,titledist:0}}(),O6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-56,titledist:0}}(),gG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-130,titledist:0}}(),U6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:10795,titledist:0}}(),W6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-163,titledist:0}}(),B6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:10792,titledist:0}}(),z6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:-195,titledist:0}}(),k6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:69,titledist:0}}(),V6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:71,titledist:0}}(),Al=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:32,titledist:0}}(),J6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:116,titledist:0}}(),j6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:38,titledist:0}}(),H6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:37,titledist:0}}(),yG=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:64,titledist:0}}(),X6=function(){return{category:le,unicodeCat:ie.value,possible:1,updist:0,lowdist:63,titledist:0}}(),Lp=524288,Ep=function(){return{category:Lp,unicodeCat:qG.value,possible:1,updist:0,lowdist:-8,titledist:0}}(),Cp=function(){return{category:Lp,unicodeCat:qG.value,possible:1,updist:0,lowdist:-9,titledist:0}}(),Oc=function(){return{category:Lp,unicodeCat:qG.value,possible:1,updist:-1,lowdist:1,titledist:0}}(),Jh=16384,c=function(){return{category:Jh,unicodeCat:oE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),jh=1048576,Le=function(){return{category:jh,unicodeCat:iE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),H=4096,Y6=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-37,lowdist:0,titledist:-37}}(),Z6=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-31,lowdist:0,titledist:-31}}(),FG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-64,lowdist:0,titledist:-64}}(),Q6=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-63,lowdist:0,titledist:-63}}(),K6=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-62,lowdist:0,titledist:-62}}(),x6=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-57,lowdist:0,titledist:-57}}(),eC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-47,lowdist:0,titledist:-47}}(),aC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-54,lowdist:0,titledist:-54}}(),bG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-8,lowdist:0,titledist:-8}}(),uC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-86,lowdist:0,titledist:-86}}(),EG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-80,lowdist:0,titledist:-80}}(),CG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:7,lowdist:0,titledist:7}}(),lC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-116,lowdist:0,titledist:-116}}(),vC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-96,lowdist:0,titledist:-96}}(),Nl=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-32,lowdist:0,titledist:-32}}(),nC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-15,lowdist:0,titledist:-15}}(),TG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-48,lowdist:0,titledist:-48}}(),MG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:3008,lowdist:0,titledist:0}}(),rC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-6254,lowdist:0,titledist:-6254}}(),tC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-6253,lowdist:0,titledist:-6253}}(),iC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-6244,lowdist:0,titledist:-6244}}(),oC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-6242,lowdist:0,titledist:-6242}}(),cC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-6243,lowdist:0,titledist:-6243}}(),_C=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-6236,lowdist:0,titledist:-6236}}(),fC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-6181,lowdist:0,titledist:-6181}}(),pC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:35266,lowdist:0,titledist:35266}}(),sC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:35332,lowdist:0,titledist:35332}}(),DC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:3814,lowdist:0,titledist:3814}}(),RC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:35384,lowdist:0,titledist:35384}}(),IC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-59,lowdist:0,titledist:-59}}(),Ka=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:8,lowdist:0,titledist:8}}(),GC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:74,lowdist:0,titledist:74}}(),wC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:86,lowdist:0,titledist:86}}(),dC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:100,lowdist:0,titledist:100}}(),mC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:128,lowdist:0,titledist:128}}(),hC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:112,lowdist:0,titledist:112}}(),gC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:126,lowdist:0,titledist:126}}(),Tp=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:9,lowdist:0,titledist:9}}(),yC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-7205,lowdist:0,titledist:-7205}}(),FC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-28,lowdist:0,titledist:-28}}(),bC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-10795,lowdist:0,titledist:-10795}}(),EC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-10792,lowdist:0,titledist:-10792}}(),CC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:743,lowdist:0,titledist:743}}(),Mp=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-7264,lowdist:0,titledist:-7264}}(),TC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:48,lowdist:0,titledist:48}}(),MC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-928,lowdist:0,titledist:-928}}(),SC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-38864,lowdist:0,titledist:-38864}}(),z=function(){return{category:H,unicodeCat:Z.value,possible:0,updist:0,lowdist:0,titledist:0}}(),SG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-40,lowdist:0,titledist:-40}}(),LC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-34,lowdist:0,titledist:-34}}(),AC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:121,lowdist:0,titledist:121}}(),r=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-1,lowdist:0,titledist:-1}}(),NC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-232,lowdist:0,titledist:-232}}(),PC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-300,lowdist:0,titledist:-300}}(),qC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:195,lowdist:0,titledist:195}}(),$C=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:97,lowdist:0,titledist:97}}(),OC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:163,lowdist:0,titledist:163}}(),LG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:130,lowdist:0,titledist:130}}(),UC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:56,lowdist:0,titledist:56}}(),Uc=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-2,lowdist:0,titledist:-1}}(),WC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-79,lowdist:0,titledist:-79}}(),BC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:10815,lowdist:0,titledist:10815}}(),zC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:10783,lowdist:0,titledist:10783}}(),kC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:10780,lowdist:0,titledist:10780}}(),VC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:10782,lowdist:0,titledist:10782}}(),JC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-210,lowdist:0,titledist:-210}}(),jC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-206,lowdist:0,titledist:-206}}(),AG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-205,lowdist:0,titledist:-205}}(),HC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-202,lowdist:0,titledist:-202}}(),XC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-203,lowdist:0,titledist:-203}}(),YC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:42319,lowdist:0,titledist:42319}}(),ZC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:42315,lowdist:0,titledist:42315}}(),QC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-207,lowdist:0,titledist:-207}}(),KC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:42280,lowdist:0,titledist:42280}}(),NG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:42308,lowdist:0,titledist:42308}}(),xC=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-209,lowdist:0,titledist:-209}}(),PG=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-211,lowdist:0,titledist:-211}}(),e9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:10743,lowdist:0,titledist:10743}}(),a9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:42305,lowdist:0,titledist:42305}}(),u9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:10749,lowdist:0,titledist:10749}}(),l9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-213,lowdist:0,titledist:-213}}(),v9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-214,lowdist:0,titledist:-214}}(),n9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:10727,lowdist:0,titledist:10727}}(),Sp=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-218,lowdist:0,titledist:-218}}(),r9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:42307,lowdist:0,titledist:42307}}(),t9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:42282,lowdist:0,titledist:42282}}(),i9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-69,lowdist:0,titledist:-69}}(),o9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-217,lowdist:0,titledist:-217}}(),c9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-71,lowdist:0,titledist:-71}}(),_9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-219,lowdist:0,titledist:-219}}(),f9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:42261,lowdist:0,titledist:42261}}(),p9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:42258,lowdist:0,titledist:42258}}(),s9=function(){return{category:H,unicodeCat:Z.value,possible:1,updist:-38,lowdist:0,titledist:-38}}(),yz=134217728,Wh=function(){return{category:yz,unicodeCat:TE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),Fz=268435456,Bh=function(){return{category:Fz,unicodeCat:ME.value,possible:0,updist:0,lowdist:0,titledist:0}}(),bz=65536,pl=function(){return{category:bz,unicodeCat:CE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),Ez=1,rE=function(){return{category:Ez,unicodeCat:EE.value,possible:0,updist:0,lowdist:0,titledist:0}}(),Cz=[{start:65,length:26,convRule:Al},{start:97,length:26,convRule:Nl},{start:181,length:1,convRule:CC},{start:192,length:23,convRule:Al},{start:216,length:7,convRule:Al},{start:224,length:23,convRule:Nl},{start:248,length:7,convRule:Nl},{start:255,length:1,convRule:AC},{start:256,length:1,convRule:n},{start:257,length:1,convRule:r},{start:258,length:1,convRule:n},{start:259,length:1,convRule:r},{start:260,length:1,convRule:n},{start:261,length:1,convRule:r},{start:262,length:1,convRule:n},{start:263,length:1,convRule:r},{start:264,length:1,convRule:n},{start:265,length:1,convRule:r},{start:266,length:1,convRule:n},{start:267,length:1,convRule:r},{start:268,length:1,convRule:n},{start:269,length:1,convRule:r},{start:270,length:1,convRule:n},{start:271,length:1,convRule:r},{start:272,length:1,convRule:n},{start:273,length:1,convRule:r},{start:274,length:1,convRule:n},{start:275,length:1,convRule:r},{start:276,length:1,convRule:n},{start:277,length:1,convRule:r},{start:278,length:1,convRule:n},{start:279,length:1,convRule:r},{start:280,length:1,convRule:n},{start:281,length:1,convRule:r},{start:282,length:1,convRule:n},{start:283,length:1,convRule:r},{start:284,length:1,convRule:n},{start:285,length:1,convRule:r},{start:286,length:1,convRule:n},{start:287,length:1,convRule:r},{start:288,length:1,convRule:n},{start:289,length:1,convRule:r},{start:290,length:1,convRule:n},{start:291,length:1,convRule:r},{start:292,length:1,convRule:n},{start:293,length:1,convRule:r},{start:294,length:1,convRule:n},{start:295,length:1,convRule:r},{start:296,length:1,convRule:n},{start:297,length:1,convRule:r},{start:298,length:1,convRule:n},{start:299,length:1,convRule:r},{start:300,length:1,convRule:n},{start:301,length:1,convRule:r},{start:302,length:1,convRule:n},{start:303,length:1,convRule:r},{start:304,length:1,convRule:y6},{start:305,length:1,convRule:NC},{start:306,length:1,convRule:n},{start:307,length:1,convRule:r},{start:308,length:1,convRule:n},{start:309,length:1,convRule:r},{start:310,length:1,convRule:n},{start:311,length:1,convRule:r},{start:313,length:1,convRule:n},{start:314,length:1,convRule:r},{start:315,length:1,convRule:n},{start:316,length:1,convRule:r},{start:317,length:1,convRule:n},{start:318,length:1,convRule:r},{start:319,length:1,convRule:n},{start:320,length:1,convRule:r},{start:321,length:1,convRule:n},{start:322,length:1,convRule:r},{start:323,length:1,convRule:n},{start:324,length:1,convRule:r},{start:325,length:1,convRule:n},{start:326,length:1,convRule:r},{start:327,length:1,convRule:n},{start:328,length:1,convRule:r},{start:330,length:1,convRule:n},{start:331,length:1,convRule:r},{start:332,length:1,convRule:n},{start:333,length:1,convRule:r},{start:334,length:1,convRule:n},{start:335,length:1,convRule:r},{start:336,length:1,convRule:n},{start:337,length:1,convRule:r},{start:338,length:1,convRule:n},{start:339,length:1,convRule:r},{start:340,length:1,convRule:n},{start:341,length:1,convRule:r},{start:342,length:1,convRule:n},{start:343,length:1,convRule:r},{start:344,length:1,convRule:n},{start:345,length:1,convRule:r},{start:346,length:1,convRule:n},{start:347,length:1,convRule:r},{start:348,length:1,convRule:n},{start:349,length:1,convRule:r},{start:350,length:1,convRule:n},{start:351,length:1,convRule:r},{start:352,length:1,convRule:n},{start:353,length:1,convRule:r},{start:354,length:1,convRule:n},{start:355,length:1,convRule:r},{start:356,length:1,convRule:n},{start:357,length:1,convRule:r},{start:358,length:1,convRule:n},{start:359,length:1,convRule:r},{start:360,length:1,convRule:n},{start:361,length:1,convRule:r},{start:362,length:1,convRule:n},{start:363,length:1,convRule:r},{start:364,length:1,convRule:n},{start:365,length:1,convRule:r},{start:366,length:1,convRule:n},{start:367,length:1,convRule:r},{start:368,length:1,convRule:n},{start:369,length:1,convRule:r},{start:370,length:1,convRule:n},{start:371,length:1,convRule:r},{start:372,length:1,convRule:n},{start:373,length:1,convRule:r},{start:374,length:1,convRule:n},{start:375,length:1,convRule:r},{start:376,length:1,convRule:F6},{start:377,length:1,convRule:n},{start:378,length:1,convRule:r},{start:379,length:1,convRule:n},{start:380,length:1,convRule:r},{start:381,length:1,convRule:n},{start:382,length:1,convRule:r},{start:383,length:1,convRule:PC},{start:384,length:1,convRule:qC},{start:385,length:1,convRule:b6},{start:386,length:1,convRule:n},{start:387,length:1,convRule:r},{start:388,length:1,convRule:n},{start:389,length:1,convRule:r},{start:390,length:1,convRule:E6},{start:391,length:1,convRule:n},{start:392,length:1,convRule:r},{start:393,length:2,convRule:mG},{start:395,length:1,convRule:n},{start:396,length:1,convRule:r},{start:398,length:1,convRule:C6},{start:399,length:1,convRule:T6},{start:400,length:1,convRule:M6},{start:401,length:1,convRule:n},{start:402,length:1,convRule:r},{start:403,length:1,convRule:mG},{start:404,length:1,convRule:S6},{start:405,length:1,convRule:$C},{start:406,length:1,convRule:hG},{start:407,length:1,convRule:L6},{start:408,length:1,convRule:n},{start:409,length:1,convRule:r},{start:410,length:1,convRule:OC},{start:412,length:1,convRule:hG},{start:413,length:1,convRule:A6},{start:414,length:1,convRule:LG},{start:415,length:1,convRule:N6},{start:416,length:1,convRule:n},{start:417,length:1,convRule:r},{start:418,length:1,convRule:n},{start:419,length:1,convRule:r},{start:420,length:1,convRule:n},{start:421,length:1,convRule:r},{start:422,length:1,convRule:bp},{start:423,length:1,convRule:n},{start:424,length:1,convRule:r},{start:425,length:1,convRule:bp},{start:428,length:1,convRule:n},{start:429,length:1,convRule:r},{start:430,length:1,convRule:bp},{start:431,length:1,convRule:n},{start:432,length:1,convRule:r},{start:433,length:2,convRule:P6},{start:435,length:1,convRule:n},{start:436,length:1,convRule:r},{start:437,length:1,convRule:n},{start:438,length:1,convRule:r},{start:439,length:1,convRule:q6},{start:440,length:1,convRule:n},{start:441,length:1,convRule:r},{start:444,length:1,convRule:n},{start:445,length:1,convRule:r},{start:447,length:1,convRule:UC},{start:452,length:1,convRule:$c},{start:453,length:1,convRule:Oc},{start:454,length:1,convRule:Uc},{start:455,length:1,convRule:$c},{start:456,length:1,convRule:Oc},{start:457,length:1,convRule:Uc},{start:458,length:1,convRule:$c},{start:459,length:1,convRule:Oc},{start:460,length:1,convRule:Uc},{start:461,length:1,convRule:n},{start:462,length:1,convRule:r},{start:463,length:1,convRule:n},{start:464,length:1,convRule:r},{start:465,length:1,convRule:n},{start:466,length:1,convRule:r},{start:467,length:1,convRule:n},{start:468,length:1,convRule:r},{start:469,length:1,convRule:n},{start:470,length:1,convRule:r},{start:471,length:1,convRule:n},{start:472,length:1,convRule:r},{start:473,length:1,convRule:n},{start:474,length:1,convRule:r},{start:475,length:1,convRule:n},{start:476,length:1,convRule:r},{start:477,length:1,convRule:WC},{start:478,length:1,convRule:n},{start:479,length:1,convRule:r},{start:480,length:1,convRule:n},{start:481,length:1,convRule:r},{start:482,length:1,convRule:n},{start:483,length:1,convRule:r},{start:484,length:1,convRule:n},{start:485,length:1,convRule:r},{start:486,length:1,convRule:n},{start:487,length:1,convRule:r},{start:488,length:1,convRule:n},{start:489,length:1,convRule:r},{start:490,length:1,convRule:n},{start:491,length:1,convRule:r},{start:492,length:1,convRule:n},{start:493,length:1,convRule:r},{start:494,length:1,convRule:n},{start:495,length:1,convRule:r},{start:497,length:1,convRule:$c},{start:498,length:1,convRule:Oc},{start:499,length:1,convRule:Uc},{start:500,length:1,convRule:n},{start:501,length:1,convRule:r},{start:502,length:1,convRule:$6},{start:503,length:1,convRule:O6},{start:504,length:1,convRule:n},{start:505,length:1,convRule:r},{start:506,length:1,convRule:n},{start:507,length:1,convRule:r},{start:508,length:1,convRule:n},{start:509,length:1,convRule:r},{start:510,length:1,convRule:n},{start:511,length:1,convRule:r},{start:512,length:1,convRule:n},{start:513,length:1,convRule:r},{start:514,length:1,convRule:n},{start:515,length:1,convRule:r},{start:516,length:1,convRule:n},{start:517,length:1,convRule:r},{start:518,length:1,convRule:n},{start:519,length:1,convRule:r},{start:520,length:1,convRule:n},{start:521,length:1,convRule:r},{start:522,length:1,convRule:n},{start:523,length:1,convRule:r},{start:524,length:1,convRule:n},{start:525,length:1,convRule:r},{start:526,length:1,convRule:n},{start:527,length:1,convRule:r},{start:528,length:1,convRule:n},{start:529,length:1,convRule:r},{start:530,length:1,convRule:n},{start:531,length:1,convRule:r},{start:532,length:1,convRule:n},{start:533,length:1,convRule:r},{start:534,length:1,convRule:n},{start:535,length:1,convRule:r},{start:536,length:1,convRule:n},{start:537,length:1,convRule:r},{start:538,length:1,convRule:n},{start:539,length:1,convRule:r},{start:540,length:1,convRule:n},{start:541,length:1,convRule:r},{start:542,length:1,convRule:n},{start:543,length:1,convRule:r},{start:544,length:1,convRule:gG},{start:546,length:1,convRule:n},{start:547,length:1,convRule:r},{start:548,length:1,convRule:n},{start:549,length:1,convRule:r},{start:550,length:1,convRule:n},{start:551,length:1,convRule:r},{start:552,length:1,convRule:n},{start:553,length:1,convRule:r},{start:554,length:1,convRule:n},{start:555,length:1,convRule:r},{start:556,length:1,convRule:n},{start:557,length:1,convRule:r},{start:558,length:1,convRule:n},{start:559,length:1,convRule:r},{start:560,length:1,convRule:n},{start:561,length:1,convRule:r},{start:562,length:1,convRule:n},{start:563,length:1,convRule:r},{start:570,length:1,convRule:U6},{start:571,length:1,convRule:n},{start:572,length:1,convRule:r},{start:573,length:1,convRule:W6},{start:574,length:1,convRule:B6},{start:575,length:2,convRule:BC},{start:577,length:1,convRule:n},{start:578,length:1,convRule:r},{start:579,length:1,convRule:z6},{start:580,length:1,convRule:k6},{start:581,length:1,convRule:V6},{start:582,length:1,convRule:n},{start:583,length:1,convRule:r},{start:584,length:1,convRule:n},{start:585,length:1,convRule:r},{start:586,length:1,convRule:n},{start:587,length:1,convRule:r},{start:588,length:1,convRule:n},{start:589,length:1,convRule:r},{start:590,length:1,convRule:n},{start:591,length:1,convRule:r},{start:592,length:1,convRule:zC},{start:593,length:1,convRule:kC},{start:594,length:1,convRule:VC},{start:595,length:1,convRule:JC},{start:596,length:1,convRule:jC},{start:598,length:2,convRule:AG},{start:601,length:1,convRule:HC},{start:603,length:1,convRule:XC},{start:604,length:1,convRule:YC},{start:608,length:1,convRule:AG},{start:609,length:1,convRule:ZC},{start:611,length:1,convRule:QC},{start:613,length:1,convRule:KC},{start:614,length:1,convRule:NG},{start:616,length:1,convRule:xC},{start:617,length:1,convRule:PG},{start:618,length:1,convRule:NG},{start:619,length:1,convRule:e9},{start:620,length:1,convRule:a9},{start:623,length:1,convRule:PG},{start:625,length:1,convRule:u9},{start:626,length:1,convRule:l9},{start:629,length:1,convRule:v9},{start:637,length:1,convRule:n9},{start:640,length:1,convRule:Sp},{start:642,length:1,convRule:r9},{start:643,length:1,convRule:Sp},{start:647,length:1,convRule:t9},{start:648,length:1,convRule:Sp},{start:649,length:1,convRule:i9},{start:650,length:2,convRule:o9},{start:652,length:1,convRule:c9},{start:658,length:1,convRule:_9},{start:669,length:1,convRule:f9},{start:670,length:1,convRule:p9},{start:837,length:1,convRule:UE},{start:880,length:1,convRule:n},{start:881,length:1,convRule:r},{start:882,length:1,convRule:n},{start:883,length:1,convRule:r},{start:886,length:1,convRule:n},{start:887,length:1,convRule:r},{start:891,length:3,convRule:LG},{start:895,length:1,convRule:J6},{start:902,length:1,convRule:j6},{start:904,length:3,convRule:H6},{start:908,length:1,convRule:yG},{start:910,length:2,convRule:X6},{start:913,length:17,convRule:Al},{start:931,length:9,convRule:Al},{start:940,length:1,convRule:s9},{start:941,length:3,convRule:Y6},{start:945,length:17,convRule:Nl},{start:962,length:1,convRule:Z6},{start:963,length:9,convRule:Nl},{start:972,length:1,convRule:FG},{start:973,length:2,convRule:Q6},{start:975,length:1,convRule:DG},{start:976,length:1,convRule:K6},{start:977,length:1,convRule:x6},{start:981,length:1,convRule:eC},{start:982,length:1,convRule:aC},{start:983,length:1,convRule:bG},{start:984,length:1,convRule:n},{start:985,length:1,convRule:r},{start:986,length:1,convRule:n},{start:987,length:1,convRule:r},{start:988,length:1,convRule:n},{start:989,length:1,convRule:r},{start:990,length:1,convRule:n},{start:991,length:1,convRule:r},{start:992,length:1,convRule:n},{start:993,length:1,convRule:r},{start:994,length:1,convRule:n},{start:995,length:1,convRule:r},{start:996,length:1,convRule:n},{start:997,length:1,convRule:r},{start:998,length:1,convRule:n},{start:999,length:1,convRule:r},{start:1e3,length:1,convRule:n},{start:1001,length:1,convRule:r},{start:1002,length:1,convRule:n},{start:1003,length:1,convRule:r},{start:1004,length:1,convRule:n},{start:1005,length:1,convRule:r},{start:1006,length:1,convRule:n},{start:1007,length:1,convRule:r},{start:1008,length:1,convRule:uC},{start:1009,length:1,convRule:EG},{start:1010,length:1,convRule:CG},{start:1011,length:1,convRule:lC},{start:1012,length:1,convRule:zE},{start:1013,length:1,convRule:vC},{start:1015,length:1,convRule:n},{start:1016,length:1,convRule:r},{start:1017,length:1,convRule:RG},{start:1018,length:1,convRule:n},{start:1019,length:1,convRule:r},{start:1021,length:3,convRule:gG},{start:1024,length:16,convRule:kE},{start:1040,length:32,convRule:Al},{start:1072,length:32,convRule:Nl},{start:1104,length:16,convRule:EG},{start:1120,length:1,convRule:n},{start:1121,length:1,convRule:r},{start:1122,length:1,convRule:n},{start:1123,length:1,convRule:r},{start:1124,length:1,convRule:n},{start:1125,length:1,convRule:r},{start:1126,length:1,convRule:n},{start:1127,length:1,convRule:r},{start:1128,length:1,convRule:n},{start:1129,length:1,convRule:r},{start:1130,length:1,convRule:n},{start:1131,length:1,convRule:r},{start:1132,length:1,convRule:n},{start:1133,length:1,convRule:r},{start:1134,length:1,convRule:n},{start:1135,length:1,convRule:r},{start:1136,length:1,convRule:n},{start:1137,length:1,convRule:r},{start:1138,length:1,convRule:n},{start:1139,length:1,convRule:r},{start:1140,length:1,convRule:n},{start:1141,length:1,convRule:r},{start:1142,length:1,convRule:n},{start:1143,length:1,convRule:r},{start:1144,length:1,convRule:n},{start:1145,length:1,convRule:r},{start:1146,length:1,convRule:n},{start:1147,length:1,convRule:r},{start:1148,length:1,convRule:n},{start:1149,length:1,convRule:r},{start:1150,length:1,convRule:n},{start:1151,length:1,convRule:r},{start:1152,length:1,convRule:n},{start:1153,length:1,convRule:r},{start:1162,length:1,convRule:n},{start:1163,length:1,convRule:r},{start:1164,length:1,convRule:n},{start:1165,length:1,convRule:r},{start:1166,length:1,convRule:n},{start:1167,length:1,convRule:r},{start:1168,length:1,convRule:n},{start:1169,length:1,convRule:r},{start:1170,length:1,convRule:n},{start:1171,length:1,convRule:r},{start:1172,length:1,convRule:n},{start:1173,length:1,convRule:r},{start:1174,length:1,convRule:n},{start:1175,length:1,convRule:r},{start:1176,length:1,convRule:n},{start:1177,length:1,convRule:r},{start:1178,length:1,convRule:n},{start:1179,length:1,convRule:r},{start:1180,length:1,convRule:n},{start:1181,length:1,convRule:r},{start:1182,length:1,convRule:n},{start:1183,length:1,convRule:r},{start:1184,length:1,convRule:n},{start:1185,length:1,convRule:r},{start:1186,length:1,convRule:n},{start:1187,length:1,convRule:r},{start:1188,length:1,convRule:n},{start:1189,length:1,convRule:r},{start:1190,length:1,convRule:n},{start:1191,length:1,convRule:r},{start:1192,length:1,convRule:n},{start:1193,length:1,convRule:r},{start:1194,length:1,convRule:n},{start:1195,length:1,convRule:r},{start:1196,length:1,convRule:n},{start:1197,length:1,convRule:r},{start:1198,length:1,convRule:n},{start:1199,length:1,convRule:r},{start:1200,length:1,convRule:n},{start:1201,length:1,convRule:r},{start:1202,length:1,convRule:n},{start:1203,length:1,convRule:r},{start:1204,length:1,convRule:n},{start:1205,length:1,convRule:r},{start:1206,length:1,convRule:n},{start:1207,length:1,convRule:r},{start:1208,length:1,convRule:n},{start:1209,length:1,convRule:r},{start:1210,length:1,convRule:n},{start:1211,length:1,convRule:r},{start:1212,length:1,convRule:n},{start:1213,length:1,convRule:r},{start:1214,length:1,convRule:n},{start:1215,length:1,convRule:r},{start:1216,length:1,convRule:VE},{start:1217,length:1,convRule:n},{start:1218,length:1,convRule:r},{start:1219,length:1,convRule:n},{start:1220,length:1,convRule:r},{start:1221,length:1,convRule:n},{start:1222,length:1,convRule:r},{start:1223,length:1,convRule:n},{start:1224,length:1,convRule:r},{start:1225,length:1,convRule:n},{start:1226,length:1,convRule:r},{start:1227,length:1,convRule:n},{start:1228,length:1,convRule:r},{start:1229,length:1,convRule:n},{start:1230,length:1,convRule:r},{start:1231,length:1,convRule:nC},{start:1232,length:1,convRule:n},{start:1233,length:1,convRule:r},{start:1234,length:1,convRule:n},{start:1235,length:1,convRule:r},{start:1236,length:1,convRule:n},{start:1237,length:1,convRule:r},{start:1238,length:1,convRule:n},{start:1239,length:1,convRule:r},{start:1240,length:1,convRule:n},{start:1241,length:1,convRule:r},{start:1242,length:1,convRule:n},{start:1243,length:1,convRule:r},{start:1244,length:1,convRule:n},{start:1245,length:1,convRule:r},{start:1246,length:1,convRule:n},{start:1247,length:1,convRule:r},{start:1248,length:1,convRule:n},{start:1249,length:1,convRule:r},{start:1250,length:1,convRule:n},{start:1251,length:1,convRule:r},{start:1252,length:1,convRule:n},{start:1253,length:1,convRule:r},{start:1254,length:1,convRule:n},{start:1255,length:1,convRule:r},{start:1256,length:1,convRule:n},{start:1257,length:1,convRule:r},{start:1258,length:1,convRule:n},{start:1259,length:1,convRule:r},{start:1260,length:1,convRule:n},{start:1261,length:1,convRule:r},{start:1262,length:1,convRule:n},{start:1263,length:1,convRule:r},{start:1264,length:1,convRule:n},{start:1265,length:1,convRule:r},{start:1266,length:1,convRule:n},{start:1267,length:1,convRule:r},{start:1268,length:1,convRule:n},{start:1269,length:1,convRule:r},{start:1270,length:1,convRule:n},{start:1271,length:1,convRule:r},{start:1272,length:1,convRule:n},{start:1273,length:1,convRule:r},{start:1274,length:1,convRule:n},{start:1275,length:1,convRule:r},{start:1276,length:1,convRule:n},{start:1277,length:1,convRule:r},{start:1278,length:1,convRule:n},{start:1279,length:1,convRule:r},{start:1280,length:1,convRule:n},{start:1281,length:1,convRule:r},{start:1282,length:1,convRule:n},{start:1283,length:1,convRule:r},{start:1284,length:1,convRule:n},{start:1285,length:1,convRule:r},{start:1286,length:1,convRule:n},{start:1287,length:1,convRule:r},{start:1288,length:1,convRule:n},{start:1289,length:1,convRule:r},{start:1290,length:1,convRule:n},{start:1291,length:1,convRule:r},{start:1292,length:1,convRule:n},{start:1293,length:1,convRule:r},{start:1294,length:1,convRule:n},{start:1295,length:1,convRule:r},{start:1296,length:1,convRule:n},{start:1297,length:1,convRule:r},{start:1298,length:1,convRule:n},{start:1299,length:1,convRule:r},{start:1300,length:1,convRule:n},{start:1301,length:1,convRule:r},{start:1302,length:1,convRule:n},{start:1303,length:1,convRule:r},{start:1304,length:1,convRule:n},{start:1305,length:1,convRule:r},{start:1306,length:1,convRule:n},{start:1307,length:1,convRule:r},{start:1308,length:1,convRule:n},{start:1309,length:1,convRule:r},{start:1310,length:1,convRule:n},{start:1311,length:1,convRule:r},{start:1312,length:1,convRule:n},{start:1313,length:1,convRule:r},{start:1314,length:1,convRule:n},{start:1315,length:1,convRule:r},{start:1316,length:1,convRule:n},{start:1317,length:1,convRule:r},{start:1318,length:1,convRule:n},{start:1319,length:1,convRule:r},{start:1320,length:1,convRule:n},{start:1321,length:1,convRule:r},{start:1322,length:1,convRule:n},{start:1323,length:1,convRule:r},{start:1324,length:1,convRule:n},{start:1325,length:1,convRule:r},{start:1326,length:1,convRule:n},{start:1327,length:1,convRule:r},{start:1329,length:38,convRule:IG},{start:1377,length:38,convRule:TG},{start:4256,length:38,convRule:Fp},{start:4295,length:1,convRule:Fp},{start:4301,length:1,convRule:Fp},{start:4304,length:43,convRule:MG},{start:4349,length:3,convRule:MG},{start:5024,length:80,convRule:JE},{start:5104,length:6,convRule:DG},{start:5112,length:6,convRule:bG},{start:7296,length:1,convRule:rC},{start:7297,length:1,convRule:tC},{start:7298,length:1,convRule:iC},{start:7299,length:2,convRule:oC},{start:7301,length:1,convRule:cC},{start:7302,length:1,convRule:_C},{start:7303,length:1,convRule:fC},{start:7304,length:1,convRule:pC},{start:7312,length:43,convRule:GG},{start:7357,length:3,convRule:GG},{start:7545,length:1,convRule:sC},{start:7549,length:1,convRule:DC},{start:7566,length:1,convRule:RC},{start:7680,length:1,convRule:n},{start:7681,length:1,convRule:r},{start:7682,length:1,convRule:n},{start:7683,length:1,convRule:r},{start:7684,length:1,convRule:n},{start:7685,length:1,convRule:r},{start:7686,length:1,convRule:n},{start:7687,length:1,convRule:r},{start:7688,length:1,convRule:n},{start:7689,length:1,convRule:r},{start:7690,length:1,convRule:n},{start:7691,length:1,convRule:r},{start:7692,length:1,convRule:n},{start:7693,length:1,convRule:r},{start:7694,length:1,convRule:n},{start:7695,length:1,convRule:r},{start:7696,length:1,convRule:n},{start:7697,length:1,convRule:r},{start:7698,length:1,convRule:n},{start:7699,length:1,convRule:r},{start:7700,length:1,convRule:n},{start:7701,length:1,convRule:r},{start:7702,length:1,convRule:n},{start:7703,length:1,convRule:r},{start:7704,length:1,convRule:n},{start:7705,length:1,convRule:r},{start:7706,length:1,convRule:n},{start:7707,length:1,convRule:r},{start:7708,length:1,convRule:n},{start:7709,length:1,convRule:r},{start:7710,length:1,convRule:n},{start:7711,length:1,convRule:r},{start:7712,length:1,convRule:n},{start:7713,length:1,convRule:r},{start:7714,length:1,convRule:n},{start:7715,length:1,convRule:r},{start:7716,length:1,convRule:n},{start:7717,length:1,convRule:r},{start:7718,length:1,convRule:n},{start:7719,length:1,convRule:r},{start:7720,length:1,convRule:n},{start:7721,length:1,convRule:r},{start:7722,length:1,convRule:n},{start:7723,length:1,convRule:r},{start:7724,length:1,convRule:n},{start:7725,length:1,convRule:r},{start:7726,length:1,convRule:n},{start:7727,length:1,convRule:r},{start:7728,length:1,convRule:n},{start:7729,length:1,convRule:r},{start:7730,length:1,convRule:n},{start:7731,length:1,convRule:r},{start:7732,length:1,convRule:n},{start:7733,length:1,convRule:r},{start:7734,length:1,convRule:n},{start:7735,length:1,convRule:r},{start:7736,length:1,convRule:n},{start:7737,length:1,convRule:r},{start:7738,length:1,convRule:n},{start:7739,length:1,convRule:r},{start:7740,length:1,convRule:n},{start:7741,length:1,convRule:r},{start:7742,length:1,convRule:n},{start:7743,length:1,convRule:r},{start:7744,length:1,convRule:n},{start:7745,length:1,convRule:r},{start:7746,length:1,convRule:n},{start:7747,length:1,convRule:r},{start:7748,length:1,convRule:n},{start:7749,length:1,convRule:r},{start:7750,length:1,convRule:n},{start:7751,length:1,convRule:r},{start:7752,length:1,convRule:n},{start:7753,length:1,convRule:r},{start:7754,length:1,convRule:n},{start:7755,length:1,convRule:r},{start:7756,length:1,convRule:n},{start:7757,length:1,convRule:r},{start:7758,length:1,convRule:n},{start:7759,length:1,convRule:r},{start:7760,length:1,convRule:n},{start:7761,length:1,convRule:r},{start:7762,length:1,convRule:n},{start:7763,length:1,convRule:r},{start:7764,length:1,convRule:n},{start:7765,length:1,convRule:r},{start:7766,length:1,convRule:n},{start:7767,length:1,convRule:r},{start:7768,length:1,convRule:n},{start:7769,length:1,convRule:r},{start:7770,length:1,convRule:n},{start:7771,length:1,convRule:r},{start:7772,length:1,convRule:n},{start:7773,length:1,convRule:r},{start:7774,length:1,convRule:n},{start:7775,length:1,convRule:r},{start:7776,length:1,convRule:n},{start:7777,length:1,convRule:r},{start:7778,length:1,convRule:n},{start:7779,length:1,convRule:r},{start:7780,length:1,convRule:n},{start:7781,length:1,convRule:r},{start:7782,length:1,convRule:n},{start:7783,length:1,convRule:r},{start:7784,length:1,convRule:n},{start:7785,length:1,convRule:r},{start:7786,length:1,convRule:n},{start:7787,length:1,convRule:r},{start:7788,length:1,convRule:n},{start:7789,length:1,convRule:r},{start:7790,length:1,convRule:n},{start:7791,length:1,convRule:r},{start:7792,length:1,convRule:n},{start:7793,length:1,convRule:r},{start:7794,length:1,convRule:n},{start:7795,length:1,convRule:r},{start:7796,length:1,convRule:n},{start:7797,length:1,convRule:r},{start:7798,length:1,convRule:n},{start:7799,length:1,convRule:r},{start:7800,length:1,convRule:n},{start:7801,length:1,convRule:r},{start:7802,length:1,convRule:n},{start:7803,length:1,convRule:r},{start:7804,length:1,convRule:n},{start:7805,length:1,convRule:r},{start:7806,length:1,convRule:n},{start:7807,length:1,convRule:r},{start:7808,length:1,convRule:n},{start:7809,length:1,convRule:r},{start:7810,length:1,convRule:n},{start:7811,length:1,convRule:r},{start:7812,length:1,convRule:n},{start:7813,length:1,convRule:r},{start:7814,length:1,convRule:n},{start:7815,length:1,convRule:r},{start:7816,length:1,convRule:n},{start:7817,length:1,convRule:r},{start:7818,length:1,convRule:n},{start:7819,length:1,convRule:r},{start:7820,length:1,convRule:n},{start:7821,length:1,convRule:r},{start:7822,length:1,convRule:n},{start:7823,length:1,convRule:r},{start:7824,length:1,convRule:n},{start:7825,length:1,convRule:r},{start:7826,length:1,convRule:n},{start:7827,length:1,convRule:r},{start:7828,length:1,convRule:n},{start:7829,length:1,convRule:r},{start:7835,length:1,convRule:IC},{start:7838,length:1,convRule:jE},{start:7840,length:1,convRule:n},{start:7841,length:1,convRule:r},{start:7842,length:1,convRule:n},{start:7843,length:1,convRule:r},{start:7844,length:1,convRule:n},{start:7845,length:1,convRule:r},{start:7846,length:1,convRule:n},{start:7847,length:1,convRule:r},{start:7848,length:1,convRule:n},{start:7849,length:1,convRule:r},{start:7850,length:1,convRule:n},{start:7851,length:1,convRule:r},{start:7852,length:1,convRule:n},{start:7853,length:1,convRule:r},{start:7854,length:1,convRule:n},{start:7855,length:1,convRule:r},{start:7856,length:1,convRule:n},{start:7857,length:1,convRule:r},{start:7858,length:1,convRule:n},{start:7859,length:1,convRule:r},{start:7860,length:1,convRule:n},{start:7861,length:1,convRule:r},{start:7862,length:1,convRule:n},{start:7863,length:1,convRule:r},{start:7864,length:1,convRule:n},{start:7865,length:1,convRule:r},{start:7866,length:1,convRule:n},{start:7867,length:1,convRule:r},{start:7868,length:1,convRule:n},{start:7869,length:1,convRule:r},{start:7870,length:1,convRule:n},{start:7871,length:1,convRule:r},{start:7872,length:1,convRule:n},{start:7873,length:1,convRule:r},{start:7874,length:1,convRule:n},{start:7875,length:1,convRule:r},{start:7876,length:1,convRule:n},{start:7877,length:1,convRule:r},{start:7878,length:1,convRule:n},{start:7879,length:1,convRule:r},{start:7880,length:1,convRule:n},{start:7881,length:1,convRule:r},{start:7882,length:1,convRule:n},{start:7883,length:1,convRule:r},{start:7884,length:1,convRule:n},{start:7885,length:1,convRule:r},{start:7886,length:1,convRule:n},{start:7887,length:1,convRule:r},{start:7888,length:1,convRule:n},{start:7889,length:1,convRule:r},{start:7890,length:1,convRule:n},{start:7891,length:1,convRule:r},{start:7892,length:1,convRule:n},{start:7893,length:1,convRule:r},{start:7894,length:1,convRule:n},{start:7895,length:1,convRule:r},{start:7896,length:1,convRule:n},{start:7897,length:1,convRule:r},{start:7898,length:1,convRule:n},{start:7899,length:1,convRule:r},{start:7900,length:1,convRule:n},{start:7901,length:1,convRule:r},{start:7902,length:1,convRule:n},{start:7903,length:1,convRule:r},{start:7904,length:1,convRule:n},{start:7905,length:1,convRule:r},{start:7906,length:1,convRule:n},{start:7907,length:1,convRule:r},{start:7908,length:1,convRule:n},{start:7909,length:1,convRule:r},{start:7910,length:1,convRule:n},{start:7911,length:1,convRule:r},{start:7912,length:1,convRule:n},{start:7913,length:1,convRule:r},{start:7914,length:1,convRule:n},{start:7915,length:1,convRule:r},{start:7916,length:1,convRule:n},{start:7917,length:1,convRule:r},{start:7918,length:1,convRule:n},{start:7919,length:1,convRule:r},{start:7920,length:1,convRule:n},{start:7921,length:1,convRule:r},{start:7922,length:1,convRule:n},{start:7923,length:1,convRule:r},{start:7924,length:1,convRule:n},{start:7925,length:1,convRule:r},{start:7926,length:1,convRule:n},{start:7927,length:1,convRule:r},{start:7928,length:1,convRule:n},{start:7929,length:1,convRule:r},{start:7930,length:1,convRule:n},{start:7931,length:1,convRule:r},{start:7932,length:1,convRule:n},{start:7933,length:1,convRule:r},{start:7934,length:1,convRule:n},{start:7935,length:1,convRule:r},{start:7936,length:8,convRule:Ka},{start:7944,length:8,convRule:Tu},{start:7952,length:6,convRule:Ka},{start:7960,length:6,convRule:Tu},{start:7968,length:8,convRule:Ka},{start:7976,length:8,convRule:Tu},{start:7984,length:8,convRule:Ka},{start:7992,length:8,convRule:Tu},{start:8e3,length:6,convRule:Ka},{start:8008,length:6,convRule:Tu},{start:8017,length:1,convRule:Ka},{start:8019,length:1,convRule:Ka},{start:8021,length:1,convRule:Ka},{start:8023,length:1,convRule:Ka},{start:8025,length:1,convRule:Tu},{start:8027,length:1,convRule:Tu},{start:8029,length:1,convRule:Tu},{start:8031,length:1,convRule:Tu},{start:8032,length:8,convRule:Ka},{start:8040,length:8,convRule:Tu},{start:8048,length:2,convRule:GC},{start:8050,length:4,convRule:wC},{start:8054,length:2,convRule:dC},{start:8056,length:2,convRule:mC},{start:8058,length:2,convRule:hC},{start:8060,length:2,convRule:gC},{start:8064,length:8,convRule:Ka},{start:8072,length:8,convRule:Ep},{start:8080,length:8,convRule:Ka},{start:8088,length:8,convRule:Ep},{start:8096,length:8,convRule:Ka},{start:8104,length:8,convRule:Ep},{start:8112,length:2,convRule:Ka},{start:8115,length:1,convRule:Tp},{start:8120,length:2,convRule:Tu},{start:8122,length:2,convRule:HE},{start:8124,length:1,convRule:Cp},{start:8126,length:1,convRule:yC},{start:8131,length:1,convRule:Tp},{start:8136,length:4,convRule:XE},{start:8140,length:1,convRule:Cp},{start:8144,length:2,convRule:Ka},{start:8152,length:2,convRule:Tu},{start:8154,length:2,convRule:YE},{start:8160,length:2,convRule:Ka},{start:8165,length:1,convRule:CG},{start:8168,length:2,convRule:Tu},{start:8170,length:2,convRule:ZE},{start:8172,length:1,convRule:RG},{start:8179,length:1,convRule:Tp},{start:8184,length:2,convRule:QE},{start:8186,length:2,convRule:KE},{start:8188,length:1,convRule:Cp},{start:8486,length:1,convRule:xE},{start:8490,length:1,convRule:e6},{start:8491,length:1,convRule:a6},{start:8498,length:1,convRule:u6},{start:8526,length:1,convRule:FC},{start:8544,length:16,convRule:qE},{start:8560,length:16,convRule:$E},{start:8579,length:1,convRule:n},{start:8580,length:1,convRule:r},{start:9398,length:26,convRule:AE},{start:9424,length:26,convRule:NE},{start:11264,length:47,convRule:IG},{start:11312,length:47,convRule:TG},{start:11360,length:1,convRule:n},{start:11361,length:1,convRule:r},{start:11362,length:1,convRule:l6},{start:11363,length:1,convRule:v6},{start:11364,length:1,convRule:n6},{start:11365,length:1,convRule:bC},{start:11366,length:1,convRule:EC},{start:11367,length:1,convRule:n},{start:11368,length:1,convRule:r},{start:11369,length:1,convRule:n},{start:11370,length:1,convRule:r},{start:11371,length:1,convRule:n},{start:11372,length:1,convRule:r},{start:11373,length:1,convRule:r6},{start:11374,length:1,convRule:t6},{start:11375,length:1,convRule:i6},{start:11376,length:1,convRule:o6},{start:11378,length:1,convRule:n},{start:11379,length:1,convRule:r},{start:11381,length:1,convRule:n},{start:11382,length:1,convRule:r},{start:11390,length:2,convRule:c6},{start:11392,length:1,convRule:n},{start:11393,length:1,convRule:r},{start:11394,length:1,convRule:n},{start:11395,length:1,convRule:r},{start:11396,length:1,convRule:n},{start:11397,length:1,convRule:r},{start:11398,length:1,convRule:n},{start:11399,length:1,convRule:r},{start:11400,length:1,convRule:n},{start:11401,length:1,convRule:r},{start:11402,length:1,convRule:n},{start:11403,length:1,convRule:r},{start:11404,length:1,convRule:n},{start:11405,length:1,convRule:r},{start:11406,length:1,convRule:n},{start:11407,length:1,convRule:r},{start:11408,length:1,convRule:n},{start:11409,length:1,convRule:r},{start:11410,length:1,convRule:n},{start:11411,length:1,convRule:r},{start:11412,length:1,convRule:n},{start:11413,length:1,convRule:r},{start:11414,length:1,convRule:n},{start:11415,length:1,convRule:r},{start:11416,length:1,convRule:n},{start:11417,length:1,convRule:r},{start:11418,length:1,convRule:n},{start:11419,length:1,convRule:r},{start:11420,length:1,convRule:n},{start:11421,length:1,convRule:r},{start:11422,length:1,convRule:n},{start:11423,length:1,convRule:r},{start:11424,length:1,convRule:n},{start:11425,length:1,convRule:r},{start:11426,length:1,convRule:n},{start:11427,length:1,convRule:r},{start:11428,length:1,convRule:n},{start:11429,length:1,convRule:r},{start:11430,length:1,convRule:n},{start:11431,length:1,convRule:r},{start:11432,length:1,convRule:n},{start:11433,length:1,convRule:r},{start:11434,length:1,convRule:n},{start:11435,length:1,convRule:r},{start:11436,length:1,convRule:n},{start:11437,length:1,convRule:r},{start:11438,length:1,convRule:n},{start:11439,length:1,convRule:r},{start:11440,length:1,convRule:n},{start:11441,length:1,convRule:r},{start:11442,length:1,convRule:n},{start:11443,length:1,convRule:r},{start:11444,length:1,convRule:n},{start:11445,length:1,convRule:r},{start:11446,length:1,convRule:n},{start:11447,length:1,convRule:r},{start:11448,length:1,convRule:n},{start:11449,length:1,convRule:r},{start:11450,length:1,convRule:n},{start:11451,length:1,convRule:r},{start:11452,length:1,convRule:n},{start:11453,length:1,convRule:r},{start:11454,length:1,convRule:n},{start:11455,length:1,convRule:r},{start:11456,length:1,convRule:n},{start:11457,length:1,convRule:r},{start:11458,length:1,convRule:n},{start:11459,length:1,convRule:r},{start:11460,length:1,convRule:n},{start:11461,length:1,convRule:r},{start:11462,length:1,convRule:n},{start:11463,length:1,convRule:r},{start:11464,length:1,convRule:n},{start:11465,length:1,convRule:r},{start:11466,length:1,convRule:n},{start:11467,length:1,convRule:r},{start:11468,length:1,convRule:n},{start:11469,length:1,convRule:r},{start:11470,length:1,convRule:n},{start:11471,length:1,convRule:r},{start:11472,length:1,convRule:n},{start:11473,length:1,convRule:r},{start:11474,length:1,convRule:n},{start:11475,length:1,convRule:r},{start:11476,length:1,convRule:n},{start:11477,length:1,convRule:r},{start:11478,length:1,convRule:n},{start:11479,length:1,convRule:r},{start:11480,length:1,convRule:n},{start:11481,length:1,convRule:r},{start:11482,length:1,convRule:n},{start:11483,length:1,convRule:r},{start:11484,length:1,convRule:n},{start:11485,length:1,convRule:r},{start:11486,length:1,convRule:n},{start:11487,length:1,convRule:r},{start:11488,length:1,convRule:n},{start:11489,length:1,convRule:r},{start:11490,length:1,convRule:n},{start:11491,length:1,convRule:r},{start:11499,length:1,convRule:n},{start:11500,length:1,convRule:r},{start:11501,length:1,convRule:n},{start:11502,length:1,convRule:r},{start:11506,length:1,convRule:n},{start:11507,length:1,convRule:r},{start:11520,length:38,convRule:Mp},{start:11559,length:1,convRule:Mp},{start:11565,length:1,convRule:Mp},{start:42560,length:1,convRule:n},{start:42561,length:1,convRule:r},{start:42562,length:1,convRule:n},{start:42563,length:1,convRule:r},{start:42564,length:1,convRule:n},{start:42565,length:1,convRule:r},{start:42566,length:1,convRule:n},{start:42567,length:1,convRule:r},{start:42568,length:1,convRule:n},{start:42569,length:1,convRule:r},{start:42570,length:1,convRule:n},{start:42571,length:1,convRule:r},{start:42572,length:1,convRule:n},{start:42573,length:1,convRule:r},{start:42574,length:1,convRule:n},{start:42575,length:1,convRule:r},{start:42576,length:1,convRule:n},{start:42577,length:1,convRule:r},{start:42578,length:1,convRule:n},{start:42579,length:1,convRule:r},{start:42580,length:1,convRule:n},{start:42581,length:1,convRule:r},{start:42582,length:1,convRule:n},{start:42583,length:1,convRule:r},{start:42584,length:1,convRule:n},{start:42585,length:1,convRule:r},{start:42586,length:1,convRule:n},{start:42587,length:1,convRule:r},{start:42588,length:1,convRule:n},{start:42589,length:1,convRule:r},{start:42590,length:1,convRule:n},{start:42591,length:1,convRule:r},{start:42592,length:1,convRule:n},{start:42593,length:1,convRule:r},{start:42594,length:1,convRule:n},{start:42595,length:1,convRule:r},{start:42596,length:1,convRule:n},{start:42597,length:1,convRule:r},{start:42598,length:1,convRule:n},{start:42599,length:1,convRule:r},{start:42600,length:1,convRule:n},{start:42601,length:1,convRule:r},{start:42602,length:1,convRule:n},{start:42603,length:1,convRule:r},{start:42604,length:1,convRule:n},{start:42605,length:1,convRule:r},{start:42624,length:1,convRule:n},{start:42625,length:1,convRule:r},{start:42626,length:1,convRule:n},{start:42627,length:1,convRule:r},{start:42628,length:1,convRule:n},{start:42629,length:1,convRule:r},{start:42630,length:1,convRule:n},{start:42631,length:1,convRule:r},{start:42632,length:1,convRule:n},{start:42633,length:1,convRule:r},{start:42634,length:1,convRule:n},{start:42635,length:1,convRule:r},{start:42636,length:1,convRule:n},{start:42637,length:1,convRule:r},{start:42638,length:1,convRule:n},{start:42639,length:1,convRule:r},{start:42640,length:1,convRule:n},{start:42641,length:1,convRule:r},{start:42642,length:1,convRule:n},{start:42643,length:1,convRule:r},{start:42644,length:1,convRule:n},{start:42645,length:1,convRule:r},{start:42646,length:1,convRule:n},{start:42647,length:1,convRule:r},{start:42648,length:1,convRule:n},{start:42649,length:1,convRule:r},{start:42650,length:1,convRule:n},{start:42651,length:1,convRule:r},{start:42786,length:1,convRule:n},{start:42787,length:1,convRule:r},{start:42788,length:1,convRule:n},{start:42789,length:1,convRule:r},{start:42790,length:1,convRule:n},{start:42791,length:1,convRule:r},{start:42792,length:1,convRule:n},{start:42793,length:1,convRule:r},{start:42794,length:1,convRule:n},{start:42795,length:1,convRule:r},{start:42796,length:1,convRule:n},{start:42797,length:1,convRule:r},{start:42798,length:1,convRule:n},{start:42799,length:1,convRule:r},{start:42802,length:1,convRule:n},{start:42803,length:1,convRule:r},{start:42804,length:1,convRule:n},{start:42805,length:1,convRule:r},{start:42806,length:1,convRule:n},{start:42807,length:1,convRule:r},{start:42808,length:1,convRule:n},{start:42809,length:1,convRule:r},{start:42810,length:1,convRule:n},{start:42811,length:1,convRule:r},{start:42812,length:1,convRule:n},{start:42813,length:1,convRule:r},{start:42814,length:1,convRule:n},{start:42815,length:1,convRule:r},{start:42816,length:1,convRule:n},{start:42817,length:1,convRule:r},{start:42818,length:1,convRule:n},{start:42819,length:1,convRule:r},{start:42820,length:1,convRule:n},{start:42821,length:1,convRule:r},{start:42822,length:1,convRule:n},{start:42823,length:1,convRule:r},{start:42824,length:1,convRule:n},{start:42825,length:1,convRule:r},{start:42826,length:1,convRule:n},{start:42827,length:1,convRule:r},{start:42828,length:1,convRule:n},{start:42829,length:1,convRule:r},{start:42830,length:1,convRule:n},{start:42831,length:1,convRule:r},{start:42832,length:1,convRule:n},{start:42833,length:1,convRule:r},{start:42834,length:1,convRule:n},{start:42835,length:1,convRule:r},{start:42836,length:1,convRule:n},{start:42837,length:1,convRule:r},{start:42838,length:1,convRule:n},{start:42839,length:1,convRule:r},{start:42840,length:1,convRule:n},{start:42841,length:1,convRule:r},{start:42842,length:1,convRule:n},{start:42843,length:1,convRule:r},{start:42844,length:1,convRule:n},{start:42845,length:1,convRule:r},{start:42846,length:1,convRule:n},{start:42847,length:1,convRule:r},{start:42848,length:1,convRule:n},{start:42849,length:1,convRule:r},{start:42850,length:1,convRule:n},{start:42851,length:1,convRule:r},{start:42852,length:1,convRule:n},{start:42853,length:1,convRule:r},{start:42854,length:1,convRule:n},{start:42855,length:1,convRule:r},{start:42856,length:1,convRule:n},{start:42857,length:1,convRule:r},{start:42858,length:1,convRule:n},{start:42859,length:1,convRule:r},{start:42860,length:1,convRule:n},{start:42861,length:1,convRule:r},{start:42862,length:1,convRule:n},{start:42863,length:1,convRule:r},{start:42873,length:1,convRule:n},{start:42874,length:1,convRule:r},{start:42875,length:1,convRule:n},{start:42876,length:1,convRule:r},{start:42877,length:1,convRule:_6},{start:42878,length:1,convRule:n},{start:42879,length:1,convRule:r},{start:42880,length:1,convRule:n},{start:42881,length:1,convRule:r},{start:42882,length:1,convRule:n},{start:42883,length:1,convRule:r},{start:42884,length:1,convRule:n},{start:42885,length:1,convRule:r},{start:42886,length:1,convRule:n},{start:42887,length:1,convRule:r},{start:42891,length:1,convRule:n},{start:42892,length:1,convRule:r},{start:42893,length:1,convRule:f6},{start:42896,length:1,convRule:n},{start:42897,length:1,convRule:r},{start:42898,length:1,convRule:n},{start:42899,length:1,convRule:r},{start:42900,length:1,convRule:TC},{start:42902,length:1,convRule:n},{start:42903,length:1,convRule:r},{start:42904,length:1,convRule:n},{start:42905,length:1,convRule:r},{start:42906,length:1,convRule:n},{start:42907,length:1,convRule:r},{start:42908,length:1,convRule:n},{start:42909,length:1,convRule:r},{start:42910,length:1,convRule:n},{start:42911,length:1,convRule:r},{start:42912,length:1,convRule:n},{start:42913,length:1,convRule:r},{start:42914,length:1,convRule:n},{start:42915,length:1,convRule:r},{start:42916,length:1,convRule:n},{start:42917,length:1,convRule:r},{start:42918,length:1,convRule:n},{start:42919,length:1,convRule:r},{start:42920,length:1,convRule:n},{start:42921,length:1,convRule:r},{start:42922,length:1,convRule:wG},{start:42923,length:1,convRule:p6},{start:42924,length:1,convRule:s6},{start:42925,length:1,convRule:D6},{start:42926,length:1,convRule:wG},{start:42928,length:1,convRule:R6},{start:42929,length:1,convRule:I6},{start:42930,length:1,convRule:G6},{start:42931,length:1,convRule:w6},{start:42932,length:1,convRule:n},{start:42933,length:1,convRule:r},{start:42934,length:1,convRule:n},{start:42935,length:1,convRule:r},{start:42936,length:1,convRule:n},{start:42937,length:1,convRule:r},{start:42938,length:1,convRule:n},{start:42939,length:1,convRule:r},{start:42940,length:1,convRule:n},{start:42941,length:1,convRule:r},{start:42942,length:1,convRule:n},{start:42943,length:1,convRule:r},{start:42946,length:1,convRule:n},{start:42947,length:1,convRule:r},{start:42948,length:1,convRule:d6},{start:42949,length:1,convRule:m6},{start:42950,length:1,convRule:h6},{start:42951,length:1,convRule:n},{start:42952,length:1,convRule:r},{start:42953,length:1,convRule:n},{start:42954,length:1,convRule:r},{start:42997,length:1,convRule:n},{start:42998,length:1,convRule:r},{start:43859,length:1,convRule:MC},{start:43888,length:80,convRule:SC},{start:65313,length:26,convRule:Al},{start:65345,length:26,convRule:Nl},{start:66560,length:40,convRule:dG},{start:66600,length:40,convRule:SG},{start:66736,length:36,convRule:dG},{start:66776,length:36,convRule:SG},{start:68736,length:51,convRule:yG},{start:68800,length:51,convRule:FG},{start:71840,length:32,convRule:Al},{start:71872,length:32,convRule:Nl},{start:93760,length:32,convRule:Al},{start:93792,length:32,convRule:Nl},{start:125184,length:34,convRule:g6},{start:125218,length:34,convRule:LC}],D9=function(e){return function(a){return function(u){return function(l){var v=function(t){return function(i){var o=t,_=!1,s;function b(P,A){if(P>A||P>=Q_(a))return _=!0,I.value;if(pe){var K=s_(Da(P+A|0)/2),Ve=lz(a)(K),Ga=l(e)(Ve);if(Ga instanceof xe)return _=!0,new R(Ve);if(Ga instanceof Te){o=K+1|0,i=A;return}o=P,i=K-1|0;return}throw new Error(\"Failed pattern match at Data.CodePoint.Unicode.Internal (line 5622, column 3 - line 5632, column 30): \"+[P.constructor.name,A.constructor.name])}for(;!_;)s=b(o,i);return s}};return v(0)(u)}}}},Tz=function(e){return function(a){if(e.start>=a.start&&e.start<(a.start+a.length|0))return xe.value;if(e.start>a.start)return Te.value;if(pe)return Ne.value;throw new Error(\"Failed pattern match at Data.CodePoint.Unicode.Internal (line 5598, column 1 - line 5598, column 45): \"+[e.constructor.name,a.constructor.name])}},Hh=function(e){return function(a){return function(u){var l={start:a,length:1,convRule:gz},v=D9(l)(e)(u)(Tz);if(v instanceof I)return I.value;if(v instanceof R)return new R(v.value0.convRule);throw new Error(\"Failed pattern match at Data.CodePoint.Unicode.Internal (line 5612, column 5 - line 5614, column 60): \"+[v.constructor.name])}}},R9=function(e){return function(a){var u=Hh(Cz)(a)(rz);if(u instanceof I)return a;if(u instanceof R)return a+e(u.value0)|0;throw new Error(\"Failed pattern match at Data.CodePoint.Unicode.Internal (line 5727, column 5 - line 5729, column 53): \"+[u.constructor.name])}},Xh=R9(function(e){return e.lowdist});var Yh=R9(function(e){return e.updist}),Mz=function(e){return function(a){var u=Hh(iz)(a)(vz);if(u instanceof I)return!1;if(u instanceof R)return Bo(tE(u.value0.category)(e));throw new Error(\"Failed pattern match at Data.CodePoint.Unicode.Internal (line 5654, column 5 - line 5656, column 86): \"+[u.constructor.name])}},I9=Mz([LE]),Sz=[{start:0,length:32,convRule:rE},{start:32,length:1,convRule:Vv},{start:33,length:3,convRule:C},{start:36,length:1,convRule:tl},{start:37,length:3,convRule:C},{start:40,length:1,convRule:_e},{start:41,length:1,convRule:se},{start:42,length:1,convRule:C},{start:43,length:1,convRule:Fe},{start:44,length:1,convRule:C},{start:45,length:1,convRule:Ll},{start:46,length:2,convRule:C},{start:48,length:10,convRule:Se},{start:58,length:2,convRule:C},{start:60,length:3,convRule:Fe},{start:63,length:2,convRule:C},{start:65,length:26,convRule:Al},{start:91,length:1,convRule:_e},{start:92,length:1,convRule:C},{start:93,length:1,convRule:se},{start:94,length:1,convRule:tu},{start:95,length:1,convRule:yp},{start:96,length:1,convRule:tu},{start:97,length:26,convRule:Nl},{start:123,length:1,convRule:_e},{start:124,length:1,convRule:Fe},{start:125,length:1,convRule:se},{start:126,length:1,convRule:Fe},{start:127,length:33,convRule:rE},{start:160,length:1,convRule:Vv},{start:161,length:1,convRule:C},{start:162,length:4,convRule:tl},{start:166,length:1,convRule:E},{start:167,length:1,convRule:C},{start:168,length:1,convRule:tu},{start:169,length:1,convRule:E},{start:170,length:1,convRule:c},{start:171,length:1,convRule:Nr},{start:172,length:1,convRule:Fe},{start:173,length:1,convRule:pl},{start:174,length:1,convRule:E},{start:175,length:1,convRule:tu},{start:176,length:1,convRule:E},{start:177,length:1,convRule:Fe},{start:178,length:2,convRule:Re},{start:180,length:1,convRule:tu},{start:181,length:1,convRule:CC},{start:182,length:2,convRule:C},{start:184,length:1,convRule:tu},{start:185,length:1,convRule:Re},{start:186,length:1,convRule:c},{start:187,length:1,convRule:jt},{start:188,length:3,convRule:Re},{start:191,length:1,convRule:C},{start:192,length:23,convRule:Al},{start:215,length:1,convRule:Fe},{start:216,length:7,convRule:Al},{start:223,length:1,convRule:z},{start:224,length:23,convRule:Nl},{start:247,length:1,convRule:Fe},{start:248,length:7,convRule:Nl},{start:255,length:1,convRule:AC},{start:256,length:1,convRule:n},{start:257,length:1,convRule:r},{start:258,length:1,convRule:n},{start:259,length:1,convRule:r},{start:260,length:1,convRule:n},{start:261,length:1,convRule:r},{start:262,length:1,convRule:n},{start:263,length:1,convRule:r},{start:264,length:1,convRule:n},{start:265,length:1,convRule:r},{start:266,length:1,convRule:n},{start:267,length:1,convRule:r},{start:268,length:1,convRule:n},{start:269,length:1,convRule:r},{start:270,length:1,convRule:n},{start:271,length:1,convRule:r},{start:272,length:1,convRule:n},{start:273,length:1,convRule:r},{start:274,length:1,convRule:n},{start:275,length:1,convRule:r},{start:276,length:1,convRule:n},{start:277,length:1,convRule:r},{start:278,length:1,convRule:n},{start:279,length:1,convRule:r},{start:280,length:1,convRule:n},{start:281,length:1,convRule:r},{start:282,length:1,convRule:n},{start:283,length:1,convRule:r},{start:284,length:1,convRule:n},{start:285,length:1,convRule:r},{start:286,length:1,convRule:n},{start:287,length:1,convRule:r},{start:288,length:1,convRule:n},{start:289,length:1,convRule:r},{start:290,length:1,convRule:n},{start:291,length:1,convRule:r},{start:292,length:1,convRule:n},{start:293,length:1,convRule:r},{start:294,length:1,convRule:n},{start:295,length:1,convRule:r},{start:296,length:1,convRule:n},{start:297,length:1,convRule:r},{start:298,length:1,convRule:n},{start:299,length:1,convRule:r},{start:300,length:1,convRule:n},{start:301,length:1,convRule:r},{start:302,length:1,convRule:n},{start:303,length:1,convRule:r},{start:304,length:1,convRule:y6},{start:305,length:1,convRule:NC},{start:306,length:1,convRule:n},{start:307,length:1,convRule:r},{start:308,length:1,convRule:n},{start:309,length:1,convRule:r},{start:310,length:1,convRule:n},{start:311,length:1,convRule:r},{start:312,length:1,convRule:z},{start:313,length:1,convRule:n},{start:314,length:1,convRule:r},{start:315,length:1,convRule:n},{start:316,length:1,convRule:r},{start:317,length:1,convRule:n},{start:318,length:1,convRule:r},{start:319,length:1,convRule:n},{start:320,length:1,convRule:r},{start:321,length:1,convRule:n},{start:322,length:1,convRule:r},{start:323,length:1,convRule:n},{start:324,length:1,convRule:r},{start:325,length:1,convRule:n},{start:326,length:1,convRule:r},{start:327,length:1,convRule:n},{start:328,length:1,convRule:r},{start:329,length:1,convRule:z},{start:330,length:1,convRule:n},{start:331,length:1,convRule:r},{start:332,length:1,convRule:n},{start:333,length:1,convRule:r},{start:334,length:1,convRule:n},{start:335,length:1,convRule:r},{start:336,length:1,convRule:n},{start:337,length:1,convRule:r},{start:338,length:1,convRule:n},{start:339,length:1,convRule:r},{start:340,length:1,convRule:n},{start:341,length:1,convRule:r},{start:342,length:1,convRule:n},{start:343,length:1,convRule:r},{start:344,length:1,convRule:n},{start:345,length:1,convRule:r},{start:346,length:1,convRule:n},{start:347,length:1,convRule:r},{start:348,length:1,convRule:n},{start:349,length:1,convRule:r},{start:350,length:1,convRule:n},{start:351,length:1,convRule:r},{start:352,length:1,convRule:n},{start:353,length:1,convRule:r},{start:354,length:1,convRule:n},{start:355,length:1,convRule:r},{start:356,length:1,convRule:n},{start:357,length:1,convRule:r},{start:358,length:1,convRule:n},{start:359,length:1,convRule:r},{start:360,length:1,convRule:n},{start:361,length:1,convRule:r},{start:362,length:1,convRule:n},{start:363,length:1,convRule:r},{start:364,length:1,convRule:n},{start:365,length:1,convRule:r},{start:366,length:1,convRule:n},{start:367,length:1,convRule:r},{start:368,length:1,convRule:n},{start:369,length:1,convRule:r},{start:370,length:1,convRule:n},{start:371,length:1,convRule:r},{start:372,length:1,convRule:n},{start:373,length:1,convRule:r},{start:374,length:1,convRule:n},{start:375,length:1,convRule:r},{start:376,length:1,convRule:F6},{start:377,length:1,convRule:n},{start:378,length:1,convRule:r},{start:379,length:1,convRule:n},{start:380,length:1,convRule:r},{start:381,length:1,convRule:n},{start:382,length:1,convRule:r},{start:383,length:1,convRule:PC},{start:384,length:1,convRule:qC},{start:385,length:1,convRule:b6},{start:386,length:1,convRule:n},{start:387,length:1,convRule:r},{start:388,length:1,convRule:n},{start:389,length:1,convRule:r},{start:390,length:1,convRule:E6},{start:391,length:1,convRule:n},{start:392,length:1,convRule:r},{start:393,length:2,convRule:mG},{start:395,length:1,convRule:n},{start:396,length:1,convRule:r},{start:397,length:1,convRule:z},{start:398,length:1,convRule:C6},{start:399,length:1,convRule:T6},{start:400,length:1,convRule:M6},{start:401,length:1,convRule:n},{start:402,length:1,convRule:r},{start:403,length:1,convRule:mG},{start:404,length:1,convRule:S6},{start:405,length:1,convRule:$C},{start:406,length:1,convRule:hG},{start:407,length:1,convRule:L6},{start:408,length:1,convRule:n},{start:409,length:1,convRule:r},{start:410,length:1,convRule:OC},{start:411,length:1,convRule:z},{start:412,length:1,convRule:hG},{start:413,length:1,convRule:A6},{start:414,length:1,convRule:LG},{start:415,length:1,convRule:N6},{start:416,length:1,convRule:n},{start:417,length:1,convRule:r},{start:418,length:1,convRule:n},{start:419,length:1,convRule:r},{start:420,length:1,convRule:n},{start:421,length:1,convRule:r},{start:422,length:1,convRule:bp},{start:423,length:1,convRule:n},{start:424,length:1,convRule:r},{start:425,length:1,convRule:bp},{start:426,length:2,convRule:z},{start:428,length:1,convRule:n},{start:429,length:1,convRule:r},{start:430,length:1,convRule:bp},{start:431,length:1,convRule:n},{start:432,length:1,convRule:r},{start:433,length:2,convRule:P6},{start:435,length:1,convRule:n},{start:436,length:1,convRule:r},{start:437,length:1,convRule:n},{start:438,length:1,convRule:r},{start:439,length:1,convRule:q6},{start:440,length:1,convRule:n},{start:441,length:1,convRule:r},{start:442,length:1,convRule:z},{start:443,length:1,convRule:c},{start:444,length:1,convRule:n},{start:445,length:1,convRule:r},{start:446,length:1,convRule:z},{start:447,length:1,convRule:UC},{start:448,length:4,convRule:c},{start:452,length:1,convRule:$c},{start:453,length:1,convRule:Oc},{start:454,length:1,convRule:Uc},{start:455,length:1,convRule:$c},{start:456,length:1,convRule:Oc},{start:457,length:1,convRule:Uc},{start:458,length:1,convRule:$c},{start:459,length:1,convRule:Oc},{start:460,length:1,convRule:Uc},{start:461,length:1,convRule:n},{start:462,length:1,convRule:r},{start:463,length:1,convRule:n},{start:464,length:1,convRule:r},{start:465,length:1,convRule:n},{start:466,length:1,convRule:r},{start:467,length:1,convRule:n},{start:468,length:1,convRule:r},{start:469,length:1,convRule:n},{start:470,length:1,convRule:r},{start:471,length:1,convRule:n},{start:472,length:1,convRule:r},{start:473,length:1,convRule:n},{start:474,length:1,convRule:r},{start:475,length:1,convRule:n},{start:476,length:1,convRule:r},{start:477,length:1,convRule:WC},{start:478,length:1,convRule:n},{start:479,length:1,convRule:r},{start:480,length:1,convRule:n},{start:481,length:1,convRule:r},{start:482,length:1,convRule:n},{start:483,length:1,convRule:r},{start:484,length:1,convRule:n},{start:485,length:1,convRule:r},{start:486,length:1,convRule:n},{start:487,length:1,convRule:r},{start:488,length:1,convRule:n},{start:489,length:1,convRule:r},{start:490,length:1,convRule:n},{start:491,length:1,convRule:r},{start:492,length:1,convRule:n},{start:493,length:1,convRule:r},{start:494,length:1,convRule:n},{start:495,length:1,convRule:r},{start:496,length:1,convRule:z},{start:497,length:1,convRule:$c},{start:498,length:1,convRule:Oc},{start:499,length:1,convRule:Uc},{start:500,length:1,convRule:n},{start:501,length:1,convRule:r},{start:502,length:1,convRule:$6},{start:503,length:1,convRule:O6},{start:504,length:1,convRule:n},{start:505,length:1,convRule:r},{start:506,length:1,convRule:n},{start:507,length:1,convRule:r},{start:508,length:1,convRule:n},{start:509,length:1,convRule:r},{start:510,length:1,convRule:n},{start:511,length:1,convRule:r},{start:512,length:1,convRule:n},{start:513,length:1,convRule:r},{start:514,length:1,convRule:n},{start:515,length:1,convRule:r},{start:516,length:1,convRule:n},{start:517,length:1,convRule:r},{start:518,length:1,convRule:n},{start:519,length:1,convRule:r},{start:520,length:1,convRule:n},{start:521,length:1,convRule:r},{start:522,length:1,convRule:n},{start:523,length:1,convRule:r},{start:524,length:1,convRule:n},{start:525,length:1,convRule:r},{start:526,length:1,convRule:n},{start:527,length:1,convRule:r},{start:528,length:1,convRule:n},{start:529,length:1,convRule:r},{start:530,length:1,convRule:n},{start:531,length:1,convRule:r},{start:532,length:1,convRule:n},{start:533,length:1,convRule:r},{start:534,length:1,convRule:n},{start:535,length:1,convRule:r},{start:536,length:1,convRule:n},{start:537,length:1,convRule:r},{start:538,length:1,convRule:n},{start:539,length:1,convRule:r},{start:540,length:1,convRule:n},{start:541,length:1,convRule:r},{start:542,length:1,convRule:n},{start:543,length:1,convRule:r},{start:544,length:1,convRule:gG},{start:545,length:1,convRule:z},{start:546,length:1,convRule:n},{start:547,length:1,convRule:r},{start:548,length:1,convRule:n},{start:549,length:1,convRule:r},{start:550,length:1,convRule:n},{start:551,length:1,convRule:r},{start:552,length:1,convRule:n},{start:553,length:1,convRule:r},{start:554,length:1,convRule:n},{start:555,length:1,convRule:r},{start:556,length:1,convRule:n},{start:557,length:1,convRule:r},{start:558,length:1,convRule:n},{start:559,length:1,convRule:r},{start:560,length:1,convRule:n},{start:561,length:1,convRule:r},{start:562,length:1,convRule:n},{start:563,length:1,convRule:r},{start:564,length:6,convRule:z},{start:570,length:1,convRule:U6},{start:571,length:1,convRule:n},{start:572,length:1,convRule:r},{start:573,length:1,convRule:W6},{start:574,length:1,convRule:B6},{start:575,length:2,convRule:BC},{start:577,length:1,convRule:n},{start:578,length:1,convRule:r},{start:579,length:1,convRule:z6},{start:580,length:1,convRule:k6},{start:581,length:1,convRule:V6},{start:582,length:1,convRule:n},{start:583,length:1,convRule:r},{start:584,length:1,convRule:n},{start:585,length:1,convRule:r},{start:586,length:1,convRule:n},{start:587,length:1,convRule:r},{start:588,length:1,convRule:n},{start:589,length:1,convRule:r},{start:590,length:1,convRule:n},{start:591,length:1,convRule:r},{start:592,length:1,convRule:zC},{start:593,length:1,convRule:kC},{start:594,length:1,convRule:VC},{start:595,length:1,convRule:JC},{start:596,length:1,convRule:jC},{start:597,length:1,convRule:z},{start:598,length:2,convRule:AG},{start:600,length:1,convRule:z},{start:601,length:1,convRule:HC},{start:602,length:1,convRule:z},{start:603,length:1,convRule:XC},{start:604,length:1,convRule:YC},{start:605,length:3,convRule:z},{start:608,length:1,convRule:AG},{start:609,length:1,convRule:ZC},{start:610,length:1,convRule:z},{start:611,length:1,convRule:QC},{start:612,length:1,convRule:z},{start:613,length:1,convRule:KC},{start:614,length:1,convRule:NG},{start:615,length:1,convRule:z},{start:616,length:1,convRule:xC},{start:617,length:1,convRule:PG},{start:618,length:1,convRule:NG},{start:619,length:1,convRule:e9},{start:620,length:1,convRule:a9},{start:621,length:2,convRule:z},{start:623,length:1,convRule:PG},{start:624,length:1,convRule:z},{start:625,length:1,convRule:u9},{start:626,length:1,convRule:l9},{start:627,length:2,convRule:z},{start:629,length:1,convRule:v9},{start:630,length:7,convRule:z},{start:637,length:1,convRule:n9},{start:638,length:2,convRule:z},{start:640,length:1,convRule:Sp},{start:641,length:1,convRule:z},{start:642,length:1,convRule:r9},{start:643,length:1,convRule:Sp},{start:644,length:3,convRule:z},{start:647,length:1,convRule:t9},{start:648,length:1,convRule:Sp},{start:649,length:1,convRule:i9},{start:650,length:2,convRule:o9},{start:652,length:1,convRule:c9},{start:653,length:5,convRule:z},{start:658,length:1,convRule:_9},{start:659,length:1,convRule:z},{start:660,length:1,convRule:c},{start:661,length:8,convRule:z},{start:669,length:1,convRule:f9},{start:670,length:1,convRule:p9},{start:671,length:17,convRule:z},{start:688,length:18,convRule:Le},{start:706,length:4,convRule:tu},{start:710,length:12,convRule:Le},{start:722,length:14,convRule:tu},{start:736,length:5,convRule:Le},{start:741,length:7,convRule:tu},{start:748,length:1,convRule:Le},{start:749,length:1,convRule:tu},{start:750,length:1,convRule:Le},{start:751,length:17,convRule:tu},{start:768,length:69,convRule:p},{start:837,length:1,convRule:UE},{start:838,length:42,convRule:p},{start:880,length:1,convRule:n},{start:881,length:1,convRule:r},{start:882,length:1,convRule:n},{start:883,length:1,convRule:r},{start:884,length:1,convRule:Le},{start:885,length:1,convRule:tu},{start:886,length:1,convRule:n},{start:887,length:1,convRule:r},{start:890,length:1,convRule:Le},{start:891,length:3,convRule:LG},{start:894,length:1,convRule:C},{start:895,length:1,convRule:J6},{start:900,length:2,convRule:tu},{start:902,length:1,convRule:j6},{start:903,length:1,convRule:C},{start:904,length:3,convRule:H6},{start:908,length:1,convRule:yG},{start:910,length:2,convRule:X6},{start:912,length:1,convRule:z},{start:913,length:17,convRule:Al},{start:931,length:9,convRule:Al},{start:940,length:1,convRule:s9},{start:941,length:3,convRule:Y6},{start:944,length:1,convRule:z},{start:945,length:17,convRule:Nl},{start:962,length:1,convRule:Z6},{start:963,length:9,convRule:Nl},{start:972,length:1,convRule:FG},{start:973,length:2,convRule:Q6},{start:975,length:1,convRule:DG},{start:976,length:1,convRule:K6},{start:977,length:1,convRule:x6},{start:978,length:3,convRule:ia},{start:981,length:1,convRule:eC},{start:982,length:1,convRule:aC},{start:983,length:1,convRule:bG},{start:984,length:1,convRule:n},{start:985,length:1,convRule:r},{start:986,length:1,convRule:n},{start:987,length:1,convRule:r},{start:988,length:1,convRule:n},{start:989,length:1,convRule:r},{start:990,length:1,convRule:n},{start:991,length:1,convRule:r},{start:992,length:1,convRule:n},{start:993,length:1,convRule:r},{start:994,length:1,convRule:n},{start:995,length:1,convRule:r},{start:996,length:1,convRule:n},{start:997,length:1,convRule:r},{start:998,length:1,convRule:n},{start:999,length:1,convRule:r},{start:1e3,length:1,convRule:n},{start:1001,length:1,convRule:r},{start:1002,length:1,convRule:n},{start:1003,length:1,convRule:r},{start:1004,length:1,convRule:n},{start:1005,length:1,convRule:r},{start:1006,length:1,convRule:n},{start:1007,length:1,convRule:r},{start:1008,length:1,convRule:uC},{start:1009,length:1,convRule:EG},{start:1010,length:1,convRule:CG},{start:1011,length:1,convRule:lC},{start:1012,length:1,convRule:zE},{start:1013,length:1,convRule:vC},{start:1014,length:1,convRule:Fe},{start:1015,length:1,convRule:n},{start:1016,length:1,convRule:r},{start:1017,length:1,convRule:RG},{start:1018,length:1,convRule:n},{start:1019,length:1,convRule:r},{start:1020,length:1,convRule:z},{start:1021,length:3,convRule:gG},{start:1024,length:16,convRule:kE},{start:1040,length:32,convRule:Al},{start:1072,length:32,convRule:Nl},{start:1104,length:16,convRule:EG},{start:1120,length:1,convRule:n},{start:1121,length:1,convRule:r},{start:1122,length:1,convRule:n},{start:1123,length:1,convRule:r},{start:1124,length:1,convRule:n},{start:1125,length:1,convRule:r},{start:1126,length:1,convRule:n},{start:1127,length:1,convRule:r},{start:1128,length:1,convRule:n},{start:1129,length:1,convRule:r},{start:1130,length:1,convRule:n},{start:1131,length:1,convRule:r},{start:1132,length:1,convRule:n},{start:1133,length:1,convRule:r},{start:1134,length:1,convRule:n},{start:1135,length:1,convRule:r},{start:1136,length:1,convRule:n},{start:1137,length:1,convRule:r},{start:1138,length:1,convRule:n},{start:1139,length:1,convRule:r},{start:1140,length:1,convRule:n},{start:1141,length:1,convRule:r},{start:1142,length:1,convRule:n},{start:1143,length:1,convRule:r},{start:1144,length:1,convRule:n},{start:1145,length:1,convRule:r},{start:1146,length:1,convRule:n},{start:1147,length:1,convRule:r},{start:1148,length:1,convRule:n},{start:1149,length:1,convRule:r},{start:1150,length:1,convRule:n},{start:1151,length:1,convRule:r},{start:1152,length:1,convRule:n},{start:1153,length:1,convRule:r},{start:1154,length:1,convRule:E},{start:1155,length:5,convRule:p},{start:1160,length:2,convRule:UD},{start:1162,length:1,convRule:n},{start:1163,length:1,convRule:r},{start:1164,length:1,convRule:n},{start:1165,length:1,convRule:r},{start:1166,length:1,convRule:n},{start:1167,length:1,convRule:r},{start:1168,length:1,convRule:n},{start:1169,length:1,convRule:r},{start:1170,length:1,convRule:n},{start:1171,length:1,convRule:r},{start:1172,length:1,convRule:n},{start:1173,length:1,convRule:r},{start:1174,length:1,convRule:n},{start:1175,length:1,convRule:r},{start:1176,length:1,convRule:n},{start:1177,length:1,convRule:r},{start:1178,length:1,convRule:n},{start:1179,length:1,convRule:r},{start:1180,length:1,convRule:n},{start:1181,length:1,convRule:r},{start:1182,length:1,convRule:n},{start:1183,length:1,convRule:r},{start:1184,length:1,convRule:n},{start:1185,length:1,convRule:r},{start:1186,length:1,convRule:n},{start:1187,length:1,convRule:r},{start:1188,length:1,convRule:n},{start:1189,length:1,convRule:r},{start:1190,length:1,convRule:n},{start:1191,length:1,convRule:r},{start:1192,length:1,convRule:n},{start:1193,length:1,convRule:r},{start:1194,length:1,convRule:n},{start:1195,length:1,convRule:r},{start:1196,length:1,convRule:n},{start:1197,length:1,convRule:r},{start:1198,length:1,convRule:n},{start:1199,length:1,convRule:r},{start:1200,length:1,convRule:n},{start:1201,length:1,convRule:r},{start:1202,length:1,convRule:n},{start:1203,length:1,convRule:r},{start:1204,length:1,convRule:n},{start:1205,length:1,convRule:r},{start:1206,length:1,convRule:n},{start:1207,length:1,convRule:r},{start:1208,length:1,convRule:n},{start:1209,length:1,convRule:r},{start:1210,length:1,convRule:n},{start:1211,length:1,convRule:r},{start:1212,length:1,convRule:n},{start:1213,length:1,convRule:r},{start:1214,length:1,convRule:n},{start:1215,length:1,convRule:r},{start:1216,length:1,convRule:VE},{start:1217,length:1,convRule:n},{start:1218,length:1,convRule:r},{start:1219,length:1,convRule:n},{start:1220,length:1,convRule:r},{start:1221,length:1,convRule:n},{start:1222,length:1,convRule:r},{start:1223,length:1,convRule:n},{start:1224,length:1,convRule:r},{start:1225,length:1,convRule:n},{start:1226,length:1,convRule:r},{start:1227,length:1,convRule:n},{start:1228,length:1,convRule:r},{start:1229,length:1,convRule:n},{start:1230,length:1,convRule:r},{start:1231,length:1,convRule:nC},{start:1232,length:1,convRule:n},{start:1233,length:1,convRule:r},{start:1234,length:1,convRule:n},{start:1235,length:1,convRule:r},{start:1236,length:1,convRule:n},{start:1237,length:1,convRule:r},{start:1238,length:1,convRule:n},{start:1239,length:1,convRule:r},{start:1240,length:1,convRule:n},{start:1241,length:1,convRule:r},{start:1242,length:1,convRule:n},{start:1243,length:1,convRule:r},{start:1244,length:1,convRule:n},{start:1245,length:1,convRule:r},{start:1246,length:1,convRule:n},{start:1247,length:1,convRule:r},{start:1248,length:1,convRule:n},{start:1249,length:1,convRule:r},{start:1250,length:1,convRule:n},{start:1251,length:1,convRule:r},{start:1252,length:1,convRule:n},{start:1253,length:1,convRule:r},{start:1254,length:1,convRule:n},{start:1255,length:1,convRule:r},{start:1256,length:1,convRule:n},{start:1257,length:1,convRule:r},{start:1258,length:1,convRule:n},{start:1259,length:1,convRule:r},{start:1260,length:1,convRule:n},{start:1261,length:1,convRule:r},{start:1262,length:1,convRule:n},{start:1263,length:1,convRule:r},{start:1264,length:1,convRule:n},{start:1265,length:1,convRule:r},{start:1266,length:1,convRule:n},{start:1267,length:1,convRule:r},{start:1268,length:1,convRule:n},{start:1269,length:1,convRule:r},{start:1270,length:1,convRule:n},{start:1271,length:1,convRule:r},{start:1272,length:1,convRule:n},{start:1273,length:1,convRule:r},{start:1274,length:1,convRule:n},{start:1275,length:1,convRule:r},{start:1276,length:1,convRule:n},{start:1277,length:1,convRule:r},{start:1278,length:1,convRule:n},{start:1279,length:1,convRule:r},{start:1280,length:1,convRule:n},{start:1281,length:1,convRule:r},{start:1282,length:1,convRule:n},{start:1283,length:1,convRule:r},{start:1284,length:1,convRule:n},{start:1285,length:1,convRule:r},{start:1286,length:1,convRule:n},{start:1287,length:1,convRule:r},{start:1288,length:1,convRule:n},{start:1289,length:1,convRule:r},{start:1290,length:1,convRule:n},{start:1291,length:1,convRule:r},{start:1292,length:1,convRule:n},{start:1293,length:1,convRule:r},{start:1294,length:1,convRule:n},{start:1295,length:1,convRule:r},{start:1296,length:1,convRule:n},{start:1297,length:1,convRule:r},{start:1298,length:1,convRule:n},{start:1299,length:1,convRule:r},{start:1300,length:1,convRule:n},{start:1301,length:1,convRule:r},{start:1302,length:1,convRule:n},{start:1303,length:1,convRule:r},{start:1304,length:1,convRule:n},{start:1305,length:1,convRule:r},{start:1306,length:1,convRule:n},{start:1307,length:1,convRule:r},{start:1308,length:1,convRule:n},{start:1309,length:1,convRule:r},{start:1310,length:1,convRule:n},{start:1311,length:1,convRule:r},{start:1312,length:1,convRule:n},{start:1313,length:1,convRule:r},{start:1314,length:1,convRule:n},{start:1315,length:1,convRule:r},{start:1316,length:1,convRule:n},{start:1317,length:1,convRule:r},{start:1318,length:1,convRule:n},{start:1319,length:1,convRule:r},{start:1320,length:1,convRule:n},{start:1321,length:1,convRule:r},{start:1322,length:1,convRule:n},{start:1323,length:1,convRule:r},{start:1324,length:1,convRule:n},{start:1325,length:1,convRule:r},{start:1326,length:1,convRule:n},{start:1327,length:1,convRule:r},{start:1329,length:38,convRule:IG},{start:1369,length:1,convRule:Le},{start:1370,length:6,convRule:C},{start:1376,length:1,convRule:z},{start:1377,length:38,convRule:TG},{start:1415,length:2,convRule:z},{start:1417,length:1,convRule:C},{start:1418,length:1,convRule:Ll},{start:1421,length:2,convRule:E},{start:1423,length:1,convRule:tl},{start:1425,length:45,convRule:p},{start:1470,length:1,convRule:Ll},{start:1471,length:1,convRule:p},{start:1472,length:1,convRule:C},{start:1473,length:2,convRule:p},{start:1475,length:1,convRule:C},{start:1476,length:2,convRule:p},{start:1478,length:1,convRule:C},{start:1479,length:1,convRule:p},{start:1488,length:27,convRule:c},{start:1519,length:4,convRule:c},{start:1523,length:2,convRule:C},{start:1536,length:6,convRule:pl},{start:1542,length:3,convRule:Fe},{start:1545,length:2,convRule:C},{start:1547,length:1,convRule:tl},{start:1548,length:2,convRule:C},{start:1550,length:2,convRule:E},{start:1552,length:11,convRule:p},{start:1563,length:1,convRule:C},{start:1564,length:1,convRule:pl},{start:1566,length:2,convRule:C},{start:1568,length:32,convRule:c},{start:1600,length:1,convRule:Le},{start:1601,length:10,convRule:c},{start:1611,length:21,convRule:p},{start:1632,length:10,convRule:Se},{start:1642,length:4,convRule:C},{start:1646,length:2,convRule:c},{start:1648,length:1,convRule:p},{start:1649,length:99,convRule:c},{start:1748,length:1,convRule:C},{start:1749,length:1,convRule:c},{start:1750,length:7,convRule:p},{start:1757,length:1,convRule:pl},{start:1758,length:1,convRule:E},{start:1759,length:6,convRule:p},{start:1765,length:2,convRule:Le},{start:1767,length:2,convRule:p},{start:1769,length:1,convRule:E},{start:1770,length:4,convRule:p},{start:1774,length:2,convRule:c},{start:1776,length:10,convRule:Se},{start:1786,length:3,convRule:c},{start:1789,length:2,convRule:E},{start:1791,length:1,convRule:c},{start:1792,length:14,convRule:C},{start:1807,length:1,convRule:pl},{start:1808,length:1,convRule:c},{start:1809,length:1,convRule:p},{start:1810,length:30,convRule:c},{start:1840,length:27,convRule:p},{start:1869,length:89,convRule:c},{start:1958,length:11,convRule:p},{start:1969,length:1,convRule:c},{start:1984,length:10,convRule:Se},{start:1994,length:33,convRule:c},{start:2027,length:9,convRule:p},{start:2036,length:2,convRule:Le},{start:2038,length:1,convRule:E},{start:2039,length:3,convRule:C},{start:2042,length:1,convRule:Le},{start:2045,length:1,convRule:p},{start:2046,length:2,convRule:tl},{start:2048,length:22,convRule:c},{start:2070,length:4,convRule:p},{start:2074,length:1,convRule:Le},{start:2075,length:9,convRule:p},{start:2084,length:1,convRule:Le},{start:2085,length:3,convRule:p},{start:2088,length:1,convRule:Le},{start:2089,length:5,convRule:p},{start:2096,length:15,convRule:C},{start:2112,length:25,convRule:c},{start:2137,length:3,convRule:p},{start:2142,length:1,convRule:C},{start:2144,length:11,convRule:c},{start:2208,length:21,convRule:c},{start:2230,length:18,convRule:c},{start:2259,length:15,convRule:p},{start:2274,length:1,convRule:pl},{start:2275,length:32,convRule:p},{start:2307,length:1,convRule:T},{start:2308,length:54,convRule:c},{start:2362,length:1,convRule:p},{start:2363,length:1,convRule:T},{start:2364,length:1,convRule:p},{start:2365,length:1,convRule:c},{start:2366,length:3,convRule:T},{start:2369,length:8,convRule:p},{start:2377,length:4,convRule:T},{start:2381,length:1,convRule:p},{start:2382,length:2,convRule:T},{start:2384,length:1,convRule:c},{start:2385,length:7,convRule:p},{start:2392,length:10,convRule:c},{start:2402,length:2,convRule:p},{start:2404,length:2,convRule:C},{start:2406,length:10,convRule:Se},{start:2416,length:1,convRule:C},{start:2417,length:1,convRule:Le},{start:2418,length:15,convRule:c},{start:2433,length:1,convRule:p},{start:2434,length:2,convRule:T},{start:2437,length:8,convRule:c},{start:2447,length:2,convRule:c},{start:2451,length:22,convRule:c},{start:2474,length:7,convRule:c},{start:2482,length:1,convRule:c},{start:2486,length:4,convRule:c},{start:2492,length:1,convRule:p},{start:2493,length:1,convRule:c},{start:2494,length:3,convRule:T},{start:2497,length:4,convRule:p},{start:2503,length:2,convRule:T},{start:2507,length:2,convRule:T},{start:2509,length:1,convRule:p},{start:2510,length:1,convRule:c},{start:2519,length:1,convRule:T},{start:2524,length:2,convRule:c},{start:2527,length:3,convRule:c},{start:2530,length:2,convRule:p},{start:2534,length:10,convRule:Se},{start:2544,length:2,convRule:c},{start:2546,length:2,convRule:tl},{start:2548,length:6,convRule:Re},{start:2554,length:1,convRule:E},{start:2555,length:1,convRule:tl},{start:2556,length:1,convRule:c},{start:2557,length:1,convRule:C},{start:2558,length:1,convRule:p},{start:2561,length:2,convRule:p},{start:2563,length:1,convRule:T},{start:2565,length:6,convRule:c},{start:2575,length:2,convRule:c},{start:2579,length:22,convRule:c},{start:2602,length:7,convRule:c},{start:2610,length:2,convRule:c},{start:2613,length:2,convRule:c},{start:2616,length:2,convRule:c},{start:2620,length:1,convRule:p},{start:2622,length:3,convRule:T},{start:2625,length:2,convRule:p},{start:2631,length:2,convRule:p},{start:2635,length:3,convRule:p},{start:2641,length:1,convRule:p},{start:2649,length:4,convRule:c},{start:2654,length:1,convRule:c},{start:2662,length:10,convRule:Se},{start:2672,length:2,convRule:p},{start:2674,length:3,convRule:c},{start:2677,length:1,convRule:p},{start:2678,length:1,convRule:C},{start:2689,length:2,convRule:p},{start:2691,length:1,convRule:T},{start:2693,length:9,convRule:c},{start:2703,length:3,convRule:c},{start:2707,length:22,convRule:c},{start:2730,length:7,convRule:c},{start:2738,length:2,convRule:c},{start:2741,length:5,convRule:c},{start:2748,length:1,convRule:p},{start:2749,length:1,convRule:c},{start:2750,length:3,convRule:T},{start:2753,length:5,convRule:p},{start:2759,length:2,convRule:p},{start:2761,length:1,convRule:T},{start:2763,length:2,convRule:T},{start:2765,length:1,convRule:p},{start:2768,length:1,convRule:c},{start:2784,length:2,convRule:c},{start:2786,length:2,convRule:p},{start:2790,length:10,convRule:Se},{start:2800,length:1,convRule:C},{start:2801,length:1,convRule:tl},{start:2809,length:1,convRule:c},{start:2810,length:6,convRule:p},{start:2817,length:1,convRule:p},{start:2818,length:2,convRule:T},{start:2821,length:8,convRule:c},{start:2831,length:2,convRule:c},{start:2835,length:22,convRule:c},{start:2858,length:7,convRule:c},{start:2866,length:2,convRule:c},{start:2869,length:5,convRule:c},{start:2876,length:1,convRule:p},{start:2877,length:1,convRule:c},{start:2878,length:1,convRule:T},{start:2879,length:1,convRule:p},{start:2880,length:1,convRule:T},{start:2881,length:4,convRule:p},{start:2887,length:2,convRule:T},{start:2891,length:2,convRule:T},{start:2893,length:1,convRule:p},{start:2901,length:2,convRule:p},{start:2903,length:1,convRule:T},{start:2908,length:2,convRule:c},{start:2911,length:3,convRule:c},{start:2914,length:2,convRule:p},{start:2918,length:10,convRule:Se},{start:2928,length:1,convRule:E},{start:2929,length:1,convRule:c},{start:2930,length:6,convRule:Re},{start:2946,length:1,convRule:p},{start:2947,length:1,convRule:c},{start:2949,length:6,convRule:c},{start:2958,length:3,convRule:c},{start:2962,length:4,convRule:c},{start:2969,length:2,convRule:c},{start:2972,length:1,convRule:c},{start:2974,length:2,convRule:c},{start:2979,length:2,convRule:c},{start:2984,length:3,convRule:c},{start:2990,length:12,convRule:c},{start:3006,length:2,convRule:T},{start:3008,length:1,convRule:p},{start:3009,length:2,convRule:T},{start:3014,length:3,convRule:T},{start:3018,length:3,convRule:T},{start:3021,length:1,convRule:p},{start:3024,length:1,convRule:c},{start:3031,length:1,convRule:T},{start:3046,length:10,convRule:Se},{start:3056,length:3,convRule:Re},{start:3059,length:6,convRule:E},{start:3065,length:1,convRule:tl},{start:3066,length:1,convRule:E},{start:3072,length:1,convRule:p},{start:3073,length:3,convRule:T},{start:3076,length:1,convRule:p},{start:3077,length:8,convRule:c},{start:3086,length:3,convRule:c},{start:3090,length:23,convRule:c},{start:3114,length:16,convRule:c},{start:3133,length:1,convRule:c},{start:3134,length:3,convRule:p},{start:3137,length:4,convRule:T},{start:3142,length:3,convRule:p},{start:3146,length:4,convRule:p},{start:3157,length:2,convRule:p},{start:3160,length:3,convRule:c},{start:3168,length:2,convRule:c},{start:3170,length:2,convRule:p},{start:3174,length:10,convRule:Se},{start:3191,length:1,convRule:C},{start:3192,length:7,convRule:Re},{start:3199,length:1,convRule:E},{start:3200,length:1,convRule:c},{start:3201,length:1,convRule:p},{start:3202,length:2,convRule:T},{start:3204,length:1,convRule:C},{start:3205,length:8,convRule:c},{start:3214,length:3,convRule:c},{start:3218,length:23,convRule:c},{start:3242,length:10,convRule:c},{start:3253,length:5,convRule:c},{start:3260,length:1,convRule:p},{start:3261,length:1,convRule:c},{start:3262,length:1,convRule:T},{start:3263,length:1,convRule:p},{start:3264,length:5,convRule:T},{start:3270,length:1,convRule:p},{start:3271,length:2,convRule:T},{start:3274,length:2,convRule:T},{start:3276,length:2,convRule:p},{start:3285,length:2,convRule:T},{start:3294,length:1,convRule:c},{start:3296,length:2,convRule:c},{start:3298,length:2,convRule:p},{start:3302,length:10,convRule:Se},{start:3313,length:2,convRule:c},{start:3328,length:2,convRule:p},{start:3330,length:2,convRule:T},{start:3332,length:9,convRule:c},{start:3342,length:3,convRule:c},{start:3346,length:41,convRule:c},{start:3387,length:2,convRule:p},{start:3389,length:1,convRule:c},{start:3390,length:3,convRule:T},{start:3393,length:4,convRule:p},{start:3398,length:3,convRule:T},{start:3402,length:3,convRule:T},{start:3405,length:1,convRule:p},{start:3406,length:1,convRule:c},{start:3407,length:1,convRule:E},{start:3412,length:3,convRule:c},{start:3415,length:1,convRule:T},{start:3416,length:7,convRule:Re},{start:3423,length:3,convRule:c},{start:3426,length:2,convRule:p},{start:3430,length:10,convRule:Se},{start:3440,length:9,convRule:Re},{start:3449,length:1,convRule:E},{start:3450,length:6,convRule:c},{start:3457,length:1,convRule:p},{start:3458,length:2,convRule:T},{start:3461,length:18,convRule:c},{start:3482,length:24,convRule:c},{start:3507,length:9,convRule:c},{start:3517,length:1,convRule:c},{start:3520,length:7,convRule:c},{start:3530,length:1,convRule:p},{start:3535,length:3,convRule:T},{start:3538,length:3,convRule:p},{start:3542,length:1,convRule:p},{start:3544,length:8,convRule:T},{start:3558,length:10,convRule:Se},{start:3570,length:2,convRule:T},{start:3572,length:1,convRule:C},{start:3585,length:48,convRule:c},{start:3633,length:1,convRule:p},{start:3634,length:2,convRule:c},{start:3636,length:7,convRule:p},{start:3647,length:1,convRule:tl},{start:3648,length:6,convRule:c},{start:3654,length:1,convRule:Le},{start:3655,length:8,convRule:p},{start:3663,length:1,convRule:C},{start:3664,length:10,convRule:Se},{start:3674,length:2,convRule:C},{start:3713,length:2,convRule:c},{start:3716,length:1,convRule:c},{start:3718,length:5,convRule:c},{start:3724,length:24,convRule:c},{start:3749,length:1,convRule:c},{start:3751,length:10,convRule:c},{start:3761,length:1,convRule:p},{start:3762,length:2,convRule:c},{start:3764,length:9,convRule:p},{start:3773,length:1,convRule:c},{start:3776,length:5,convRule:c},{start:3782,length:1,convRule:Le},{start:3784,length:6,convRule:p},{start:3792,length:10,convRule:Se},{start:3804,length:4,convRule:c},{start:3840,length:1,convRule:c},{start:3841,length:3,convRule:E},{start:3844,length:15,convRule:C},{start:3859,length:1,convRule:E},{start:3860,length:1,convRule:C},{start:3861,length:3,convRule:E},{start:3864,length:2,convRule:p},{start:3866,length:6,convRule:E},{start:3872,length:10,convRule:Se},{start:3882,length:10,convRule:Re},{start:3892,length:1,convRule:E},{start:3893,length:1,convRule:p},{start:3894,length:1,convRule:E},{start:3895,length:1,convRule:p},{start:3896,length:1,convRule:E},{start:3897,length:1,convRule:p},{start:3898,length:1,convRule:_e},{start:3899,length:1,convRule:se},{start:3900,length:1,convRule:_e},{start:3901,length:1,convRule:se},{start:3902,length:2,convRule:T},{start:3904,length:8,convRule:c},{start:3913,length:36,convRule:c},{start:3953,length:14,convRule:p},{start:3967,length:1,convRule:T},{start:3968,length:5,convRule:p},{start:3973,length:1,convRule:C},{start:3974,length:2,convRule:p},{start:3976,length:5,convRule:c},{start:3981,length:11,convRule:p},{start:3993,length:36,convRule:p},{start:4030,length:8,convRule:E},{start:4038,length:1,convRule:p},{start:4039,length:6,convRule:E},{start:4046,length:2,convRule:E},{start:4048,length:5,convRule:C},{start:4053,length:4,convRule:E},{start:4057,length:2,convRule:C},{start:4096,length:43,convRule:c},{start:4139,length:2,convRule:T},{start:4141,length:4,convRule:p},{start:4145,length:1,convRule:T},{start:4146,length:6,convRule:p},{start:4152,length:1,convRule:T},{start:4153,length:2,convRule:p},{start:4155,length:2,convRule:T},{start:4157,length:2,convRule:p},{start:4159,length:1,convRule:c},{start:4160,length:10,convRule:Se},{start:4170,length:6,convRule:C},{start:4176,length:6,convRule:c},{start:4182,length:2,convRule:T},{start:4184,length:2,convRule:p},{start:4186,length:4,convRule:c},{start:4190,length:3,convRule:p},{start:4193,length:1,convRule:c},{start:4194,length:3,convRule:T},{start:4197,length:2,convRule:c},{start:4199,length:7,convRule:T},{start:4206,length:3,convRule:c},{start:4209,length:4,convRule:p},{start:4213,length:13,convRule:c},{start:4226,length:1,convRule:p},{start:4227,length:2,convRule:T},{start:4229,length:2,convRule:p},{start:4231,length:6,convRule:T},{start:4237,length:1,convRule:p},{start:4238,length:1,convRule:c},{start:4239,length:1,convRule:T},{start:4240,length:10,convRule:Se},{start:4250,length:3,convRule:T},{start:4253,length:1,convRule:p},{start:4254,length:2,convRule:E},{start:4256,length:38,convRule:Fp},{start:4295,length:1,convRule:Fp},{start:4301,length:1,convRule:Fp},{start:4304,length:43,convRule:MG},{start:4347,length:1,convRule:C},{start:4348,length:1,convRule:Le},{start:4349,length:3,convRule:MG},{start:4352,length:329,convRule:c},{start:4682,length:4,convRule:c},{start:4688,length:7,convRule:c},{start:4696,length:1,convRule:c},{start:4698,length:4,convRule:c},{start:4704,length:41,convRule:c},{start:4746,length:4,convRule:c},{start:4752,length:33,convRule:c},{start:4786,length:4,convRule:c},{start:4792,length:7,convRule:c},{start:4800,length:1,convRule:c},{start:4802,length:4,convRule:c},{start:4808,length:15,convRule:c},{start:4824,length:57,convRule:c},{start:4882,length:4,convRule:c},{start:4888,length:67,convRule:c},{start:4957,length:3,convRule:p},{start:4960,length:9,convRule:C},{start:4969,length:20,convRule:Re},{start:4992,length:16,convRule:c},{start:5008,length:10,convRule:E},{start:5024,length:80,convRule:JE},{start:5104,length:6,convRule:DG},{start:5112,length:6,convRule:bG},{start:5120,length:1,convRule:Ll},{start:5121,length:620,convRule:c},{start:5741,length:1,convRule:E},{start:5742,length:1,convRule:C},{start:5743,length:17,convRule:c},{start:5760,length:1,convRule:Vv},{start:5761,length:26,convRule:c},{start:5787,length:1,convRule:_e},{start:5788,length:1,convRule:se},{start:5792,length:75,convRule:c},{start:5867,length:3,convRule:C},{start:5870,length:3,convRule:ln},{start:5873,length:8,convRule:c},{start:5888,length:13,convRule:c},{start:5902,length:4,convRule:c},{start:5906,length:3,convRule:p},{start:5920,length:18,convRule:c},{start:5938,length:3,convRule:p},{start:5941,length:2,convRule:C},{start:5952,length:18,convRule:c},{start:5970,length:2,convRule:p},{start:5984,length:13,convRule:c},{start:5998,length:3,convRule:c},{start:6002,length:2,convRule:p},{start:6016,length:52,convRule:c},{start:6068,length:2,convRule:p},{start:6070,length:1,convRule:T},{start:6071,length:7,convRule:p},{start:6078,length:8,convRule:T},{start:6086,length:1,convRule:p},{start:6087,length:2,convRule:T},{start:6089,length:11,convRule:p},{start:6100,length:3,convRule:C},{start:6103,length:1,convRule:Le},{start:6104,length:3,convRule:C},{start:6107,length:1,convRule:tl},{start:6108,length:1,convRule:c},{start:6109,length:1,convRule:p},{start:6112,length:10,convRule:Se},{start:6128,length:10,convRule:Re},{start:6144,length:6,convRule:C},{start:6150,length:1,convRule:Ll},{start:6151,length:4,convRule:C},{start:6155,length:3,convRule:p},{start:6158,length:1,convRule:pl},{start:6160,length:10,convRule:Se},{start:6176,length:35,convRule:c},{start:6211,length:1,convRule:Le},{start:6212,length:53,convRule:c},{start:6272,length:5,convRule:c},{start:6277,length:2,convRule:p},{start:6279,length:34,convRule:c},{start:6313,length:1,convRule:p},{start:6314,length:1,convRule:c},{start:6320,length:70,convRule:c},{start:6400,length:31,convRule:c},{start:6432,length:3,convRule:p},{start:6435,length:4,convRule:T},{start:6439,length:2,convRule:p},{start:6441,length:3,convRule:T},{start:6448,length:2,convRule:T},{start:6450,length:1,convRule:p},{start:6451,length:6,convRule:T},{start:6457,length:3,convRule:p},{start:6464,length:1,convRule:E},{start:6468,length:2,convRule:C},{start:6470,length:10,convRule:Se},{start:6480,length:30,convRule:c},{start:6512,length:5,convRule:c},{start:6528,length:44,convRule:c},{start:6576,length:26,convRule:c},{start:6608,length:10,convRule:Se},{start:6618,length:1,convRule:Re},{start:6622,length:34,convRule:E},{start:6656,length:23,convRule:c},{start:6679,length:2,convRule:p},{start:6681,length:2,convRule:T},{start:6683,length:1,convRule:p},{start:6686,length:2,convRule:C},{start:6688,length:53,convRule:c},{start:6741,length:1,convRule:T},{start:6742,length:1,convRule:p},{start:6743,length:1,convRule:T},{start:6744,length:7,convRule:p},{start:6752,length:1,convRule:p},{start:6753,length:1,convRule:T},{start:6754,length:1,convRule:p},{start:6755,length:2,convRule:T},{start:6757,length:8,convRule:p},{start:6765,length:6,convRule:T},{start:6771,length:10,convRule:p},{start:6783,length:1,convRule:p},{start:6784,length:10,convRule:Se},{start:6800,length:10,convRule:Se},{start:6816,length:7,convRule:C},{start:6823,length:1,convRule:Le},{start:6824,length:6,convRule:C},{start:6832,length:14,convRule:p},{start:6846,length:1,convRule:UD},{start:6847,length:2,convRule:p},{start:6912,length:4,convRule:p},{start:6916,length:1,convRule:T},{start:6917,length:47,convRule:c},{start:6964,length:1,convRule:p},{start:6965,length:1,convRule:T},{start:6966,length:5,convRule:p},{start:6971,length:1,convRule:T},{start:6972,length:1,convRule:p},{start:6973,length:5,convRule:T},{start:6978,length:1,convRule:p},{start:6979,length:2,convRule:T},{start:6981,length:7,convRule:c},{start:6992,length:10,convRule:Se},{start:7002,length:7,convRule:C},{start:7009,length:10,convRule:E},{start:7019,length:9,convRule:p},{start:7028,length:9,convRule:E},{start:7040,length:2,convRule:p},{start:7042,length:1,convRule:T},{start:7043,length:30,convRule:c},{start:7073,length:1,convRule:T},{start:7074,length:4,convRule:p},{start:7078,length:2,convRule:T},{start:7080,length:2,convRule:p},{start:7082,length:1,convRule:T},{start:7083,length:3,convRule:p},{start:7086,length:2,convRule:c},{start:7088,length:10,convRule:Se},{start:7098,length:44,convRule:c},{start:7142,length:1,convRule:p},{start:7143,length:1,convRule:T},{start:7144,length:2,convRule:p},{start:7146,length:3,convRule:T},{start:7149,length:1,convRule:p},{start:7150,length:1,convRule:T},{start:7151,length:3,convRule:p},{start:7154,length:2,convRule:T},{start:7164,length:4,convRule:C},{start:7168,length:36,convRule:c},{start:7204,length:8,convRule:T},{start:7212,length:8,convRule:p},{start:7220,length:2,convRule:T},{start:7222,length:2,convRule:p},{start:7227,length:5,convRule:C},{start:7232,length:10,convRule:Se},{start:7245,length:3,convRule:c},{start:7248,length:10,convRule:Se},{start:7258,length:30,convRule:c},{start:7288,length:6,convRule:Le},{start:7294,length:2,convRule:C},{start:7296,length:1,convRule:rC},{start:7297,length:1,convRule:tC},{start:7298,length:1,convRule:iC},{start:7299,length:2,convRule:oC},{start:7301,length:1,convRule:cC},{start:7302,length:1,convRule:_C},{start:7303,length:1,convRule:fC},{start:7304,length:1,convRule:pC},{start:7312,length:43,convRule:GG},{start:7357,length:3,convRule:GG},{start:7360,length:8,convRule:C},{start:7376,length:3,convRule:p},{start:7379,length:1,convRule:C},{start:7380,length:13,convRule:p},{start:7393,length:1,convRule:T},{start:7394,length:7,convRule:p},{start:7401,length:4,convRule:c},{start:7405,length:1,convRule:p},{start:7406,length:6,convRule:c},{start:7412,length:1,convRule:p},{start:7413,length:2,convRule:c},{start:7415,length:1,convRule:T},{start:7416,length:2,convRule:p},{start:7418,length:1,convRule:c},{start:7424,length:44,convRule:z},{start:7468,length:63,convRule:Le},{start:7531,length:13,convRule:z},{start:7544,length:1,convRule:Le},{start:7545,length:1,convRule:sC},{start:7546,length:3,convRule:z},{start:7549,length:1,convRule:DC},{start:7550,length:16,convRule:z},{start:7566,length:1,convRule:RC},{start:7567,length:12,convRule:z},{start:7579,length:37,convRule:Le},{start:7616,length:58,convRule:p},{start:7675,length:5,convRule:p},{start:7680,length:1,convRule:n},{start:7681,length:1,convRule:r},{start:7682,length:1,convRule:n},{start:7683,length:1,convRule:r},{start:7684,length:1,convRule:n},{start:7685,length:1,convRule:r},{start:7686,length:1,convRule:n},{start:7687,length:1,convRule:r},{start:7688,length:1,convRule:n},{start:7689,length:1,convRule:r},{start:7690,length:1,convRule:n},{start:7691,length:1,convRule:r},{start:7692,length:1,convRule:n},{start:7693,length:1,convRule:r},{start:7694,length:1,convRule:n},{start:7695,length:1,convRule:r},{start:7696,length:1,convRule:n},{start:7697,length:1,convRule:r},{start:7698,length:1,convRule:n},{start:7699,length:1,convRule:r},{start:7700,length:1,convRule:n},{start:7701,length:1,convRule:r},{start:7702,length:1,convRule:n},{start:7703,length:1,convRule:r},{start:7704,length:1,convRule:n},{start:7705,length:1,convRule:r},{start:7706,length:1,convRule:n},{start:7707,length:1,convRule:r},{start:7708,length:1,convRule:n},{start:7709,length:1,convRule:r},{start:7710,length:1,convRule:n},{start:7711,length:1,convRule:r},{start:7712,length:1,convRule:n},{start:7713,length:1,convRule:r},{start:7714,length:1,convRule:n},{start:7715,length:1,convRule:r},{start:7716,length:1,convRule:n},{start:7717,length:1,convRule:r},{start:7718,length:1,convRule:n},{start:7719,length:1,convRule:r},{start:7720,length:1,convRule:n},{start:7721,length:1,convRule:r},{start:7722,length:1,convRule:n},{start:7723,length:1,convRule:r},{start:7724,length:1,convRule:n},{start:7725,length:1,convRule:r},{start:7726,length:1,convRule:n},{start:7727,length:1,convRule:r},{start:7728,length:1,convRule:n},{start:7729,length:1,convRule:r},{start:7730,length:1,convRule:n},{start:7731,length:1,convRule:r},{start:7732,length:1,convRule:n},{start:7733,length:1,convRule:r},{start:7734,length:1,convRule:n},{start:7735,length:1,convRule:r},{start:7736,length:1,convRule:n},{start:7737,length:1,convRule:r},{start:7738,length:1,convRule:n},{start:7739,length:1,convRule:r},{start:7740,length:1,convRule:n},{start:7741,length:1,convRule:r},{start:7742,length:1,convRule:n},{start:7743,length:1,convRule:r},{start:7744,length:1,convRule:n},{start:7745,length:1,convRule:r},{start:7746,length:1,convRule:n},{start:7747,length:1,convRule:r},{start:7748,length:1,convRule:n},{start:7749,length:1,convRule:r},{start:7750,length:1,convRule:n},{start:7751,length:1,convRule:r},{start:7752,length:1,convRule:n},{start:7753,length:1,convRule:r},{start:7754,length:1,convRule:n},{start:7755,length:1,convRule:r},{start:7756,length:1,convRule:n},{start:7757,length:1,convRule:r},{start:7758,length:1,convRule:n},{start:7759,length:1,convRule:r},{start:7760,length:1,convRule:n},{start:7761,length:1,convRule:r},{start:7762,length:1,convRule:n},{start:7763,length:1,convRule:r},{start:7764,length:1,convRule:n},{start:7765,length:1,convRule:r},{start:7766,length:1,convRule:n},{start:7767,length:1,convRule:r},{start:7768,length:1,convRule:n},{start:7769,length:1,convRule:r},{start:7770,length:1,convRule:n},{start:7771,length:1,convRule:r},{start:7772,length:1,convRule:n},{start:7773,length:1,convRule:r},{start:7774,length:1,convRule:n},{start:7775,length:1,convRule:r},{start:7776,length:1,convRule:n},{start:7777,length:1,convRule:r},{start:7778,length:1,convRule:n},{start:7779,length:1,convRule:r},{start:7780,length:1,convRule:n},{start:7781,length:1,convRule:r},{start:7782,length:1,convRule:n},{start:7783,length:1,convRule:r},{start:7784,length:1,convRule:n},{start:7785,length:1,convRule:r},{start:7786,length:1,convRule:n},{start:7787,length:1,convRule:r},{start:7788,length:1,convRule:n},{start:7789,length:1,convRule:r},{start:7790,length:1,convRule:n},{start:7791,length:1,convRule:r},{start:7792,length:1,convRule:n},{start:7793,length:1,convRule:r},{start:7794,length:1,convRule:n},{start:7795,length:1,convRule:r},{start:7796,length:1,convRule:n},{start:7797,length:1,convRule:r},{start:7798,length:1,convRule:n},{start:7799,length:1,convRule:r},{start:7800,length:1,convRule:n},{start:7801,length:1,convRule:r},{start:7802,length:1,convRule:n},{start:7803,length:1,convRule:r},{start:7804,length:1,convRule:n},{start:7805,length:1,convRule:r},{start:7806,length:1,convRule:n},{start:7807,length:1,convRule:r},{start:7808,length:1,convRule:n},{start:7809,length:1,convRule:r},{start:7810,length:1,convRule:n},{start:7811,length:1,convRule:r},{start:7812,length:1,convRule:n},{start:7813,length:1,convRule:r},{start:7814,length:1,convRule:n},{start:7815,length:1,convRule:r},{start:7816,length:1,convRule:n},{start:7817,length:1,convRule:r},{start:7818,length:1,convRule:n},{start:7819,length:1,convRule:r},{start:7820,length:1,convRule:n},{start:7821,length:1,convRule:r},{start:7822,length:1,convRule:n},{start:7823,length:1,convRule:r},{start:7824,length:1,convRule:n},{start:7825,length:1,convRule:r},{start:7826,length:1,convRule:n},{start:7827,length:1,convRule:r},{start:7828,length:1,convRule:n},{start:7829,length:1,convRule:r},{start:7830,length:5,convRule:z},{start:7835,length:1,convRule:IC},{start:7836,length:2,convRule:z},{start:7838,length:1,convRule:jE},{start:7839,length:1,convRule:z},{start:7840,length:1,convRule:n},{start:7841,length:1,convRule:r},{start:7842,length:1,convRule:n},{start:7843,length:1,convRule:r},{start:7844,length:1,convRule:n},{start:7845,length:1,convRule:r},{start:7846,length:1,convRule:n},{start:7847,length:1,convRule:r},{start:7848,length:1,convRule:n},{start:7849,length:1,convRule:r},{start:7850,length:1,convRule:n},{start:7851,length:1,convRule:r},{start:7852,length:1,convRule:n},{start:7853,length:1,convRule:r},{start:7854,length:1,convRule:n},{start:7855,length:1,convRule:r},{start:7856,length:1,convRule:n},{start:7857,length:1,convRule:r},{start:7858,length:1,convRule:n},{start:7859,length:1,convRule:r},{start:7860,length:1,convRule:n},{start:7861,length:1,convRule:r},{start:7862,length:1,convRule:n},{start:7863,length:1,convRule:r},{start:7864,length:1,convRule:n},{start:7865,length:1,convRule:r},{start:7866,length:1,convRule:n},{start:7867,length:1,convRule:r},{start:7868,length:1,convRule:n},{start:7869,length:1,convRule:r},{start:7870,length:1,convRule:n},{start:7871,length:1,convRule:r},{start:7872,length:1,convRule:n},{start:7873,length:1,convRule:r},{start:7874,length:1,convRule:n},{start:7875,length:1,convRule:r},{start:7876,length:1,convRule:n},{start:7877,length:1,convRule:r},{start:7878,length:1,convRule:n},{start:7879,length:1,convRule:r},{start:7880,length:1,convRule:n},{start:7881,length:1,convRule:r},{start:7882,length:1,convRule:n},{start:7883,length:1,convRule:r},{start:7884,length:1,convRule:n},{start:7885,length:1,convRule:r},{start:7886,length:1,convRule:n},{start:7887,length:1,convRule:r},{start:7888,length:1,convRule:n},{start:7889,length:1,convRule:r},{start:7890,length:1,convRule:n},{start:7891,length:1,convRule:r},{start:7892,length:1,convRule:n},{start:7893,length:1,convRule:r},{start:7894,length:1,convRule:n},{start:7895,length:1,convRule:r},{start:7896,length:1,convRule:n},{start:7897,length:1,convRule:r},{start:7898,length:1,convRule:n},{start:7899,length:1,convRule:r},{start:7900,length:1,convRule:n},{start:7901,length:1,convRule:r},{start:7902,length:1,convRule:n},{start:7903,length:1,convRule:r},{start:7904,length:1,convRule:n},{start:7905,length:1,convRule:r},{start:7906,length:1,convRule:n},{start:7907,length:1,convRule:r},{start:7908,length:1,convRule:n},{start:7909,length:1,convRule:r},{start:7910,length:1,convRule:n},{start:7911,length:1,convRule:r},{start:7912,length:1,convRule:n},{start:7913,length:1,convRule:r},{start:7914,length:1,convRule:n},{start:7915,length:1,convRule:r},{start:7916,length:1,convRule:n},{start:7917,length:1,convRule:r},{start:7918,length:1,convRule:n},{start:7919,length:1,convRule:r},{start:7920,length:1,convRule:n},{start:7921,length:1,convRule:r},{start:7922,length:1,convRule:n},{start:7923,length:1,convRule:r},{start:7924,length:1,convRule:n},{start:7925,length:1,convRule:r},{start:7926,length:1,convRule:n},{start:7927,length:1,convRule:r},{start:7928,length:1,convRule:n},{start:7929,length:1,convRule:r},{start:7930,length:1,convRule:n},{start:7931,length:1,convRule:r},{start:7932,length:1,convRule:n},{start:7933,length:1,convRule:r},{start:7934,length:1,convRule:n},{start:7935,length:1,convRule:r},{start:7936,length:8,convRule:Ka},{start:7944,length:8,convRule:Tu},{start:7952,length:6,convRule:Ka},{start:7960,length:6,convRule:Tu},{start:7968,length:8,convRule:Ka},{start:7976,length:8,convRule:Tu},{start:7984,length:8,convRule:Ka},{start:7992,length:8,convRule:Tu},{start:8e3,length:6,convRule:Ka},{start:8008,length:6,convRule:Tu},{start:8016,length:1,convRule:z},{start:8017,length:1,convRule:Ka},{start:8018,length:1,convRule:z},{start:8019,length:1,convRule:Ka},{start:8020,length:1,convRule:z},{start:8021,length:1,convRule:Ka},{start:8022,length:1,convRule:z},{start:8023,length:1,convRule:Ka},{start:8025,length:1,convRule:Tu},{start:8027,length:1,convRule:Tu},{start:8029,length:1,convRule:Tu},{start:8031,length:1,convRule:Tu},{start:8032,length:8,convRule:Ka},{start:8040,length:8,convRule:Tu},{start:8048,length:2,convRule:GC},{start:8050,length:4,convRule:wC},{start:8054,length:2,convRule:dC},{start:8056,length:2,convRule:mC},{start:8058,length:2,convRule:hC},{start:8060,length:2,convRule:gC},{start:8064,length:8,convRule:Ka},{start:8072,length:8,convRule:Ep},{start:8080,length:8,convRule:Ka},{start:8088,length:8,convRule:Ep},{start:8096,length:8,convRule:Ka},{start:8104,length:8,convRule:Ep},{start:8112,length:2,convRule:Ka},{start:8114,length:1,convRule:z},{start:8115,length:1,convRule:Tp},{start:8116,length:1,convRule:z},{start:8118,length:2,convRule:z},{start:8120,length:2,convRule:Tu},{start:8122,length:2,convRule:HE},{start:8124,length:1,convRule:Cp},{start:8125,length:1,convRule:tu},{start:8126,length:1,convRule:yC},{start:8127,length:3,convRule:tu},{start:8130,length:1,convRule:z},{start:8131,length:1,convRule:Tp},{start:8132,length:1,convRule:z},{start:8134,length:2,convRule:z},{start:8136,length:4,convRule:XE},{start:8140,length:1,convRule:Cp},{start:8141,length:3,convRule:tu},{start:8144,length:2,convRule:Ka},{start:8146,length:2,convRule:z},{start:8150,length:2,convRule:z},{start:8152,length:2,convRule:Tu},{start:8154,length:2,convRule:YE},{start:8157,length:3,convRule:tu},{start:8160,length:2,convRule:Ka},{start:8162,length:3,convRule:z},{start:8165,length:1,convRule:CG},{start:8166,length:2,convRule:z},{start:8168,length:2,convRule:Tu},{start:8170,length:2,convRule:ZE},{start:8172,length:1,convRule:RG},{start:8173,length:3,convRule:tu},{start:8178,length:1,convRule:z},{start:8179,length:1,convRule:Tp},{start:8180,length:1,convRule:z},{start:8182,length:2,convRule:z},{start:8184,length:2,convRule:QE},{start:8186,length:2,convRule:KE},{start:8188,length:1,convRule:Cp},{start:8189,length:2,convRule:tu},{start:8192,length:11,convRule:Vv},{start:8203,length:5,convRule:pl},{start:8208,length:6,convRule:Ll},{start:8214,length:2,convRule:C},{start:8216,length:1,convRule:Nr},{start:8217,length:1,convRule:jt},{start:8218,length:1,convRule:_e},{start:8219,length:2,convRule:Nr},{start:8221,length:1,convRule:jt},{start:8222,length:1,convRule:_e},{start:8223,length:1,convRule:Nr},{start:8224,length:8,convRule:C},{start:8232,length:1,convRule:fz},{start:8233,length:1,convRule:cz},{start:8234,length:5,convRule:pl},{start:8239,length:1,convRule:Vv},{start:8240,length:9,convRule:C},{start:8249,length:1,convRule:Nr},{start:8250,length:1,convRule:jt},{start:8251,length:4,convRule:C},{start:8255,length:2,convRule:yp},{start:8257,length:3,convRule:C},{start:8260,length:1,convRule:Fe},{start:8261,length:1,convRule:_e},{start:8262,length:1,convRule:se},{start:8263,length:11,convRule:C},{start:8274,length:1,convRule:Fe},{start:8275,length:1,convRule:C},{start:8276,length:1,convRule:yp},{start:8277,length:10,convRule:C},{start:8287,length:1,convRule:Vv},{start:8288,length:5,convRule:pl},{start:8294,length:10,convRule:pl},{start:8304,length:1,convRule:Re},{start:8305,length:1,convRule:Le},{start:8308,length:6,convRule:Re},{start:8314,length:3,convRule:Fe},{start:8317,length:1,convRule:_e},{start:8318,length:1,convRule:se},{start:8319,length:1,convRule:Le},{start:8320,length:10,convRule:Re},{start:8330,length:3,convRule:Fe},{start:8333,length:1,convRule:_e},{start:8334,length:1,convRule:se},{start:8336,length:13,convRule:Le},{start:8352,length:32,convRule:tl},{start:8400,length:13,convRule:p},{start:8413,length:4,convRule:UD},{start:8417,length:1,convRule:p},{start:8418,length:3,convRule:UD},{start:8421,length:12,convRule:p},{start:8448,length:2,convRule:E},{start:8450,length:1,convRule:ia},{start:8451,length:4,convRule:E},{start:8455,length:1,convRule:ia},{start:8456,length:2,convRule:E},{start:8458,length:1,convRule:z},{start:8459,length:3,convRule:ia},{start:8462,length:2,convRule:z},{start:8464,length:3,convRule:ia},{start:8467,length:1,convRule:z},{start:8468,length:1,convRule:E},{start:8469,length:1,convRule:ia},{start:8470,length:2,convRule:E},{start:8472,length:1,convRule:Fe},{start:8473,length:5,convRule:ia},{start:8478,length:6,convRule:E},{start:8484,length:1,convRule:ia},{start:8485,length:1,convRule:E},{start:8486,length:1,convRule:xE},{start:8487,length:1,convRule:E},{start:8488,length:1,convRule:ia},{start:8489,length:1,convRule:E},{start:8490,length:1,convRule:e6},{start:8491,length:1,convRule:a6},{start:8492,length:2,convRule:ia},{start:8494,length:1,convRule:E},{start:8495,length:1,convRule:z},{start:8496,length:2,convRule:ia},{start:8498,length:1,convRule:u6},{start:8499,length:1,convRule:ia},{start:8500,length:1,convRule:z},{start:8501,length:4,convRule:c},{start:8505,length:1,convRule:z},{start:8506,length:2,convRule:E},{start:8508,length:2,convRule:z},{start:8510,length:2,convRule:ia},{start:8512,length:5,convRule:Fe},{start:8517,length:1,convRule:ia},{start:8518,length:4,convRule:z},{start:8522,length:1,convRule:E},{start:8523,length:1,convRule:Fe},{start:8524,length:2,convRule:E},{start:8526,length:1,convRule:FC},{start:8527,length:1,convRule:E},{start:8528,length:16,convRule:Re},{start:8544,length:16,convRule:qE},{start:8560,length:16,convRule:$E},{start:8576,length:3,convRule:ln},{start:8579,length:1,convRule:n},{start:8580,length:1,convRule:r},{start:8581,length:4,convRule:ln},{start:8585,length:1,convRule:Re},{start:8586,length:2,convRule:E},{start:8592,length:5,convRule:Fe},{start:8597,length:5,convRule:E},{start:8602,length:2,convRule:Fe},{start:8604,length:4,convRule:E},{start:8608,length:1,convRule:Fe},{start:8609,length:2,convRule:E},{start:8611,length:1,convRule:Fe},{start:8612,length:2,convRule:E},{start:8614,length:1,convRule:Fe},{start:8615,length:7,convRule:E},{start:8622,length:1,convRule:Fe},{start:8623,length:31,convRule:E},{start:8654,length:2,convRule:Fe},{start:8656,length:2,convRule:E},{start:8658,length:1,convRule:Fe},{start:8659,length:1,convRule:E},{start:8660,length:1,convRule:Fe},{start:8661,length:31,convRule:E},{start:8692,length:268,convRule:Fe},{start:8960,length:8,convRule:E},{start:8968,length:1,convRule:_e},{start:8969,length:1,convRule:se},{start:8970,length:1,convRule:_e},{start:8971,length:1,convRule:se},{start:8972,length:20,convRule:E},{start:8992,length:2,convRule:Fe},{start:8994,length:7,convRule:E},{start:9001,length:1,convRule:_e},{start:9002,length:1,convRule:se},{start:9003,length:81,convRule:E},{start:9084,length:1,convRule:Fe},{start:9085,length:30,convRule:E},{start:9115,length:25,convRule:Fe},{start:9140,length:40,convRule:E},{start:9180,length:6,convRule:Fe},{start:9186,length:69,convRule:E},{start:9280,length:11,convRule:E},{start:9312,length:60,convRule:Re},{start:9372,length:26,convRule:E},{start:9398,length:26,convRule:AE},{start:9424,length:26,convRule:NE},{start:9450,length:22,convRule:Re},{start:9472,length:183,convRule:E},{start:9655,length:1,convRule:Fe},{start:9656,length:9,convRule:E},{start:9665,length:1,convRule:Fe},{start:9666,length:54,convRule:E},{start:9720,length:8,convRule:Fe},{start:9728,length:111,convRule:E},{start:9839,length:1,convRule:Fe},{start:9840,length:248,convRule:E},{start:10088,length:1,convRule:_e},{start:10089,length:1,convRule:se},{start:10090,length:1,convRule:_e},{start:10091,length:1,convRule:se},{start:10092,length:1,convRule:_e},{start:10093,length:1,convRule:se},{start:10094,length:1,convRule:_e},{start:10095,length:1,convRule:se},{start:10096,length:1,convRule:_e},{start:10097,length:1,convRule:se},{start:10098,length:1,convRule:_e},{start:10099,length:1,convRule:se},{start:10100,length:1,convRule:_e},{start:10101,length:1,convRule:se},{start:10102,length:30,convRule:Re},{start:10132,length:44,convRule:E},{start:10176,length:5,convRule:Fe},{start:10181,length:1,convRule:_e},{start:10182,length:1,convRule:se},{start:10183,length:31,convRule:Fe},{start:10214,length:1,convRule:_e},{start:10215,length:1,convRule:se},{start:10216,length:1,convRule:_e},{start:10217,length:1,convRule:se},{start:10218,length:1,convRule:_e},{start:10219,length:1,convRule:se},{start:10220,length:1,convRule:_e},{start:10221,length:1,convRule:se},{start:10222,length:1,convRule:_e},{start:10223,length:1,convRule:se},{start:10224,length:16,convRule:Fe},{start:10240,length:256,convRule:E},{start:10496,length:131,convRule:Fe},{start:10627,length:1,convRule:_e},{start:10628,length:1,convRule:se},{start:10629,length:1,convRule:_e},{start:10630,length:1,convRule:se},{start:10631,length:1,convRule:_e},{start:10632,length:1,convRule:se},{start:10633,length:1,convRule:_e},{start:10634,length:1,convRule:se},{start:10635,length:1,convRule:_e},{start:10636,length:1,convRule:se},{start:10637,length:1,convRule:_e},{start:10638,length:1,convRule:se},{start:10639,length:1,convRule:_e},{start:10640,length:1,convRule:se},{start:10641,length:1,convRule:_e},{start:10642,length:1,convRule:se},{start:10643,length:1,convRule:_e},{start:10644,length:1,convRule:se},{start:10645,length:1,convRule:_e},{start:10646,length:1,convRule:se},{start:10647,length:1,convRule:_e},{start:10648,length:1,convRule:se},{start:10649,length:63,convRule:Fe},{start:10712,length:1,convRule:_e},{start:10713,length:1,convRule:se},{start:10714,length:1,convRule:_e},{start:10715,length:1,convRule:se},{start:10716,length:32,convRule:Fe},{start:10748,length:1,convRule:_e},{start:10749,length:1,convRule:se},{start:10750,length:258,convRule:Fe},{start:11008,length:48,convRule:E},{start:11056,length:21,convRule:Fe},{start:11077,length:2,convRule:E},{start:11079,length:6,convRule:Fe},{start:11085,length:39,convRule:E},{start:11126,length:32,convRule:E},{start:11159,length:105,convRule:E},{start:11264,length:47,convRule:IG},{start:11312,length:47,convRule:TG},{start:11360,length:1,convRule:n},{start:11361,length:1,convRule:r},{start:11362,length:1,convRule:l6},{start:11363,length:1,convRule:v6},{start:11364,length:1,convRule:n6},{start:11365,length:1,convRule:bC},{start:11366,length:1,convRule:EC},{start:11367,length:1,convRule:n},{start:11368,length:1,convRule:r},{start:11369,length:1,convRule:n},{start:11370,length:1,convRule:r},{start:11371,length:1,convRule:n},{start:11372,length:1,convRule:r},{start:11373,length:1,convRule:r6},{start:11374,length:1,convRule:t6},{start:11375,length:1,convRule:i6},{start:11376,length:1,convRule:o6},{start:11377,length:1,convRule:z},{start:11378,length:1,convRule:n},{start:11379,length:1,convRule:r},{start:11380,length:1,convRule:z},{start:11381,length:1,convRule:n},{start:11382,length:1,convRule:r},{start:11383,length:5,convRule:z},{start:11388,length:2,convRule:Le},{start:11390,length:2,convRule:c6},{start:11392,length:1,convRule:n},{start:11393,length:1,convRule:r},{start:11394,length:1,convRule:n},{start:11395,length:1,convRule:r},{start:11396,length:1,convRule:n},{start:11397,length:1,convRule:r},{start:11398,length:1,convRule:n},{start:11399,length:1,convRule:r},{start:11400,length:1,convRule:n},{start:11401,length:1,convRule:r},{start:11402,length:1,convRule:n},{start:11403,length:1,convRule:r},{start:11404,length:1,convRule:n},{start:11405,length:1,convRule:r},{start:11406,length:1,convRule:n},{start:11407,length:1,convRule:r},{start:11408,length:1,convRule:n},{start:11409,length:1,convRule:r},{start:11410,length:1,convRule:n},{start:11411,length:1,convRule:r},{start:11412,length:1,convRule:n},{start:11413,length:1,convRule:r},{start:11414,length:1,convRule:n},{start:11415,length:1,convRule:r},{start:11416,length:1,convRule:n},{start:11417,length:1,convRule:r},{start:11418,length:1,convRule:n},{start:11419,length:1,convRule:r},{start:11420,length:1,convRule:n},{start:11421,length:1,convRule:r},{start:11422,length:1,convRule:n},{start:11423,length:1,convRule:r},{start:11424,length:1,convRule:n},{start:11425,length:1,convRule:r},{start:11426,length:1,convRule:n},{start:11427,length:1,convRule:r},{start:11428,length:1,convRule:n},{start:11429,length:1,convRule:r},{start:11430,length:1,convRule:n},{start:11431,length:1,convRule:r},{start:11432,length:1,convRule:n},{start:11433,length:1,convRule:r},{start:11434,length:1,convRule:n},{start:11435,length:1,convRule:r},{start:11436,length:1,convRule:n},{start:11437,length:1,convRule:r},{start:11438,length:1,convRule:n},{start:11439,length:1,convRule:r},{start:11440,length:1,convRule:n},{start:11441,length:1,convRule:r},{start:11442,length:1,convRule:n},{start:11443,length:1,convRule:r},{start:11444,length:1,convRule:n},{start:11445,length:1,convRule:r},{start:11446,length:1,convRule:n},{start:11447,length:1,convRule:r},{start:11448,length:1,convRule:n},{start:11449,length:1,convRule:r},{start:11450,length:1,convRule:n},{start:11451,length:1,convRule:r},{start:11452,length:1,convRule:n},{start:11453,length:1,convRule:r},{start:11454,length:1,convRule:n},{start:11455,length:1,convRule:r},{start:11456,length:1,convRule:n},{start:11457,length:1,convRule:r},{start:11458,length:1,convRule:n},{start:11459,length:1,convRule:r},{start:11460,length:1,convRule:n},{start:11461,length:1,convRule:r},{start:11462,length:1,convRule:n},{start:11463,length:1,convRule:r},{start:11464,length:1,convRule:n},{start:11465,length:1,convRule:r},{start:11466,length:1,convRule:n},{start:11467,length:1,convRule:r},{start:11468,length:1,convRule:n},{start:11469,length:1,convRule:r},{start:11470,length:1,convRule:n},{start:11471,length:1,convRule:r},{start:11472,length:1,convRule:n},{start:11473,length:1,convRule:r},{start:11474,length:1,convRule:n},{start:11475,length:1,convRule:r},{start:11476,length:1,convRule:n},{start:11477,length:1,convRule:r},{start:11478,length:1,convRule:n},{start:11479,length:1,convRule:r},{start:11480,length:1,convRule:n},{start:11481,length:1,convRule:r},{start:11482,length:1,convRule:n},{start:11483,length:1,convRule:r},{start:11484,length:1,convRule:n},{start:11485,length:1,convRule:r},{start:11486,length:1,convRule:n},{start:11487,length:1,convRule:r},{start:11488,length:1,convRule:n},{start:11489,length:1,convRule:r},{start:11490,length:1,convRule:n},{start:11491,length:1,convRule:r},{start:11492,length:1,convRule:z},{start:11493,length:6,convRule:E},{start:11499,length:1,convRule:n},{start:11500,length:1,convRule:r},{start:11501,length:1,convRule:n},{start:11502,length:1,convRule:r},{start:11503,length:3,convRule:p},{start:11506,length:1,convRule:n},{start:11507,length:1,convRule:r},{start:11513,length:4,convRule:C},{start:11517,length:1,convRule:Re},{start:11518,length:2,convRule:C},{start:11520,length:38,convRule:Mp},{start:11559,length:1,convRule:Mp},{start:11565,length:1,convRule:Mp},{start:11568,length:56,convRule:c},{start:11631,length:1,convRule:Le},{start:11632,length:1,convRule:C},{start:11647,length:1,convRule:p},{start:11648,length:23,convRule:c},{start:11680,length:7,convRule:c},{start:11688,length:7,convRule:c},{start:11696,length:7,convRule:c},{start:11704,length:7,convRule:c},{start:11712,length:7,convRule:c},{start:11720,length:7,convRule:c},{start:11728,length:7,convRule:c},{start:11736,length:7,convRule:c},{start:11744,length:32,convRule:p},{start:11776,length:2,convRule:C},{start:11778,length:1,convRule:Nr},{start:11779,length:1,convRule:jt},{start:11780,length:1,convRule:Nr},{start:11781,length:1,convRule:jt},{start:11782,length:3,convRule:C},{start:11785,length:1,convRule:Nr},{start:11786,length:1,convRule:jt},{start:11787,length:1,convRule:C},{start:11788,length:1,convRule:Nr},{start:11789,length:1,convRule:jt},{start:11790,length:9,convRule:C},{start:11799,length:1,convRule:Ll},{start:11800,length:2,convRule:C},{start:11802,length:1,convRule:Ll},{start:11803,length:1,convRule:C},{start:11804,length:1,convRule:Nr},{start:11805,length:1,convRule:jt},{start:11806,length:2,convRule:C},{start:11808,length:1,convRule:Nr},{start:11809,length:1,convRule:jt},{start:11810,length:1,convRule:_e},{start:11811,length:1,convRule:se},{start:11812,length:1,convRule:_e},{start:11813,length:1,convRule:se},{start:11814,length:1,convRule:_e},{start:11815,length:1,convRule:se},{start:11816,length:1,convRule:_e},{start:11817,length:1,convRule:se},{start:11818,length:5,convRule:C},{start:11823,length:1,convRule:Le},{start:11824,length:10,convRule:C},{start:11834,length:2,convRule:Ll},{start:11836,length:4,convRule:C},{start:11840,length:1,convRule:Ll},{start:11841,length:1,convRule:C},{start:11842,length:1,convRule:_e},{start:11843,length:13,convRule:C},{start:11856,length:2,convRule:E},{start:11858,length:1,convRule:C},{start:11904,length:26,convRule:E},{start:11931,length:89,convRule:E},{start:12032,length:214,convRule:E},{start:12272,length:12,convRule:E},{start:12288,length:1,convRule:Vv},{start:12289,length:3,convRule:C},{start:12292,length:1,convRule:E},{start:12293,length:1,convRule:Le},{start:12294,length:1,convRule:c},{start:12295,length:1,convRule:ln},{start:12296,length:1,convRule:_e},{start:12297,length:1,convRule:se},{start:12298,length:1,convRule:_e},{start:12299,length:1,convRule:se},{start:12300,length:1,convRule:_e},{start:12301,length:1,convRule:se},{start:12302,length:1,convRule:_e},{start:12303,length:1,convRule:se},{start:12304,length:1,convRule:_e},{start:12305,length:1,convRule:se},{start:12306,length:2,convRule:E},{start:12308,length:1,convRule:_e},{start:12309,length:1,convRule:se},{start:12310,length:1,convRule:_e},{start:12311,length:1,convRule:se},{start:12312,length:1,convRule:_e},{start:12313,length:1,convRule:se},{start:12314,length:1,convRule:_e},{start:12315,length:1,convRule:se},{start:12316,length:1,convRule:Ll},{start:12317,length:1,convRule:_e},{start:12318,length:2,convRule:se},{start:12320,length:1,convRule:E},{start:12321,length:9,convRule:ln},{start:12330,length:4,convRule:p},{start:12334,length:2,convRule:T},{start:12336,length:1,convRule:Ll},{start:12337,length:5,convRule:Le},{start:12342,length:2,convRule:E},{start:12344,length:3,convRule:ln},{start:12347,length:1,convRule:Le},{start:12348,length:1,convRule:c},{start:12349,length:1,convRule:C},{start:12350,length:2,convRule:E},{start:12353,length:86,convRule:c},{start:12441,length:2,convRule:p},{start:12443,length:2,convRule:tu},{start:12445,length:2,convRule:Le},{start:12447,length:1,convRule:c},{start:12448,length:1,convRule:Ll},{start:12449,length:90,convRule:c},{start:12539,length:1,convRule:C},{start:12540,length:3,convRule:Le},{start:12543,length:1,convRule:c},{start:12549,length:43,convRule:c},{start:12593,length:94,convRule:c},{start:12688,length:2,convRule:E},{start:12690,length:4,convRule:Re},{start:12694,length:10,convRule:E},{start:12704,length:32,convRule:c},{start:12736,length:36,convRule:E},{start:12784,length:16,convRule:c},{start:12800,length:31,convRule:E},{start:12832,length:10,convRule:Re},{start:12842,length:30,convRule:E},{start:12872,length:8,convRule:Re},{start:12880,length:1,convRule:E},{start:12881,length:15,convRule:Re},{start:12896,length:32,convRule:E},{start:12928,length:10,convRule:Re},{start:12938,length:39,convRule:E},{start:12977,length:15,convRule:Re},{start:12992,length:320,convRule:E},{start:13312,length:6592,convRule:c},{start:19904,length:64,convRule:E},{start:19968,length:20989,convRule:c},{start:40960,length:21,convRule:c},{start:40981,length:1,convRule:Le},{start:40982,length:1143,convRule:c},{start:42128,length:55,convRule:E},{start:42192,length:40,convRule:c},{start:42232,length:6,convRule:Le},{start:42238,length:2,convRule:C},{start:42240,length:268,convRule:c},{start:42508,length:1,convRule:Le},{start:42509,length:3,convRule:C},{start:42512,length:16,convRule:c},{start:42528,length:10,convRule:Se},{start:42538,length:2,convRule:c},{start:42560,length:1,convRule:n},{start:42561,length:1,convRule:r},{start:42562,length:1,convRule:n},{start:42563,length:1,convRule:r},{start:42564,length:1,convRule:n},{start:42565,length:1,convRule:r},{start:42566,length:1,convRule:n},{start:42567,length:1,convRule:r},{start:42568,length:1,convRule:n},{start:42569,length:1,convRule:r},{start:42570,length:1,convRule:n},{start:42571,length:1,convRule:r},{start:42572,length:1,convRule:n},{start:42573,length:1,convRule:r},{start:42574,length:1,convRule:n},{start:42575,length:1,convRule:r},{start:42576,length:1,convRule:n},{start:42577,length:1,convRule:r},{start:42578,length:1,convRule:n},{start:42579,length:1,convRule:r},{start:42580,length:1,convRule:n},{start:42581,length:1,convRule:r},{start:42582,length:1,convRule:n},{start:42583,length:1,convRule:r},{start:42584,length:1,convRule:n},{start:42585,length:1,convRule:r},{start:42586,length:1,convRule:n},{start:42587,length:1,convRule:r},{start:42588,length:1,convRule:n},{start:42589,length:1,convRule:r},{start:42590,length:1,convRule:n},{start:42591,length:1,convRule:r},{start:42592,length:1,convRule:n},{start:42593,length:1,convRule:r},{start:42594,length:1,convRule:n},{start:42595,length:1,convRule:r},{start:42596,length:1,convRule:n},{start:42597,length:1,convRule:r},{start:42598,length:1,convRule:n},{start:42599,length:1,convRule:r},{start:42600,length:1,convRule:n},{start:42601,length:1,convRule:r},{start:42602,length:1,convRule:n},{start:42603,length:1,convRule:r},{start:42604,length:1,convRule:n},{start:42605,length:1,convRule:r},{start:42606,length:1,convRule:c},{start:42607,length:1,convRule:p},{start:42608,length:3,convRule:UD},{start:42611,length:1,convRule:C},{start:42612,length:10,convRule:p},{start:42622,length:1,convRule:C},{start:42623,length:1,convRule:Le},{start:42624,length:1,convRule:n},{start:42625,length:1,convRule:r},{start:42626,length:1,convRule:n},{start:42627,length:1,convRule:r},{start:42628,length:1,convRule:n},{start:42629,length:1,convRule:r},{start:42630,length:1,convRule:n},{start:42631,length:1,convRule:r},{start:42632,length:1,convRule:n},{start:42633,length:1,convRule:r},{start:42634,length:1,convRule:n},{start:42635,length:1,convRule:r},{start:42636,length:1,convRule:n},{start:42637,length:1,convRule:r},{start:42638,length:1,convRule:n},{start:42639,length:1,convRule:r},{start:42640,length:1,convRule:n},{start:42641,length:1,convRule:r},{start:42642,length:1,convRule:n},{start:42643,length:1,convRule:r},{start:42644,length:1,convRule:n},{start:42645,length:1,convRule:r},{start:42646,length:1,convRule:n},{start:42647,length:1,convRule:r},{start:42648,length:1,convRule:n},{start:42649,length:1,convRule:r},{start:42650,length:1,convRule:n},{start:42651,length:1,convRule:r},{start:42652,length:2,convRule:Le},{start:42654,length:2,convRule:p},{start:42656,length:70,convRule:c},{start:42726,length:10,convRule:ln},{start:42736,length:2,convRule:p},{start:42738,length:6,convRule:C},{start:42752,length:23,convRule:tu},{start:42775,length:9,convRule:Le},{start:42784,length:2,convRule:tu},{start:42786,length:1,convRule:n},{start:42787,length:1,convRule:r},{start:42788,length:1,convRule:n},{start:42789,length:1,convRule:r},{start:42790,length:1,convRule:n},{start:42791,length:1,convRule:r},{start:42792,length:1,convRule:n},{start:42793,length:1,convRule:r},{start:42794,length:1,convRule:n},{start:42795,length:1,convRule:r},{start:42796,length:1,convRule:n},{start:42797,length:1,convRule:r},{start:42798,length:1,convRule:n},{start:42799,length:1,convRule:r},{start:42800,length:2,convRule:z},{start:42802,length:1,convRule:n},{start:42803,length:1,convRule:r},{start:42804,length:1,convRule:n},{start:42805,length:1,convRule:r},{start:42806,length:1,convRule:n},{start:42807,length:1,convRule:r},{start:42808,length:1,convRule:n},{start:42809,length:1,convRule:r},{start:42810,length:1,convRule:n},{start:42811,length:1,convRule:r},{start:42812,length:1,convRule:n},{start:42813,length:1,convRule:r},{start:42814,length:1,convRule:n},{start:42815,length:1,convRule:r},{start:42816,length:1,convRule:n},{start:42817,length:1,convRule:r},{start:42818,length:1,convRule:n},{start:42819,length:1,convRule:r},{start:42820,length:1,convRule:n},{start:42821,length:1,convRule:r},{start:42822,length:1,convRule:n},{start:42823,length:1,convRule:r},{start:42824,length:1,convRule:n},{start:42825,length:1,convRule:r},{start:42826,length:1,convRule:n},{start:42827,length:1,convRule:r},{start:42828,length:1,convRule:n},{start:42829,length:1,convRule:r},{start:42830,length:1,convRule:n},{start:42831,length:1,convRule:r},{start:42832,length:1,convRule:n},{start:42833,length:1,convRule:r},{start:42834,length:1,convRule:n},{start:42835,length:1,convRule:r},{start:42836,length:1,convRule:n},{start:42837,length:1,convRule:r},{start:42838,length:1,convRule:n},{start:42839,length:1,convRule:r},{start:42840,length:1,convRule:n},{start:42841,length:1,convRule:r},{start:42842,length:1,convRule:n},{start:42843,length:1,convRule:r},{start:42844,length:1,convRule:n},{start:42845,length:1,convRule:r},{start:42846,length:1,convRule:n},{start:42847,length:1,convRule:r},{start:42848,length:1,convRule:n},{start:42849,length:1,convRule:r},{start:42850,length:1,convRule:n},{start:42851,length:1,convRule:r},{start:42852,length:1,convRule:n},{start:42853,length:1,convRule:r},{start:42854,length:1,convRule:n},{start:42855,length:1,convRule:r},{start:42856,length:1,convRule:n},{start:42857,length:1,convRule:r},{start:42858,length:1,convRule:n},{start:42859,length:1,convRule:r},{start:42860,length:1,convRule:n},{start:42861,length:1,convRule:r},{start:42862,length:1,convRule:n},{start:42863,length:1,convRule:r},{start:42864,length:1,convRule:Le},{start:42865,length:8,convRule:z},{start:42873,length:1,convRule:n},{start:42874,length:1,convRule:r},{start:42875,length:1,convRule:n},{start:42876,length:1,convRule:r},{start:42877,length:1,convRule:_6},{start:42878,length:1,convRule:n},{start:42879,length:1,convRule:r},{start:42880,length:1,convRule:n},{start:42881,length:1,convRule:r},{start:42882,length:1,convRule:n},{start:42883,length:1,convRule:r},{start:42884,length:1,convRule:n},{start:42885,length:1,convRule:r},{start:42886,length:1,convRule:n},{start:42887,length:1,convRule:r},{start:42888,length:1,convRule:Le},{start:42889,length:2,convRule:tu},{start:42891,length:1,convRule:n},{start:42892,length:1,convRule:r},{start:42893,length:1,convRule:f6},{start:42894,length:1,convRule:z},{start:42895,length:1,convRule:c},{start:42896,length:1,convRule:n},{start:42897,length:1,convRule:r},{start:42898,length:1,convRule:n},{start:42899,length:1,convRule:r},{start:42900,length:1,convRule:TC},{start:42901,length:1,convRule:z},{start:42902,length:1,convRule:n},{start:42903,length:1,convRule:r},{start:42904,length:1,convRule:n},{start:42905,length:1,convRule:r},{start:42906,length:1,convRule:n},{start:42907,length:1,convRule:r},{start:42908,length:1,convRule:n},{start:42909,length:1,convRule:r},{start:42910,length:1,convRule:n},{start:42911,length:1,convRule:r},{start:42912,length:1,convRule:n},{start:42913,length:1,convRule:r},{start:42914,length:1,convRule:n},{start:42915,length:1,convRule:r},{start:42916,length:1,convRule:n},{start:42917,length:1,convRule:r},{start:42918,length:1,convRule:n},{start:42919,length:1,convRule:r},{start:42920,length:1,convRule:n},{start:42921,length:1,convRule:r},{start:42922,length:1,convRule:wG},{start:42923,length:1,convRule:p6},{start:42924,length:1,convRule:s6},{start:42925,length:1,convRule:D6},{start:42926,length:1,convRule:wG},{start:42927,length:1,convRule:z},{start:42928,length:1,convRule:R6},{start:42929,length:1,convRule:I6},{start:42930,length:1,convRule:G6},{start:42931,length:1,convRule:w6},{start:42932,length:1,convRule:n},{start:42933,length:1,convRule:r},{start:42934,length:1,convRule:n},{start:42935,length:1,convRule:r},{start:42936,length:1,convRule:n},{start:42937,length:1,convRule:r},{start:42938,length:1,convRule:n},{start:42939,length:1,convRule:r},{start:42940,length:1,convRule:n},{start:42941,length:1,convRule:r},{start:42942,length:1,convRule:n},{start:42943,length:1,convRule:r},{start:42946,length:1,convRule:n},{start:42947,length:1,convRule:r},{start:42948,length:1,convRule:d6},{start:42949,length:1,convRule:m6},{start:42950,length:1,convRule:h6},{start:42951,length:1,convRule:n},{start:42952,length:1,convRule:r},{start:42953,length:1,convRule:n},{start:42954,length:1,convRule:r},{start:42997,length:1,convRule:n},{start:42998,length:1,convRule:r},{start:42999,length:1,convRule:c},{start:43e3,length:2,convRule:Le},{start:43002,length:1,convRule:z},{start:43003,length:7,convRule:c},{start:43010,length:1,convRule:p},{start:43011,length:3,convRule:c},{start:43014,length:1,convRule:p},{start:43015,length:4,convRule:c},{start:43019,length:1,convRule:p},{start:43020,length:23,convRule:c},{start:43043,length:2,convRule:T},{start:43045,length:2,convRule:p},{start:43047,length:1,convRule:T},{start:43048,length:4,convRule:E},{start:43052,length:1,convRule:p},{start:43056,length:6,convRule:Re},{start:43062,length:2,convRule:E},{start:43064,length:1,convRule:tl},{start:43065,length:1,convRule:E},{start:43072,length:52,convRule:c},{start:43124,length:4,convRule:C},{start:43136,length:2,convRule:T},{start:43138,length:50,convRule:c},{start:43188,length:16,convRule:T},{start:43204,length:2,convRule:p},{start:43214,length:2,convRule:C},{start:43216,length:10,convRule:Se},{start:43232,length:18,convRule:p},{start:43250,length:6,convRule:c},{start:43256,length:3,convRule:C},{start:43259,length:1,convRule:c},{start:43260,length:1,convRule:C},{start:43261,length:2,convRule:c},{start:43263,length:1,convRule:p},{start:43264,length:10,convRule:Se},{start:43274,length:28,convRule:c},{start:43302,length:8,convRule:p},{start:43310,length:2,convRule:C},{start:43312,length:23,convRule:c},{start:43335,length:11,convRule:p},{start:43346,length:2,convRule:T},{start:43359,length:1,convRule:C},{start:43360,length:29,convRule:c},{start:43392,length:3,convRule:p},{start:43395,length:1,convRule:T},{start:43396,length:47,convRule:c},{start:43443,length:1,convRule:p},{start:43444,length:2,convRule:T},{start:43446,length:4,convRule:p},{start:43450,length:2,convRule:T},{start:43452,length:2,convRule:p},{start:43454,length:3,convRule:T},{start:43457,length:13,convRule:C},{start:43471,length:1,convRule:Le},{start:43472,length:10,convRule:Se},{start:43486,length:2,convRule:C},{start:43488,length:5,convRule:c},{start:43493,length:1,convRule:p},{start:43494,length:1,convRule:Le},{start:43495,length:9,convRule:c},{start:43504,length:10,convRule:Se},{start:43514,length:5,convRule:c},{start:43520,length:41,convRule:c},{start:43561,length:6,convRule:p},{start:43567,length:2,convRule:T},{start:43569,length:2,convRule:p},{start:43571,length:2,convRule:T},{start:43573,length:2,convRule:p},{start:43584,length:3,convRule:c},{start:43587,length:1,convRule:p},{start:43588,length:8,convRule:c},{start:43596,length:1,convRule:p},{start:43597,length:1,convRule:T},{start:43600,length:10,convRule:Se},{start:43612,length:4,convRule:C},{start:43616,length:16,convRule:c},{start:43632,length:1,convRule:Le},{start:43633,length:6,convRule:c},{start:43639,length:3,convRule:E},{start:43642,length:1,convRule:c},{start:43643,length:1,convRule:T},{start:43644,length:1,convRule:p},{start:43645,length:1,convRule:T},{start:43646,length:50,convRule:c},{start:43696,length:1,convRule:p},{start:43697,length:1,convRule:c},{start:43698,length:3,convRule:p},{start:43701,length:2,convRule:c},{start:43703,length:2,convRule:p},{start:43705,length:5,convRule:c},{start:43710,length:2,convRule:p},{start:43712,length:1,convRule:c},{start:43713,length:1,convRule:p},{start:43714,length:1,convRule:c},{start:43739,length:2,convRule:c},{start:43741,length:1,convRule:Le},{start:43742,length:2,convRule:C},{start:43744,length:11,convRule:c},{start:43755,length:1,convRule:T},{start:43756,length:2,convRule:p},{start:43758,length:2,convRule:T},{start:43760,length:2,convRule:C},{start:43762,length:1,convRule:c},{start:43763,length:2,convRule:Le},{start:43765,length:1,convRule:T},{start:43766,length:1,convRule:p},{start:43777,length:6,convRule:c},{start:43785,length:6,convRule:c},{start:43793,length:6,convRule:c},{start:43808,length:7,convRule:c},{start:43816,length:7,convRule:c},{start:43824,length:35,convRule:z},{start:43859,length:1,convRule:MC},{start:43860,length:7,convRule:z},{start:43867,length:1,convRule:tu},{start:43868,length:4,convRule:Le},{start:43872,length:9,convRule:z},{start:43881,length:1,convRule:Le},{start:43882,length:2,convRule:tu},{start:43888,length:80,convRule:SC},{start:43968,length:35,convRule:c},{start:44003,length:2,convRule:T},{start:44005,length:1,convRule:p},{start:44006,length:2,convRule:T},{start:44008,length:1,convRule:p},{start:44009,length:2,convRule:T},{start:44011,length:1,convRule:C},{start:44012,length:1,convRule:T},{start:44013,length:1,convRule:p},{start:44016,length:10,convRule:Se},{start:44032,length:11172,convRule:c},{start:55216,length:23,convRule:c},{start:55243,length:49,convRule:c},{start:55296,length:896,convRule:Wh},{start:56192,length:128,convRule:Wh},{start:56320,length:1024,convRule:Wh},{start:57344,length:6400,convRule:Bh},{start:63744,length:366,convRule:c},{start:64112,length:106,convRule:c},{start:64256,length:7,convRule:z},{start:64275,length:5,convRule:z},{start:64285,length:1,convRule:c},{start:64286,length:1,convRule:p},{start:64287,length:10,convRule:c},{start:64297,length:1,convRule:Fe},{start:64298,length:13,convRule:c},{start:64312,length:5,convRule:c},{start:64318,length:1,convRule:c},{start:64320,length:2,convRule:c},{start:64323,length:2,convRule:c},{start:64326,length:108,convRule:c},{start:64434,length:16,convRule:tu},{start:64467,length:363,convRule:c},{start:64830,length:1,convRule:se},{start:64831,length:1,convRule:_e},{start:64848,length:64,convRule:c},{start:64914,length:54,convRule:c},{start:65008,length:12,convRule:c},{start:65020,length:1,convRule:tl},{start:65021,length:1,convRule:E},{start:65024,length:16,convRule:p},{start:65040,length:7,convRule:C},{start:65047,length:1,convRule:_e},{start:65048,length:1,convRule:se},{start:65049,length:1,convRule:C},{start:65056,length:16,convRule:p},{start:65072,length:1,convRule:C},{start:65073,length:2,convRule:Ll},{start:65075,length:2,convRule:yp},{start:65077,length:1,convRule:_e},{start:65078,length:1,convRule:se},{start:65079,length:1,convRule:_e},{start:65080,length:1,convRule:se},{start:65081,length:1,convRule:_e},{start:65082,length:1,convRule:se},{start:65083,length:1,convRule:_e},{start:65084,length:1,convRule:se},{start:65085,length:1,convRule:_e},{start:65086,length:1,convRule:se},{start:65087,length:1,convRule:_e},{start:65088,length:1,convRule:se},{start:65089,length:1,convRule:_e},{start:65090,length:1,convRule:se},{start:65091,length:1,convRule:_e},{start:65092,length:1,convRule:se},{start:65093,length:2,convRule:C},{start:65095,length:1,convRule:_e},{start:65096,length:1,convRule:se},{start:65097,length:4,convRule:C},{start:65101,length:3,convRule:yp},{start:65104,length:3,convRule:C},{start:65108,length:4,convRule:C},{start:65112,length:1,convRule:Ll},{start:65113,length:1,convRule:_e},{start:65114,length:1,convRule:se},{start:65115,length:1,convRule:_e},{start:65116,length:1,convRule:se},{start:65117,length:1,convRule:_e},{start:65118,length:1,convRule:se},{start:65119,length:3,convRule:C},{start:65122,length:1,convRule:Fe},{start:65123,length:1,convRule:Ll},{start:65124,length:3,convRule:Fe},{start:65128,length:1,convRule:C},{start:65129,length:1,convRule:tl},{start:65130,length:2,convRule:C},{start:65136,length:5,convRule:c},{start:65142,length:135,convRule:c},{start:65279,length:1,convRule:pl},{start:65281,length:3,convRule:C},{start:65284,length:1,convRule:tl},{start:65285,length:3,convRule:C},{start:65288,length:1,convRule:_e},{start:65289,length:1,convRule:se},{start:65290,length:1,convRule:C},{start:65291,length:1,convRule:Fe},{start:65292,length:1,convRule:C},{start:65293,length:1,convRule:Ll},{start:65294,length:2,convRule:C},{start:65296,length:10,convRule:Se},{start:65306,length:2,convRule:C},{start:65308,length:3,convRule:Fe},{start:65311,length:2,convRule:C},{start:65313,length:26,convRule:Al},{start:65339,length:1,convRule:_e},{start:65340,length:1,convRule:C},{start:65341,length:1,convRule:se},{start:65342,length:1,convRule:tu},{start:65343,length:1,convRule:yp},{start:65344,length:1,convRule:tu},{start:65345,length:26,convRule:Nl},{start:65371,length:1,convRule:_e},{start:65372,length:1,convRule:Fe},{start:65373,length:1,convRule:se},{start:65374,length:1,convRule:Fe},{start:65375,length:1,convRule:_e},{start:65376,length:1,convRule:se},{start:65377,length:1,convRule:C},{start:65378,length:1,convRule:_e},{start:65379,length:1,convRule:se},{start:65380,length:2,convRule:C},{start:65382,length:10,convRule:c},{start:65392,length:1,convRule:Le},{start:65393,length:45,convRule:c},{start:65438,length:2,convRule:Le},{start:65440,length:31,convRule:c},{start:65474,length:6,convRule:c},{start:65482,length:6,convRule:c},{start:65490,length:6,convRule:c},{start:65498,length:3,convRule:c},{start:65504,length:2,convRule:tl},{start:65506,length:1,convRule:Fe},{start:65507,length:1,convRule:tu},{start:65508,length:1,convRule:E},{start:65509,length:2,convRule:tl},{start:65512,length:1,convRule:E},{start:65513,length:4,convRule:Fe},{start:65517,length:2,convRule:E},{start:65529,length:3,convRule:pl},{start:65532,length:2,convRule:E},{start:65536,length:12,convRule:c},{start:65549,length:26,convRule:c},{start:65576,length:19,convRule:c},{start:65596,length:2,convRule:c},{start:65599,length:15,convRule:c},{start:65616,length:14,convRule:c},{start:65664,length:123,convRule:c},{start:65792,length:3,convRule:C},{start:65799,length:45,convRule:Re},{start:65847,length:9,convRule:E},{start:65856,length:53,convRule:ln},{start:65909,length:4,convRule:Re},{start:65913,length:17,convRule:E},{start:65930,length:2,convRule:Re},{start:65932,length:3,convRule:E},{start:65936,length:13,convRule:E},{start:65952,length:1,convRule:E},{start:66e3,length:45,convRule:E},{start:66045,length:1,convRule:p},{start:66176,length:29,convRule:c},{start:66208,length:49,convRule:c},{start:66272,length:1,convRule:p},{start:66273,length:27,convRule:Re},{start:66304,length:32,convRule:c},{start:66336,length:4,convRule:Re},{start:66349,length:20,convRule:c},{start:66369,length:1,convRule:ln},{start:66370,length:8,convRule:c},{start:66378,length:1,convRule:ln},{start:66384,length:38,convRule:c},{start:66422,length:5,convRule:p},{start:66432,length:30,convRule:c},{start:66463,length:1,convRule:C},{start:66464,length:36,convRule:c},{start:66504,length:8,convRule:c},{start:66512,length:1,convRule:C},{start:66513,length:5,convRule:ln},{start:66560,length:40,convRule:dG},{start:66600,length:40,convRule:SG},{start:66640,length:78,convRule:c},{start:66720,length:10,convRule:Se},{start:66736,length:36,convRule:dG},{start:66776,length:36,convRule:SG},{start:66816,length:40,convRule:c},{start:66864,length:52,convRule:c},{start:66927,length:1,convRule:C},{start:67072,length:311,convRule:c},{start:67392,length:22,convRule:c},{start:67424,length:8,convRule:c},{start:67584,length:6,convRule:c},{start:67592,length:1,convRule:c},{start:67594,length:44,convRule:c},{start:67639,length:2,convRule:c},{start:67644,length:1,convRule:c},{start:67647,length:23,convRule:c},{start:67671,length:1,convRule:C},{start:67672,length:8,convRule:Re},{start:67680,length:23,convRule:c},{start:67703,length:2,convRule:E},{start:67705,length:7,convRule:Re},{start:67712,length:31,convRule:c},{start:67751,length:9,convRule:Re},{start:67808,length:19,convRule:c},{start:67828,length:2,convRule:c},{start:67835,length:5,convRule:Re},{start:67840,length:22,convRule:c},{start:67862,length:6,convRule:Re},{start:67871,length:1,convRule:C},{start:67872,length:26,convRule:c},{start:67903,length:1,convRule:C},{start:67968,length:56,convRule:c},{start:68028,length:2,convRule:Re},{start:68030,length:2,convRule:c},{start:68032,length:16,convRule:Re},{start:68050,length:46,convRule:Re},{start:68096,length:1,convRule:c},{start:68097,length:3,convRule:p},{start:68101,length:2,convRule:p},{start:68108,length:4,convRule:p},{start:68112,length:4,convRule:c},{start:68117,length:3,convRule:c},{start:68121,length:29,convRule:c},{start:68152,length:3,convRule:p},{start:68159,length:1,convRule:p},{start:68160,length:9,convRule:Re},{start:68176,length:9,convRule:C},{start:68192,length:29,convRule:c},{start:68221,length:2,convRule:Re},{start:68223,length:1,convRule:C},{start:68224,length:29,convRule:c},{start:68253,length:3,convRule:Re},{start:68288,length:8,convRule:c},{start:68296,length:1,convRule:E},{start:68297,length:28,convRule:c},{start:68325,length:2,convRule:p},{start:68331,length:5,convRule:Re},{start:68336,length:7,convRule:C},{start:68352,length:54,convRule:c},{start:68409,length:7,convRule:C},{start:68416,length:22,convRule:c},{start:68440,length:8,convRule:Re},{start:68448,length:19,convRule:c},{start:68472,length:8,convRule:Re},{start:68480,length:18,convRule:c},{start:68505,length:4,convRule:C},{start:68521,length:7,convRule:Re},{start:68608,length:73,convRule:c},{start:68736,length:51,convRule:yG},{start:68800,length:51,convRule:FG},{start:68858,length:6,convRule:Re},{start:68864,length:36,convRule:c},{start:68900,length:4,convRule:p},{start:68912,length:10,convRule:Se},{start:69216,length:31,convRule:Re},{start:69248,length:42,convRule:c},{start:69291,length:2,convRule:p},{start:69293,length:1,convRule:Ll},{start:69296,length:2,convRule:c},{start:69376,length:29,convRule:c},{start:69405,length:10,convRule:Re},{start:69415,length:1,convRule:c},{start:69424,length:22,convRule:c},{start:69446,length:11,convRule:p},{start:69457,length:4,convRule:Re},{start:69461,length:5,convRule:C},{start:69552,length:21,convRule:c},{start:69573,length:7,convRule:Re},{start:69600,length:23,convRule:c},{start:69632,length:1,convRule:T},{start:69633,length:1,convRule:p},{start:69634,length:1,convRule:T},{start:69635,length:53,convRule:c},{start:69688,length:15,convRule:p},{start:69703,length:7,convRule:C},{start:69714,length:20,convRule:Re},{start:69734,length:10,convRule:Se},{start:69759,length:3,convRule:p},{start:69762,length:1,convRule:T},{start:69763,length:45,convRule:c},{start:69808,length:3,convRule:T},{start:69811,length:4,convRule:p},{start:69815,length:2,convRule:T},{start:69817,length:2,convRule:p},{start:69819,length:2,convRule:C},{start:69821,length:1,convRule:pl},{start:69822,length:4,convRule:C},{start:69837,length:1,convRule:pl},{start:69840,length:25,convRule:c},{start:69872,length:10,convRule:Se},{start:69888,length:3,convRule:p},{start:69891,length:36,convRule:c},{start:69927,length:5,convRule:p},{start:69932,length:1,convRule:T},{start:69933,length:8,convRule:p},{start:69942,length:10,convRule:Se},{start:69952,length:4,convRule:C},{start:69956,length:1,convRule:c},{start:69957,length:2,convRule:T},{start:69959,length:1,convRule:c},{start:69968,length:35,convRule:c},{start:70003,length:1,convRule:p},{start:70004,length:2,convRule:C},{start:70006,length:1,convRule:c},{start:70016,length:2,convRule:p},{start:70018,length:1,convRule:T},{start:70019,length:48,convRule:c},{start:70067,length:3,convRule:T},{start:70070,length:9,convRule:p},{start:70079,length:2,convRule:T},{start:70081,length:4,convRule:c},{start:70085,length:4,convRule:C},{start:70089,length:4,convRule:p},{start:70093,length:1,convRule:C},{start:70094,length:1,convRule:T},{start:70095,length:1,convRule:p},{start:70096,length:10,convRule:Se},{start:70106,length:1,convRule:c},{start:70107,length:1,convRule:C},{start:70108,length:1,convRule:c},{start:70109,length:3,convRule:C},{start:70113,length:20,convRule:Re},{start:70144,length:18,convRule:c},{start:70163,length:25,convRule:c},{start:70188,length:3,convRule:T},{start:70191,length:3,convRule:p},{start:70194,length:2,convRule:T},{start:70196,length:1,convRule:p},{start:70197,length:1,convRule:T},{start:70198,length:2,convRule:p},{start:70200,length:6,convRule:C},{start:70206,length:1,convRule:p},{start:70272,length:7,convRule:c},{start:70280,length:1,convRule:c},{start:70282,length:4,convRule:c},{start:70287,length:15,convRule:c},{start:70303,length:10,convRule:c},{start:70313,length:1,convRule:C},{start:70320,length:47,convRule:c},{start:70367,length:1,convRule:p},{start:70368,length:3,convRule:T},{start:70371,length:8,convRule:p},{start:70384,length:10,convRule:Se},{start:70400,length:2,convRule:p},{start:70402,length:2,convRule:T},{start:70405,length:8,convRule:c},{start:70415,length:2,convRule:c},{start:70419,length:22,convRule:c},{start:70442,length:7,convRule:c},{start:70450,length:2,convRule:c},{start:70453,length:5,convRule:c},{start:70459,length:2,convRule:p},{start:70461,length:1,convRule:c},{start:70462,length:2,convRule:T},{start:70464,length:1,convRule:p},{start:70465,length:4,convRule:T},{start:70471,length:2,convRule:T},{start:70475,length:3,convRule:T},{start:70480,length:1,convRule:c},{start:70487,length:1,convRule:T},{start:70493,length:5,convRule:c},{start:70498,length:2,convRule:T},{start:70502,length:7,convRule:p},{start:70512,length:5,convRule:p},{start:70656,length:53,convRule:c},{start:70709,length:3,convRule:T},{start:70712,length:8,convRule:p},{start:70720,length:2,convRule:T},{start:70722,length:3,convRule:p},{start:70725,length:1,convRule:T},{start:70726,length:1,convRule:p},{start:70727,length:4,convRule:c},{start:70731,length:5,convRule:C},{start:70736,length:10,convRule:Se},{start:70746,length:2,convRule:C},{start:70749,length:1,convRule:C},{start:70750,length:1,convRule:p},{start:70751,length:3,convRule:c},{start:70784,length:48,convRule:c},{start:70832,length:3,convRule:T},{start:70835,length:6,convRule:p},{start:70841,length:1,convRule:T},{start:70842,length:1,convRule:p},{start:70843,length:4,convRule:T},{start:70847,length:2,convRule:p},{start:70849,length:1,convRule:T},{start:70850,length:2,convRule:p},{start:70852,length:2,convRule:c},{start:70854,length:1,convRule:C},{start:70855,length:1,convRule:c},{start:70864,length:10,convRule:Se},{start:71040,length:47,convRule:c},{start:71087,length:3,convRule:T},{start:71090,length:4,convRule:p},{start:71096,length:4,convRule:T},{start:71100,length:2,convRule:p},{start:71102,length:1,convRule:T},{start:71103,length:2,convRule:p},{start:71105,length:23,convRule:C},{start:71128,length:4,convRule:c},{start:71132,length:2,convRule:p},{start:71168,length:48,convRule:c},{start:71216,length:3,convRule:T},{start:71219,length:8,convRule:p},{start:71227,length:2,convRule:T},{start:71229,length:1,convRule:p},{start:71230,length:1,convRule:T},{start:71231,length:2,convRule:p},{start:71233,length:3,convRule:C},{start:71236,length:1,convRule:c},{start:71248,length:10,convRule:Se},{start:71264,length:13,convRule:C},{start:71296,length:43,convRule:c},{start:71339,length:1,convRule:p},{start:71340,length:1,convRule:T},{start:71341,length:1,convRule:p},{start:71342,length:2,convRule:T},{start:71344,length:6,convRule:p},{start:71350,length:1,convRule:T},{start:71351,length:1,convRule:p},{start:71352,length:1,convRule:c},{start:71360,length:10,convRule:Se},{start:71424,length:27,convRule:c},{start:71453,length:3,convRule:p},{start:71456,length:2,convRule:T},{start:71458,length:4,convRule:p},{start:71462,length:1,convRule:T},{start:71463,length:5,convRule:p},{start:71472,length:10,convRule:Se},{start:71482,length:2,convRule:Re},{start:71484,length:3,convRule:C},{start:71487,length:1,convRule:E},{start:71680,length:44,convRule:c},{start:71724,length:3,convRule:T},{start:71727,length:9,convRule:p},{start:71736,length:1,convRule:T},{start:71737,length:2,convRule:p},{start:71739,length:1,convRule:C},{start:71840,length:32,convRule:Al},{start:71872,length:32,convRule:Nl},{start:71904,length:10,convRule:Se},{start:71914,length:9,convRule:Re},{start:71935,length:8,convRule:c},{start:71945,length:1,convRule:c},{start:71948,length:8,convRule:c},{start:71957,length:2,convRule:c},{start:71960,length:24,convRule:c},{start:71984,length:6,convRule:T},{start:71991,length:2,convRule:T},{start:71995,length:2,convRule:p},{start:71997,length:1,convRule:T},{start:71998,length:1,convRule:p},{start:71999,length:1,convRule:c},{start:72e3,length:1,convRule:T},{start:72001,length:1,convRule:c},{start:72002,length:1,convRule:T},{start:72003,length:1,convRule:p},{start:72004,length:3,convRule:C},{start:72016,length:10,convRule:Se},{start:72096,length:8,convRule:c},{start:72106,length:39,convRule:c},{start:72145,length:3,convRule:T},{start:72148,length:4,convRule:p},{start:72154,length:2,convRule:p},{start:72156,length:4,convRule:T},{start:72160,length:1,convRule:p},{start:72161,length:1,convRule:c},{start:72162,length:1,convRule:C},{start:72163,length:1,convRule:c},{start:72164,length:1,convRule:T},{start:72192,length:1,convRule:c},{start:72193,length:10,convRule:p},{start:72203,length:40,convRule:c},{start:72243,length:6,convRule:p},{start:72249,length:1,convRule:T},{start:72250,length:1,convRule:c},{start:72251,length:4,convRule:p},{start:72255,length:8,convRule:C},{start:72263,length:1,convRule:p},{start:72272,length:1,convRule:c},{start:72273,length:6,convRule:p},{start:72279,length:2,convRule:T},{start:72281,length:3,convRule:p},{start:72284,length:46,convRule:c},{start:72330,length:13,convRule:p},{start:72343,length:1,convRule:T},{start:72344,length:2,convRule:p},{start:72346,length:3,convRule:C},{start:72349,length:1,convRule:c},{start:72350,length:5,convRule:C},{start:72384,length:57,convRule:c},{start:72704,length:9,convRule:c},{start:72714,length:37,convRule:c},{start:72751,length:1,convRule:T},{start:72752,length:7,convRule:p},{start:72760,length:6,convRule:p},{start:72766,length:1,convRule:T},{start:72767,length:1,convRule:p},{start:72768,length:1,convRule:c},{start:72769,length:5,convRule:C},{start:72784,length:10,convRule:Se},{start:72794,length:19,convRule:Re},{start:72816,length:2,convRule:C},{start:72818,length:30,convRule:c},{start:72850,length:22,convRule:p},{start:72873,length:1,convRule:T},{start:72874,length:7,convRule:p},{start:72881,length:1,convRule:T},{start:72882,length:2,convRule:p},{start:72884,length:1,convRule:T},{start:72885,length:2,convRule:p},{start:72960,length:7,convRule:c},{start:72968,length:2,convRule:c},{start:72971,length:38,convRule:c},{start:73009,length:6,convRule:p},{start:73018,length:1,convRule:p},{start:73020,length:2,convRule:p},{start:73023,length:7,convRule:p},{start:73030,length:1,convRule:c},{start:73031,length:1,convRule:p},{start:73040,length:10,convRule:Se},{start:73056,length:6,convRule:c},{start:73063,length:2,convRule:c},{start:73066,length:32,convRule:c},{start:73098,length:5,convRule:T},{start:73104,length:2,convRule:p},{start:73107,length:2,convRule:T},{start:73109,length:1,convRule:p},{start:73110,length:1,convRule:T},{start:73111,length:1,convRule:p},{start:73112,length:1,convRule:c},{start:73120,length:10,convRule:Se},{start:73440,length:19,convRule:c},{start:73459,length:2,convRule:p},{start:73461,length:2,convRule:T},{start:73463,length:2,convRule:C},{start:73648,length:1,convRule:c},{start:73664,length:21,convRule:Re},{start:73685,length:8,convRule:E},{start:73693,length:4,convRule:tl},{start:73697,length:17,convRule:E},{start:73727,length:1,convRule:C},{start:73728,length:922,convRule:c},{start:74752,length:111,convRule:ln},{start:74864,length:5,convRule:C},{start:74880,length:196,convRule:c},{start:77824,length:1071,convRule:c},{start:78896,length:9,convRule:pl},{start:82944,length:583,convRule:c},{start:92160,length:569,convRule:c},{start:92736,length:31,convRule:c},{start:92768,length:10,convRule:Se},{start:92782,length:2,convRule:C},{start:92880,length:30,convRule:c},{start:92912,length:5,convRule:p},{start:92917,length:1,convRule:C},{start:92928,length:48,convRule:c},{start:92976,length:7,convRule:p},{start:92983,length:5,convRule:C},{start:92988,length:4,convRule:E},{start:92992,length:4,convRule:Le},{start:92996,length:1,convRule:C},{start:92997,length:1,convRule:E},{start:93008,length:10,convRule:Se},{start:93019,length:7,convRule:Re},{start:93027,length:21,convRule:c},{start:93053,length:19,convRule:c},{start:93760,length:32,convRule:Al},{start:93792,length:32,convRule:Nl},{start:93824,length:23,convRule:Re},{start:93847,length:4,convRule:C},{start:93952,length:75,convRule:c},{start:94031,length:1,convRule:p},{start:94032,length:1,convRule:c},{start:94033,length:55,convRule:T},{start:94095,length:4,convRule:p},{start:94099,length:13,convRule:Le},{start:94176,length:2,convRule:Le},{start:94178,length:1,convRule:C},{start:94179,length:1,convRule:Le},{start:94180,length:1,convRule:p},{start:94192,length:2,convRule:T},{start:94208,length:6136,convRule:c},{start:100352,length:1238,convRule:c},{start:101632,length:9,convRule:c},{start:110592,length:287,convRule:c},{start:110928,length:3,convRule:c},{start:110948,length:4,convRule:c},{start:110960,length:396,convRule:c},{start:113664,length:107,convRule:c},{start:113776,length:13,convRule:c},{start:113792,length:9,convRule:c},{start:113808,length:10,convRule:c},{start:113820,length:1,convRule:E},{start:113821,length:2,convRule:p},{start:113823,length:1,convRule:C},{start:113824,length:4,convRule:pl},{start:118784,length:246,convRule:E},{start:119040,length:39,convRule:E},{start:119081,length:60,convRule:E},{start:119141,length:2,convRule:T},{start:119143,length:3,convRule:p},{start:119146,length:3,convRule:E},{start:119149,length:6,convRule:T},{start:119155,length:8,convRule:pl},{start:119163,length:8,convRule:p},{start:119171,length:2,convRule:E},{start:119173,length:7,convRule:p},{start:119180,length:30,convRule:E},{start:119210,length:4,convRule:p},{start:119214,length:59,convRule:E},{start:119296,length:66,convRule:E},{start:119362,length:3,convRule:p},{start:119365,length:1,convRule:E},{start:119520,length:20,convRule:Re},{start:119552,length:87,convRule:E},{start:119648,length:25,convRule:Re},{start:119808,length:26,convRule:ia},{start:119834,length:26,convRule:z},{start:119860,length:26,convRule:ia},{start:119886,length:7,convRule:z},{start:119894,length:18,convRule:z},{start:119912,length:26,convRule:ia},{start:119938,length:26,convRule:z},{start:119964,length:1,convRule:ia},{start:119966,length:2,convRule:ia},{start:119970,length:1,convRule:ia},{start:119973,length:2,convRule:ia},{start:119977,length:4,convRule:ia},{start:119982,length:8,convRule:ia},{start:119990,length:4,convRule:z},{start:119995,length:1,convRule:z},{start:119997,length:7,convRule:z},{start:120005,length:11,convRule:z},{start:120016,length:26,convRule:ia},{start:120042,length:26,convRule:z},{start:120068,length:2,convRule:ia},{start:120071,length:4,convRule:ia},{start:120077,length:8,convRule:ia},{start:120086,length:7,convRule:ia},{start:120094,length:26,convRule:z},{start:120120,length:2,convRule:ia},{start:120123,length:4,convRule:ia},{start:120128,length:5,convRule:ia},{start:120134,length:1,convRule:ia},{start:120138,length:7,convRule:ia},{start:120146,length:26,convRule:z},{start:120172,length:26,convRule:ia},{start:120198,length:26,convRule:z},{start:120224,length:26,convRule:ia},{start:120250,length:26,convRule:z},{start:120276,length:26,convRule:ia},{start:120302,length:26,convRule:z},{start:120328,length:26,convRule:ia},{start:120354,length:26,convRule:z},{start:120380,length:26,convRule:ia},{start:120406,length:26,convRule:z},{start:120432,length:26,convRule:ia},{start:120458,length:28,convRule:z},{start:120488,length:25,convRule:ia},{start:120513,length:1,convRule:Fe},{start:120514,length:25,convRule:z},{start:120539,length:1,convRule:Fe},{start:120540,length:6,convRule:z},{start:120546,length:25,convRule:ia},{start:120571,length:1,convRule:Fe},{start:120572,length:25,convRule:z},{start:120597,length:1,convRule:Fe},{start:120598,length:6,convRule:z},{start:120604,length:25,convRule:ia},{start:120629,length:1,convRule:Fe},{start:120630,length:25,convRule:z},{start:120655,length:1,convRule:Fe},{start:120656,length:6,convRule:z},{start:120662,length:25,convRule:ia},{start:120687,length:1,convRule:Fe},{start:120688,length:25,convRule:z},{start:120713,length:1,convRule:Fe},{start:120714,length:6,convRule:z},{start:120720,length:25,convRule:ia},{start:120745,length:1,convRule:Fe},{start:120746,length:25,convRule:z},{start:120771,length:1,convRule:Fe},{start:120772,length:6,convRule:z},{start:120778,length:1,convRule:ia},{start:120779,length:1,convRule:z},{start:120782,length:50,convRule:Se},{start:120832,length:512,convRule:E},{start:121344,length:55,convRule:p},{start:121399,length:4,convRule:E},{start:121403,length:50,convRule:p},{start:121453,length:8,convRule:E},{start:121461,length:1,convRule:p},{start:121462,length:14,convRule:E},{start:121476,length:1,convRule:p},{start:121477,length:2,convRule:E},{start:121479,length:5,convRule:C},{start:121499,length:5,convRule:p},{start:121505,length:15,convRule:p},{start:122880,length:7,convRule:p},{start:122888,length:17,convRule:p},{start:122907,length:7,convRule:p},{start:122915,length:2,convRule:p},{start:122918,length:5,convRule:p},{start:123136,length:45,convRule:c},{start:123184,length:7,convRule:p},{start:123191,length:7,convRule:Le},{start:123200,length:10,convRule:Se},{start:123214,length:1,convRule:c},{start:123215,length:1,convRule:E},{start:123584,length:44,convRule:c},{start:123628,length:4,convRule:p},{start:123632,length:10,convRule:Se},{start:123647,length:1,convRule:tl},{start:124928,length:197,convRule:c},{start:125127,length:9,convRule:Re},{start:125136,length:7,convRule:p},{start:125184,length:34,convRule:g6},{start:125218,length:34,convRule:LC},{start:125252,length:7,convRule:p},{start:125259,length:1,convRule:Le},{start:125264,length:10,convRule:Se},{start:125278,length:2,convRule:C},{start:126065,length:59,convRule:Re},{start:126124,length:1,convRule:E},{start:126125,length:3,convRule:Re},{start:126128,length:1,convRule:tl},{start:126129,length:4,convRule:Re},{start:126209,length:45,convRule:Re},{start:126254,length:1,convRule:E},{start:126255,length:15,convRule:Re},{start:126464,length:4,convRule:c},{start:126469,length:27,convRule:c},{start:126497,length:2,convRule:c},{start:126500,length:1,convRule:c},{start:126503,length:1,convRule:c},{start:126505,length:10,convRule:c},{start:126516,length:4,convRule:c},{start:126521,length:1,convRule:c},{start:126523,length:1,convRule:c},{start:126530,length:1,convRule:c},{start:126535,length:1,convRule:c},{start:126537,length:1,convRule:c},{start:126539,length:1,convRule:c},{start:126541,length:3,convRule:c},{start:126545,length:2,convRule:c},{start:126548,length:1,convRule:c},{start:126551,length:1,convRule:c},{start:126553,length:1,convRule:c},{start:126555,length:1,convRule:c},{start:126557,length:1,convRule:c},{start:126559,length:1,convRule:c},{start:126561,length:2,convRule:c},{start:126564,length:1,convRule:c},{start:126567,length:4,convRule:c},{start:126572,length:7,convRule:c},{start:126580,length:4,convRule:c},{start:126585,length:4,convRule:c},{start:126590,length:1,convRule:c},{start:126592,length:10,convRule:c},{start:126603,length:17,convRule:c},{start:126625,length:3,convRule:c},{start:126629,length:5,convRule:c},{start:126635,length:17,convRule:c},{start:126704,length:2,convRule:Fe},{start:126976,length:44,convRule:E},{start:127024,length:100,convRule:E},{start:127136,length:15,convRule:E},{start:127153,length:15,convRule:E},{start:127169,length:15,convRule:E},{start:127185,length:37,convRule:E},{start:127232,length:13,convRule:Re},{start:127245,length:161,convRule:E},{start:127462,length:29,convRule:E},{start:127504,length:44,convRule:E},{start:127552,length:9,convRule:E},{start:127568,length:2,convRule:E},{start:127584,length:6,convRule:E},{start:127744,length:251,convRule:E},{start:127995,length:5,convRule:tu},{start:128e3,length:728,convRule:E},{start:128736,length:13,convRule:E},{start:128752,length:13,convRule:E},{start:128768,length:116,convRule:E},{start:128896,length:89,convRule:E},{start:128992,length:12,convRule:E},{start:129024,length:12,convRule:E},{start:129040,length:56,convRule:E},{start:129104,length:10,convRule:E},{start:129120,length:40,convRule:E},{start:129168,length:30,convRule:E},{start:129200,length:2,convRule:E},{start:129280,length:121,convRule:E},{start:129402,length:82,convRule:E},{start:129485,length:135,convRule:E},{start:129632,length:14,convRule:E},{start:129648,length:5,convRule:E},{start:129656,length:3,convRule:E},{start:129664,length:7,convRule:E},{start:129680,length:25,convRule:E},{start:129712,length:7,convRule:E},{start:129728,length:3,convRule:E},{start:129744,length:7,convRule:E},{start:129792,length:147,convRule:E},{start:129940,length:55,convRule:E},{start:130032,length:10,convRule:Se},{start:131072,length:42718,convRule:c},{start:173824,length:4149,convRule:c},{start:177984,length:222,convRule:c},{start:178208,length:5762,convRule:c},{start:183984,length:7473,convRule:c},{start:194560,length:542,convRule:c},{start:196608,length:4939,convRule:c},{start:917505,length:1,convRule:pl},{start:917536,length:96,convRule:pl},{start:917760,length:240,convRule:p},{start:983040,length:65534,convRule:Bh},{start:1048576,length:65534,convRule:Bh}],Zh=function(e){return function(a){var u=function(){var v=a<256;return v?nz:tz}(),l=Hh(Sz)(a)(u);if(l instanceof I)return!1;if(l instanceof R)return Bo(tE(l.value0.category)(e));throw new Error(\"Failed pattern match at Data.CodePoint.Unicode.Internal (line 5645, column 5 - line 5647, column 86): \"+[l.constructor.name])}},G9=Zh([Lp,le,H,jh,Jh,BE,WE,Vh,PE,OE,UG]),w9=Zh([H,le,Lp,jh,Jh]);var d9=Zh([le,Lp]);var Pr=Ia(Pc);var h9=$v,g9=h9(Xh);var y9=h9(Yh),F9=function(e){return d9(Pr(e))},WG=function(e){var a=Pr(e),u=a<=823;return u?a===32||a>=9&&a<=13||a===160:I9(a)};var b9=function(e){var a=Pr(e)-Ar(\"0\")|0;return a<=7&&a>=0};var Qh=function(e){var a=Pr(e)-Ar(\"0\")|0;return a<=9&&a>=0};var E9=function(e){return Qh(e)||function(){var a=Pr(e)-Ar(\"A\")|0;return a<=5&&a>=0}()||function(){var a=Pr(e)-Ar(\"a\")|0;return a<=5&&a>=0}()};var C9=function(e){return G9(Pr(e))},BG=function(e){return w9(Pr(e))},Kh=function(e){var a=Pr(e)-Ar(\"A\")|0,u=Pr(e)-Ar(\"a\")|0,l=Pr(e)-Ar(\"0\")|0,v=function(){if(l<=9&&l>=0)return new R(l);if(u<=5&&u>=0)return new R(u+10|0);if(a<=5&&a>=0)return new R(a+10|0);if(pe)return I.value;throw new Error(\"Failed pattern match at Data.CodePoint.Unicode (line 591, column 3 - line 591, column 22): \"+[])}();return v};var Pz=Mh(rs),T9=X(fs(AR));var qz=Th(rs);var ef=function(e){return mo(function(a){return e(qc(a))})},eg=Ea(ef(WG))(\"space\"),ag=Ea(ef(F9))(\"uppercase letter\");var Ht=function(e){return dh(mo(aa(Pz)(e)))(function(a){return\"one of \"+T9(e)})},zG=Ea(ef(b9))(\"oct digit\");var kG=function(e){return dh(mo(aa(qz)(e)))(function(a){return\"none of \"+T9(e)})};var ug=Ea(ef(BG))(\"letter\");var VG=Ea(ef(E9))(\"hex digit\"),JG=Ea(ef(Qh))(\"digit\"),lg=Ea(ef(C9))(\"letter or digit\");var $z=L(Fl);var S9=function(e){var a=$z(e);return function(u){return aE(a(eE(u)))}},L9=S9(g9),A9=S9(y9);var Au=ee(v0);var Hl=B(Bt);var ng=Ch(uu),rg=L(Fl),Xl=ri(Wt),Uz=je(uu),XG=re(Lv),W9=rd(H_),eu=Za(Lr),B9=Il(ov),ho=ni(ov),N9=$e(Ue),P9=Sh(Ip)(H_),Wz=L(Ua),vg=fG(Ip)(H_),Bz=Ja(Gl),zz=ER(Wt),q9=X(Av),kz=ee(Xr),Vz=B(Ef),Jz=Cu(Gl),jG=L(ov),$9=X_(Gl),jz=T1(Ip)(H_),Hz=sI(Wf),Xz=Cu(xa);var ig=function(e){return e};var Yz=function(e){if(e.caseSensitive)return ng(e.reservedNames);if(pe)return ng(rg(Go)(e.reservedNames));throw new Error(\"Failed pattern match at Parsing.Token (line 825, column 1 - line 825, column 70): \"+[e.constructor.name])},HG=ND($h(WG)),O9=function(e){return Xl(ru(Jt(e.commentLine)))(Gp(mo(function(a){return a!==`\n`})))};var z9=function(e){return function(a){var u=e,l=!1,v;function t(i,o){var _=Eh(i);if(_ instanceof I)return l=!0,!1;if(_ instanceof R){var s=Uz(_.value0.head)(o);if(s instanceof Ne){u=_.value0.tail,a=o;return}if(s instanceof xe)return l=!0,!0;if(s instanceof Te)return l=!0,!1;throw new Error(\"Failed pattern match at Parsing.Token (line 820, column 35 - line 823, column 18): \"+[s.constructor.name])}throw new Error(\"Failed pattern match at Parsing.Token (line 818, column 3 - line 823, column 18): \"+[_.constructor.name])}for(;!l;)v=t(u,a);return v}},Zz=function(e){return function(a){var u=function(){if(e.caseSensitive)return a;if(pe)return Go(a);throw new Error(\"Failed pattern match at Parsing.Token (line 812, column 3 - line 814, column 31): \"+[])}();return z9(Yz(e))(u)}},Qz=function(e){var a=XG(sp(e.commentEnd))(sp(e.commentStart));return W9(function(u){return eu(B9(ru(Jt(e.commentEnd))))(eu(Xl(ND(kG(a)))(u))(Ea(Xl(Ht(a))(u))(\"end of comment\")))})},tg=function(e){return Xl(ru(Jt(e.commentStart)))(xz(e))},Kz=function(e){var a=XG(sp(e.commentEnd))(sp(e.commentStart));return W9(function(u){return eu(B9(ru(Jt(e.commentEnd))))(eu(Xl(tg(e))(u))(eu(Xl(ND(kG(a)))(u))(Ea(Xl(Ht(a))(u))(\"end of comment\"))))})},xz=function(e){return e.nestedComments?Kz(e):Qz(e)},U9=function(e){if(wo(e.commentLine)&&wo(e.commentStart))return Gp(Ea(HG)(\"\"));if(wo(e.commentLine))return Gp(eu(HG)(Ea(tg(e))(\"\")));if(wo(e.commentStart))return Gp(eu(HG)(Ea(O9(e))(\"\")));if(pe)return Gp(eu(HG)(eu(O9(e))(Ea(tg(e))(\"\"))));throw new Error(\"Failed pattern match at Parsing.Token (line 834, column 1 - line 834, column 74): \"+[e.constructor.name])},og=function(e){var a=mo(function(x){return x!=='\"'&&x!==\"\\\\\"&&x>\"\u001a\"}),u=function(x){return eu(ho(Yu(\"-\"))(gf(x)))(eu(ho(Yu(\"+\"))(N9))(Hl(N9)))},l=u(is),v=function(){var x=Au(e.opStart)(function(Ke){return Au(P9(e.opLetter))(function(Ya){return Hl(Mc(Ke)+AD(Ya))})});return Ea(x)(\"operator\")}(),t=function(x){return function(Ke){var Ya=function(Rl){return function(s0){if(Rl instanceof I)return I.value;if(Rl instanceof R)return Wz(function(pn){return(x*Rl.value0|0)+pn|0})(Kh(qc(s0)));throw new Error(\"Failed pattern match at Parsing.Token (line 704, column 5 - line 704, column 45): \"+[Rl.constructor.name,s0.constructor.name])}};return Au(vg(Ke))(function(Rl){return yu(kv(\"not digits\"))(Hl)(Bz(Ya)(new R(0))(Rl))})}},i=Xl(Ht([\"o\",\"O\"]))(t(8)(zG)),o=function(x){return zz(x)(U9(e))},_=function(x){var Ke=Au(Jt(x))(function(){return Ea(hh(e.opLetter))(\"end of \"+x)});return o(ru(Ke))},s=function(x){return ho(o(Jt(x)))(x)},b=function(x){return Z_(s(\"(\"))(s(\")\"))(x)},P=s(\";\"),A=function(x){return mh(x)(P)},K=function(x){return oG(x)(P)},Ve=function(x){return z9(ng(e.reservedOpNames))(x)},Ga=function(){var x=Au(v)(function(Ke){var Ya=Ve(Ke);return Ya?kv(\"reserved operator \"+Ke):Hl(Ke)});return o(ru(x))}(),$u=function(){var x=Au(e.identStart)(function(Ke){return Au(P9(e.identLetter))(function(Ya){return Hl(Mc(Ke)+AD(Ya))})});return Ea(x)(\"identifier\")}(),Dl=function(){var x=Au($u)(function(Ke){var Ya=Zz(e)(Ke);return Ya?kv(\"reserved word \"+q9(Ke)):Hl(Ke)});return o(ru(x))}(),Ou=Xl(Ht([\"x\",\"X\"]))(t(16)(VG)),_u=function(){var x=function(Ke){return function(Ya){if(Ya instanceof I)return I.value;if(Ya instanceof R)return kz(Kh(qc(Ke)))(function(Rl){return Vz((Ya.value0+Da(Rl))/10)});throw new Error(\"Failed pattern match at Parsing.Token (line 651, column 5 - line 651, column 47): \"+[Ke.constructor.name,Ya.constructor.name])}};return yh(\"fraction\")(Au(Yu(\".\"))(function(){return Au(Ea(vg(JG))(\"fraction\"))(function(Ke){return yu(kv(\"not digit\"))(Hl)(Jz(x)(new R(0))(Ke))})}))}(),f0=Ea(Xl(vg(eg))(Yu(\"\\\\\")))(\"end of string gap\"),Be=Yu(\"&\"),ev=_G([\"a\",\"b\",\"f\",\"n\",\"r\",\"t\",\"v\",\"\\\\\",'\"',\"'\"])([\"\\x07\",\"\\b\",\"\\f\",`\n`,\"\\r\",\"\t\",\"\\v\",\"\\\\\",'\"',\"'\"]),xc=s(\".\"),_n=t(10)(JG),Gf=function(){var x=function(Ke){if(Ke<0)return 1/x(-Ke|0);if(pe)return __(10)(Da(Ke));throw new Error(\"Failed pattern match at Parsing.Token (line 664, column 5 - line 664, column 27): \"+[Ke.constructor.name])};return yh(\"exponent\")(Au(Ht([\"e\",\"E\"]))(function(){return Au(l)(function(Ke){return Au(Ea(_n)(\"exponent\"))(function(Ya){return Hl(x(Ke(Ya)))})})}))}(),wf=function(x){var Ke=Au(Gf)(function(Rl){return Hl(Da(x)*Rl)}),Ya=Au(_u)(function(Rl){return Au(PD(1)(Gf))(function(s0){return Hl((Da(x)+Rl)*s0)})});return eu(Ya)(Ke)},vi=function(x){return jG(te.create)(wf(x))},df=Au(_n)(function(x){return PD(new S(x))(vi(x))}),kr=eu(jG(S.create)(eu(Ou)(i)))(eu(df)(eu(vi(0))(Hl(new S(0))))),yl=eu(Xl(Yu(\"0\"))(kr))(df),Lo=Ea(o(yl))(\"number\"),Ao=Au(_n)(wf),No=Ea(o(Ao))(\"float\"),ql=Ea(Xl(Yu(\"0\"))(eu(Ou)(eu(i)(eu(_n)(Hl(0))))))(\"\"),Vr=eu(ql)(_n),e_=Au(o(l))(function(x){return Au(Vr)(function(Ke){return Hl(x(Ke))})}),Kp=Ea(o(e_))(\"integer\"),xp=Ea(o(Vr))(\"natural\"),we=s(\",\"),ga=function(x){return mh(x)(we)},mu=function(x){return oG(x)(we)},$a=s(\":\"),qe=Au(eu(_n)(eu(Xl(Yu(\"o\"))(t(8)(zG)))(Xl(Yu(\"x\"))(t(16)(VG)))))(function(x){var Ke=x>1114111;if(Ke)return kv(\"invalid escape sequence\");var Ya=Uh(x);if(Ya instanceof R)return Hl(Ya.value0);if(Ya instanceof I)return kv(\"invalid character code (should not happen)\");throw new Error(\"Failed pattern match at Parsing.Token (line 498, column 10 - line 500, column 67): \"+[Ya.constructor.name])}),ce=mo(function(x){return x!==\"'\"&&x!==\"\\\\\"&&x>\"\u001a\"}),Aa=function(){var x=function(Ke){return ho(Yu(Ke.value0))(Ke.value1)};return $9(rg(x)(ev))}(),ra=Au(Yu(\"^\"))(function(){return Au(ag)(function(x){var Ke=Uh((Ar(x)-Ar(\"A\")|0)+1|0);if(Ke instanceof R)return Hl(Ke.value0);if(Ke instanceof I)return kv(\"invalid character code (should not happen)\");throw new Error(\"Failed pattern match at Parsing.Token (line 488, column 5 - line 490, column 67): \"+[Ke.constructor.name])})}),su=function(x){if(e.caseSensitive)return ho(Jt(x))(x);if(pe){var Ke=q9(x),Ya=function(s0){var pn=function(cY){if(pe)return Yu(s0);throw new Error(\"Failed pattern match at Parsing.Token (line 355, column 1 - line 355, column 80): \"+[s0.constructor.name])},bL=BG(qc(s0));if(bL){var qy=nG(L9(Mc(s0)));if(qy instanceof R){var $y=nG(A9(Mc(s0)));return $y instanceof R?eu(Yu(qy.value0))(Yu($y.value0)):pn(!0)}return pn(!0)}return pn(!0)},Rl=function(s0){var pn=wb(s0);if(pn instanceof I)return Hl(void 0);if(pn instanceof R)return Xl(Ea(Ya(pn.value0.head))(Ke))(Rl(pn.value0.tail));throw new Error(\"Failed pattern match at Parsing.Token (line 757, column 22 - line 759, column 72): \"+[pn.constructor.name])};return ho(Rl(x))(x)}throw new Error(\"Failed pattern match at Parsing.Token (line 751, column 3 - line 751, column 50): \"+[x.constructor.name])},Uu=function(x){var Ke=Xl(su(x))(Ea(hh(e.identLetter))(\"end of \"+x));return o(ru(Ke))},ta=function(x){return Z_(s(\"[\"))(s(\"]\"))(x)},hu=function(x){return Z_(s(\"{\"))(s(\"}\"))(x)},fn=[\"NUL\",\"SOH\",\"STX\",\"ETX\",\"EOT\",\"ENQ\",\"ACK\",\"BEL\",\"DLE\",\"DC1\",\"DC2\",\"DC3\",\"DC4\",\"NAK\",\"SYN\",\"ETB\",\"CAN\",\"SUB\",\"ESC\",\"DEL\"],av=[\"\\0\",\"\u0001\",\"\u0002\",\"\u0003\",\"\u0004\",\"\u0005\",\"\u0006\",\"\\x07\",\"\u0010\",\"\u0011\",\"\u0012\",\"\u0013\",\"\u0014\",\"\u0015\",\"\u0016\",\"\u0017\",\"\u0018\",\"\u001a\",\"\\x1B\",\"\\x7F\"],p0=[\"BS\",\"HT\",\"LF\",\"VT\",\"FF\",\"CR\",\"SO\",\"SI\",\"EM\",\"FS\",\"GS\",\"RS\",\"US\",\"SP\"],f=[\"\\b\",\"\t\",`\n`,\"\\v\",\"\\f\",\"\\r\",\"\u000e\",\"\u000f\",\"\u0019\",\"\u001c\",\"\u001d\",\"\u001e\",\"\u001f\",\" \"],wa=_G(XG(fn)(p0))(XG(av)(f)),Oe=function(){var x=function(Ke){return ru(ho(Jt(Ke.value0))(Ke.value1))};return $9(rg(x)(wa))}(),D=eu(Aa)(eu(qe)(eu(Oe)(Ea(ra)(\"escape code\")))),G=Xl(Yu(\"\\\\\"))(D),g=eu(ce)(Ea(G)(\"literal character\")),Q=function(){var x=Z_(Yu(\"'\"))(Ea(Yu(\"'\"))(\"end of character\"))(g);return Ea(o(x))(\"character\")}(),De=Au(Yu(\"\\\\\"))(function(){return eu(ho(f0)(I.value))(eu(ho(Be)(I.value))(jG(R.create)(D)))}),sa=eu(jG(R.create)(a))(Ea(De)(\"string character\")),gu=function(){var x=function(Ya){return function(Rl){if(Ya instanceof I)return Rl;if(Ya instanceof R)return new w(Ya.value0,Rl);throw new Error(\"Failed pattern match at Parsing.Token (line 455, column 5 - line 455, column 51): \"+[Ya.constructor.name,Rl.constructor.name])}},Ke=Au(Z_(Yu('\"'))(Ea(Yu('\"'))(\"end of string\"))(jz(sa)))(function(Ya){return Hl(AD(Hz(Xz(x)(h.value)(Ya))))});return o(Ea(Ke)(\"literal string\"))}(),a_=function(x){return Z_(s(\"<\"))(s(\">\"))(x)};return{identifier:Dl,reserved:Uu,operator:Ga,reservedOp:_,charLiteral:Q,stringLiteral:gu,natural:xp,integer:Kp,float:No,naturalOrFloat:Lo,decimal:_n,hexadecimal:Ou,octal:i,symbol:s,lexeme:o,whiteSpace:U9(e),parens:b,braces:hu,angles:a_,brackets:ta,semi:P,comma:we,colon:$a,dot:xc,semiSep:A,semiSep1:K,commaSep:ga,commaSep1:mu}};var V9=Za(Lr),J9=function(){var e=Ht([\":\",\"!\",\"#\",\"$\",\"%\",\"&\",\"*\",\"+\",\".\",\"/\",\"<\",\"=\",\">\",\"?\",\"@\",\"\\\\\",\"^\",\"|\",\"-\",\"~\"]);return{commentStart:\"\",commentEnd:\"\",commentLine:\"\",nestedComments:!0,identStart:V9(ug)(Yu(\"_\")),identLetter:V9(lg)(Ht([\"_\",\"'\"])),opStart:e,opLetter:e,reservedOpNames:[],reservedNames:[],caseSensitive:!0}}();var go=re(Lv),j9=L(ov),ak=Fu(I0),uk=X_(Gl);var lk=[\"if\",\"then\",\"else\"],cg=[\"**\",\"**:\"],_g=[\"*\",\"/\",\"%\",\"*:\",\"/:\",\"%:\"],fg=[\"+\",\"-\",\"+:\",\"-:\"],pg=[\"==\",\"/=\",\">\",\"<\",\">=\",\"<=\",\"==:\",\"/=:\",\">:\",\"<:\",\">=:\",\"<=:\"],sg=[\"++\",\"~~\",\"~~:\",\"+-\"],Dg=[\"$\",\"&\"],Rg=[\">>\",\"<>\",\"->\",\"\\\\\"],vk=[\"<<\",\"=\"],Ig=[\"pi\",\"mic\",\"audioin\",\"cps\",\"time\",\"beat\",\"etime\",\"ebeat\",\"rnd\",\"fx\",\"fy\",\"fxy\",\"px\",\"py\",\"pxy\",\"frt\",\"fr\",\"ft\",\"aspect\",\"lo\",\"mid\",\"hi\",\"ilo\",\"imid\",\"ihi\",\"fft\",\"ifft\",\"fb\",\"cam\",\"audio\",\"stereo\",\"blend\",\"rgba\",\"add\",\"mul\",\"rgb\"],Gg=[\"blend\",\"add\",\"mul\",\"ain\",\"abs\",\"acos\",\"acosh\",\"asin\",\"asinh\",\"atan\",\"atanh\",\"cbrt\",\"ceil\",\"cos\",\"cosh\",\"exp\",\"fract\",\"floor\",\"log\",\"log2\",\"log10\",\"round\",\"sign\",\"sin\",\"sinh\",\"sqrt\",\"tan\",\"tanh\",\"trunc\",\"rtxy\",\"rtx\",\"rty\",\"xyrt\",\"xyr\",\"xyt\",\"zero\",\"zer0\",\"bipolar\",\"unipolar\",\"osc\",\"tri\",\"saw\",\"sqr\",\"lftri\",\"lfsaw\",\"lfsqr\",\"mono\",\"cpsmidi\",\"midicps\",\"dbamp\",\"ampdb\",\"hsvrgb\",\"hsvh\",\"hsvs\",\"hsvv\",\"hsvr\",\"hsvg\",\"hsvb\",\"rgbhsv\",\"rgbh\",\"rgbs\",\"rgbv\",\"rgbr\",\"rgbg\",\"rgbb\",\"dist\",\"prox\",\"point\",\"hline\",\"hlinep\",\"vline\",\"vlinep\",\"circle\",\"circlep\",\"rect\",\"rectp\",\"iline\",\"ilinep\",\"line\",\"linep\",\"chain\",\"chainp\",\"lines\",\"linesp\",\"ilines\",\"ilinesp\",\"mesh\",\"meshp\",\"zip\",\"fit\",\"min\",\"max\",\"minp\",\"maxp\",\"clip\",\"clipp\",\"between\",\"betweenp\",\"smoothstep\",\"smoothstepp\",\"gate\",\"gatep\",\"when\",\"spr\",\"sprp\",\"seq\",\"setfx\",\"setfy\",\"setfxy\",\"zoom\",\"zoomxy\",\"zoomx\",\"zoomy\",\"move\",\"tile\",\"tilexy\",\"tilex\",\"tiley\",\"spin\",\"early\",\"late\",\"slow\",\"fast\",\"lpf\",\"lpfp\",\"hpf\",\"hpfp\",\"bpf\",\"bpfp\",\"delay\",\"linlin\",\"linlinp\",\"rep\",\"img\",\"vid\",\"mix\",\"mixp\",\"import\",\"aout\",\"splay\",\"pan\",\"panp\",\"btw\",\"btwp\"],nk=go(Ig)(go(Gg)(lk)),Jv=og(function(){var e=ig(J9);return{identStart:e.identStart,identLetter:e.identLetter,opStart:e.opStart,opLetter:e.opLetter,caseSensitive:e.caseSensitive,reservedNames:nk,reservedOpNames:go(vk)(go(Rg)(go(Dg)(go(sg)(go(pg)(go(fg)(go(_g)(cg))))))),commentStart:\"{-\",commentEnd:\"-}\",commentLine:\"--\",nestedComments:!0}}());var WD=function(){return Jv.identifier}(),YG=function(){return Jv.integer}();var wg=function(){return Jv.naturalOrFloat}();var ZG=function(){return Jv.parens}(),BD=function(){return Jv.reserved}(),qr=function(){return Jv.reservedOp}();var H9=function(){return Jv.semiSep}();var X9=function(){return Jv.stringLiteral}();var dg=function(){return Jv.whiteSpace}(),Y9=function(){return Jv.float}(),rk=$l(Ol)(v0)(qr(\"-\"))(function(){return j9(ak(-1))(Y9)}),QG=uk([ru(rk),ru(Y9),j9(Da)(YG)]);var mg=function(){return Jv.commaSep}(),Z9=function(){return Jv.comma}();var KG=function(){return Jv.brackets}(),Q9=function(){return Jv.braces}();var cv=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}};var Xe=ee(v0),K9=l_(ov),Xa=B(Bt),af=X_(Gl),ew=L(Fl),ik=ni(ov),vn=$l(Ol)(v0),zD=Za(Lr),kD=L(ov),ok=Ja(xa),hg=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),aw=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),VD=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),JD=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),gg=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),uw=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),xG=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),yg=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),Fg=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),bg=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),Eg=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Cg=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}();var Tg=function(e){return Xe(Sl)(function(a){return K9(new hg(a,e))(BD(e))})},ck=Xe(Sl)(function(e){return Xe(wg)(function(a){if(a instanceof S)return Xa(new VD(e,a.value0));if(a instanceof te)return Xa(new JD(e,a.value0));throw new Error(\"Failed pattern match at AST (line 236, column 3 - line 238, column 40): \"+[a.constructor.name])})}),_k=af(ew(Tg)([\"audio\",\"aout\",\"blend\",\"rgba\",\"add\",\"mul\",\"rgb\"])),uf=function(e){return Xe(Sl)(function(a){return af(ew(function(u){return ik(qr(u))(yg.create(a)(u))})(e))})},fk=Xe(Sl)(function(e){return Xe(PD(!0)(K9(!1)(qr(\"-\"))))(function(a){return Xe(wg)(function(u){if(u instanceof S)return Xa(a?new VD(e,u.value0):new VD(e,u.value0*-1|0));if(u instanceof te)return Xa(a?new JD(e,u.value0):new JD(e,u.value0*-1));throw new Error(\"Failed pattern match at AST (line 228, column 3 - line 230, column 102): \"+[u.constructor.name])})})}),pk=af(ew(function(e){return ru(Tg(e))})(Ig)),x9=af(ew(function(e){return ru(Tg(e))})(Gg)),sk=Xe(Xa(void 0))(function(){return KG(Xe(Sl)(function(e){return Xe(YG)(function(a){return vn(qr(\"..\"))(function(){return Xe(YG)(function(u){return Xa(new Fg(e,a,u))})})})}))}),Dk=Xe(Xa(void 0))(function(){return KG(Xe(Sl)(function(e){return Xe(QG)(function(a){return Xe(Z9)(function(){return Xe(QG)(function(u){return vn(qr(\"..\"))(function(){return Xe(QG)(function(l){return Xa(new bg(e,a,u,l))})})})})})}))}),Rk=vn(cG(dg))(function(){return vn(zD(cG(Oh))(cG(qr(\";\"))))(function(){return Xa(I.value)})}),Ik=cv(\"application\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Xe(Sl)(function(e){return Xe(e5(135))(function(a){return Xe(Ap(136))(function(u){return Xe(Ab(Ap(137)))(function(l){return Xa(ok(xG.create(e))(new xG(e,a,u))(l))})})})})})}),Ap=cv(\"argument\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Xe(Sl)(function(e){return af([ZG(jD(145)),pk,x9,ru(ck),ru(kD(gg.create(e))(X9)),ru(sk),ru(Dk),ru(bk(152)),ru(a5(153)),ru(Fk(154)),kD(aw.create(e))(WD)])})})}),jD=cv(\"expression1\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Y_(Gk(89))(uf(Rg))})}),Gk=cv(\"expression2\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Nb(wk(94))(uf(Dg))})}),wk=cv(\"expression3\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Y_(dk(99))(uf(sg))})}),dk=cv(\"expression4\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Y_(mk(104))(uf(pg))})}),mk=cv(\"expression5\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Y_(hk(109))(uf(fg))})}),hk=cv(\"expression6\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Y_(gk(114))(uf(_g))})}),gk=cv(\"expression7\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Y_(yk(119))(uf(cg))})}),yk=cv(\"expression8\",\"AST\",function(){return Xe(Xa(void 0))(function(){return af([ru(Ik(125)),ru(fk),_k,Ap(128)])})}),e5=cv(\"functionInApplication\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Xe(Sl)(function(e){return af([ZG(e5(163)),x9,ZG(a5(165)),kD(aw.create(e))(WD)])})})}),Fk=cv(\"ifThenElse\",\"AST\",function(){return Xe(Sl)(function(e){return vn(BD(\"if\"))(function(){return Xe(Ap(253))(function(a){return vn(BD(\"then\"))(function(){return Xe(Ap(255))(function(u){return vn(BD(\"else\"))(function(){return Xe(Ap(257))(function(l){return Xa(new Cg(e,a,u,l))})})})})})})})}),a5=cv(\"lambda\",\"AST\",function(){return Xe(Sl)(function(e){return vn(qr(\"\\\\\"))(function(){return Xe(gh(WD))(function(a){return vn(qr(\"->\"))(function(){return Xe(jD(246))(function(u){return Xa(new Eg(e,E_(a),u))})})})})})}),bk=cv(\"list\",\"AST\",function(){return Xe(Xa(void 0))(function(){return zD(Ek(205))(Ck(205))})}),Ek=cv(\"listCombinatorial\",\"AST\",function(){return Xe(Xa(void 0))(function(){return KG(Xe(Sl)(function(e){return Xe(mg(jD(212)))(function(a){return Xa(new uw(e,de.value,a))})}))})}),Ck=cv(\"listPairwise\",\"AST\",function(){return Xe(Xa(void 0))(function(){return Q9(Xe(Sl)(function(e){return Xe(mg(jD(220)))(function(a){return Xa(new uw(e,Ge.value,a))})}))})});var u5=jD(86);var Tk=Xe(Sl)(function(e){return Xe(u5)(function(a){return Xa({position:e,identifiers:h.value,expression:a})})}),Mk=Xe(Sl)(function(e){return Xe(gh(WD))(function(a){return vn(zD(qr(\"=\"))(qr(\"<<\")))(function(){return Xe(u5)(function(u){return Xa({position:e,identifiers:E_(a),expression:u})})})})}),Sk=function(){return zD(kD(R.create)(ru(Mk)))(zD(kD(R.create)(ru(Tk)))(Rk))}(),Lk=vn(dg)(function(){return Xe(H9(Sk))(function(e){return vn(Oh)(function(){return Xa(e)})})}),Mg=function(e){return Tb(e)(Lk)};var qk=Gu(xm);var $k=Gu(vh),Ok=Gu(_D),l5={liftAff:$e(Ue),MonadEffect0:function(){return l0}},HD=function(e){return e.liftAff};var v5=function(e){var a=e.MonadEffect0(),u=$F(a);return{liftAff:function(){var l=qk(a.Monad0()),v=HD(e);return function(t){return l(v(t))}}(),MonadEffect0:function(){return u}}};var n5=function(e){var a=e.MonadEffect0(),u=rb(a);return{liftAff:function(){var l=$k(a.Monad0()),v=HD(e);return function(t){return l(v(t))}}(),MonadEffect0:function(){return u}}},r5=function(e){var a=e.MonadEffect0(),u=I8(a);return{liftAff:function(){var l=Ok(a.Monad0()),v=HD(e);return function(t){return l(v(t))}}(),MonadEffect0:function(){return u}}};function i5(e,a){return fetch(e,a)}var XD=function(a){return function(u){return a(u)()}};var c5=function(e){return function(){return i5(e,{})}};var rV=je(uu),R5=function(e){return e};var tV={eq:function(e){return function(a){return Go(e)===Go(a)}}},I5={compare:function(e){return function(a){return rV(Go(e))(Go(a))}},Eq0:function(){return tV}};function G5(e,a){return Array.from(a.entries(),function(u){return e(u[0])(u[1])})}var w5=function(){return K_(G5)(k.create)}();var Lg=function(){var e=hI(I5)(Gl),a=L(Fl)(V3(Is)(R5));return function(u){return e(a(w5(u)))}}();function vw(e,a){try{return new Request(e,a)}catch(u){throw console.error(u),u}}var b5={convertHelper:function(e){return function(a){return{}}}};var Ag=function(){return function(e){return function(a){return function(){return vw(e,a)}}}};var E5=function(e){return e.convertHelper};var C5=function(){return function(){return function(e){return{convert:E5(e)(Ha.value)}}}},T5=function(e){return e.convert};function Ng(e){return e.headers}function Pg(e){return e.ok}function qg(e){return e.redirected}function $g(e){return e.status}function Og(e){return e.statusText}function Ug(e){return e.url}function Wg(e){return function(){return e.body}}function Bg(e){return function(){return e.arrayBuffer()}}function zg(e){return function(){return e.blob()}}function kg(e){return function(){return e.text()}}function Vg(e){return function(){return e.json()}}function Jg(e,a,u){return u.then(e,a)}function jg(e){return Promise.resolve(e)}function S5(e,a,u){return u instanceof Error?e(u):a}var L5=function(){return x_(S5)(R.create)(I.value)}();var A5=function(){return function(e){return function(a){return function(u){return function(){return Jg(XD(e),XD(a),u)}}}}},N5=function(){return jg};var jV=l_(nl),HV=Fa(ih),XV=A5(),P5=L(nl),q5=N5();var YV=Za(b3),ZV=L(Ua),QV=fh(xu),KV=ee(un),xV=Lu(l0),eJ=function(e){return function(a){return SD(function(u){return jV(HV)(XV(function(l){return P5(q5)(u(new te(l)))})(function(l){return P5(q5)(u(new S(e(l))))})(a))})}};var aJ=function(e){return F3(function(a){return At(\"Promise failed, couldn't extract JS Error or String\")})(YV(L5(e))(ZV(At)(E3(uh(QV(db(e)))))))},uJ=eJ(aJ),lf=function(e){return KV(xV(e))(uJ)};var O5=function(e){return lf(kg(e))},U5=function(e){return lf(Vg(e))};var W5=function(e){return lf(zg(e))},B5=function(e){return lf(Bg(e))},z5=function(e){return{headers:Lg(Ng(e)),ok:Pg(e),redirected:qg(e),status:$g(e),statusText:Og(e),url:Ug(e),text:O5(e),json:U5(e),body:Wg(e),arrayBuffer:B5(e),blob:W5(e)}};var k5=ee(un),vJ=Lu(l0),nJ=Ag(),rJ=B(Tc);var V5=function(){return function(){return function(e){var a=T5(e);return function(u){return function(l){return k5(vJ(nJ(u)(a(l))))(function(v){return k5(lf(c5(v)))(function(t){return rJ(z5(t))})})}}}}};var vf=Of(xa),_J=Iu(T0),pa=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),Np=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),n0=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),Xt=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),_v=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),r0=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),Wc=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),t0=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}();var yo=function(){return{toValue:pa.create}}(),J5=function(){return{toValue:r0.create}}();var nf=function(e){if(e instanceof pa||e instanceof Np||e instanceof n0||e instanceof Xt||e instanceof _v||e instanceof r0||e instanceof Wc||e instanceof t0)return e.value0;throw new Error(\"Failed pattern match at Value (line 70, column 1 - line 70, column 35): \"+[e.constructor.name])},j5=function(e){return e.toValue},rf=function(e){if(e instanceof pa)return\"Signal\";if(e instanceof Np)return\"String\";if(e instanceof n0)return\"Int\";if(e instanceof Xt)return\"Number\";if(e instanceof _v)return\"Function\";if(e instanceof r0)return\"Output\";if(e instanceof Wc)return\"Action\";if(e instanceof t0)return\"polymorphic value\";throw new Error(\"Failed pattern match at Value (line 60, column 1 - line 60, column 33): \"+[e.constructor.name])},Hg=function(e){return function(a){return function(u){return cp(ub(Z1(u)(a))(e))}}},fJ=function(e){return e instanceof Np},nw=function(e){var a=B(e);return function(u){var l=fu(u);return function(v){if(v instanceof Np)return a(v.value1);if(v instanceof t0){var t=vf(fJ)(v.value1);if(t instanceof I)return l(new nu(\"expected String, found polymorphic value\",v.value0));if(t instanceof R)return nw(e)(u)(t.value0);throw new Error(\"Failed pattern match at Value (line 135, column 3 - line 137, column 30): \"+[t.constructor.name])}return l(new nu(\"expected String, found \"+rf(v),nf(v)))}}},H5={fromValue:function(e){var a=nw(e);return function(u){return a(u)}}},pJ=function(e){return e instanceof pa||e instanceof n0||e instanceof Xt},YD=function(e){var a=B(e);return function(u){var l=fu(u);return function(v){if(v instanceof pa)return a(v.value1);if(v instanceof n0)return a(new ju(Da(v.value1)));if(v instanceof Xt)return a(new ju(v.value1));if(v instanceof t0){var t=vf(pJ)(v.value1);if(t instanceof I)return l(new nu(\"expected Signal, found polymorphic value\",v.value0));if(t instanceof R)return YD(e)(u)(t.value0);throw new Error(\"Failed pattern match at Value (line 97, column 3 - line 99, column 30): \"+[t.constructor.name])}return l(new nu(\"expected Signal, found \"+rf(v),nf(v)))}}},X5=function(e){var a=_J(e),u=YD(e),l=B(e);return function(v){var t=ee(v.Monad0().Bind1()),i=u(v);return function(o){return function(_){return function(s){return t(a(i)(s))(function(){var b=pa.create(o),P=el.create(_);return function(A){return l(b(P(A)))}}())}}}}};var nn={fromValue:function(e){var a=YD(e);return function(u){return a(u)}}},sJ=function(e){return e instanceof r0},Y5=function(e){var a=B(e);return function(u){var l=fu(u);return function(v){if(v instanceof r0)return a(v.value1);if(v instanceof t0){var t=vf(sJ)(v.value1);if(t instanceof I)return l(new nu(\"expected Output, found polymorphic value\",v.value0));if(t instanceof R)return Y5(e)(u)(t.value0);throw new Error(\"Failed pattern match at Value (line 111, column 3 - line 113, column 30): \"+[t.constructor.name])}return l(new nu(\"expected Output, found \"+rf(v),nf(v)))}}},Z5={fromValue:function(e){var a=Y5(e);return function(u){return a(u)}}},DJ=function(e){return e instanceof Xt||e instanceof n0},Q5=function(e){var a=B(e);return function(u){var l=fu(u);return function(v){if(v instanceof Xt)return a(v.value1);if(v instanceof n0)return a(Da(v.value1));if(v instanceof t0){var t=vf(DJ)(v.value1);if(t instanceof I)return l(new nu(\"expected Number, found polymorphic value\",v.value0));if(t instanceof R)return Q5(e)(u)(t.value0);throw new Error(\"Failed pattern match at Value (line 149, column 3 - line 151, column 30): \"+[t.constructor.name])}return l(new nu(\"expected Number, found \"+rf(v),nf(v)))}}},Xg={fromValue:function(e){var a=Q5(e);return function(u){return a(u)}}},RJ=function(e){return e instanceof n0},K5=function(e){var a=B(e);return function(u){var l=fu(u);return function(v){if(v instanceof n0)return a(v.value1);if(v instanceof t0){var t=vf(RJ)(v.value1);if(t instanceof I)return l(new nu(\"expected Int, found polymorphic value\",v.value0));if(t instanceof R)return K5(e)(u)(t.value0);throw new Error(\"Failed pattern match at Value (line 163, column 3 - line 165, column 27): \"+[t.constructor.name])}return l(new nu(\"expected Int, found \"+rf(v),nf(v)))}}},rw={fromValue:function(e){var a=K5(e);return function(u){return a(u)}}},IJ=function(e){return e instanceof _v},Yg=function(e){var a=B(e);return function(u){var l=fu(u);return function(v){if(v instanceof _v)return a(v.value1);if(v instanceof t0){var t=vf(IJ)(v.value1);if(t instanceof I)return l(new nu(\"expected Function, found polymorphic value\",v.value0));if(t instanceof R)return Yg(e)(u)(t.value0);throw new Error(\"Failed pattern match at Value (line 123, column 3 - line 125, column 32): \"+[t.constructor.name])}return l(new nu(\"expected Function, found \"+rf(v),nf(v)))}}},GJ=function(e){return e instanceof Wc||e instanceof pa||e instanceof Xt||e instanceof n0},Zg=function(e){var a=B(e);return function(u){var l=fu(u);return function(v){if(v instanceof Wc)return a(v.value1);if(v instanceof pa)return a(FI(v.value1));if(v instanceof Xt)return a(FI(new ju(v.value1)));if(v instanceof n0)return a(FI(new ju(Da(v.value1))));if(v instanceof t0){var t=vf(GJ)(v.value1);if(t instanceof I)return l(new nu(\"expected Action, found polymorphic value\",v.value0));if(t instanceof R)return Zg(e)(u)(t.value0);throw new Error(\"Failed pattern match at Value (line 179, column 3 - line 181, column 30): \"+[t.constructor.name])}return l(new nu(\"expected Action, found \"+rf(v),nf(v)))}}},ZD=function(e){return e.fromValue};var dJ=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}},tf=ee(un),mJ=V5()()(C5()()(b5)),vT=$l(Ol),Pp=vT(un),QD=Fc(l0),$r=B(Tc),nT=MD(fp),Or=LD(nT),rT=Mr(Or),wu=ee(rT),Ur=_o(Or),Zt=G8(tb(xI(fp))),hJ=Yg(Ur)(Zt),$=B(Ur),gJ=Zg(Ur)(Zt),J=Gu(_D)(Or),ow=fu(Zt),x5=Wu(_a),iw=vT(rT),Kg=gc(Or),tT=Pt(Kg),xg=lt(uu),e2=qt(Kg),iT=$n(uu),oT=Iu(T0)(Ur),yJ=X5(Ur)(Zt),eT=L(rv),FJ=k8(fc)(rv),bJ=cm(fc)(Gi),Qg=YD(Ur)(Zt),aT=Lu(l0),EJ=nw(Ur)(Zt),CJ=Nt(R8(nb(nT))),TJ=HD(r5(n5(v5(l5)))),MJ=dI(uu),uT=hc(Kg);var SJ=function(e){return tf(mJ(e)({}))(function(a){return tf(a.text)(function(u){return Pp(QD(\"loaded text file: \"+u))(function(){return $r(new te(u))})})})},KD=function(e){return function(a){return wu(hJ(e))(function(u){return u(a)})}},a2=function(e){var a=ZD(e)(Ur)(Zt);return function(u){var l=j5(u);return function(v){return function(t){return new _v(v,function(i){return wu(a(i))(function(){var o=l(v);return function(_){return $(o(t(_)))}}())})}}}},LJ=a2(H5)(yo),u2=function(e){var a=ZD(e)(Ur)(Zt);return function(u){var l=a2(u);return function(v){var t=l(v);return function(i){return function(o){return new _v(i,function(_){return wu(a(_))(function(){var s=t(i);return function(b){return $(s(o(b)))}}())})}}}}},cT=u2(rw),_T=cT(nn)(yo),AJ=u2(nn)(nn)(yo),fT=cT(rw),NJ=fT(yo),PJ=fT(J5),l2=function(e){var a=ZD(e)(Ur)(Zt);return function(u){var l=u2(u);return function(v){var t=l(v);return function(i){var o=t(i);return function(_){return function(s){return new _v(_,function(b){return wu(a(b))(function(){var P=o(_);return function(A){return $(P(s(A)))}}())})}}}}}},qJ=l2(Xg)(nn)(nn)(yo),$J=l2(nn)(nn)(nn)(yo),tw=l2(rw)(nn)(nn)(yo),OJ=function(e){var a=B(e.Applicative0());return function(u){return function(l){return a(qJ(u)(l))}}},UJ=OJ(Or),WJ=function(e){var a=B(e.Applicative0());return function(u){return function(l){return a($J(u)(l))}}},Yl=WJ(Or),BJ=function(e){var a=B(e.Applicative0());return function(u){return function(l){return a(_T(u)(l))}}},zJ=BJ(Or),kJ=function(e){var a=B(e.Applicative0());return function(u){return function(l){return a(AJ(u)(l))}}},fe=kJ(Or),me=a2(nn)(yo),VJ=function(e){var a=B(e.Applicative0());return function(u){return function(l){return a(LJ(u)(l))}}},lT=VJ(Or),JJ=function(e){var a=ZD(e)(Ur)(Zt);return function(u){return function(l){return new _v(u,function(v){return wu(a(v))(function(){var t=Wc.create(u);return function(i){return $(t(l(i)))}}())})}}};var pT=function(e){var a=JJ(e);return function(u){return function(l){return new _v(u,function(v){return wu(gJ(v))(function(){var t=a(u);return function(i){return $(t(l(i)))}}())})}}},jJ=pT(Xg),HJ=pT(Z5),XJ=function(e){var a=B(e.Applicative0());return function(u){return function(l){return a(jJ(u)(l))}}},YJ=XJ(Or),ZJ=function(e){var a=B(e.Applicative0());return function(u){return function(l){return a(HJ(u)(l))}}},QJ=ZJ(Or),KJ=function(e){return function(a){return a===\">>\"?J(QJ(e)(o8)):a===\"<>\"?J(YJ(e)(c8)):a===\"$\"?$(new _v(e,function(u){return $(new _v(e,function(l){return KD(u)(l)}))})):a===\"&\"?$(new _v(e,function(u){return $(new _v(e,function(l){return KD(l)(u)}))})):a===\"++\"?J(fe(e)(S0.create)):a===\"~~\"?J(Yl(e)(yI(de.value))):a===\"~~:\"?J(Yl(e)(yI(Ge.value))):a===\"+-\"?J(Yl(e)(u8)):a===\"+\"?J(fe(e)(Kv.create(de.value))):a===\"-\"?J(fe(e)(Bv.create(de.value))):a===\"*\"?J(fe(e)(q0.create(de.value))):a===\"/\"?J(fe(e)(mv.create(de.value))):a===\"%\"?J(fe(e)($0.create(de.value))):a===\"**\"?J(fe(e)(O0.create(de.value))):a===\"==\"?J(fe(e)(U0.create(de.value))):a===\"/=\"?J(fe(e)(W0.create(de.value))):a===\">\"?J(fe(e)(B0.create(de.value))):a===\"<\"?J(fe(e)(z0.create(de.value))):a===\">=\"?J(fe(e)(xv.create(de.value))):a===\"<=\"?J(fe(e)(k0.create(de.value))):a===\"+:\"?J(fe(e)(Kv.create(Ge.value))):a===\"-:\"?J(fe(e)(Bv.create(Ge.value))):a===\"*:\"?J(fe(e)(q0.create(Ge.value))):a===\"/:\"?J(fe(e)(mv.create(Ge.value))):a===\"%:\"?J(fe(e)($0.create(Ge.value))):a===\"**:\"?J(fe(e)(O0.create(Ge.value))):a===\"==:\"?J(fe(e)(U0.create(Ge.value))):a===\"/=:\"?J(fe(e)(W0.create(Ge.value))):a===\">:\"?J(fe(e)(B0.create(Ge.value))):a===\"<:\"?J(fe(e)(z0.create(Ge.value))):a===\">=:\"?J(fe(e)(xv.create(Ge.value))):a===\"<=:\"?J(fe(e)(k0.create(Ge.value))):ow(new nu(\"internal error in Punctual: parseOperator called with unsupported operator \"+a,e))}};var xJ=function(e){return function(a){return a===\"append\"?J(fe(e)(S0.create)):a===\"zip\"?J(fe(e)(Un.create)):a===\"pi\"?$(new pa(e,rt.value)):a===\"px\"?$(new pa(e,sc.value)):a===\"py\"?$(new pa(e,Dc.value)):a===\"pxy\"?$(new pa(e,hi.value)):a===\"aspect\"?$(new pa(e,On.value)):a===\"fx\"?$(new pa(e,Rc.value)):a===\"fy\"?$(new pa(e,Ic.value)):a===\"fxy\"?$(new pa(e,L0.value)):a===\"frt\"?$(new pa(e,gi.value)):a===\"fr\"?$(new pa(e,Gc.value)):a===\"ft\"?$(new pa(e,wc.value)):a===\"setfx\"?J(fe(e)(Qi.create)):a===\"setfy\"?J(fe(e)(Ki.create)):a===\"setfxy\"?J(fe(e)(xi.create)):a===\"zoom\"?J(fe(e)(eo.create)):a===\"zoomxy\"?J(fe(e)(dt.create)):a===\"zoomx\"?J(fe(e)(ao.create)):a===\"zoomy\"?J(fe(e)(uo.create)):a===\"move\"?J(fe(e)(lo.create)):a===\"tile\"?J(fe(e)(vo.create)):a===\"tilexy\"?J(fe(e)(no.create)):a===\"tilex\"?J(fe(e)(ro.create)):a===\"tiley\"?J(fe(e)(to.create)):a===\"spin\"?J(fe(e)(io.create)):a===\"early\"?J(fe(e)(N0.create)):a===\"late\"?J(fe(e)(l8)):a===\"slow\"?J(fe(e)(P0.create)):a===\"fast\"?J(fe(e)(n8)):a===\"lo\"?$(new pa(e,yi.value)):a===\"mid\"?$(new pa(e,Fi.value)):a===\"hi\"?$(new pa(e,bi.value)):a===\"ilo\"?$(new pa(e,Ei.value)):a===\"imid\"?$(new pa(e,Ci.value)):a===\"ihi\"?$(new pa(e,Ti.value)):a===\"cps\"?$(new pa(e,tt.value)):a===\"time\"?$(new pa(e,it.value)):a===\"beat\"?$(new pa(e,ot.value)):a===\"ebeat\"?$(new pa(e,ct.value)):a===\"etime\"?$(new pa(e,_t.value)):a===\"rnd\"?$(new pa(e,dc.value)):a===\"audioin\"?$(new pa(e,new A0(1,0))):a===\"mic\"?$(new pa(e,new A0(1,0))):a===\"ain\"?$(NJ(e)(function(u){return function(l){return new A0(x5(1)(u),x5(0)(l))}})):a===\"fft\"?$(new pa(e,Mi.value)):a===\"ifft\"?$(new pa(e,Si.value)):a===\"mono\"?$(me(e)(nt.create)):a===\"rep\"?J(zJ(e)(Wn.create)):a===\"bipolar\"?$(me(e)(Bn.create)):a===\"unipolar\"?$(me(e)(zn.create)):a===\"fb\"?$(new pa(e,Li.value)):a===\"img\"?J(lT(e)(pt.create)):a===\"vid\"?J(lT(e)(st.create)):a===\"cam\"?$(new pa(e,ft.value)):a===\"rgbhsv\"?$(me(e)(qi.create)):a===\"hsvrgb\"?$(me(e)($i.create)):a===\"hsvh\"?$(me(e)(Dt.create)):a===\"hsvs\"?$(me(e)(Rt.create)):a===\"hsvv\"?$(me(e)(It.create)):a===\"hsvr\"?$(me(e)(Oi.create)):a===\"hsvg\"?$(me(e)(Ui.create)):a===\"hsvb\"?$(me(e)(Wi.create)):a===\"rgbh\"?$(me(e)(Bi.create)):a===\"rgbs\"?$(me(e)(zi.create)):a===\"rgbv\"?$(me(e)(ki.create)):a===\"rgbr\"?$(me(e)(Dt.create)):a===\"rgbg\"?$(me(e)(Rt.create)):a===\"rgbb\"?$(me(e)(It.create)):a===\"osc\"?$(me(e)(kn.create)):a===\"tri\"?$(me(e)(Vn.create)):a===\"saw\"?$(me(e)(Jn.create)):a===\"sqr\"?$(me(e)(jn.create)):a===\"lftri\"?$(me(e)(Hn.create)):a===\"lfsaw\"?$(me(e)(Xn.create)):a===\"lfsqr\"?$(me(e)(Yn.create)):a===\"abs\"?$(me(e)(Zn.create)):a===\"acos\"?$(me(e)(Qn.create)):a===\"acosh\"?$(me(e)(Kn.create)):a===\"asin\"?$(me(e)(xn.create)):a===\"asinh\"?$(me(e)(er.create)):a===\"atan\"?$(me(e)(ar.create)):a===\"atanh\"?$(me(e)(ur.create)):a===\"cbrt\"?$(me(e)(lr.create)):a===\"ceil\"?$(me(e)(vr.create)):a===\"cos\"?$(me(e)(nr.create)):a===\"cosh\"?$(me(e)(rr.create)):a===\"exp\"?$(me(e)(tr.create)):a===\"floor\"?$(me(e)(ir.create)):a===\"log\"?$(me(e)(or.create)):a===\"log2\"?$(me(e)(cr.create)):a===\"log10\"?$(me(e)(_r.create)):a===\"round\"?$(me(e)(fr.create)):a===\"sign\"?$(me(e)(pr.create)):a===\"sin\"?$(me(e)(sr.create)):a===\"sinh\"?$(me(e)(Dr.create)):a===\"sqrt\"?$(me(e)(Rr.create)):a===\"tan\"?$(me(e)(Ir.create)):a===\"tanh\"?$(me(e)(Gr.create)):a===\"trunc\"?$(me(e)(wr.create)):a===\"rtxy\"?$(me(e)(Vi.create)):a===\"rtx\"?$(me(e)(Ji.create)):a===\"rty\"?$(me(e)(ji.create)):a===\"xyrt\"?$(me(e)(Gt.create)):a===\"xyr\"?$(me(e)(wt.create)):a===\"xyt\"?$(me(e)(Hi.create)):a===\"zero\"?$(me(e)(U1)):a===\"zer0\"?$(me(e)(U1)):a===\"point\"?$(me(e)(Xi.create)):a===\"dist\"?$(me(e)(Yi.create)):a===\"prox\"?$(me(e)(Zi.create)):a===\"midicps\"?$(me(e)(dr.create)):a===\"cpsmidi\"?$(me(e)(mr.create)):a===\"dbamp\"?$(me(e)(hr.create)):a===\"ampdb\"?$(me(e)(gr.create)):a===\"fract\"?$(me(e)(yr.create)):a===\"max\"?J(fe(e)(V0.create(de.value))):a===\"maxp\"?J(fe(e)(V0.create(Ge.value))):a===\"min\"?J(fe(e)(J0.create(de.value))):a===\"minp\"?J(fe(e)(J0.create(Ge.value))):a===\"gate\"?J(fe(e)(j0.create(de.value))):a===\"gatep\"?J(fe(e)(j0.create(Ge.value))):a===\"circle\"?J(fe(e)(mt.create(de.value))):a===\"circlep\"?J(fe(e)(mt.create(Ge.value))):a===\"rect\"?J(fe(e)(ht.create(de.value))):a===\"rectp\"?J(fe(e)(ht.create(Ge.value))):a===\"clip\"?J(fe(e)(H0.create(de.value))):a===\"clipp\"?J(fe(e)(H0.create(Ge.value))):a===\"between\"?J(fe(e)(X0.create(de.value))):a===\"betweenp\"?J(fe(e)(X0.create(Ge.value))):a===\"smoothstep\"?J(fe(e)(Y0.create(de.value))):a===\"smoothstepp\"?J(fe(e)(Y0.create(Ge.value))):a===\"vline\"?J(fe(e)(gt.create(de.value))):a===\"vlinep\"?J(fe(e)(gt.create(Ge.value))):a===\"hline\"?J(fe(e)(yt.create(de.value))):a===\"hlinep\"?J(fe(e)(yt.create(Ge.value))):a===\"chain\"?J(fe(e)(Ft.create(de.value))):a===\"chainp\"?J(fe(e)(Ft.create(Ge.value))):a===\"lines\"?J(fe(e)(bt.create(de.value))):a===\"linesp\"?J(fe(e)(bt.create(Ge.value))):a===\"ilines\"?J(fe(e)(Et.create(de.value))):a===\"ilinesp\"?J(fe(e)(Et.create(Ge.value))):a===\"mesh\"?J(fe(e)(Ct.create(de.value))):a===\"meshp\"?J(fe(e)(Ct.create(Ge.value))):a===\"spr\"?J(fe(e)(Z0.create(de.value))):a===\"sprp\"?J(fe(e)(Z0.create(Ge.value))):a===\"btw\"?$(tw(e)(Q0.create(de.value))):a===\"btwp\"?$(tw(e)(Q0.create(Ge.value))):a===\"pan\"?$(tw(e)(K0.create(de.value))):a===\"panp\"?$(tw(e)(K0.create(Ge.value))):a===\"splay\"?$(_T(e)(Fr.create)):a===\"seq\"?$(me(e)(br.create)):a===\"fit\"?J(fe(e)(v8)):a===\"iline\"?J(Yl(e)(Er.create(de.value))):a===\"ilinep\"?J(Yl(e)(Er.create(Ge.value))):a===\"line\"?J(Yl(e)(Tt.create(de.value))):a===\"linep\"?J(Yl(e)(Tt.create(Ge.value))):a===\"linlin\"?J(Yl(e)(e0.create(de.value))):a===\"linlinp\"?J(Yl(e)(e0.create(Ge.value))):a===\"mix\"?J(Yl(e)(hv.create(de.value))):a===\"mixp\"?J(Yl(e)(hv.create(Ge.value))):a===\"lpf\"?J(Yl(e)(Mt.create(de.value))):a===\"lpfp\"?J(Yl(e)(Mt.create(Ge.value))):a===\"hpf\"?J(Yl(e)(St.create(de.value))):a===\"hpfp\"?J(Yl(e)(St.create(Ge.value))):a===\"bpf\"?J(Yl(e)(Lt.create(de.value))):a===\"bpfp\"?J(Yl(e)(Lt.create(Ge.value))):a===\"delay\"?J(UJ(e)(oo.create)):a===\"audio\"?$(new r0(e,xr.value)):a===\"stereo\"?$(new r0(e,new et(0,2))):a===\"aout\"?$(PJ(e)(et.create)):a===\"blend\"?$(new t0(e,new w(new r0(e,tc.value),new w(me(e)(Ai.create),h.value)))):a===\"rgba\"?$(new r0(e,ic.value)):a===\"add\"?$(new t0(e,new w(new r0(e,oc.value),new w(me(e)(Ni.create),h.value)))):a===\"mul\"?$(new t0(e,new w(new r0(e,cc.value),new w(me(e)(Pi.create),h.value)))):a===\"rgb\"?$(new r0(e,_c.value)):a===\"import\"?$(new _v(e,lj(e))):ow(new nu(\"internal error in Punctual: parseReserved called with unknown reserved word \"+a,e))}},ej=function(e){if(e instanceof I)return $(I.value);if(e instanceof R)return wu(function(){if(e.value0.identifiers instanceof h)return Yt(e.value0.expression);if(e.value0.identifiers instanceof w)return wu(sT(e.value0.position)(e.value0.identifiers.value1)(e.value0.expression))(function(a){var u=function(){return a instanceof Wc?new pa(a.value0,a.value1.signal):a}();return iw(tT(xg(e.value0.identifiers.value0)(u)))(function(){return $(a)})});throw new Error(\"Failed pattern match at Parser (line 103, column 8 - line 111, column 13): \"+[e.value0.identifiers.constructor.name])}())(function(a){return a instanceof Wc?$(new R(a.value1)):$(I.value)});throw new Error(\"Failed pattern match at Parser (line 100, column 1 - line 100, column 59): \"+[e.constructor.name])},aj=function(e){return function(a){var u=Mg(a);if(u instanceof S)return $r(new S(u.value0));if(u instanceof te)return tf(Hg(e)(fl)(RT(59)(u.value0)))(function(l){if(l instanceof S)return $r(new S(l.value0));if(l instanceof te)return $r(new te(l.value0.value1));throw new Error(\"Failed pattern match at Parser (line 60, column 7 - line 62, column 48): \"+[l.constructor.name])});throw new Error(\"Failed pattern match at Parser (line 56, column 3 - line 62, column 48): \"+[u.constructor.name])}},Yt=function(e){if(e instanceof hg)return xJ(e.value0)(e.value1);if(e instanceof aw)return wu(e2)(function(a){var u=iT(e.value1)(a);if(u instanceof R)return $(u.value0);if(u instanceof I)return ow(new nu(\"unrecognized identifier \"+e.value1,e.value0));throw new Error(\"Failed pattern match at Parser (line 120, column 3 - line 122, column 75): \"+[u.constructor.name])});if(e instanceof VD)return $(new n0(e.value0,e.value1));if(e instanceof JD)return $(new Xt(e.value0,e.value1));if(e instanceof gg)return $(new Np(e.value0,e.value1));if(e instanceof uw)return wu(oT(Yt)(e.value2))(yJ(e.value0)(e.value1));if(e instanceof xG)return wu(Yt(e.value1))(function(a){return wu(Yt(e.value2))(function(u){return KD(a)(u)})});if(e instanceof yg)return wu(KJ(e.value0)(e.value1))(function(a){return wu(Yt(e.value2))(function(u){return wu(Yt(e.value3))(function(l){return wu(KD(a)(u))(function(v){return KD(v)(l)})})})});if(e instanceof Fg)return $(new pa(e.value0,new el(de.value,eT(ju.create)(FJ(e.value1)(e.value2)))));if(e instanceof bg)return $(new pa(e.value0,new el(de.value,eT(ju.create)(bJ(e.value1)(e.value2)(e.value3)))));if(e instanceof Eg)return sT(e.value0)(e.value1)(e.value2);if(e instanceof Cg)return wu(wu(Yt(e.value1))(Qg))(function(a){return wu(wu(Yt(e.value2))(Qg))(function(u){return wu(wu(Yt(e.value3))(Qg))(function(l){return $(new pa(e.value0,new hv(de.value,l,u,a)))})})});throw new Error(\"Failed pattern match at Parser (line 116, column 1 - line 116, column 41): \"+[e.constructor.name])},uj=function(e){return function(a){return function(u){return tf(aT(ve(e)))(function(l){var v=iT(u)(l);if(v instanceof R)return Pp(QD(\"using cached library \"+u))(function(){return $r(new te(v.value0))});if(v instanceof I)return Pp(QD(\"loading library \"+(u+\"...\")))(function(){return tf(SJ(u))(function(t){if(t instanceof S)return $r(new S(new nu(t.value0,a)));if(t instanceof te)return Pp(QD(\"parsing library \"+(u+\"...\")))(function(){return tf(aj(e)(t.value0))(function(i){if(i instanceof S)return $r(new S(i.value0));if(i instanceof te)return Pp(QD(\"successfully parsed library \"+u))(function(){return Pp(aT(Ae(xg(u)(i.value0)(l))(e)))(function(){return $r(new te(i.value0))})});throw new Error(\"Failed pattern match at Parser (line 470, column 11 - line 475, column 33): \"+[i.constructor.name])})});throw new Error(\"Failed pattern match at Parser (line 465, column 7 - line 475, column 33): \"+[t.constructor.name])})});throw new Error(\"Failed pattern match at Parser (line 458, column 3 - line 475, column 33): \"+[v.constructor.name])})}}},lj=function(e){return function(a){return wu(EJ(a))(function(u){return wu(CJ)(function(l){return wu(TJ(uj(l)(e)(u)))(function(v){if(v instanceof S)return ow(v.value0);if(v instanceof te)return iw(tT(function(t){return MJ(v.value0)(t)}))(function(){return $(new n0(e,0))});throw new Error(\"Failed pattern match at Parser (line 448, column 3 - line 452, column 25): \"+[v.constructor.name])})})})}},sT=function(e){return function(a){return function(u){return wu(e2)(function(l){return DT(l)(e)(a)(u)})}}},DT=function(e){return function(a){return function(u){return function(l){if(u instanceof h)return wu(e2)(function(v){return iw(uT(e))(function(){return wu(Yt(l))(function(t){return iw(uT(v))(function(){return $(t)})})})});if(u instanceof w)return $(new _v(a,function(v){return DT(xg(u.value0)(v)(e))(a)(u.value1)(l)}));throw new Error(\"Failed pattern match at Parser (line 433, column 1 - line 433, column 77): \"+[e.constructor.name,a.constructor.name,u.constructor.name,l.constructor.name])}}}},RT=dJ(\"astToListMaybeAction\",\"Parser\",function(){return ee(ud)(B(ed)(void 0))(function(){return oT(ej)})}),vj=RT(95),IT=function(e){return function(a){return function(u){var l=Mg(a);if(l instanceof S)return $r(new S(l.value0));if(l instanceof te)return tf(Hg(e)(fl)(vj(l.value0)))(function(v){if(v instanceof S)return $r(new S(v.value0));if(v instanceof te)return $r(new te({actions:v.value0.value0,evalTime:u}));throw new Error(\"Failed pattern match at Parser (line 44, column 7 - line 46, column 76): \"+[v.constructor.name])});throw new Error(\"Failed pattern match at Parser (line 40, column 3 - line 46, column 76): \"+[l.constructor.name])}}};var dT=Vl(xa),GT=dT(m0),Qt=ci(cl),wT=ep(uu),rj=dT(Sf()(ma({reflectSymbol:function(){return\"ain\"}})(Qt)()(ma({reflectSymbol:function(){return\"fft\"}})(Qt)()(ma({reflectSymbol:function(){return\"hi\"}})(Qt)()(ma({reflectSymbol:function(){return\"ifft\"}})(Qt)()(ma({reflectSymbol:function(){return\"ihi\"}})(Qt)()(ma({reflectSymbol:function(){return\"ilo\"}})(Qt)()(ma({reflectSymbol:function(){return\"imgURLs\"}})(wT)()(ma({reflectSymbol:function(){return\"imid\"}})(Qt)()(ma({reflectSymbol:function(){return\"lo\"}})(Qt)()(ma({reflectSymbol:function(){return\"mid\"}})(Qt)()(ma({reflectSymbol:function(){return\"vidURLs\"}})(wT)()(ma({reflectSymbol:function(){return\"webcam\"}})(Qt)()(Mf)))))))))))))),tj=L(rv),mT=Vo(xa)(cl),v2=function(e){var a=Pn(e.actions),u=DI(H1)(a),l=function(){var o=Cl(u);return o===0?\"\":` audio:\n`+(GT(V1)(u)+`\n`)}(),v=DI(j1)(a),t=function(){var o=Cl(u)+Cl(v)|0;return o===0?`(program has no actions)\n`:\"\"}(),i=function(){var o=Cl(v);return o===0?\"\":` visual:\n`+(GT(V1)(v)+`\n`)}();return l+(i+t)},of=function(e){return rj(rD)(tj(function(a){return a.signal})(Pn(e.actions)))},hT=function(e){return mT(j1)(Pn(e.actions))},gT=function(e){return mT(H1)(Pn(e.actions))},yT=function(){var a=Hs();return{actions:h.value,evalTime:a}};var cw=e=>a=>u=>()=>{e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,a),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR)},_w=cw,fw=e=>a=>u=>()=>{e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,512,1,0,e.LUMINANCE,e.UNSIGNED_BYTE,a),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR)};var fv=function(e,a,u){var l=0,v;return function(t){if(l===2)return v;if(l===1)throw new ReferenceError(e+\" was needed before it finished initializing (module \"+a+\", line \"+t+\")\",a,t);return l=1,v=u(),l=2,v}},tn=$e(Ue);var oj=m(mf),cj=Wu(Bl),_j=Dn(Bl),fj=qv(PR),pj=v_(Bl),sj=os(Bl),Dj=n_(Bl),Rj=cs(Bl),Ij=hf(mf),i2=Tv(Oo),o2=Fu(I0),c2=Qu(I0),eR=L(wv),Vc=nv(Jl),Pl=X(Nv),Gj=wn(Jl),Ra=function(){function e(a,u,l,v){this.value0=a,this.value1=u,this.value2=l,this.value3=v}return e.create=function(a){return function(u){return function(l){return function(v){return new e(a,u,l,v)}}}},e}(),Zl=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),qa=function(){function e(a,u,l){this.value0=a,this.value1=u,this.value2=l}return e.create=function(a){return function(u){return function(l){return new e(a,u,l)}}},e}(),Ql=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),ja=function(){function e(a,u){this.value0=a,this.value1=u}return e.create=function(a){return function(u){return new e(a,u)}},e}(),i0=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),be=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}(),Ca=function(){function e(a){this.value0=a}return e.create=function(a){return new e(a)},e}();var wj={channels:function(e){return 1}},dj={channels:function(e){return 3}},mj={channels:function(e){return 2}},hj={channels:function(e){return 1}},cu=function(e){return e.unaryFunction},gj=function(e){return e.toVec4s},yj=function(e){return e.toVec3s},Fj=function(e){return e.toVec2s},bj=function(e){return e.toFloats},xD=function(e){return e.toExprSafe},Ze=function(e){return e.toExpr};var Ej=function(e){if(e instanceof Ra)return new qa(e.value2,e.value3,e.value3);if(e instanceof Zl)return new Ql(e.value0+\".zww\");throw new Error(\"Failed pattern match at Expr (line 510, column 1 - line 510, column 27): \"+[e.constructor.name])},aR=function(e){if(e instanceof Ra)return new ja(e.value2,e.value3);if(e instanceof Zl)return new i0(e.value0+\".zw\");throw new Error(\"Failed pattern match at Expr (line 502, column 1 - line 502, column 26): \"+[e.constructor.name])},Fo=function(e){return e.swizzleZ},Cj=function(e){return e.swizzleYZZZ},Tj=function(e){if(e instanceof Ra)return new qa(e.value1,e.value2,e.value3);if(e instanceof Zl)return new Ql(e.value0+\".yzw\");throw new Error(\"Failed pattern match at Expr (line 514, column 1 - line 514, column 27): \"+[e.constructor.name])},n2=function(e){return e.swizzleYZ};var bo=function(e){return e.swizzleY},Mj=function(e){return e.swizzleXYZZ},qp=function(e){return e.swizzleXYZ},Sj=function(e){return e.swizzleXYYY},Lj=function(e){return e.swizzleXYY},Eo=function(e){return e.swizzleXY},jv=function(e){return e.swizzleX};var Bc=function(e){if(e instanceof Ra)return new be(e.value3);if(e instanceof Zl)return new Ca(e.value0+\".w\");throw new Error(\"Failed pattern match at Expr (line 498, column 1 - line 498, column 26): \"+[e.constructor.name])},_2=function(e){return e.showType};var Aj=function(e){return e.isConstant},Co=function(e){return function(a){return function(u){return e+(\"(\"+(a+(\",\"+(u+\")\"))))}}},Su=function(e){return function(a){return e+(\"(\"+(a+\")\"))}},pf=function(e){return cu(e)(bs)(Su(\"log\"))},f2=function(e){return cu(e)(yD)(Su(\"log2\"))},p2=function(e){return cu(e)(Es)(Su(\"sign\"))},uR=function(e){return cu(e)(Qo)(Su(\"sin\"))},lR=function(e){return cu(e)(Cs)(Su(\"sqrt\"))},CT=function(e){return cu(e)(Ts)(Su(\"tan\"))},Nj=function(e){return e.fromVec4s},Pj=function(e){return e.fromVec3s},s2=function(e){return e.fromVec2s},D2=function(e){return e.fromFloats},Fv=function(e){return e.fromFloat},vR=function(e){return cu(e)(function(a){return JR(Pd(a)(1))})(Su(\"fract\"))},Dw=function(e){return cu(e)(Zo)(Su(\"floor\"))},bv=function(e){return e.expr},qj=function(e){var a=cu(e),u=bv(e),l=xD(e);return function(v){return function(t){return function(i){return function(o){if(o instanceof be)return a(aa(v)(o.value0))(function(_){return Co(t)(_)(W_(o.value0))})(i);if(o instanceof Ca)return u(Co(t)(l(i))(o.value0));throw new Error(\"Failed pattern match at Expr (line 613, column 1 - line 613, column 99): \"+[v.constructor.name,t.constructor.name,i.constructor.name,o.constructor.name])}}}}};var TT=function(e){var a=bv(e),u=Ze(e);return function(l){return function(v){return function(t){return a(\"mix(\"+(u(l)+(\",\"+(u(v)+(\",\"+(u(t)+\")\"))))))}}}},Rw=function(e){return cu(e)(Fs)(Su(\"exp\"))},R2=function(e){return e.dotSum};var Wp=function(e){return qj(e)(B_)(\"div\")},Iw=function(e){return cu(e)(Mn)(Su(\"cos\"))},sl=function(e){return e.constant},MT=function(e){return sl(e)(0)},ST=function(e){return cu(e)(Bf)(Su(\"ceil\"))},LT=function(e){var a=function(u){return\"(exp(log(abs(\"+(u+(\"))/3.)*sign(\"+(u+\"))\")))};return cu(e)(hD)(a)},Bp=function(e){var a=U(e.Channels0()),u=bj(e),l=Fj(e),v=yj(e),t=gj(e);return function(i){var o=D2(i),_=s2(i),s=Pj(i),b=Nj(i);return function(P){if(a(Y(P))===1)return o(u(P));if(a(Y(P))===2)return _(l(P));if(a(Y(P))===3)return s(v(P));if(pe)return b(t(P));throw new Error(\"Failed pattern match at Expr (line 41, column 1 - line 41, column 78): \"+[P.constructor.name])}}},bT=function(e){if(e)return 1;if(!e)return 0;throw new Error(\"Failed pattern match at Expr (line 688, column 1 - line 688, column 37): \"+[e.constructor.name])};var Jc=function(e){return e.binaryFunction},I2=function(e){return Jc(e)(cj)(Co(\"max\"))};var G2=function(e){return Jc(e)(_j)(Co(\"min\"))};var AT=function(e){return Jc(e)(fj)(Co(\"mod\"))};var Gw=function(e){return Jc(e)(__)(Co(\"pow\"))};var _f=function(e){return function(a){return function(u){return\"(\"+(a+(e+(u+\")\")))}}},zp=function(e){var a=U(e.Channels0()),u=Jc(e),l=_2(e);return function(v){return function(t){return function(i){return function(o){return function(_){if(a(o)===1)return u(function(s){return function(b){return bT(v(s)(b))}})(function(s){return function(b){return Su(l(o))(_f(i)(s)(b))}})(o)(_);if(pe)return u(function(s){return function(b){return bT(v(s)(b))}})(function(s){return function(b){return Su(l(o))(Co(t)(s)(b))}})(o)(_);throw new Error(\"Failed pattern match at Expr (line 683, column 1 - line 683, column 107): \"+[v.constructor.name,t.constructor.name,i.constructor.name,o.constructor.name,_.constructor.name])}}}}}},NT=function(e){return zp(e)(oj)(\"equal\")(\"==\")},PT=function(e){return zp(e)(pj)(\"greaterThan\")(\">\")},w2=function(e){return zp(e)(sj)(\"greaterThanEqual\")(\">=\")},ww=function(e){return zp(e)(Dj)(\"lessThan\")(\"<\")},d2=function(e){return zp(e)(Rj)(\"lessThanEqual\")(\"<=\")},qT=function(e){return zp(e)(Ij)(\"notEqual\")(\"!=\")};var m2=function(e){var a=cu(e),u=bv(e),l=xD(e);return function(v){return function(t){return function(i){return function(o){if(o instanceof be)return a(aa(v)(o.value0))(function(_){return _f(t)(_)(W_(o.value0))})(i);if(o instanceof Ca)return u(_f(t)(l(i))(o.value0));throw new Error(\"Failed pattern match at Expr (line 602, column 1 - line 602, column 99): \"+[v.constructor.name,t.constructor.name,i.constructor.name,o.constructor.name])}}}}},dw=function(e){return m2(e)(i2)(\"-\")},nR=function(e){return m2(e)(o2)(\"*\")},h2=function(e){var a=cu(e),u=bv(e),l=xD(e);return function(v){return function(t){return function(i){return function(o){if(i instanceof be)return a(v(i.value0))(_f(t)(W_(i.value0)))(o);if(i instanceof Ca)return u(_f(t)(i.value0)(l(o)));throw new Error(\"Failed pattern match at Expr (line 598, column 1 - line 598, column 99): \"+[v.constructor.name,t.constructor.name,i.constructor.name,o.constructor.name])}}}}},g2=function(e){return h2(e)(i2)(\"-\")},sf=function(e){return h2(e)(o2)(\"*\")},$j=function(e){return cu(e)(function(a){return a*a})(function(a){return _f(\"*\")(a)(a)})},Oj=function(e){return Jc(e)(Nd)(Co(\"atan\"))},$T=function(e){return cu(e)(ys)(Su(\"atan\"))},OT=function(e){return cu(e)(gs)(Su(\"asin\"))},y2=function(e){var a=Jc(e);return function(u){return function(l){return a(u)(_f(l))}}},Wr=function(e){return y2(e)(i2)(\"-\")},pv=function(e){return y2(e)(o2)(\"*\")},UT=function(e){var a=pv(e),u=ww(e),l=Fv(e);return function(v){return function(t){return a(u(l(v))(t))(t)}}},Uj=function(e){var a=Jc(e);return function(u){return function(l){return a(u)(Co(l))}}},Kt=function(e){return Uj(e)(B_)(\"div\")},WT=function(e){var a=Kt(e),u=pf(e),l=sl(e);return function(v){return a(u(v))(u(l(10)))}},BT=function(e){var a=pv(e),u=Gw(e),l=Kt(e),v=Wr(e),t=sl(e);return function(i){return a(u(l(v(i)(t(69)))(t(12)))(t(2)))(t(440))}},zT=function(e){var a=aa(Wp(e))(new be(10)),u=sf(e)(new be(20)),l=pf(e);return function(v){return a(u(l(v)))}},Wj=function(e){return h2(e)(c2)(\"+\")},kT=function(e){return m2(e)(c2)(\"+\")},xt=function(e){return y2(e)(c2)(\"+\")},F2=function(e){var a=Jo(e);return function(u){return a(xt(u))}},VT=function(e){return cu(e)(hs)(Su(\"acos\"))},jc=function(e){return cu(e)(JR)(Su(\"abs\"))},iu=function(e){var a=Ze(e);return function(u){var l=bv(u);return function(v){return function(t){return l(a(t)+(\".\"+v))}}}},o0=function(e){return function(a){return e instanceof qa&&a instanceof be?new Ra(e.value0,e.value1,e.value2,a.value0):new Zl(\"vec4(\"+(Ze(ou(0))(e)+(\",\"+(Ze(Mu(0))(a)+\")\"))))}},r2=function(e){return function(a){return e instanceof ja&&a instanceof ja?new Ra(e.value0,e.value1,a.value0,a.value1):new Zl(\"vec4(\"+(Ze(Nu(0))(e)+(\",\"+(Ze(Nu(0))(a)+\")\"))))}},t2=function(e){return function(a){return e instanceof ja&&a instanceof be?new qa(e.value0,e.value1,a.value0):new Ql(\"vec3(\"+(Ze(Nu(0))(e)+(\",\"+(Ze(Mu(0))(a)+\")\"))))}},Bj=function(e){var a=fa(Ma(e));if(a instanceof I)return new k(lu(qp(zc)(Y(e)))(ha(Fv(ou(0))(Bc(Y(e))))),I.value);if(a instanceof R){var u=fa(Ma(a.value0));if(u instanceof I){var l=Ej(Y(a.value0)),v=pw(Bc(Y(e)))(Eo(Op)(Y(a.value0))),t=qp(zc)(Y(e));return new k(lu(t)(lu(v)(ha(l))),I.value)}if(u instanceof R){var i=Tj(Y(u.value0)),l=t2(aR(Y(a.value0)))(jv(JT)(Y(u.value0))),v=pw(Bc(Y(e)))(Eo(Op)(Y(a.value0))),t=qp(zc)(Y(e));return new k(lu(t)(lu(v)(lu(l)(ha(i)))),fa(Ma(u.value0)))}throw new Error(\"Failed pattern match at Expr (line 346, column 7 - line 357, column 87): \"+[u.constructor.name])}throw new Error(\"Failed pattern match at Expr (line 342, column 3 - line 357, column 87): \"+[a.constructor.name])},zj=function(e){var a=fa(Ma(e));if(a instanceof I)return new k(ha(Mj(rn)(Y(e))),I.value);if(a instanceof R){var u=fa(Ma(a.value0));if(u instanceof I){var l=Cj(rn)(Y(a.value0)),v=o0(Y(e))(jv(cf)(Y(a.value0)));return new k(lu(v)(ha(l)),I.value)}if(u instanceof R){var t=fa(Ma(u.value0));if(t instanceof I){var i=Fv(pu(0))(Fo(rn)(Y(u.value0))),l=r2(n2(rn)(Y(a.value0)))(Eo(ff)(Y(u.value0))),v=o0(Y(e))(jv(cf)(Y(a.value0)));return new k(lu(v)(lu(l)(ha(i))),I.value)}if(t instanceof R){var i=jT(Fo(rn)(Y(u.value0)))(Y(t.value0)),l=r2(n2(rn)(Y(a.value0)))(Eo(ff)(Y(u.value0))),v=o0(Y(e))(jv(cf)(Y(a.value0)));return new k(lu(v)(lu(l)(ha(i))),fa(Ma(t.value0)))}throw new Error(\"Failed pattern match at Expr (line 379, column 11 - line 389, column 81): \"+[t.constructor.name])}throw new Error(\"Failed pattern match at Expr (line 373, column 7 - line 389, column 81): \"+[u.constructor.name])}throw new Error(\"Failed pattern match at Expr (line 370, column 3 - line 389, column 81): \"+[a.constructor.name])},kj=function(e){var a=fa(Ma(e));if(a instanceof I)return new k(lu(Eo(ff)(Y(e)))(ha(Fv(Nu(0))(Fo(rn)(Y(e))))),I.value);if(a instanceof R){var u=n2(rn)(Y(a.value0)),l=ei(Fo(rn)(Y(e)))(jv(cf)(Y(a.value0))),v=Eo(ff)(Y(e));return new k(lu(v)(lu(l)(ha(u))),fa(Ma(a.value0)))}throw new Error(\"Failed pattern match at Expr (line 317, column 3 - line 323, column 71): \"+[a.constructor.name])},Vj=function(e){var a=fa(Ma(e));if(a instanceof I)return new k(ha(Sj(kc)(Y(e))),I.value);if(a instanceof R){var u=r2(Y(e))(Y(a.value0));return new k(ha(u),fa(Ma(a.value0)))}throw new Error(\"Failed pattern match at Expr (line 362, column 3 - line 366, column 51): \"+[a.constructor.name])},Jj=function(e){var a=fa(Ma(e));if(a instanceof I)return new k(ha(Lj(kc)(Y(e))),I.value);if(a instanceof R){var u=fa(Ma(a.value0));if(u instanceof I){var l=Fv(ou(0))(bo(kc)(Y(a.value0))),v=t2(Y(e))(jv(Up)(Y(a.value0)));return new k(lu(v)(ha(l)),I.value)}if(u instanceof R){var l=pw(bo(kc)(Y(a.value0)))(Y(u.value0)),v=t2(Y(e))(jv(Up)(Y(a.value0)));return new k(lu(v)(ha(l)),fa(Ma(u.value0)))}throw new Error(\"Failed pattern match at Expr (line 330, column 7 - line 338, column 65): \"+[u.constructor.name])}throw new Error(\"Failed pattern match at Expr (line 327, column 3 - line 338, column 65): \"+[a.constructor.name])},jj=function(e){var a=fa(Ma(e));if(a instanceof I)return new k(ha(Fv(pu(0))(Y(e))),I.value);if(a instanceof R){var u=fa(Ma(a.value0));if(u instanceof I)return new k(ha(jT(Y(e))(Fv(ou(0))(Y(a.value0)))),I.value);if(u instanceof R){var l=fa(Ma(u.value0));if(l instanceof I)return new k(ha(Yj(Y(e))(Y(a.value0))(Fv(Nu(0))(Y(u.value0)))),I.value);if(l instanceof R)return new k(ha(Qj(Y(e))(Y(a.value0))(Y(u.value0))(Y(l.value0))),fa(Ma(l.value0)));throw new Error(\"Failed pattern match at Expr (line 311, column 11 - line 313, column 143): \"+[l.constructor.name])}throw new Error(\"Failed pattern match at Expr (line 308, column 7 - line 313, column 143): \"+[u.constructor.name])}throw new Error(\"Failed pattern match at Expr (line 305, column 3 - line 313, column 143): \"+[a.constructor.name])},Hj=function(e){var a=fa(Ma(e));if(a instanceof I)return new k(ha(Fv(ou(0))(Y(e))),I.value);if(a instanceof R){var u=fa(Ma(a.value0));if(u instanceof I)return new k(ha(pw(Y(e))(Fv(Nu(0))(Y(a.value0)))),I.value);if(u instanceof R)return new k(ha(Zj(Y(e))(Y(a.value0))(Y(u.value0))),fa(Ma(u.value0)));throw new Error(\"Failed pattern match at Expr (line 299, column 7 - line 301, column 119): \"+[u.constructor.name])}throw new Error(\"Failed pattern match at Expr (line 296, column 3 - line 301, column 119): \"+[a.constructor.name])},Xj=function(e){var a=fa(Ma(e));if(a instanceof I)return new k(ha(Fv(Nu(0))(Y(e))),I.value);if(a instanceof R)return new k(ha(ei(Y(e))(Y(a.value0))),fa(Ma(a.value0)));throw new Error(\"Failed pattern match at Expr (line 290, column 3 - line 292, column 96): \"+[a.constructor.name])},zc={swizzleZ:function(e){return e instanceof Ra?new be(e.value2):iu(pu(0))(Mu(0))(\"z\")(e)},swizzleYZ:function(e){return e instanceof Ra?new ja(e.value1,e.value2):iu(pu(0))(Nu(0))(\"yz\")(e)},swizzleZZ:function(e){return e instanceof Ra?new ja(e.value2,e.value2):iu(pu(0))(Nu(0))(\"zz\")(e)},swizzleXYZ:function(e){return e instanceof Ra?new qa(e.value0,e.value1,e.value2):iu(pu(0))(ou(0))(\"xyz\")(e)},swizzleXYZZ:function(e){return e instanceof Ra?new Ra(e.value0,e.value1,e.value2,e.value2):iu(pu(0))(pu(0))(\"xyzz\")(e)},swizzleYZZZ:function(e){return e instanceof Ra?new Ra(e.value1,e.value2,e.value2,e.value2):iu(pu(0))(pu(0))(\"yzzz\")(e)},swizzleZZZZ:function(e){return e instanceof Ra?new Ra(e.value2,e.value2,e.value2,e.value2):iu(pu(0))(pu(0))(\"zzzz\")(e)}},rn={swizzleZ:function(e){return e instanceof qa?new be(e.value2):iu(ou(0))(Mu(0))(\"z\")(e)},swizzleYZ:function(e){return e instanceof qa?new ja(e.value1,e.value2):iu(ou(0))(Nu(0))(\"z\")(e)},swizzleZZ:function(e){return e instanceof qa?new ja(e.value2,e.value2):iu(ou(0))(Nu(0))(\"zz\")(e)},swizzleXYZ:tn,swizzleXYZZ:function(e){return e instanceof qa?new Ra(e.value0,e.value1,e.value2,e.value2):iu(ou(0))(pu(0))(\"xyzz\")(e)},swizzleYZZZ:function(e){return e instanceof qa?new Ra(e.value1,e.value2,e.value2,e.value2):iu(ou(0))(pu(0))(\"yzzz\")(e)},swizzleZZZZ:function(e){return e instanceof qa?new Ra(e.value2,e.value2,e.value2,e.value2):iu(ou(0))(pu(0))(\"zzzz\")(e)}},Op={swizzleY:function(e){return e instanceof Ra?new be(e.value1):iu(pu(0))(Mu(0))(\"y\")(e)},swizzleXY:function(e){return e instanceof Ra?new ja(e.value0,e.value1):iu(pu(0))(Nu(0))(\"xy\")(e)},swizzleXYY:function(e){return e instanceof Ra?new qa(e.value0,e.value1,e.value1):iu(pu(0))(ou(0))(\"xyy\")(e)},swizzleYYY:function(e){return e instanceof Ra?new qa(e.value1,e.value1,e.value1):iu(pu(0))(ou(0))(\"yyy\")(e)},swizzleXYYY:function(e){return e instanceof Ra?new Ra(e.value0,e.value1,e.value1,e.value1):iu(pu(0))(pu(0))(\"xyyy\")(e)}},ff={swizzleY:function(e){return e instanceof qa?new be(e.value1):iu(ou(0))(Mu(0))(\"y\")(e)},swizzleXY:function(e){return e instanceof qa?new ja(e.value0,e.value1):iu(ou(0))(Nu(0))(\"xy\")(e)},swizzleXYY:function(e){return e instanceof qa?new qa(e.value0,e.value1,e.value1):iu(ou(0))(ou(0))(\"xyy\")(e)},swizzleYYY:function(e){return e instanceof qa?new qa(e.value1,e.value1,e.value1):iu(ou(0))(ou(0))(\"yyy\")(e)},swizzleXYYY:function(e){return e instanceof qa?new Ra(e.value0,e.value1,e.value1,e.value1):iu(ou(0))(pu(0))(\"xyyy\")(e)}},kc={swizzleY:function(e){return e instanceof ja?new be(e.value1):iu(Nu(0))(Mu(0))(\"y\")(e)},swizzleXY:tn,swizzleXYY:function(e){return e instanceof ja?new qa(e.value0,e.value1,e.value1):iu(Nu(0))(ou(0))(\"xyy\")(e)},swizzleYYY:function(e){return e instanceof ja?new qa(e.value1,e.value1,e.value1):iu(Nu(0))(ou(0))(\"yyy\")(e)},swizzleXYYY:function(e){return e instanceof ja?new Ra(e.value0,e.value1,e.value1,e.value1):iu(Nu(0))(pu(0))(\"xyyy\")(e)}},JT={swizzleX:function(e){return e instanceof Ra?new be(e.value0):iu(pu(0))(Mu(0))(\"x\")(e)}},cf={swizzleX:function(e){return e instanceof qa?new be(e.value0):iu(ou(0))(Mu(0))(\"x\")(e)}},Up={swizzleX:function(e){return e instanceof ja?new be(e.value0):iu(Nu(0))(Mu(0))(\"x\")(e)}},jT=function(e){return function(a){return e instanceof be&&a instanceof qa?new Ra(e.value0,a.value0,a.value1,a.value2):new Zl(\"vec4(\"+(Ze(Mu(0))(e)+(\",\"+(Ze(ou(0))(a)+\")\"))))}},pw=function(e){return function(a){return e instanceof be&&a instanceof ja?new qa(e.value0,a.value0,a.value1):new Ql(\"vec3(\"+(Ze(Mu(0))(e)+(\",\"+(Ze(Nu(0))(a)+\")\"))))}},Yj=function(e){return function(a){return function(u){return e instanceof be&&a instanceof be&&u instanceof ja?new Ra(e.value0,a.value0,u.value0,u.value1):new Zl(\"vec4(\"+(Ze(Mu(0))(e)+(\",\"+(Ze(Mu(0))(a)+(\",\"+(Ze(Nu(0))(u)+\")\"))))))}}},ei=function(e){return function(a){return e instanceof be&&a instanceof be?new ja(e.value0,a.value0):new i0(\"vec2(\"+(Ze(Mu(0))(e)+(\",\"+(Ze(Mu(0))(a)+\")\"))))}},Zj=function(e){return function(a){return function(u){return e instanceof be&&a instanceof be&&u instanceof be?new qa(e.value0,a.value0,u.value0):new Ql(\"vec3(\"+(Ze(Mu(0))(e)+(\",\"+(Ze(Mu(0))(a)+(\",\"+(Ze(Mu(0))(u)+\")\"))))))}}},Qj=function(e){return function(a){return function(u){return function(l){return e instanceof be&&a instanceof be&&u instanceof be&&l instanceof be?new Ra(e.value0,a.value0,u.value0,l.value0):new Zl(\"vec4(\"+(Ze(Mu(0))(e)+(\",\"+(Ze(Mu(0))(a)+(\",\"+(Ze(Mu(0))(u)+(\",\"+(Ze(Mu(0))(l)+\")\"))))))))}}}},Mu=fv(\"exprFloat\",\"Expr\",function(){return{constant:be.create,expr:Ca.create,isConstant:function(e){if(e instanceof be)return!0;if(e instanceof Ca)return!1;throw new Error(\"Failed pattern match at Expr (line 59, column 1 - line 82, column 20): \"+[e.constructor.name])},toExpr:function(e){if(e instanceof be)return Pl(e.value0);if(e instanceof Ca)return e.value0;throw new Error(\"Failed pattern match at Expr (line 59, column 1 - line 82, column 20): \"+[e.constructor.name])},toExprSafe:function(e){if(e instanceof be)return W_(e.value0);if(e instanceof Ca)return e.value0;throw new Error(\"Failed pattern match at Expr (line 59, column 1 - line 82, column 20): \"+[e.constructor.name])},unaryFunction:function(e){return function(a){return function(u){if(u instanceof be)return new be(e(u.value0));if(u instanceof Ca)return new Ca(a(u.value0));throw new Error(\"Failed pattern match at Expr (line 59, column 1 - line 82, column 20): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},binaryFunction:function(e){return function(a){return function(u){return function(l){return u instanceof be&&l instanceof be?new be(e(u.value0)(l.value0)):new Ca(a(xD(Mu(0))(u))(xD(Mu(0))(l)))}}}},showType:function(e){return\"float\"},fromFloat:tn,fromFloats:tn,fromVec2s:ZT(75),fromVec3s:xT(76),fromVec4s:uM(77),toFloats:tn,toVec2s:HT(79),toVec3s:XT(80),toVec4s:YT(81),dotSum:tn,Channels0:function(){return hj}}}),Nu=fv(\"exprVec2\",\"Expr\",function(){return{constant:function(e){return new ja(e,e)},expr:i0.create,isConstant:function(e){if(e instanceof ja)return!0;if(e instanceof i0)return!1;throw new Error(\"Failed pattern match at Expr (line 96, column 1 - line 120, column 60): \"+[e.constructor.name])},toExpr:function(e){if(e instanceof ja)return\"vec2(\"+(Pl(e.value0)+(\",\"+(Pl(e.value1)+\")\")));if(e instanceof i0)return e.value0;throw new Error(\"Failed pattern match at Expr (line 96, column 1 - line 120, column 60): \"+[e.constructor.name])},toExprSafe:function(e){return Ze(Nu(0))(e)},unaryFunction:function(e){return function(a){return function(u){if(u instanceof ja)return new ja(e(u.value0),e(u.value1));if(u instanceof i0)return new i0(a(u.value0));throw new Error(\"Failed pattern match at Expr (line 96, column 1 - line 120, column 60): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},binaryFunction:function(e){return function(a){return function(u){return function(l){return u instanceof ja&&l instanceof ja?new ja(e(u.value0)(l.value0),e(u.value1)(l.value1)):new i0(a(Ze(Nu(0))(u))(Ze(Nu(0))(l)))}}}},showType:function(e){return\"vec2\"},fromFloat:function(e){if(e instanceof be)return new ja(e.value0,e.value0);if(e instanceof Ca)return new i0(\"vec2(\"+(e.value0+\")\"));throw new Error(\"Failed pattern match at Expr (line 96, column 1 - line 120, column 60): \"+[e.constructor.name])},fromFloats:HT(111),fromVec2s:tn,fromVec3s:eM(113),fromVec4s:lM(114),toFloats:ZT(115),toVec2s:tn,toVec3s:QT(117),toVec4s:KT(118),dotSum:function(e){return e instanceof ja?new be(e.value0+e.value1):new Ca(\"dot(\"+(Ze(Nu(0))(e)+\",vec2(1.))\"))},Channels0:function(){return mj}}}),ou=fv(\"exprVec3\",\"Expr\",function(){return{constant:function(e){return new qa(e,e,e)},expr:Ql.create,isConstant:function(e){if(e instanceof qa)return!0;if(e instanceof Ql)return!1;throw new Error(\"Failed pattern match at Expr (line 134, column 1 - line 158, column 60): \"+[e.constructor.name])},toExpr:function(e){if(e instanceof qa)return\"vec3(\"+(Pl(e.value0)+(\",\"+(Pl(e.value1)+(\",\"+(Pl(e.value2)+\")\")))));if(e instanceof Ql)return e.value0;throw new Error(\"Failed pattern match at Expr (line 134, column 1 - line 158, column 60): \"+[e.constructor.name])},toExprSafe:function(e){return Ze(ou(0))(e)},unaryFunction:function(e){return function(a){return function(u){if(u instanceof qa)return new qa(e(u.value0),e(u.value1),e(u.value2));if(u instanceof Ql)return new Ql(a(u.value0));throw new Error(\"Failed pattern match at Expr (line 134, column 1 - line 158, column 60): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},binaryFunction:function(e){return function(a){return function(u){return function(l){return u instanceof qa&&l instanceof qa?new qa(e(u.value0)(l.value0),e(u.value1)(l.value1),e(u.value2)(l.value2)):new Ql(a(Ze(ou(0))(u))(Ze(ou(0))(l)))}}}},showType:function(e){return\"vec3\"},fromFloat:function(e){if(e instanceof be)return new qa(e.value0,e.value0,e.value0);if(e instanceof Ca)return new Ql(\"vec3(\"+(e.value0+\")\"));throw new Error(\"Failed pattern match at Expr (line 134, column 1 - line 158, column 60): \"+[e.constructor.name])},fromFloats:XT(149),fromVec2s:QT(150),fromVec3s:tn,fromVec4s:vM(152),toFloats:xT(153),toVec2s:eM(154),toVec3s:tn,toVec4s:aM(156),dotSum:function(e){return e instanceof qa?new be(e.value0+e.value1+e.value2):new Ca(\"dot(\"+(Ze(ou(0))(e)+\",vec3(1.))\"))},Channels0:function(){return dj}}}),pu=fv(\"exprVec4\",\"Expr\",function(){return{constant:function(e){return new Ra(e,e,e,e)},expr:Zl.create,isConstant:function(e){if(e instanceof Ra)return!0;if(e instanceof Zl)return!1;throw new Error(\"Failed pattern match at Expr (line 172, column 1 - line 196, column 60): \"+[e.constructor.name])},toExpr:function(e){if(e instanceof Ra)return\"vec4(\"+(Pl(e.value0)+(\",\"+(Pl(e.value1)+(\",\"+(Pl(e.value2)+(\",\"+(Pl(e.value3)+\")\")))))));if(e instanceof Zl)return e.value0;throw new Error(\"Failed pattern match at Expr (line 172, column 1 - line 196, column 60): \"+[e.constructor.name])},toExprSafe:function(e){return Ze(pu(0))(e)},unaryFunction:function(e){return function(a){return function(u){if(u instanceof Ra)return new Ra(e(u.value0),e(u.value1),e(u.value2),e(u.value3));if(u instanceof Zl)return new Zl(a(u.value0));throw new Error(\"Failed pattern match at Expr (line 172, column 1 - line 196, column 60): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},binaryFunction:function(e){return function(a){return function(u){return function(l){return u instanceof Ra&&l instanceof Ra?new Ra(e(u.value0)(l.value0),e(u.value1)(l.value1),e(u.value2)(l.value2),e(u.value3)(l.value3)):new Zl(a(Ze(pu(0))(u))(Ze(pu(0))(l)))}}}},showType:function(e){return\"vec4\"},fromFloat:function(e){if(e instanceof be)return new Ra(e.value0,e.value0,e.value0,e.value0);if(e instanceof Ca)return new Zl(\"vec4(\"+(e.value0+\")\"));throw new Error(\"Failed pattern match at Expr (line 172, column 1 - line 196, column 60): \"+[e.constructor.name])},fromFloats:YT(187),fromVec2s:KT(188),fromVec3s:aM(189),fromVec4s:tn,toFloats:uM(191),toVec2s:lM(192),toVec3s:vM(193),toVec4s:tn,dotSum:function(e){return e instanceof Ra?new be(e.value0+e.value1+e.value2+e.value3):new Ca(\"dot(\"+(Ze(pu(0))(e)+\",vec4(1.))\"))},Channels0:function(){return wj}}}),HT=fv(\"floatsToVec2s\",\"Expr\",function(){var e=Vc(Xj);return function(a){return hl(e(a))}}),XT=fv(\"floatsToVec3s\",\"Expr\",function(){var e=Vc(Hj);return function(a){return hl(e(a))}}),YT=fv(\"floatsToVec4s\",\"Expr\",function(){var e=Vc(jj);return function(a){return hl(e(a))}}),ZT=fv(\"vec2sToFloats\",\"Expr\",function(){var e=eR(function(a){return lu(jv(Up)(a))(ha(bo(kc)(a)))});return function(a){return hl(e(a))}}),QT=fv(\"vec2sToVec3s\",\"Expr\",function(){var e=Vc(Jj);return function(a){return hl(e(a))}}),KT=fv(\"vec2sToVec4s\",\"Expr\",function(){var e=Vc(Vj);return function(a){return hl(e(a))}}),xT=fv(\"vec3sToFloats\",\"Expr\",function(){var e=eR(function(a){return lu(jv(cf)(a))(lu(bo(ff)(a))(ha(Fo(rn)(a))))});return function(a){return hl(e(a))}}),eM=fv(\"vec3sToVec2s\",\"Expr\",function(){var e=Vc(kj);return function(a){return hl(e(a))}}),aM=fv(\"vec3sToVec4s\",\"Expr\",function(){var e=Vc(zj);return function(a){return hl(e(a))}}),uM=fv(\"vec4sToFloats\",\"Expr\",function(){var e=eR(function(a){return lu(jv(JT)(a))(lu(bo(Op)(a))(lu(Fo(zc)(a))(ha(Fo(zc)(a)))))});return function(a){return hl(e(a))}}),lM=fv(\"vec4sToVec2s\",\"Expr\",function(){var e=eR(function(a){return lu(Eo(Op)(a))(ha(aR(a)))});return function(a){return hl(e(a))}}),vM=fv(\"vec4sToVec3s\",\"Expr\",function(){var e=Vc(Bj);return function(a){return hl(e(a))}}),j=Mu(59),na=Nu(96),du=ou(134),cn=pu(172);var nM=Ze(du),b2=bv(na),Br=bv(j),Kl=sl(j),ET=Ze(cn),Hv=Ze(j),E2=lR(j),$p=Ze(na),Kj=Kt(j),sw=Wr(j),on=pv(j),C2=xt(j),xj=F2(at)(j),c0=bo(kc),eH=qp(zc),yv=jv(Up),rM=I2(j),mw=G2(j),tM=Iw(j),iM=uR(j),oM=Oj(j),rR=function(e){return new Ql(\"hsvrgb(\"+(nM(e)+\")\"))},tR=function(e){return new Ql(\"rgbhsv(\"+(nM(e)+\")\"))},cM=b2(\"(2./res)\");var iR=function(e){var a=dw(e),u=nR(e);return function(l){return a(u(l)(Kl(2)))(Kl(1))}},hw=function(e){return function(a){return new Zl(\"mix(\"+(ET(e)+(\",\"+(ET(a)+(\",\"+(Hv(Bc(a))+\")\"))))))}},_M=function(e){var a=cu(e),u=bv(e),l=Ze(e);return function(v){return function(t){return function(i){return v instanceof be&&t instanceof be?a(BI(v.value0)(t.value0))(function(o){return\"clamp(\"+(o+(\",\"+(Pl(v.value0)+(\",\"+(Pl(t.value0)+\")\")))))})(i):u(\"clamp(\"+(l(i)+(\",\"+(Hv(v)+(\",\"+(Hv(t)+\")\"))))))}}}},aH=_M(j),fM=function(e){var a=Wj(e)(Kl(69)),u=sf(e)(Kl(12)),l=f2(e),v=aa(Wp(e))(Kl(440));return function(t){return a(u(l(v(t))))}},pM=function(e){var a=Gw(e)(sl(e)(10)),u=aa(Wp(e))(Kl(20));return function(l){return a(u(l))}},T2=function(e){var a=Aj(e),u=R2(e),l=$j(e),v=Wr(e),t=Ze(e);return function(i){return function(o){if(a(i)&&a(o))return E2(u(l(v(i)(o))));if(pe)return Br(\"distance(\"+(t(i)+(\",\"+(t(o)+\")\"))));throw new Error(\"Failed pattern match at Expr (line 769, column 1 - line 769, column 48): \"+[i.constructor.name,o.constructor.name])}}},sM=T2(na),To=function(e){return function(a){return Br(\"clamp((_etime-\"+(Pl(e)+(\")/(\"+(Pl(a)+(\"-\"+(Pl(e)+\"),0.,1.)\"))))))}},DM=function(e){return function(a){return Br(\"clamp((\"+(Pl(a)+(\"-_etime)/(\"+(Pl(a)+(\"-\"+(Pl(e)+\"),0.,1.)\"))))))}},M2=function(e){return function(a){return function(u){return function(l){return Br(\"iline(\"+($p(a)+(\",\"+($p(u)+(\",\"+(Hv(l)+(\",\"+($p(e)+\")\"))))))))}}}},oR=function(e){return function(a){return function(u){return function(l){return Br(\"line(\"+($p(a)+(\",\"+($p(u)+(\",\"+(Hv(l)+(\",\"+($p(e)+\")\"))))))))}}}},gw=function(e){var a=bv(e),u=Ze(e);return function(l){return function(v){return function(t){return a(\"mix(\"+(u(l)+(\",\"+(u(v)+(\",\"+(Hv(t)+\")\"))))))}}}},S2=Br(\"PI\"),RM=function(e){return function(a){return aH(Kl(0))(Kl(1))(Kj(sw(Kl(2.828427))(sM(e)(a)))(Kl(2.828427)))}};var L2=function(e){return function(a){var u=function(_){return function(s){return Br(\"step(\"+(Hv(_)+(\",\"+(Hv(s)+\")\"))))}},l=ba(a),v=eR(function(_){return be.create(Da(_))})(Gj(0)(l-1|0)),t=new be(1/Da(l)),i=function(_){return function(s){return on(sw(u(on(t)(_))(e))(u(C2(on(t)(_))(t))(e)))(s)}},o=dv(i)(v)(a);return xj(o)}},yw=function(e){return function(a){return e instanceof ja&&a instanceof be?new ja(a.value0,e.value1):b2(\"vec2(\"+(Hv(a)+(\",\"+(Hv(c0(e))+\")\"))))}},cR=function(e){var a=kT(e),u=nR(e);return function(l){return a(u(l)(Kl(.5)))(Kl(.5))}},A2=function(e){var a=iR(e),u=vR(e),l=pv(e),v=cR(e);return function(t){return function(i){return a(u(l(v(t))(i)))}}};var Fw=function(e){return function(a){return o0(eH(a))(on(Bc(a))(e))}},IM=function(e){var a=Fv(e),u=pv(e),l=ww(e),v=Wr(e),t=sl(e);return function(i){return function(o){var _=c0(i),s=yv(i),b=a(rM(s)(_)),P=a(mw(s)(_));return u(l(P)(o))(v(t(1))(l(b)(o)))}}},GM=function(e){var a=_M(e);return function(u){return function(l){var v=c0(u),t=yv(u);return a(mw(t)(v))(rM(t)(v))(l)}}},wM=function(e){var a=Wp(e),u=dw(e),l=nR(e),v=kT(e);return function(t){return function(i){return function(o){var _=sw(c0(i))(yv(i)),s=sw(c0(t))(yv(t)),b=a(u(o)(yv(t)))(s),P=l(b)(_);return v(P)(yv(i))}}}},dM=function(e){var a=c0(e),u=yv(e);return on(u)(tM(a))},mM=function(e){var a=c0(e),u=yv(e),l=on(u)(tM(a)),v=on(u)(iM(a));return ei(l)(v)},hM=function(e){var a=c0(e),u=yv(e);return on(u)(iM(a))},bw=function(e){return function(a){return e instanceof ja&&a instanceof be?new ja(e.value0,a.value0):b2(\"vec2(\"+(Hv(yv(e))+(\",\"+(Hv(a)+\")\"))))}},_R=function(e){var a=bv(e),u=Ze(e);return function(l){return function(v){return a(\"smoothstep(\"+(Hv(yv(l))+(\",\"+(Hv(c0(l))+(\",\"+(u(v)+\")\"))))))}}},N2=function(e){var a=_R(e),u=g2(e),l=pv(e),v=sl(e);return function(t){return function(i){return function(o){var _=ei(Br(\"1.5/(res.x+res.y)\"))(Kl(0));return a(_)(u(sM(t)(i))(l(o)(v(.5))))}}}},uH=N2(j),gM=function(e){return function(a){var u=Br(\"((1./res.x)+(1./res.y))\");return uH(e)(a)(u)}},yM=function(e){var a=g2(e),u=_R(e),l=dw(e),v=jc(e);return function(t){return function(i){return function(o){var _=ei(Kl(0))(mw(o)(Br(\"3./res.y\")));return a(Kl(1))(u(_)(l(v(a(c0(t))(i)))(o)))}}}},FM=function(e){var a=g2(e),u=_R(e),l=dw(e),v=jc(e);return function(t){return function(i){return function(o){var _=ei(Kl(0))(mw(o)(Br(\"3./res.x\")));return a(Kl(1))(u(_)(l(v(a(yv(t))(i)))(o)))}}}},bM=function(e){var a=c0(e),u=yv(e);return E2(C2(on(u)(u))(on(a)(a)))},EM=function(e){var a=c0(e),u=yv(e),l=oM(a)(u),v=E2(C2(on(u)(u))(on(a)(a)));return ei(v)(l)},CM=function(e){return oM(c0(e))(yv(e))};var P2=gc(xu),fR=Pt(P2),NM=Mr(xu),Hc=ee(NM),lH=L(q_(h0)),pR=qt(P2),PM=_o(xu),qM=BR(PM)(Nn),kp=$l(Ol)(NM),Ew=B(PM),vH=hc(P2),nH=X(Va),MM=Ze(na),SM=Ze(j),rH=function(e){return fR(function(a){var u={};for(var l in a)({}).hasOwnProperty.call(a,l)&&(u[l]=a[l]);return u.code=a.code+e,u})},$M=function(e){return function(a){return function(u){return Hc(lH(function(l){return l.fxy})(pR))(function(l){return Hc(qM(a)(function(v){return kp(fR(function(t){var i={};for(var o in t)({}).hasOwnProperty.call(t,o)&&(i[o]=t[o]);return i.fxy=v,i}))(function(){return u})}))(function(v){return kp(fR(function(t){var i={};for(var o in t)({}).hasOwnProperty.call(t,o)&&(i[o]=t[o]);return i.fxy=l,i}))(function(){return Ew(GD(v))})})})}}},OM=function(e){return function(a){return function(u){return Hc(pR)(function(l){return Hc(qM(a)(function(v){return kp(fR(function(t){var i={};for(var o in t)({}).hasOwnProperty.call(t,o)&&(i[o]=t[o]);return i.time=v.time,i.beat=v.beat,i.etime=v.etime,i.ebeat=v.ebeat,i}))(function(){return u})}))(function(v){return kp(fR(function(t){var i={};for(var o in t)({}).hasOwnProperty.call(t,o)&&(i[o]=t[o]);return i.time=l.time,i.beat=l.beat,i.etime=l.etime,i.ebeat=l.ebeat,i}))(function(){return Ew(GD(v))})})})}}},UM=function(e){return function(a){return function(u){return function(l){return NI(l)({webGl2:e,imgMap:a,vidMap:u,allocation:0,code:\"\",fxy:new i0(\"((gl_FragCoord.xy/res)*2.-1.)\"),time:new Ca(\"_time\"),beat:new Ca(\"_beat\"),etime:new Ca(\"_etime\"),ebeat:new Ca(\"_ebeat\")})}}}},tH=Hc(pR)(function(e){return kp(vH(function(){var a={};for(var u in e)({}).hasOwnProperty.call(e,u)&&(a[u]=e[u]);return a.allocation=e.allocation+1|0,a}()))(function(){return Ew(e.allocation)})}),Zu=function(e){var a=_2(e),u=Ze(e),l=bv(e);return function(v){return Hc(tH)(function(t){var i=\"_\"+nH(t);return kp(rH(a(v)+(\" \"+(i+(\"=\"+(u(v)+`;\n`))))))(function(){return Ew(l(i))})})}},LM=Zu(du),AM=Zu(j),sR=function(e){return function(a){return Hc(pR)(function(u){if(u.webGl2)return LM(new Ql(\"texture(\"+(e+(\",\"+(MM(a)+\").xyz\")))));if(!u.webGl2)return LM(new Ql(\"texture2D(\"+(e+(\",\"+(MM(a)+\").xyz\")))));throw new Error(\"Failed pattern match at G (line 86, column 3 - line 88, column 88): \"+[u.webGl2.constructor.name])})}},q2=function(e){return function(a){return Hc(pR)(function(u){if(u.webGl2)return AM(new Ca(\"texture(\"+(e+(\",vec2(\"+(SM(a)+\",0.)).x\")))));if(!u.webGl2)return AM(new Ca(\"texture2D(\"+(e+(\",vec2(\"+(SM(a)+\",0.)).x\")))));throw new Error(\"Failed pattern match at G (line 79, column 3 - line 81, column 95): \"+[u.webGl2.constructor.name])})}};var uS=Mr(xu),d=ee(uS),lS=gc(xu),Ye=qt(lS),vS=co(xu),Mw=$f(C0)(vS),jp=_o(xu),ue=Iu(O_)(jp),il=Zu(j),Mo=xt(j),Df=B(RD),Cv=pv(j),oH=Iw(j),cH=uR(j),Aw=Wr(j),So=jv(Up),Rf=bo(kc),qu=Zu(na),WM=pv(na),Sw=sl(na),B2=jc(na),Lw=Wr(na),_H=bv(na),BM=Ze(na),ge=L(q_(h0)),ke=B(jp),Xc=sl(j),fH=d2(na),nS=GM(j),pH=jc(j),xl=L(wv),rS=Uf(Jl),ll=Iu(Nn)(jp),sH=B(pc),tS=F2(at)(j),Nw=vv(Nn)(jp),Dv=Zu(du),Zc=gw(du),H2=Dn(_a),Jp=Iu(T0)(jp),RR=sl(du),Pw=re(g_),sv=Zu(cn),iS=gw(cn),DH=la(MI(xu)),Yc=Kt(j),RH=re(ID),IH=Uf(U_),GH=si(U_),wH=R2(j),X2=Bp(j),Vp=cR(na),zM=$n(uu),kM=X(Va),If=$f(xa)(vS),z2=xt(du),k2=pv(du),Qe=L(DD),dH=Bp(du),$2=jv(cf),O2=bo(ff),U2=Fo(rn),mH=Bp(na),hH=T2(na),gH=Wp(na),yH=Kt(na),VM=A2(na),FH=Fv(na),JM=A2(j),jM=u_(wv),HM=bv(j),bH=AT(j),EH=Gw(j),CH=NT(j),TH=qT(j),MH=PT(j),SH=w2(j),LH=ww(j),AH=d2(j),NH=I2(j),PH=G2(j),qH=UT(j),$H=IM(j),OH=_R(j),UH=N2(j),W2=vv(O_)(jp),WH=FM(j),BH=yM(j),XM=Eo(Op),YM=cR(j),zH=vR(j),V2=L(Po),DR=m(y),kH=sf(du),J2=qp(zc),VH=L(Ua),JH=$l(Ol)(uS),jH=Pt(lS),ZM=Wu(_a),HH=re(Gi),XH=kR(y_),YH=sl(cn),ZH=nR(du),QH=Ze(cn),KH=`#version 300 es\nprecision mediump float;\nlayout(location=0) out vec4 fragColor;\n`,xH=`precision mediump float;\n`,eX=function(e){var a=Zu(e),u=cu(e),l=pv(e),v=p2(e),t=Dw(e),i=jc(e);return function(o){return d(Ye)(function(_){if(_.webGl2)return a(u(zf)(Su(\"trunc\"))(o));if(!_.webGl2)return a(l(v(o))(t(i(o))));throw new Error(\"Failed pattern match at FragmentShader (line 560, column 3 - line 562, column 55): \"+[_.webGl2.constructor.name])})}},aX=function(e){return Mw(function(a){return function(u){return ue(il)(ul(Mo)(Ge.value)(a)(u))}})(Df(new be(0)))(e)},uX=function(e){return function(a){return d(il(Cv(a)(S2)))(function(u){return d(il(oH(u)))(function(l){return d(il(cH(u)))(function(v){var t=Aw(Cv(So(e))(l))(Cv(Rf(e))(v)),i=Mo(Cv(Rf(e))(l))(Cv(So(e))(v));return qu(ei(t)(i))})})})}},oS=function(e){var a=Zu(e),u=cu(e),l=Kt(e),v=sl(e),t=Wr(e),i=Rw(e),o=pv(e);return function(_){return d(Ye)(function(s){if(s.webGl2)return a(u(FD)(Su(\"sinh\"))(_));if(!s.webGl2)return a(aa(l)(v(2))(t(i(_))(i(o(_)(v(-1))))));throw new Error(\"Failed pattern match at FragmentShader (line 546, column 3 - line 548, column 108): \"+[s.webGl2.constructor.name])})}},lX=function(e){var a=Zu(e),u=cu(e),l=xt(e),v=Dw(e),t=sl(e);return function(i){return d(Ye)(function(o){if(o.webGl2)return a(u(f_)(Su(\"round\"))(i));if(!o.webGl2)return a(l(v(i))(t(.5)));throw new Error(\"Failed pattern match at FragmentShader (line 567, column 3 - line 569, column 51): \"+[o.webGl2.constructor.name])})}},vX=function(e){return function(a){return function(u){var l=WM(cM)(Sw(1.5)),v=B2(Lw(e)(a)),t=B2(WM(u)(Sw(.5))),i=Lw(v)(t),o=_H(\"smoothstep(vec2(0.),\"+(BM(l)+(\",\"+(BM(i)+\")\"))));return d(qu(Lw(Sw(1))(o)))(function(_){return il(Cv(So(_))(Rf(_)))})}}},Y2=function(e){var a=vR(e),u=sf(e);return function(l){return d(ge(function(v){return v.time})(Ye))(function(v){return ke(a(u(v)(l)))})}},nX=function(e){var a=Y2(e),u=iR(e),l=Zu(e);return function(v){return d(a(v))(function(t){return l(u(t))})}},rX=function(e){var a=Y2(e),u=w2(e),l=sl(e),v=iR(e),t=Zu(e);return function(i){return d(a(i))(function(){var o=u(l(.5));return function(_){return t(v(o(_)))}}())}},tX=function(e){var a=Y2(e),u=Wr(e),l=sl(e),v=jc(e),t=pv(e),i=Zu(e);return function(o){return d(a(o))(function(){var _=u(l(1)),s=t(l(4)),b=aa(u)(l(.5));return function(P){return i(_(s(v(b(P)))))}}())}},iX=function(e){var a=Zu(e),u=uR(e),l=sf(e);return function(v){return d(ge(function(t){return t.time})(Ye))(function(t){return a(u(l(Cv(Cv(S2)(Xc(2)))(t))(v)))})}},oX=function(e){var a=Zu(e),u=sf(e);return function(l){return d(ge(function(v){return v.fxy})(Ye))(function(v){return d(qu(fH(B2(v))(Sw(1))))(function(t){return d(il(Cv(So(t))(Rf(t))))(function(i){return ue(function(){var o=u(i);return function(_){return a(o(_))}}())(l)})})})}},cX=function(e){return function(a){var u=nS(new ja(0,1))(pH(Aw(e)(a))),l=function(){if(u instanceof be)return new be(Mn(u.value0*jR/2));if(u instanceof Ca)return new Ca(\"cos(\"+(u.value0+\"*PI/2.0)\"));throw new Error(\"Failed pattern match at FragmentShader (line 610, column 9 - line 612, column 73): \"+[u.constructor.name])}();return l}},j2=function(e){return function(a){return function(u){if(e<=1)return ke(Df(u));if(pe){var l=Cv(a)(new be(Da(e-1|0))),v=xl(be.create)(rS(e)(function(i){return i+1})(0)),t=xl(cX(l))(v);return ge(al)(ll(function(){var i=Cv(u);return function(o){return il(i(o))}}())(t))}throw new Error(\"Failed pattern match at FragmentShader (line 597, column 1 - line 597, column 49): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},_X=function(e){return function(a){if(e<=1)return ke(sH(tS(he(a))));if(ba(he(a))===1)return ge(he)(j2(e)(new be(.5))(Y(he(a))));if(pe){var u=he(a),l=ba(u),v=1/Da(l-1|0),t=xl(be.create)(rS(l)(function(i){return i+v})(0));return d(Nw(dv(j2(e))(t)(u)))(function(i){return ge(he)(aX(i))})}throw new Error(\"Failed pattern match at FragmentShader (line 614, column 1 - line 614, column 55): \"+[e.constructor.name,a.constructor.name])}},qw=function(e){var a=Bp(e);return function(u){var l=a(u);return function(v){return La(l)(Df(v))}}},fX=qw(j),pX=qw(na),sX=qw(du),DX=qw(cn),RX=function(e){return function(a){return function(u){return function(l){return d(il(To(e)(a)))(function(v){return d(Nw(dv(function(t){return function(i){return Dv(Zc(t)(i)(v))}})(u)(l)))(function(t){var i=H2(ba(u))(ba(l));return d(function(){var o=ba(u)>ba(l);if(o)return Jp(function(_){return Dv(Zc(_)(RR(1))(v))})(di(i)(u));if(!o)return Jp(function(_){return Dv(Zc(RR(1))(_)(v))})(di(i)(l));throw new Error(\"Failed pattern match at FragmentShader (line 821, column 21 - line 823, column 94): \"+[o.constructor.name])}())(function(o){var _=fa(o);if(_ instanceof R)return ke(Pw(t)(_.value0));if(_ instanceof I)return ke(t);throw new Error(\"Failed pattern match at FragmentShader (line 824, column 3 - line 826, column 33): \"+[_.constructor.name])})})})}}}},IX=function(e){return function(a){return function(u){return function(l){return d(il(To(e)(a)))(function(v){return d(Nw(dv(function(t){return function(i){return Dv(Zc(t)(i)(v))}})(u)(l)))(function(t){var i=H2(ba(u))(ba(l));return d(function(){var o=ba(u)>ba(l);if(o)return Jp(function(_){return Dv(Zc(_)(RR(0))(v))})(di(i)(u));if(!o)return Jp(function(_){return Dv(Zc(RR(0))(_)(v))})(di(i)(l));throw new Error(\"Failed pattern match at FragmentShader (line 809, column 21 - line 811, column 94): \"+[o.constructor.name])}())(function(o){var _=fa(o);if(_ instanceof R)return ke(Pw(t)(_.value0));if(_ instanceof I)return ke(t);throw new Error(\"Failed pattern match at FragmentShader (line 812, column 3 - line 814, column 33): \"+[_.constructor.name])})})})}}}},GX=function(e){return function(a){return function(u){return function(l){return d(il(To(e)(a)))(function(v){return d(Nw(dv(function(t){return function(i){return sv(iS(t)(i)(v))}})(u)(l)))(function(t){var i=H2(ba(u))(ba(l));return d(function(){var o=ba(u)>ba(l);if(o)return d(il(DM(e)(a)))(function(_){return Jp(function(){var s=Fw(_);return function(b){return sv(s(b))}}())(di(i)(u))});if(!o)return Jp(function(){var _=Fw(v);return function(s){return sv(_(s))}}())(di(i)(l));throw new Error(\"Failed pattern match at FragmentShader (line 795, column 22 - line 799, column 74): \"+[o.constructor.name])}())(function(o){var _=fa(o);if(_ instanceof R)return ke(Pw(t)(_.value0));if(_ instanceof I)return ke(t);throw new Error(\"Failed pattern match at FragmentShader (line 800, column 3 - line 802, column 36): \"+[_.constructor.name])})})})}}}},cS=function(e){var a=Zu(e),u=cu(e),l=Kt(e),v=sl(e),t=xt(e),i=Rw(e),o=pv(e);return function(_){return d(Ye)(function(s){if(s.webGl2)return a(u(gD)(Su(\"cosh\"))(_));if(!s.webGl2)return a(aa(l)(v(2))(t(i(_))(i(o(_)(v(-1))))));throw new Error(\"Failed pattern match at FragmentShader (line 539, column 3 - line 541, column 101): \"+[s.webGl2.constructor.name])})}},wX=function(e){var a=Zu(e),u=cu(e),l=Kt(e),v=oS(e),t=cS(e);return function(i){return d(Ye)(function(o){if(o.webGl2)return a(u(bD)(Su(\"tanh\"))(i));if(!o.webGl2)return d(DH(ge(l)(v(i)))(t(i)))(a);throw new Error(\"Failed pattern match at FragmentShader (line 553, column 3 - line 555, column 57): \"+[o.webGl2.constructor.name])})}},QM=`uniform lowp vec2 res;\nuniform sampler2D f,o,i,w,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15;\nuniform float lo,mid,hi,ilo,imid,ihi,_defaultAlpha,_cps,_time,_etime,_beat,_ebeat;\n#define PI 3.1415926535897932384626433832795\nfloat div(float x,float y) { return (y != 0. ? x/y : 0.); }\nvec2 div(vec2 x,vec2 y) { return vec2(div(x.x,y.x),div(x.y,y.y)); }\nvec3 div(vec3 x,vec3 y) { return vec3(div(x.x,y.x),div(x.y,y.y),div(x.z,y.z)); }\nvec4 div(vec4 x,vec4 y) { return vec4(div(x.x,y.x),div(x.y,y.y),div(x.z,y.z),div(x.w,y.w)); }\nvec2 div(float x,vec2 y) { return vec2(div(x,y.x),div(x,y.y)); }\nvec3 div(float x,vec3 y) { return vec3(div(x,y.x),div(x,y.y),div(x,y.z)); }\nvec4 div(float x,vec4 y) { return vec4(div(x,y.x),div(x,y.y),div(x,y.z),div(x,y.w)); }\nvec2 div(vec2 x,float y) { return vec2(div(x.x,y),div(x.y,y)); }\nvec3 div(vec3 x,float y) { return vec3(div(x.x,y),div(x.y,y),div(x.z,y)); }\nvec4 div(vec4 x,float y) { return vec4(div(x.x,y),div(x.y,y),div(x.z,y),div(x.w,y)); }\nvec3 hsvrgb(vec3 c) {\n  vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n  vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n  return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);}\nvec3 rgbhsv(vec3 c){\n  vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n  vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n  vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n  float d = q.x - min(q.w, q.y);\n  float e = 1.0e-10;\n  return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);}\nfloat iline(vec2 xy1,vec2 xy2,float w,vec2 fxy) {\n  fxy -= xy1, xy2 -= xy1;\n  float h = dot(fxy,xy2)/dot(xy2,xy2);\n  float aa = min(((1.5/res.x)+(1.5/res.y))*0.5,w);\n  return smoothstep(aa,0.,length(fxy - xy2 * h)-(w*0.5));}\nfloat line(vec2 xy1,vec2 xy2,float w,vec2 fxy) {\n  fxy -= xy1, xy2 -= xy1;\n  float h = clamp(dot(fxy,xy2)/dot(xy2,xy2),0.,1.);\n  float aa = min(((1.5/res.x)+(1.5/res.y))*0.5,w);\n  return smoothstep(aa,0.,length(fxy - xy2 * h)-(w*0.5));}\nvoid main() {\n`,dX=function(e){if(e)return KH+QM;if(!e)return xH+QM;throw new Error(\"Failed pattern match at FragmentShader (line 631, column 1 - line 631, column 28): \"+[e.constructor.name])},mX=function(e){return function(a){return function(u){if(e<2)return ke(Df(Cv(Mo(a)(u))(new be(.5))));if(pe){var l=Yc(Aw(u)(a))(new be(Da(e-1|0)));return ke(RH(IH(e-1|0)(Mo(l))(a))(GH(u)))}throw new Error(\"Failed pattern match at FragmentShader (line 590, column 1 - line 590, column 49): \"+[e.constructor.name,a.constructor.name,u.constructor.name])}}},hX=function(e){var a=Zu(e),u=cu(e),l=Kt(e),v=sl(e),t=pf(e),i=xt(e),o=Wr(e);return function(_){return d(Ye)(function(s){if(s.webGl2)return a(u(mD)(Su(\"atanh\"))(_));if(!s.webGl2)return a(aa(l)(v(2))(t(l(i(v(1))(_))(o(v(1))(_)))));throw new Error(\"Failed pattern match at FragmentShader (line 532, column 3 - line 534, column 121): \"+[s.webGl2.constructor.name])})}},gX=function(e){var a=Zu(e),u=cu(e),l=pf(e),v=xt(e),t=lR(e),i=pv(e),o=sl(e);return function(_){return d(Ye)(function(s){if(s.webGl2)return a(u(dD)(Su(\"asinh\"))(_));if(!s.webGl2)return a(l(v(_)(t(v(i(_)(_))(o(1))))));throw new Error(\"Failed pattern match at FragmentShader (line 525, column 3 - line 527, column 78): \"+[s.webGl2.constructor.name])})}},yX=function(e){var a=Zu(e),u=cu(e),l=pf(e),v=xt(e),t=lR(e),i=Wr(e),o=pv(e),_=sl(e);return function(s){return d(Ye)(function(b){if(b.webGl2)return a(u(wD)(Su(\"acosh\"))(s));if(!b.webGl2)return a(l(v(s)(t(i(o(s)(s))(_(1))))));throw new Error(\"Failed pattern match at FragmentShader (line 518, column 3 - line 520, column 85): \"+[b.webGl2.constructor.name])})}},KM=function(e){return function(a){return function(u){return function(l){return function(v){return d(ge(function(t){return t.fxy})(Ye))(function(t){return Z2(j)(j)(j)(e)(a(t))(u)(l)(v)})}}}}},q=function(e){var a=fX(e),u=D2(e),l=s2(e),v=Fv(e),t=X2(e),i=pX(e),o=oX(e),_=sX(e),s=MT(e),b=DX(e),P=dH(e),A=Zu(e),K=iX(e),Ve=tX(e),Ga=nX(e),$u=rX(e),Dl=jc(e),Ou=VT(e),_u=yX(e),f0=zT(e),Be=OT(e),ev=gX(e),xc=$T(e),_n=hX(e),Gf=iR(e),wf=LT(e),vi=ST(e),df=Iw(e),kr=cS(e),yl=fM(e),Lo=pM(e),Ao=Rw(e),No=Dw(e),ql=vR(e),Vr=pf(e),e_=f2(e),Kp=WT(e),xp=BT(e),we=lX(e),ga=p2(e),mu=uR(e),$a=oS(e),qe=lR(e),ce=CT(e),Aa=wX(e),ra=eX(e),su=cR(e),Uu=mH(e),ta=$M(e),hu=OM(e),fn=wM(e),av=TT(e),p0=gw(e);return function(f){if(f instanceof ju)return ke(a(new be(f.value0)));if(f instanceof el&&f.value0 instanceof de){var wa=fa(f.value1);if(wa instanceof I)return ke(a(new be(0)));if(wa instanceof R){var Oe=ba(wa.value0);return Oe===1?q(e)(Y(wa.value0)):d(ge($I)(ll(q(j))(wa.value0)))(function(D){return ke(La(u)(D))})}throw new Error(\"Failed pattern match at FragmentShader (line 41, column 3 - line 48, column 41): \"+[wa.constructor.name])}if(f instanceof el&&f.value0 instanceof Ge){var wa=fa(f.value1);if(wa instanceof I)return ke(a(new be(0)));if(wa instanceof R){var Oe=ba(wa.value0);return Oe===1?q(e)(Y(wa.value0)):d(ge(xl(he))(ll(q(j))(wa.value0)))(function(g){return ke(La(u)(PI(g)))})}throw new Error(\"Failed pattern match at FragmentShader (line 51, column 3 - line 58, column 61): \"+[wa.constructor.name])}return f instanceof S0?d(ge(he)(q(j)(f.value0)))(function(D){return d(ge(he)(q(j)(f.value1)))(function(G){return ke(al(u(Pw(D)(G))))})}):f instanceof Un?d(ge(he)(q(j)(f.value0)))(function(D){return d(ge(he)(q(j)(f.value1)))(function(G){return ke(al(l(po(ei)(D)(G))))})}):f instanceof nt?d(q(j)(f.value0))(function(D){var G=tS(xl(wH)(he(D)));return ke(Df(v(G)))}):f instanceof Wn?d(q(j)(f.value1))(function(D){return ke(La(t)(OI(f.value0)(D)))}):f instanceof rt?ke(a(new Ca(\"PI\"))):f instanceof sc?ke(a(new Ca(\"(2./res.x)\"))):f instanceof Dc?ke(a(new Ca(\"(2./res.y)\"))):f instanceof hi?ke(i(new i0(\"(2./res)\"))):f instanceof On?ke(a(new Ca(\"(res.x/res.y)\"))):f instanceof Rc?ge(function(D){return a(So(function(G){return G.fxy}(D)))})(Ye):f instanceof Ic?ge(function(D){return a(Rf(function(G){return G.fxy}(D)))})(Ye):f instanceof L0?ge(function(D){return i(function(G){return G.fxy}(D))})(Ye):f instanceof gi?q(e)(new Gt(L0.value)):f instanceof Gc?q(e)(new wt(L0.value)):f instanceof wc?q(e)(new Hi(L0.value)):f instanceof yi?ke(a(new Ca(\"lo\"))):f instanceof Fi?ke(a(new Ca(\"mid\"))):f instanceof bi?ke(a(new Ca(\"hi\"))):f instanceof Ei?ke(a(new Ca(\"ilo\"))):f instanceof Ci?ke(a(new Ca(\"imid\"))):f instanceof Ti?ke(a(new Ca(\"ihi\"))):f instanceof tt?ke(a(new Ca(\"_cps\"))):f instanceof it?ge(function(D){return a(function(G){return G.time}(D))})(Ye):f instanceof ot?ge(function(D){return a(function(G){return G.beat}(D))})(Ye):f instanceof _t?ge(function(D){return a(function(G){return G.etime}(D))})(Ye):f instanceof ct?ge(function(D){return a(function(G){return G.ebeat}(D))})(Ye):f instanceof Mi?d(d(Ye)(function(){var D=q2(\"o\");return function(G){return D(So(Vp(function(g){return g.fxy}(G))))}}()))(function(D){return o(a(D))}):f instanceof Si?d(d(Ye)(function(){var D=q2(\"i\");return function(G){return D(So(Vp(function(g){return g.fxy}(G))))}}()))(function(D){return o(a(D))}):f instanceof Li?d(d(Ye)(function(){var D=sR(\"f\");return function(G){return D(Vp(function(g){return g.fxy}(G)))}}()))(function(D){return o(_(D))}):f instanceof ft?d(d(Ye)(function(){var D=sR(\"w\");return function(G){return D(Vp(function(g){return g.fxy}(G)))}}()))(function(D){return o(_(D))}):f instanceof pt?d(Ye)(function(D){var G=zM(f.value0)(D.imgMap);if(G instanceof R)return d(sR(\"t\"+kM(G.value0))(Vp(D.fxy)))(function(g){return o(_(g))});if(G instanceof I)return ke(Df(s));throw new Error(\"Failed pattern match at FragmentShader (line 133, column 3 - line 137, column 34): \"+[G.constructor.name])}):f instanceof st?d(Ye)(function(D){var G=zM(f.value0)(D.vidMap);if(G instanceof R)return d(sR(\"t\"+kM(G.value0))(Vp(D.fxy)))(function(g){return o(_(g))});if(G instanceof I)return ke(Df(s));throw new Error(\"Failed pattern match at FragmentShader (line 141, column 3 - line 145, column 34): \"+[G.constructor.name])}):f instanceof Ai?d(ge(he)(q(cn)(f.value0)))(function(D){return d(If(function(G){return function(g){return sv(hw(G)(g))}})(Y(D))(Ma(D)))(function(G){return ke(b(G))})}):f instanceof Ni?d(ge(he)(q(du)(f.value0)))(function(D){return d(If(function(G){return function(g){return Dv(z2(G)(g))}})(Y(D))(Ma(D)))(function(G){return ke(_(G))})}):f instanceof Pi?d(ge(he)(q(du)(f.value0)))(function(D){return d(If(function(G){return function(g){return Dv(k2(G)(g))}})(Y(D))(Ma(D)))(function(G){return ke(_(G))})}):f instanceof qi?d(q(du)(f.value0))(function(){var D=ue(A),G=La(P),g=Qe(tR);return function(Q){return D(G(g(Q)))}}()):f instanceof $i?d(q(du)(f.value0))(function(){var D=ue(A),G=La(P),g=Qe(rR);return function(Q){return D(G(g(Q)))}}()):f instanceof Oi?d(q(du)(f.value0))(function(){var D=ue(A),G=La(t),g=Qe($2),Q=Qe(rR);return function(De){return D(G(g(Q(De))))}}()):f instanceof Ui?d(q(du)(f.value0))(function(){var D=ue(A),G=La(t),g=Qe(O2),Q=Qe(rR);return function(De){return D(G(g(Q(De))))}}()):f instanceof Wi?d(q(du)(f.value0))(function(){var D=ue(A),G=La(t),g=Qe(U2),Q=Qe(rR);return function(De){return D(G(g(Q(De))))}}()):f instanceof Dt?d(q(du)(f.value0))(function(){var D=La(t),G=Qe($2);return function(g){return ke(D(G(g)))}}()):f instanceof Rt?d(q(du)(f.value0))(function(){var D=La(t),G=Qe(O2);return function(g){return ke(D(G(g)))}}()):f instanceof It?d(q(du)(f.value0))(function(){var D=La(t),G=Qe(U2);return function(g){return ke(D(G(g)))}}()):f instanceof Bi?d(q(du)(f.value0))(function(){var D=ue(A),G=La(t),g=Qe($2),Q=Qe(tR);return function(De){return D(G(g(Q(De))))}}()):f instanceof zi?d(q(du)(f.value0))(function(){var D=ue(A),G=La(t),g=Qe(O2),Q=Qe(tR);return function(De){return D(G(g(Q(De))))}}()):f instanceof ki?d(q(du)(f.value0))(function(){var D=ue(A),G=La(t),g=Qe(U2),Q=Qe(tR);return function(De){return D(G(g(Q(De))))}}()):f instanceof kn?d(q(e)(f.value0))(ue(K)):f instanceof Vn?d(q(e)(f.value0))(ue(Ve)):f instanceof Jn?d(q(e)(f.value0))(ue(Ga)):f instanceof jn?d(q(e)(f.value0))(ue($u)):f instanceof Hn?d(q(e)(f.value0))(ue(Ve)):f instanceof Xn?d(q(e)(f.value0))(ue(Ga)):f instanceof Yn?d(q(e)(f.value0))(ue($u)):f instanceof Zn?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(Dl);return function(g){return D(G(g))}}()):f instanceof Qn?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(Ou);return function(g){return D(G(g))}}()):f instanceof Kn?d(q(e)(f.value0))(ue(_u)):f instanceof gr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(f0);return function(g){return D(G(g))}}()):f instanceof xn?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(Be);return function(g){return D(G(g))}}()):f instanceof er?d(q(e)(f.value0))(ue(ev)):f instanceof ar?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(xc);return function(g){return D(G(g))}}()):f instanceof ur?d(q(e)(f.value0))(ue(_n)):f instanceof Bn?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(Gf);return function(g){return D(G(g))}}()):f instanceof lr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(wf);return function(g){return D(G(g))}}()):f instanceof vr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(vi);return function(g){return D(G(g))}}()):f instanceof nr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(df);return function(g){return D(G(g))}}()):f instanceof rr?d(q(e)(f.value0))(ue(kr)):f instanceof mr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(yl);return function(g){return D(G(g))}}()):f instanceof hr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(Lo);return function(g){return D(G(g))}}()):f instanceof tr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(Ao);return function(g){return D(G(g))}}()):f instanceof ir?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(No);return function(g){return D(G(g))}}()):f instanceof yr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(ql);return function(g){return D(G(g))}}()):f instanceof or?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(Vr);return function(g){return D(G(g))}}()):f instanceof cr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(e_);return function(g){return D(G(g))}}()):f instanceof _r?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(Kp);return function(g){return D(G(g))}}()):f instanceof dr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(xp);return function(g){return D(G(g))}}()):f instanceof fr?d(q(e)(f.value0))(ue(we)):f instanceof pr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(ga);return function(g){return D(G(g))}}()):f instanceof sr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(mu);return function(g){return D(G(g))}}()):f instanceof Dr?d(q(e)(f.value0))(ue($a)):f instanceof Rr?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(qe);return function(g){return D(G(g))}}()):f instanceof Ir?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(ce);return function(g){return D(G(g))}}()):f instanceof Gr?d(q(e)(f.value0))(ue(Aa)):f instanceof wr?d(q(e)(f.value0))(ue(ra)):f instanceof zn?d(q(e)(f.value0))(function(){var D=ue(A),G=Qe(su);return function(g){return D(G(g))}}()):f instanceof Vi?d(d(d(q(na)(f.value0))(ue(qu)))(function(){var D=ue(qu),G=Qe(mM);return function(g){return D(G(g))}}()))(function(){var D=La(Uu);return function(G){return ke(D(G))}}()):f instanceof Ji?d(d(d(q(na)(f.value0))(ue(qu)))(function(){var D=ue(il),G=Qe(dM);return function(g){return D(G(g))}}()))(function(){var D=La(t);return function(G){return ke(D(G))}}()):f instanceof ji?d(d(d(q(na)(f.value0))(ue(qu)))(function(){var D=ue(il),G=Qe(hM);return function(g){return D(G(g))}}()))(function(){var D=La(t);return function(G){return ke(D(G))}}()):f instanceof Gt?d(d(d(q(na)(f.value0))(ue(qu)))(function(){var D=ue(qu),G=Qe(EM);return function(g){return D(G(g))}}()))(function(){var D=La(Uu);return function(G){return ke(D(G))}}()):f instanceof wt?d(d(d(q(na)(f.value0))(ue(qu)))(function(){var D=ue(il),G=Qe(bM);return function(g){return D(G(g))}}()))(function(){var D=La(t);return function(G){return ke(D(G))}}()):f instanceof Hi?d(d(d(q(na)(f.value0))(ue(qu)))(function(){var D=ue(il),G=Qe(CM);return function(g){return D(G(g))}}()))(function(){var D=La(t);return function(G){return ke(D(G))}}()):f instanceof Yi?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value0))(function(G){return ue(A)(La(t)(Qe(hH(D))(G)))})}):f instanceof Zi?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value0))(function(G){return ue(A)(La(t)(Qe(RM(D))(G)))})}):f instanceof xi?d(d(q(na)(f.value0))(ue(qu)))(function(D){return ta(he(D))(q(e)(f.value1))}):f instanceof Qi?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(j)(f.value0))(function(G){return d(ll(qu)(xl(yw(D))(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof Ki?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(j)(f.value0))(function(G){return d(ll(qu)(xl(bw(D))(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof eo?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(j)(f.value0))(function(G){return d(ll(qu)(xl(gH(D))(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof dt?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value0))(function(G){return d(ll(qu)(xl(yH(D))(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof ao?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(j)(f.value0))(function(G){return d(ll(qu)(xl(function(){var g=yw(D),Q=Yc(So(D));return function(De){return g(Q(De))}}())(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof uo?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(j)(f.value0))(function(G){return d(ll(qu)(xl(function(){var g=bw(D),Q=Yc(Rf(D));return function(De){return g(Q(De))}}())(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof lo?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value0))(function(G){return d(ll(qu)(xl(Lw(D))(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof vo?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(j)(f.value0))(function(G){return d(ll(qu)(xl(function(){var g=VM(D);return function(Q){return g(FH(Q))}}())(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof no?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value0))(function(G){return d(ll(qu)(xl(VM(D))(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof ro?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(j)(f.value0))(function(G){return d(ll(qu)(xl(function(){var g=yw(D),Q=JM(So(D));return function(De){return g(Q(De))}}())(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof to?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(j)(f.value0))(function(G){return d(ll(qu)(xl(function(){var g=bw(D),Q=JM(Rf(D));return function(De){return g(Q(De))}}())(he(G))))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof io?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(j)(f.value0))(function(G){return d(ll(uX(D))(he(G)))(function(g){return ta(g)(q(e)(f.value1))})})}):f instanceof N0?d(ge(he)(q(j)(f.value0)))(function(D){return d(Ye)(function(G){var g=jM(D)(function(Q){return{time:Mo(G.time)(Q),beat:Mo(G.beat)(Cv(Q)(HM(\"_cps\"))),etime:Mo(G.etime)(Q),ebeat:Mo(G.ebeat)(Cv(Q)(HM(\"_cps\")))}});return hu(g)(q(e)(f.value1))})}):f instanceof P0?d(ge(he)(q(j)(f.value0)))(function(D){return d(Ye)(function(G){var g=jM(D)(function(Q){return{time:Yc(G.time)(Q),beat:Yc(G.beat)(Q),etime:Yc(G.etime)(Q),ebeat:Yc(G.ebeat)(Q)}});return hu(g)(q(e)(f.value1))})}):f instanceof Kv?Ev(e)(Mo)(f.value0)(f.value1)(f.value2):f instanceof Bv?Ev(e)(Aw)(f.value0)(f.value1)(f.value2):f instanceof q0?Ev(e)(Cv)(f.value0)(f.value1)(f.value2):f instanceof mv?Ev(e)(Yc)(f.value0)(f.value1)(f.value2):f instanceof $0?Ev(e)(bH)(f.value0)(f.value1)(f.value2):f instanceof O0?Ev(e)(EH)(f.value0)(f.value1)(f.value2):f instanceof U0?Ev(e)(CH)(f.value0)(f.value1)(f.value2):f instanceof W0?Ev(e)(TH)(f.value0)(f.value1)(f.value2):f instanceof B0?Ev(e)(MH)(f.value0)(f.value1)(f.value2):f instanceof xv?Ev(e)(SH)(f.value0)(f.value1)(f.value2):f instanceof z0?Ev(e)(LH)(f.value0)(f.value1)(f.value2):f instanceof k0?Ev(e)(AH)(f.value0)(f.value1)(f.value2):f instanceof V0?Ev(e)(NH)(f.value0)(f.value1)(f.value2):f instanceof J0?Ev(e)(PH)(f.value0)(f.value1)(f.value2):f instanceof j0?Ev(e)(qH)(f.value0)(f.value1)(f.value2):f instanceof H0?Cw(e)(nS)(f.value0)(f.value1)(f.value2):f instanceof X0?Cw(e)($H)(f.value0)(f.value1)(f.value2):f instanceof Y0?Cw(e)(OH)(f.value0)(f.value1)(f.value2):f instanceof mt?d(ge(function(D){return D.fxy})(Ye))(function(D){return Cw(e)(UH(D))(f.value0)(f.value1)(f.value2)}):f instanceof ht?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value1))(function(G){return d(q(na)(f.value2))(function(g){return d(W2(ul(vX(D))(f.value0)(G)(g)))(function(Q){return ue(A)(La(t)(Q))})})})}):f instanceof gt?KM(e)(WH)(f.value0)(f.value1)(f.value2):f instanceof yt?KM(e)(BH)(f.value0)(f.value1)(f.value2):f instanceof Ft?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value1))(function(G){return d(q(j)(f.value2))(function(g){var Q=al(L8(he(G))),De=function(sa){return function(gu){return oR(D)(Iv(sa))(kl(sa))(gu)}};return ue(A)(La(t)(ul(De)(f.value0)(Q)(g)))})})}):f instanceof bt?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(d(q(cn)(f.value1))(ue(sv)))(function(G){return d(q(j)(f.value2))(function(g){var Q=function(De){return function(sa){return oR(D)(XM(De))(aR(De))(sa)}};return ue(A)(La(t)(ul(Q)(f.value0)(G)(g)))})})}):f instanceof Et?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(d(q(cn)(f.value1))(ue(sv)))(function(G){return d(q(j)(f.value2))(function(g){var Q=function(De){return function(sa){return M2(D)(XM(De))(aR(De))(sa)}};return ue(A)(La(t)(ul(Q)(f.value0)(G)(g)))})})}):f instanceof Ct?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(ge(he)(q(na)(f.value1)))(function(G){return d(q(j)(f.value2))(function(g){var Q=al(S8(G)),De=function(sa){return function(gu){return oR(D)(Iv(sa))(kl(sa))(gu)}};return ue(A)(La(t)(ul(De)(f.value0)(Q)(g)))})})}):f instanceof Er?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value1))(function(G){return d(q(na)(f.value2))(function(g){return d(q(j)(f.value3))(function(Q){return ue(A)(La(t)(so(M2(D))(f.value0)(G)(g)(Q)))})})})}):f instanceof Tt?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value1))(function(G){return d(q(na)(f.value2))(function(g){return d(q(j)(f.value3))(function(Q){return ue(A)(La(t)(so(oR(D))(f.value0)(G)(g)(Q)))})})})}):f instanceof Xi?d(ge(function(D){return D.fxy})(Ye))(function(D){return d(q(na)(f.value0))(function(G){return ue(A)(La(t)(Qe(gM(D))(G)))})}):f instanceof e0?d(q(na)(f.value1))(function(D){return d(q(na)(f.value2))(function(G){return d(q(e)(f.value3))(function(g){return ue(A)(so(fn)(f.value0)(D)(G)(g))})})}):f instanceof hv&&f.value0 instanceof Ge?d(q(e)(f.value1))(function(D){return d(q(e)(f.value2))(function(G){var g=al(po(k.create)(he(D))(he(G)));return d(q(e)(f.value3))(function(Q){var De=function(sa){return function(gu){return av(sa.value0)(sa.value1)(gu)}};return ue(A)(ul(De)(Ge.value)(g)(Q))})})}):f instanceof hv&&f.value0 instanceof de?d(q(e)(f.value1))(function(D){return d(q(e)(f.value2))(function(G){var g=al(po(k.create)(he(D))(he(G)));return d(q(j)(f.value3))(function(Q){var De=function(sa){return function(gu){return p0(sa.value0)(sa.value1)(gu)}};return ue(A)(ul(De)(de.value)(g)(Q))})})}):f instanceof Z0?d(d(q(j)(f.value1))(function(D){return ke(al(vp(D)))}))(function(D){return d(d(q(j)(f.value2))(function(){var G=Qe(YM);return function(g){return ke(G(g))}}()))(function(G){return ue(A)(La(t)(ul(aa(L2))(f.value0)(D)(G)))})}):f instanceof Q0?d(q(j)(f.value2))(function(D){return d(q(j)(f.value3))(function(G){return d(W2(ul(mX(f.value1))(f.value0)(D)(G)))(function(g){return ue(A)(La(t)(np(g)))})})}):f instanceof K0?d(d(q(j)(f.value2))(function(){var D=Qe(YM);return function(G){return ke(D(G))}}()))(function(D){return d(q(j)(f.value3))(function(G){return d(W2(ul(j2(f.value1))(f.value0)(D)(G)))(function(g){return ue(A)(La(t)(np(g)))})})}):f instanceof Fr?d(d(q(j)(f.value1))(_X(f.value0)))(function(){var D=ue(A),G=La(t);return function(g){return D(G(al(g)))}}()):f instanceof br?d(ge(vp)(q(j)(f.value0)))(function(D){return d(d(Ye)(function(G){return ke(zH(function(g){return g.beat}(G)))}))(function(G){return d(ll(il)(xl(L2(G))(D)))(function(g){return ue(A)(al(t(g)))})})}):ke(a(new be(0)))}},Z2=function(e){return function(a){return function(u){var l=Zu(u),v=Bp(u);return function(t){var i=Zu(t),o=v(t);return function(_){return function(s){return function(b){return function(P){return d(q(e)(b))(function(A){return d(q(a)(P))(function(K){return d(ue(l)(ul(_)(s)(A)(K)))(function(Ve){return ue(i)(La(o)(Ve))})})})}}}}}}}},Cw=function(e){return Z2(na)(j)(j)(e)},Ev=function(e){return Z2(j)(j)(j)(e)},_S=q(j),fS=function(e){var a=X2(e);return function(u){return ge(V2(a)(he))(_S(u))}},xM=fS(cn),Tw=fS(du),pS=function(e){var a=X2(e);return function(u){return ge(V2(V2(RI)(a))(he))(_S(u))}},eS=pS(cn),aS=pS(du),FX=function(e){return function(a){return function(u){return function(l){return function(v){return function(t){return e instanceof tc?d(xM(t))(function(i){return d(function(){if(v instanceof R){var o=DR(v.value0)(t);if(o)return ll(sv)(i);if(!o)return d(xM(v.value0))(function(_){return GX(a)(u)(_)(i)});throw new Error(\"Failed pattern match at FragmentShader (line 712, column 14 - line 716, column 62): \"+[o.constructor.name])}if(v instanceof I)return d(il(To(a)(u)))(function(_){return ll(function(){var s=Fw(_);return function(b){return sv(s(b))}}())(i)});throw new Error(\"Failed pattern match at FragmentShader (line 710, column 12 - line 719, column 57): \"+[v.constructor.name])}())(function(o){if(l instanceof I)return ge(R.create)(If(function(_){return function(s){return sv(hw(_)(s))}})(Y(o))(Ma(o)));if(l instanceof R)return ge(R.create)(Mw(function(_){return function(s){return sv(hw(_)(s))}})(l.value0)(o));throw new Error(\"Failed pattern match at FragmentShader (line 720, column 3 - line 722, column 84): \"+[l.constructor.name])})}):e instanceof ic?d(eS(t))(function(i){if(v instanceof R){var o=DR(v.value0)(t);if(o)return ge(R.create)(sv(i));if(!o)return d(eS(v.value0))(function(_){return d(il(To(a)(u)))(function(s){return ge(R.create)(sv(iS(_)(i)(s)))})});throw new Error(\"Failed pattern match at FragmentShader (line 728, column 7 - line 733, column 60): \"+[o.constructor.name])}if(v instanceof I)return ge(R.create)(sv(i));throw new Error(\"Failed pattern match at FragmentShader (line 726, column 3 - line 734, column 39): \"+[v.constructor.name])}):e instanceof oc?d(Tw(t))(function(i){return d(function(){if(v instanceof R){var o=DR(v.value0)(t);if(o)return ll(Dv)(i);if(!o)return d(Tw(v.value0))(function(_){return IX(a)(u)(_)(i)});throw new Error(\"Failed pattern match at FragmentShader (line 740, column 7 - line 744, column 50): \"+[o.constructor.name])}if(v instanceof I)return d(il(To(a)(u)))(function(_){return ll(function(){var s=kH(_);return function(b){return Dv(s(b))}}())(i)});throw new Error(\"Failed pattern match at FragmentShader (line 738, column 11 - line 747, column 57): \"+[v.constructor.name])}())(function(o){if(l instanceof I)return ge(function(){var _=aa(o0)(Xc(1));return function(s){return R.create(_(s))}}())(If(function(_){return function(s){return Dv(z2(_)(s))}})(Y(o))(Ma(o)));if(l instanceof R)return ge(function(){var _=aa(o0)(Xc(1));return function(s){return R.create(_(s))}}())(Mw(function(_){return function(s){return Dv(z2(_)(s))}})(J2(l.value0))(o));throw new Error(\"Failed pattern match at FragmentShader (line 748, column 3 - line 750, column 136): \"+[l.constructor.name])})}):e instanceof cc?d(Tw(t))(function(i){return d(function(){if(v instanceof R){var o=DR(v.value0)(t);if(o)return ll(Dv)(i);if(!o)return d(Tw(v.value0))(function(_){return RX(a)(u)(_)(i)});throw new Error(\"Failed pattern match at FragmentShader (line 756, column 7 - line 760, column 50): \"+[o.constructor.name])}if(v instanceof I)return d(il(To(a)(u)))(function(_){return ll(function(s){return Dv(Zc(RR(1))(s)(_))})(i)});throw new Error(\"Failed pattern match at FragmentShader (line 754, column 11 - line 763, column 70): \"+[v.constructor.name])}())(function(o){if(l instanceof I)return ge(function(){var _=aa(o0)(Xc(1));return function(s){return R.create(_(s))}}())(If(function(_){return function(s){return Dv(k2(_)(s))}})(Y(o))(Ma(o)));if(l instanceof R)return ge(function(){var _=aa(o0)(Xc(1));return function(s){return R.create(_(s))}}())(Mw(function(_){return function(s){return Dv(k2(_)(s))}})(J2(l.value0))(o));throw new Error(\"Failed pattern match at FragmentShader (line 764, column 3 - line 766, column 140): \"+[l.constructor.name])})}):e instanceof _c?d(aS(t))(function(i){if(v instanceof R){var o=DR(v.value0)(t);if(o)return ge(R.create)(sv(o0(i)(Xc(1))));if(!o)return d(aS(v.value0))(function(_){return d(il(To(a)(u)))(function(s){return ge(R.create)(sv(o0(Zc(_)(i)(s))(Xc(1))))})});throw new Error(\"Failed pattern match at FragmentShader (line 772, column 7 - line 777, column 91): \"+[o.constructor.name])}if(v instanceof I)return ge(R.create)(sv(o0(i)(Xc(1))));throw new Error(\"Failed pattern match at FragmentShader (line 770, column 3 - line 778, column 71): \"+[v.constructor.name])}):ke(l)}}}}}},bX=function(e){return function(a){return function(u){return function(l){if(l.value1 instanceof I)return ke(u);if(l.value1 instanceof R){var v=f8(e)(a)(l.value1.value0);return FX(l.value1.value0.output)(v.value0)(v.value1)(u)(VH(function(t){return t.signal})(l.value0))(l.value1.value0.signal)}throw new Error(\"Failed pattern match at FragmentShader (line 699, column 1 - line 699, column 106): \"+[e.constructor.name,a.constructor.name,u.constructor.name,l.constructor.name])}}}},EX=function(e){return function(a){return function(u){return d(d(ge(function(l){return l.fxy})(Ye))(qu))(function(l){return JH(jH(function(v){var t={};for(var i in v)({}).hasOwnProperty.call(v,i)&&(t[i]=v[i]);return t.fxy=l,t}))(function(){return d(function(){var v=ZM(0)(ZM(Cl(a.actions))(Cl(u.actions))-Cl(a.actions)|0),t=HH(a.actions)(XH(v)(I.value));return If(bX(e)(u.evalTime))(I.value)(b_(t)(u.actions))}())(function(v){if(v instanceof I)return ke(YH(0));if(v instanceof R)return ke(v.value0);throw new Error(\"Failed pattern match at FragmentShader (line 694, column 3 - line 696, column 23): \"+[v.constructor.name])})})})}}},sS=function(e){return function(a){return function(u){return function(l){return function(v){return function(t){var i=UM(e)(u)(l)(EX(a)(v)(t)),o=o0(ZH(J2(i.value0))(Bc(i.value0)))(Bc(i.value0)),_=function(){return e?\"fragColor\":\"gl_FragColor\"}(),s=_+(\" = \"+(QH(o)+`;\n`));return dX(e)+(i.value1.code+(s+\"}\"))}}}}}};var Q2=()=>{var e=document.createElement(\"canvas\");return e.setAttribute(\"style\",\"z-index: -1; position: absolute; width: 100%; height: 100%; left: 0px; top:0px; pointer-events: none\"),e},K2=e=>()=>document.body.appendChild(e),x2=e=>()=>document.body.removeChild(e),ey=e=>()=>e.getContext(\"webgl\",{powerPreference:\"high-performance\",antialias:!0}),ay=e=>()=>e.getContext(\"webgl2\",{powerPreference:\"high-performance\",antialias:!0}),uy=e=>a=>()=>e.getExtension(a);var ly=e=>()=>e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!0),vy=e=>()=>e.gl.createBuffer(),IR=e=>a=>()=>e.gl.bindBuffer(e.gl.ARRAY_BUFFER,a),ny=e=>()=>e.gl.bufferData(e.gl.ARRAY_BUFFER,new Float32Array([-1,1,-1,-1,1,1,1,-1]),e.gl.STATIC_DRAW),$w=e=>()=>e.createProgram(),Ow=e=>()=>e.createShader(e.VERTEX_SHADER),Uw=e=>()=>e.createShader(e.FRAGMENT_SHADER),GR=e=>a=>u=>()=>e.attachShader(a,u),wR=e=>a=>u=>()=>e.shaderSource(a,u),dR=e=>a=>()=>e.compileShader(a),Ww=e=>a=>()=>e.linkProgram(a),Bw=e=>()=>e.flush();var mR=e=>a=>()=>e.gl.useProgram(a),ry=e=>a=>u=>()=>e.gl.getAttribLocation(a,u),ty=e=>a=>()=>e.gl.vertexAttribPointer(a,2,e.gl.FLOAT,!1,0,0),iy=e=>a=>()=>e.gl.enableVertexAttribArray(a),hR=e=>a=>u=>l=>v=>()=>e.gl.viewport(a,u,l,v);var gR=e=>()=>e.gl.drawArrays(e.gl.TRIANGLE_STRIP,0,4),yR=e=>a=>u=>()=>e.gl.getUniformLocation(a,u),oy=e=>a=>u=>()=>e.uniform1i(a,u),cy=e=>a=>u=>()=>e.uniform1f(a,u),_y=e=>a=>u=>l=>()=>e.uniform2f(a,u,l),Hp=e=>()=>e.createTexture(),fy=e=>()=>e.activeTexture(e.TEXTURE0),py=e=>()=>e.activeTexture(e.TEXTURE1),sy=e=>()=>e.activeTexture(e.TEXTURE2),Dy=e=>()=>e.activeTexture(e.TEXTURE3),Ry=e=>()=>e.activeTexture(e.TEXTURE4),Iy=e=>()=>e.activeTexture(e.TEXTURE5),Gy=e=>()=>e.activeTexture(e.TEXTURE6),wy=e=>()=>e.activeTexture(e.TEXTURE7),dy=e=>()=>e.activeTexture(e.TEXTURE8),my=e=>()=>e.activeTexture(e.TEXTURE9),hy=e=>()=>e.activeTexture(e.TEXTURE10),gy=e=>()=>e.activeTexture(e.TEXTURE11),yy=e=>()=>e.activeTexture(e.TEXTURE12),Fy=e=>()=>e.activeTexture(e.TEXTURE13),by=e=>()=>e.activeTexture(e.TEXTURE14),Ey=e=>()=>e.activeTexture(e.TEXTURE15),Cy=e=>a=>()=>e.bindTexture(e.TEXTURE_2D,a),zw=e=>()=>e.createFramebuffer(),kw=e=>a=>u=>l=>v=>()=>{e.bindTexture(e.TEXTURE_2D,a),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,l,v,0,e.RGBA,e.UNSIGNED_BYTE,null),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.bindFramebuffer(e.FRAMEBUFFER,u),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,a,0),e.bindFramebuffer(e.FRAMEBUFFER,null)},Vw=e=>a=>u=>l=>()=>{e.bindTexture(e.TEXTURE_2D,a),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,u,l,0,e.RGBA,e.UNSIGNED_BYTE,null)},Jw=e=>a=>()=>e.bindFramebuffer(e.FRAMEBUFFER,a),jw=e=>()=>Math.ceil(e.clientWidth*window.devicePixelRatio),Hw=e=>()=>Math.ceil(e.clientHeight*window.devicePixelRatio),Xw=()=>window.devicePixelRatio,Ty=e=>()=>{e.width=e.clientWidth*window.devicePixelRatio,e.height=e.clientHeight*window.devicePixelRatio};var Xp=L(nl),Yw=X(Va),RS=X(Nv),AX=function(e){return function(){var u=ve(e.frameBufferIndex)();return u===0?Ae(1)(e.frameBufferIndex)():Ae(0)(e.frameBufferIndex)()}},My=function(e){return wR(e.gl)},Sy=function(e){return function(a){return function(u){return function(l){return function(v){return function(){var i=yR(e)(a)(u)();return _y(e.gl)(i)(l)(v)()}}}}}},NX=function(e){return function(a){return function(u){return function(l){return function(){var t=yR(e)(a)(u)();return oy(e.gl)(t)(l)()}}}}},_0=function(e){return function(a){return function(u){return function(l){return function(){var t=yR(e)(a)(u)();return cy(e.gl)(t)(l)()}}}}},PX=`\nprecision mediump float;\nuniform vec2 r;\nuniform sampler2D t;\nuniform float b;\nvoid main(){\n  vec4 t = texture2D(t,gl_FragCoord.xy/r);\n  gl_FragColor = vec4(t.xyz*b,t.w);\n}\n`,IS=function(e){return function(){var u=vy(e)();return IR(e)(u)(),ny(e)(),u}},GS=function(e){return Ww(e.gl)},qX=function(e){return Ty(e.canvas)},$X=function(e){return Xp(fo)(ay(e))},OX=function(e){return Xp(fo)(ey(e))};var UX=function(e){return function(){var u=ve(e.frameBufferIndex)();return u===0?e.frameBufferTexture0:e.frameBufferTexture1}},wS=function(e){return function(){var u=ve(e.frameBufferIndex)();return u===0?e.frameBuffer0:e.frameBuffer1}},dS=function(e){return function(){var u=ve(e.frameBufferIndex)();return u===0?e.frameBufferTexture1:e.frameBufferTexture0}},WX=function(e){return function(a){return Xp(fo)(uy(e)(a))}},Zw=function(e){return jw(e.canvas)},Qw=function(e){return Hw(e.canvas)},mS=function(e){return Bw(e.gl)},hS=function(e){return x2(e.canvas)},gS=function(e){return Ow(e.gl)},FR=function(e){return Hp(e.gl)},yS=function(e){return $w(e.gl)},FS=function(e){return Uw(e.gl)},bS=function(e){return function(){var u=ve(e.width)(),l=ve(e.height)(),v=Zw(e)(),t=Qw(e)(),i=u!==v||l!==t;if(!i)return void 0;if(i){var o=Xw();return gl(\" configureFrameBufferTextures: canvasWidth=\"+(Yw(v)+(\" canvasHeight=\"+(Yw(t)+(\" devicePixelRatio=\"+RS(o))))))(),Vw(e.gl)(e.frameBufferTexture0)(v)(t)(),Vw(e.gl)(e.frameBufferTexture1)(v)(t)(),Ae(v)(e.width)(),Ae(t)(e.height)()}throw new Error(\"Failed pattern match at WebGLCanvas (line 306, column 3 - line 314, column 25): \"+[i.constructor.name])}},Ly=function(e){return dR(e.gl)},BX=function(e){return Cy(e.gl)},Ay=function(e){return function(a){if(a instanceof I)return Jw(e.gl)(null);if(a instanceof R)return Jw(e.gl)(a.value0);throw new Error(\"Failed pattern match at WebGLCanvas (line 355, column 1 - line 355, column 72): \"+[e.constructor.name,a.constructor.name])}},Ny=function(e){return GR(e.gl)},zX=function(e){return function(a){return a===0?fy(e.gl):a===1?py(e.gl):a===2?sy(e.gl):a===3?Dy(e.gl):a===4?Ry(e.gl):a===5?Iy(e.gl):a===6?Gy(e.gl):a===7?wy(e.gl):a===8?dy(e.gl):a===9?my(e.gl):a===10?hy(e.gl):a===11?gy(e.gl):a===12?yy(e.gl):a===13?Fy(e.gl):a===14?by(e.gl):a===15?Ey(e.gl):gl(\"strange error in punctual: activeTexture called with texture slot not >=0 && <= 15\")}},Qc=function(e){return function(a){return function(u){return function(l){return function(v){return function(){return zX(e)(l)(),BX(e)(u)(),NX(e)(a)(v)(l)()}}}}}},ES=function(e){return function(a){return function(){mR(e)(e.postProgram)();var l=UX(e)(),v=Zw(e)(),t=Qw(e)();return Qc(e)(e.postProgram)(l)(0)(\"t\")(),_0(e)(e.postProgram)(\"b\")(a)(),Sy(e)(e.postProgram)(\"r\")(Da(v))(Da(t))(),hR(e)(0)(0)(v)(t)(),qX(e)(),Ay(e)(I.value)(),gR(e)(),AX(e)()}}},kX=function(e){return function(){var u=$w(e)(),l=Ow(e)();GR(e)(u)(l)(),wR(e)(l)(\"attribute vec4 p; void main() { gl_Position = p; }\")(),dR(e)(l)();var v=Uw(e)();return GR(e)(u)(v)(),wR(e)(v)(PX)(),dR(e)(v)(),Ww(e)(u)(),Bw(e)(),u}},DS=function(e){return function(a){return function(u){return function(){var v=jw(e)(),t=Hw(e)(),i=Xw();gl(\" setupWebGLCanvas: canvasWidth=\"+(Yw(v)+(\" canvasHeight=\"+(Yw(t)+(\" devicePixelRatio=\"+RS(i))))))();var o=va(v)(),_=va(t)();(function(){if(!u)return gl(\"punctual will use WebGL1\")();if(u)return gl(\"punctual will use WebGl2\")();throw new Error(\"Failed pattern match at WebGLCanvas (line 47, column 3 - line 49, column 43): \"+[u.constructor.name])})(),K2(e)();var s=Xp(Bo)(WX(a)(\"KHR_parallel_shader_compile\"))();(function(){if(!s)return void 0;if(s)return gl(\"punctual can use WebGL extension KHR_parallel_shader_compile\")();throw new Error(\"Failed pattern match at WebGLCanvas (line 52, column 3 - line 54, column 79): \"+[s.constructor.name])})(),ly(a)();var b=kX(a)(),P=Hp(a)(),A=Hp(a)(),K=Hp(a)(),Ve=zw(a)(),Ga=zw(a)(),$u=va(0)(),Dl={canvas:e,width:o,height:_,gl:a,webGL2:u,khr_parallel_shader_compile:s,postProgram:b,webcamTexture:P,frameBufferTexture0:A,frameBufferTexture1:K,frameBuffer0:Ve,frameBuffer1:Ga,frameBufferIndex:$u};return kw(a)(A)(Ve)(v)(t)(),kw(a)(K)(Ga)(v)(t)(),Dl}}}},CS=function(){var a=Q2(),u=$X(a)();if(u instanceof R)return Xp(R.create)(DS(a)(u.value0)(!0))();if(u instanceof I){var l=OX(a)();if(l instanceof R)return Xp(R.create)(DS(a)(l.value0)(!1))();if(l instanceof I)return I.value;throw new Error(\"Failed pattern match at WebGLCanvas (line 35, column 7 - line 37, column 32): \"+[l.constructor.name])}throw new Error(\"Failed pattern match at WebGLCanvas (line 31, column 3 - line 37, column 32): \"+[u.constructor.name])};var Yp=ee(rc),OS=$n(uu),US=lt(uu),TS=X7(y_),MS=wn(fc),SS=hI(uu)(xa),ai=c_(cl),LS=nD(uu),WS=re(Ff()(Du({reflectSymbol:function(){return\"ain\"}})()(Du({reflectSymbol:function(){return\"fft\"}})()(Du({reflectSymbol:function(){return\"hi\"}})()(Du({reflectSymbol:function(){return\"ifft\"}})()(Du({reflectSymbol:function(){return\"ihi\"}})()(Du({reflectSymbol:function(){return\"ilo\"}})()(Du({reflectSymbol:function(){return\"imgURLs\"}})()(Du({reflectSymbol:function(){return\"imid\"}})()(Du({reflectSymbol:function(){return\"lo\"}})()(Du({reflectSymbol:function(){return\"mid\"}})()(Du({reflectSymbol:function(){return\"vidURLs\"}})()(Du({reflectSymbol:function(){return\"webcam\"}})()(yf)(ai))(LS))(ai))(ai))(ai))(LS))(ai))(ai))(ai))(ai))(ai))(ai))),BS=X(Va),AS=Eu(),NS=Vf(Di),JX=L(nl),jX=Tv(aI),PS=sn(dl),qS=m(H3(ts)),$S=xs(H7)(dl),zS=function(e){return function(a){return function(u){return function(l){return function(v){return function(t){var i=sS(e.webGL2)(a)(u)(l)(v)(t);return function(){var _=yS(e)(),s=gS(e)();Ny(e)(_)(s)();var b=function(){if(e.webGL2)return`#version 300 es\nin vec4 p; void main() { gl_Position = p; }`;if(!e.webGL2)return\"attribute vec4 p; void main() { gl_Position = p; }\";throw new Error(\"Failed pattern match at WebGL (line 106, column 20 - line 108, column 83): \"+[e.webGL2.constructor.name])}();My(e)(s)(b)(),Ly(e)(s)();var P=FS(e)();return Ny(e)(_)(P)(),My(e)(P)(i)(),Ly(e)(P)(),GS(e)(_)(),mS(e)(),new k(i,_)}}}}}}},HX=function(e){return function(a){return function(){var l=ve(e.videoTextures)(),v=OS(a)(l);if(v instanceof R){var t=Hm(e.sharedResources)(a)();if(t instanceof I)return I.value;if(t instanceof R)return _w(e.glc.gl)(t.value0)(v.value0)(),new R(v.value0);throw new Error(\"Failed pattern match at WebGL (line 247, column 7 - line 251, column 24): \"+[t.constructor.name])}if(v instanceof I){var t=Hm(e.sharedResources)(a)();if(t instanceof R){var i=FR(e.glc)();return _w(e.glc.gl)(t.value0)(i)(),Ae(US(a)(i)(l))(e.videoTextures)(),new R(i)}if(t instanceof I)return I.value;throw new Error(\"Failed pattern match at WebGL (line 254, column 7 - line 260, column 32): \"+[t.constructor.name])}throw new Error(\"Failed pattern match at WebGL (line 244, column 3 - line 260, column 32): \"+[v.constructor.name])}}},XX=function(e){return function(a){return function(){var l=ve(e.imageTextures)(),v=OS(a)(l);if(v instanceof R)return new R(v.value0);if(v instanceof I){var t=wF(e.sharedResources)(a)();if(t instanceof R){var i=FR(e.glc)();return cw(e.glc.gl)(t.value0)(i)(),Ae(US(a)(i)(l))(e.imageTextures)(),new R(i)}if(t instanceof I)return I.value;throw new Error(\"Failed pattern match at WebGL (line 223, column 7 - line 229, column 32): \"+[t.constructor.name])}throw new Error(\"Failed pattern match at WebGL (line 219, column 3 - line 229, column 32): \"+[v.constructor.name])}}},kS=function(e){return hS(e.glc)},VS=function(e){var a=TS(e.vidURLs),u=TS(e.imgURLs),l=MS(4+Cl(u)|0)(15),v=MS(4)(15);return new k(SS(b_(u)(v)),SS(b_(a)(l)))},JS=function(e){return function(a){return function(u){return function(){var v=CS();if(v instanceof R){var t=IS(v.value0)(),i=ZI(e)(),o=WS(of(a))(of(u)),_=VS(o),s=zS(v.value0)(i)(_.value0)(_.value1)(u)(a)(),b=va(a)(),P=va(o)(),A=va(s.value0)(),K=va(s.value1)(),Ve=va(fl)(),Ga=va(fl)(),$u=va(_.value0)(),Dl=va(_.value1)(),Ou=FR(v.value0)(),_u=FR(v.value0)(),f0={sharedResources:e,glc:v.value0,triangleStripBuffer:t,program:b,programInfo:P,shaderSrc:A,shader:K,imageTextures:Ve,videoTextures:Ga,imageTextureSlots:$u,videoTextureSlots:Dl,fftTexture:Ou,ifftTexture:_u};return new R(f0)}if(v instanceof I)return I.value;throw new Error(\"Failed pattern match at WebGL (line 48, column 3 - line 81, column 28): \"+[v.constructor.name])}}}},jS=function(e){return function(a){return function(u){return function(){var v=ZI(e.sharedResources)(),t=WS(of(a))(of(u)),i=VS(t),o=zS(e.glc)(v)(i.value0)(i.value1)(u)(a)();return Ae(a)(e.program)(),Ae(t)(e.programInfo)(),Ae(o.value0)(e.shaderSrc)(),Ae(o.value1)(e.shader)(),Ae(i.value0)(e.imageTextureSlots)(),Ae(i.value1)(e.videoTextureSlots)()}}}},YX=function(e){return function(a){return function(u){return function(l){return function(){var t=HX(e)(u)();if(t instanceof R)return Qc(e.glc)(a)(t.value0)(l)(\"t\"+BS(l))();if(t instanceof I)return void 0;throw new Error(\"Failed pattern match at WebGL (line 237, column 3 - line 239, column 25): \"+[t.constructor.name])}}}}},ZX=function(e){return function(a){return function(u){return function(l){return function(){var t=XX(e)(u)();if(t instanceof R)return Qc(e.glc)(a)(t.value0)(l)(\"t\"+BS(l))();if(t instanceof I)return void 0;throw new Error(\"Failed pattern match at WebGL (line 212, column 3 - line 214, column 25): \"+[t.constructor.name])}}}}},HS=function(e){return function(a){return function(u){return function(){bS(e.glc)();var v=ve(e.shader)();mR(e.glc)(v)();var t=Zw(e.glc)(),i=Qw(e.glc)();Sy(e.glc)(v)(\"res\")(Da(t))(Da(i))();var o=ZI(e.sharedResources)();_0(e.glc)(v)(\"_time\")(AS(NS(a)(Xs(o))))();var _=JX(function(Ga){return Ga.evalTime})(ve(e.program))();_0(e.glc)(v)(\"_etime\")(AS(NS(a)(_)))(),_0(e.glc)(v)(\"_cps\")(Sn(o.freq))(),_0(e.glc)(v)(\"_beat\")(Sn(m_(o)(a)))(),_0(e.glc)(v)(\"_ebeat\")(Sn(jX(m_(o)(a))(m_(o)(_))))(),Yp(ve(e.sharedResources.inputAnalyser.lo))(_0(e.glc)(v)(\"ilo\"))(),Yp(ve(e.sharedResources.inputAnalyser.mid))(_0(e.glc)(v)(\"imid\"))(),Yp(ve(e.sharedResources.inputAnalyser.hi))(_0(e.glc)(v)(\"ihi\"))(),Yp(ve(e.sharedResources.outputAnalyser.lo))(_0(e.glc)(v)(\"lo\"))(),Yp(ve(e.sharedResources.outputAnalyser.mid))(_0(e.glc)(v)(\"mid\"))(),Yp(ve(e.sharedResources.outputAnalyser.hi))(_0(e.glc)(v)(\"hi\"))();var s=dS(e.glc)();Qc(e.glc)(v)(s)(0)(\"f\")();var b=ve(e.programInfo)();PS(qS(b.fft)(!0))(function(){return Qc(e.glc)(v)(e.fftTexture)(1)(\"o\")(),fw(e.glc.gl)(e.sharedResources.outputAnalyser.analyserArray)(e.fftTexture)()})(),PS(qS(b.ifft)(!0))(function(){return Qc(e.glc)(v)(e.ifftTexture)(2)(\"i\")(),fw(e.glc.gl)(e.sharedResources.inputAnalyser.analyserArray)(e.ifftTexture)()})(),_F(e.sharedResources)(e.glc)(),Qc(e.glc)(v)(e.glc.webcamTexture)(3)(\"w\")();var P=ve(e.imageTextureSlots)();$S(ZX(e)(v))(P)();var A=ve(e.videoTextureSlots)();$S(YX(e)(v))(A)();var K=ry(e.glc)(v)(\"p\")();IR(e.glc)(e.triangleStripBuffer)(),ty(e.glc)(K)(),iy(e.glc)(K)(),hR(e.glc)(0)(0)(t)(i)();var Ve=wS(e.glc)();return Ay(e.glc)(new R(Ve))(),gR(e.glc)(),ES(e.glc)(u)(),void 0}}}};var Kc=$n(_a),Zp=lt(_a),xS=B(dl),Py=Fc(P_),Qp=A1(_a),KX=Eu(),xX=sn(dl),XS=L(nl),eL={reflectSymbol:function(){return\"ain\"}},ui=ci(cl),aL={reflectSymbol:function(){return\"fft\"}},uL={reflectSymbol:function(){return\"hi\"}},lL={reflectSymbol:function(){return\"ifft\"}},vL={reflectSymbol:function(){return\"ihi\"}},nL={reflectSymbol:function(){return\"ilo\"}},rL={reflectSymbol:function(){return\"imgURLs\"}},YS=ep(uu),tL={reflectSymbol:function(){return\"imid\"}},iL={reflectSymbol:function(){return\"lo\"}},oL={reflectSymbol:function(){return\"mid\"}},cL={reflectSymbol:function(){return\"vidURLs\"}},_L={reflectSymbol:function(){return\"webcam\"}},ZS=Yv(mI)(Sf()(ma(eL)(ui)()(ma(aL)(ui)()(ma(uL)(ui)()(ma(lL)(ui)()(ma(vL)(ui)()(ma(nL)(ui)()(ma(rL)(YS)()(ma(tL)(ui)()(ma(iL)(ui)()(ma(oL)(ui)()(ma(cL)(YS)()(ma(_L)(ui)()(Mf)))))))))))))),li=c_(cl),QS=nD(uu),eY=re(Ff()(Du(eL)()(Du(aL)()(Du(uL)()(Du(lL)()(Du(vL)()(Du(nL)()(Du(rL)()(Du(tL)()(Du(iL)()(Du(oL)()(Du(cL)()(Du(_L)()(yf)(li))(QS))(li))(li))(li))(QS))(li))(li))(li))(li))(li))(li))),KS=ee(un),aY=X(Rh),uY=fu(th),lY=Lu(l0),vY=B(Tc),nY=function(e){return function(a){return function(u){return function(l){return function(){var t=ve(e.webGLs)(),i=Kc(a)(t);if(i instanceof R)return jS(i.value0)(u)(l)(),ve(i.value0.shaderSrc)();if(i instanceof I){var o=JS(e.sharedResources)(u)(l)();if(o instanceof R)return Ae(Zp(a)(o.value0)(t))(e.webGLs)(),ve(o.value0.shaderSrc)();if(o instanceof I)return\"unable to make canvas or WebGL context for program\";throw new Error(\"Failed pattern match at Main (line 205, column 7 - line 209, column 77): \"+[o.constructor.name])}throw new Error(\"Failed pattern match at Main (line 199, column 3 - line 209, column 77): \"+[i.constructor.name])}}}}},rY=function(e){return function(a){return function(u){return function(){var v=ve(e.audioZones)(),t=function(){var i=Kc(a)(v);if(i instanceof R)return NF(i.value0)(u)(),i.value0;if(i instanceof I){var o=AF(e.sharedResources)(u)();return Ae(Zp(a)(o)(v))(e.audioZones)(),o}throw new Error(\"Failed pattern match at Main (line 224, column 16 - line 231, column 13): \"+[i.constructor.name])}();return SF(t)()}}}},fL=function(e){return function(a){return pF(e.sharedResources)(c7(a))}},pL=function(e){return function(a){return sF(e.sharedResources)(a)}},sL=function(e){return function(a){return DF(e.sharedResources)(a)}},DL=function(e){return function(a){return RF(e.sharedResources)(a)}},RL=function(e){return function(a){return IF(e.sharedResources)(a)}},IL=function(e){return function(a){if(!a.canDraw)return xS(void 0);if(a.canDraw)return function(){var l=ve(e.webGLs)();(function(){var i=Kc(a.zone)(l);if(i instanceof I)return void 0;if(i instanceof R){var o=ve(e.sharedResources.brightness)();return HS(i.value0)(ph(a.nowTime))(o)()}throw new Error(\"Failed pattern match at Main (line 164, column 7 - line 168, column 65): \"+[i.constructor.name])})();var v=ve(e.audioZones)(),t=Kc(a.zone)(v);if(t instanceof I)return void 0;if(t instanceof R)return CF(t.value0)();throw new Error(\"Failed pattern match at Main (line 170, column 7 - line 173, column 29): \"+[t.constructor.name])};throw new Error(\"Failed pattern match at Main (line 160, column 3 - line 173, column 29): \"+[a.canDraw.constructor.name])}},GL=function(e){return function(a){return xS(void 0)}},wL=function(e){var a=fo(e.webAudioContext);return function(){var l=hF(a)(),v=va(fl)(),t=va(fl)(),i=va(fl)(),o=va(fl)(),_=va(O)(),s=va(fl)(),b=va(fl)();return Py(\"punctual 0.5.1.5 initialization complete\")(),{sharedResources:l,programs:v,previousPrograms:t,programInfos:i,previousProgramInfos:o,combinedProgramInfo:_,webGLs:s,audioZones:b}}},dL=function(e){return function(a){return function(){var l=ve(e.webGLs)(),v=Kc(a)(l);if(v instanceof R)return Py(\"punctual DEBUG: deleting WebGL\")(),kS(v.value0)(),Ae(Qp(a)(l))(e.webGLs)();if(v instanceof I)return void 0;throw new Error(\"Failed pattern match at Main (line 214, column 3 - line 219, column 25): \"+[v.constructor.name])}}},mL=function(e){return function(a){return function(){var l=ve(e.audioZones)(),v=Kc(a)(l);if(v instanceof R)return Py(\"punctual DEBUG: delete audio zone\")(),MF(v.value0)(),Ae(Qp(a)(l))(e.audioZones)();if(v instanceof I)return void 0;throw new Error(\"Failed pattern match at Main (line 238, column 3 - line 243, column 25): \"+[v.constructor.name])}}},tY=function(e){return function(){var u=ve(e.combinedProgramInfo)();return fF(e.sharedResources)(KX(u.webcam))(),dF(e.sharedResources)(u)()}},hL=function(e){return function(a){return function(){return xX(a.canDraw)(tY(e))(),gF(e.sharedResources)()}}},gL=function(e){return function(){var u=XS(ZS)(ve(e.programInfos))(),l=XS(ZS)(ve(e.previousProgramInfos))(),v=eY(u)(l);return Ae(v)(e.combinedProgramInfo)()}},yL=function(e){return function(a){return function(){var l=ve(e.programs)(),v=ve(e.previousPrograms)(),t=ve(e.programInfos)(),i=ve(e.previousProgramInfos)(),o=Qp(a.zone)(l),_=Qp(a.zone)(v),s=Qp(a.zone)(t),b=Qp(a.zone)(i);return Ae(o)(e.programs)(),Ae(_)(e.previousPrograms)(),Ae(s)(e.programInfos)(),Ae(b)(e.previousProgramInfos)(),gL(e)(),dL(e)(a.zone)(),mL(e)(a.zone)()}}},iY=function(e){return function(a){return function(u){return function(){var v=ve(e.programs)(),t=ve(e.previousPrograms)(),i=ve(e.programInfos)(),o=ve(e.previousProgramInfos)(),_=function(){var _u=Kc(a)(v);if(_u instanceof R)return _u.value0;if(_u instanceof I)return yT();throw new Error(\"Failed pattern match at Main (line 80, column 5 - line 82, column 30): \"+[_u.constructor.name])}(),s=function(){var _u=Kc(a)(i);if(_u instanceof R)return _u.value0;if(_u instanceof I)return O;throw new Error(\"Failed pattern match at Main (line 84, column 5 - line 86, column 38): \"+[_u.constructor.name])}(),b=`new program actions:\n`+v2(u),P=`previous program actions:\n`+v2(_),A=Zp(a)(u)(v),K=Zp(a)(_)(t),Ve=Zp(a)(of(u))(i),Ga=Zp(a)(s)(o);Ae(A)(e.programs)(),Ae(K)(e.previousPrograms)(),Ae(Ve)(e.programInfos)(),Ae(Ga)(e.previousProgramInfos)(),gL(e)();var $u=function(){var _u=hT(u);if(_u){var f0=nY(e)(a)(u)(_)();return`fragment shader:\n`+(f0+`\n\n`)}if(!_u)return dL(e)(a)(),\"\";throw new Error(\"Failed pattern match at Main (line 99, column 22 - line 105, column 14): \"+[_u.constructor.name])}(),Dl=function(){var _u=gT(u);if(_u){var f0=rY(e)(a)(u)();return`audio worklets:\n`+(f0+`\n\n`)}if(!_u)return mL(e)(a)(),\"\";throw new Error(\"Failed pattern match at Main (line 107, column 21 - line 113, column 14): \"+[_u.constructor.name])}(),Ou=b+(P+($u+Dl));return Ou}}}},FL=function(e){return function(a){return gb(KS(IT(e.sharedResources.libraries)(a.text)(ph(a.time)))(function(u){if(u instanceof S){var l=aY(u.value0);return uY(At(l))}if(u instanceof te)return KS(lY(iY(e)(a.zone)(u.value0)))(function(v){return vY({info:v})});throw new Error(\"Failed pattern match at Main (line 64, column 3 - line 70, column 20): \"+[u.constructor.name])}))}};function die(e){return new zr(e)}function zr(e){e==null&&(e={}),this.punctual=wL(e)()}zr.prototype.define=function(e){return FL(this.punctual)(e)()};zr.prototype.clear=function(e){return yL(this.punctual)(e)()};zr.prototype.preRender=function(e){return hL(this.punctual)(e)()};zr.prototype.render=function(e){return IL(this.punctual)(e)()};zr.prototype.postRender=function(e){return GL(this.punctual)(e)()};zr.prototype.setTempo=function(e){return fL(this.punctual)(e)()};zr.prototype.setAudioInput=function(e){return RL(this.punctual)(e)()};zr.prototype.setAudioOutput=function(e){return DL(this.punctual)(e)()};zr.prototype.setBrightness=function(e){return sL(this.punctual)(e)()};zr.prototype.setOutputChannelCount=function(e){return console.log(\"punctual setOutputChannelCount \"+e),pL(this.punctual)(e)()};export{zr as Punctual,die as exoLang};\n"
  },
  {
    "path": "packages/web/src/lib/settings.ts",
    "content": "import { DisplaySettings } from \"@/lib/display-settings\";\n\nexport interface SettingsMessage {\n  displaySettings?: DisplaySettings;\n}\n"
  },
  {
    "path": "packages/web/src/lib/strudel-wrapper.ts",
    "content": "import type { EvalMessage } from \"@flok-editor/session\";\nimport {\n  Pattern,\n  controls,\n  evalScope,\n  noteToMidi,\n  repl,\n  stack,\n  valueToMidi,\n} from \"@strudel/core\";\nimport { Framer } from \"@strudel/draw\";\nimport { registerSoundfonts } from \"@strudel/soundfonts\";\nimport { transpiler } from \"@strudel/transpiler\";\nimport {\n  getAudioContext,\n  initAudio,\n  registerSynthSounds,\n  samples,\n  webaudioOutput,\n} from \"@strudel/webaudio\";\nimport { updateDocumentsContext } from \"./utils\";\n\nexport type ErrorHandler = (error: string) => void;\n\ncontrols.createParam(\"docId\");\n\nexport class StrudelWrapper {\n  initialized: boolean = false;\n\n  protected _onError: ErrorHandler;\n  protected _onWarning: ErrorHandler;\n  protected _repl: any;\n  protected _docPatterns: any;\n  protected _audioInitialized: boolean;\n  protected framer?: any;\n  protected mini?: any;\n  protected core?: any;\n  protected draw?: any;\n  protected webaudio?: any;\n\n  enableAutoAnalyze = false;\n  hapAnalyzeSnippet = `\n    all(x => \n      x.fmap(hap => {\n        if(hap.analyze == undefined) {\n          hap.analyze = 'flok-master';\n        }\n        return hap\n      })\n    )\n    `;\n\n  constructor({\n    onError,\n    onWarning,\n  }: {\n    onError: ErrorHandler;\n    onWarning: ErrorHandler;\n  }) {\n    this._docPatterns = {};\n    this._onError = onError || (() => {});\n    this._onWarning = onWarning || (() => {});\n    this._audioInitialized = false;\n  }\n\n  async importModules() {\n    // import desired modules and add them to the eval scope\n\n    this.mini = await import(\"@strudel/mini\");\n    this.core = await import(\"@strudel/core\");\n    this.draw = await import(\"@strudel/draw\");\n\n    this.webaudio = await import(\"@strudel/webaudio\");\n\n    await evalScope(\n      this.core,\n      import(\"@strudel/midi\"),\n      this.mini,\n      this.draw,\n      import(\"@strudel/tonal\"),\n      import(\"@strudel/osc\"),\n      import(\"@strudel/serial\"),\n      import(\"@strudel/soundfonts\"),\n      this.webaudio,\n      controls,\n    );\n    try {\n      await Promise.all([\n        loadSamples(),\n        registerSynthSounds(),\n        registerSoundfonts(),\n      ]);\n    } catch (err) {\n      this._onWarning(`Failed to load default samples EmuSP12: ${err}`);\n    }\n  }\n\n  async initAudio() {\n    if (this._audioInitialized) return;\n    await initAudio();\n    this._audioInitialized = true;\n  }\n\n  async initialize() {\n    if (this.initialized) return;\n\n    let lastFrame: number | null = null;\n    this.framer = new Framer(\n      () => {\n        const phase = this._repl.scheduler.now();\n        if (lastFrame === null) {\n          lastFrame = phase;\n          return;\n        }\n        if (!this._repl.scheduler.pattern) {\n          return;\n        }\n        // queries the stack of strudel patterns for the current time\n        const allHaps = this._repl.scheduler.pattern.queryArc(\n          Math.max(lastFrame!, phase - 1 / 10), // make sure query is not larger than 1/10 s\n          phase,\n        );\n        // filter out haps that are not active right now\n        const currentFrame = allHaps.filter(\n          (hap: any) => phase >= hap.whole.begin && phase <= hap.endClipped,\n        );\n        // iterate over each strudel doc\n        Object.keys(this._docPatterns).forEach((docId: any) => {\n          // filter out haps belonging to this document (docId is set in tryEval)\n          const haps = currentFrame.filter((h: any) => h.value.docId === docId);\n          // update codemirror view to highlight this frame's haps\n          updateDocumentsContext(docId, { haps, phase });\n        });\n      },\n      (err: any) => {\n        console.error(\"[strudel] draw error\", err);\n      },\n    );\n\n    this._repl = repl({\n      defaultOutput: webaudioOutput,\n      afterEval: (options: any) => {\n        // assumes docId is injected at end end as a comment\n        const docId = options.code.split(\"//\").slice(-1)[0];\n        if (!docId) return;\n        const miniLocations = options.meta?.miniLocations;\n        updateDocumentsContext(docId, { miniLocations });\n      },\n      beforeEval: () => {},\n      onSchedulerError: (e: unknown) => this._onError(`${e}`),\n      onEvalError: (e: unknown) => this._onError(`${e}`),\n      getTime: () => getAudioContext().currentTime,\n      transpiler,\n    });\n\n    this.framer.start();\n\n    // For some reason, we need to make a no-op evaluation (\"silence\") to make\n    // sure everything is loaded correctly.\n    const pattern = await this._repl.evaluate(`silence//`);\n    await this._repl.scheduler.setPattern(pattern, true);\n\n    this.initialized = true;\n  }\n\n  async dispose() {\n    if (this.framer) {\n      this.framer.stop();\n    }\n  }\n\n  async tryEval(msg: EvalMessage) {\n    if (!this.initialized) await this.initialize();\n    try {\n      const { body: code, docId } = msg;\n      // little hack that injects the docId at the end of the code to make it available in afterEval\n      // also add ann analyser node to all patterns, for fft data in hydra\n      const pattern = await this._repl.evaluate(\n        `${code}\\n${this.enableAutoAnalyze ? this.hapAnalyzeSnippet : \"\"}\\n//${docId}`,\n      );\n      if (pattern) {\n        this._docPatterns[docId] = pattern.docId(docId); // docId is needed for highlighting\n        const allPatterns = stack(...Object.values(this._docPatterns));\n        await this._repl.scheduler.setPattern(allPatterns, true);\n      }\n    } catch (err) {\n      console.error(err);\n      this._onError(`${err}`);\n    }\n  }\n}\n\nasync function loadSamples() {\n  const ds = \"https://raw.githubusercontent.com/felixroos/dough-samples/main/\";\n  return Promise.all([\n    samples(`${ds}/tidal-drum-machines.json`),\n    samples(`${ds}/piano.json`),\n    samples(`${ds}/Dirt-Samples.json`),\n    samples(`${ds}/EmuSP12.json`),\n    samples(`${ds}/vcsl.json`),\n  ]);\n}\n\n// this is a little bit awkward but the piano function has to be duplicated here..\nconst maxPan = noteToMidi(\"C8\");\nconst panwidth = (pan: any, width: any) => pan * width + (1 - width) / 2;\n\nPattern.prototype.piano = function () {\n  return this.fmap((v: any) => ({ ...v, clip: v.clip ?? 1 })) // set clip if not already set..\n    .s(\"piano\")\n    .release(0.1)\n    .fmap((value: any) => {\n      const midi = valueToMidi(value);\n      // pan by pitch\n      const pan = panwidth(Math.min(Math.round(midi) / maxPan, 1), 0.5);\n      return { ...value, pan: (value.pan || 1) * pan };\n    });\n};\n"
  },
  {
    "path": "packages/web/src/lib/strudel.d.ts",
    "content": "declare module \"@strudel/codemirror\";\ndeclare module \"@strudel/core\";\ndeclare module \"@strudel/core/controls.mjs\";\ndeclare module \"@strudel/draw\";\ndeclare module \"@strudel/midi\";\ndeclare module \"@strudel/mini\";\ndeclare module \"@strudel/osc\";\ndeclare module \"@strudel/serial\";\ndeclare module \"@strudel/soundfonts\";\ndeclare module \"@strudel/tonal\";\ndeclare module \"@strudel/transpiler\";\ndeclare module \"@strudel/webaudio\";\ndeclare module \"@strudel/webaudio/scheduler.mjs\";\ndeclare module \"@strudel/webaudio/webaudio.mjs\";\n"
  },
  {
    "path": "packages/web/src/lib/themes/ayu-dark.ts",
    "content": "import { createTheme } from \"@uiw/codemirror-themes\";\nimport { tags as t } from \"@lezer/highlight\";\n\nexport const ayuDark = createTheme({\n  theme: \"dark\",\n  settings: {\n    background: \"transparent\",\n    backgroundImage: \"\",\n    foreground: \"#B3B1AD\",\n    caret: \"#FFCC66\",\n    selection: \"#253340\",\n    selectionMatch: \"#253340\",\n    lineHighlight: \"rgba(37, 52, 64, 0.7)\",\n    gutterBorder: \"1px solid #0A0E14\",\n    gutterBackground: \"#0A0E14\",\n    gutterForeground: \"#4E5561\",\n  },\n  styles: [\n    { tag: t.comment, color: \"#4E5561\" },\n    { tag: t.variableName, color: \"#FFCC66\" },\n    { tag: [t.string, t.special(t.brace)], color: \"#BAE67E\" },\n    { tag: t.number, color: \"#D4BFFF\" },\n    { tag: t.bool, color: \"#FF8F40\" },\n    { tag: t.null, color: \"#FF8F40\" },\n    { tag: t.keyword, color: \"#FF8F40\" },\n    { tag: t.operator, color: \"#FF8F40\" },\n    { tag: t.className, color: \"#5CCFE6\" },\n    { tag: t.definition(t.typeName), color: \"#5CCFE6\" },\n    { tag: t.typeName, color: \"#5CCFE6\" },\n  ],\n});\n"
  },
  {
    "path": "packages/web/src/lib/themes/dracula.ts",
    "content": "import { createTheme } from \"@uiw/codemirror-themes\";\nimport { tags as t } from \"@lezer/highlight\";\n\nexport const dracula = createTheme({\n  theme: \"dark\",\n  settings: {\n    background: \"transparent\",\n    foreground: \"#f8f8f2\",\n    caret: \"#f8f8f0\",\n    selection: \"rgba(255, 255, 255, 0.1)\",\n    selectionMatch: \"rgba(255, 255, 255, 0.2)\",\n    gutterBackground: \"#282a36\",\n    gutterForeground: \"#6D8A88\",\n    gutterBorder: \"transparent\",\n    lineHighlight: \"rgba(255, 255, 255, 0.1)\",\n  },\n  styles: [\n    { tag: t.comment, color: \"#6272a4\" },\n    { tag: t.string, color: \"#f1fa8c\" },\n    { tag: t.atom, color: \"#bd93f9\" },\n    { tag: t.meta, color: \"#f8f8f2\" },\n    { tag: [t.keyword, t.operator, t.tagName], color: \"#ff79c6\" },\n    { tag: [t.function(t.propertyName), t.propertyName], color: \"#66d9ef\" },\n    {\n      tag: [\n        t.definition(t.variableName),\n        t.function(t.variableName),\n        t.className,\n        t.attributeName,\n      ],\n      color: \"#50fa7b\",\n    },\n    { tag: t.atom, color: \"#bd93f9\" },\n  ],\n});\n"
  },
  {
    "path": "packages/web/src/lib/themes/gruvbox-dark.ts",
    "content": "import { createTheme } from \"@uiw/codemirror-themes\";\nimport { tags as t } from \"@lezer/highlight\";\n\nexport const gruvboxDark = createTheme({\n  theme: \"dark\",\n  settings: {\n    background: \"transparent\",\n    foreground: \"#ebdbb2\",\n    caret: \"#ebdbb2\",\n    selection: \"#b99d555c\",\n    selectionMatch: \"#b99d555c\",\n    lineHighlight: \"#baa1602b\",\n    gutterBackground: \"#282828\",\n    gutterForeground: \"#7c6f64\",\n  },\n  styles: [\n    { tag: t.keyword, color: \"#fb4934\" },\n    {\n      tag: [t.name, t.deleted, t.character, t.propertyName, t.macroName],\n      color: \"#8ec07c\",\n    },\n    { tag: [t.variableName], color: \"#83a598\" },\n    { tag: [t.function(t.variableName)], color: \"#b8bb26\", fontStyle: \"bold\" },\n    { tag: [t.labelName], color: \"#ebdbb2\" },\n    {\n      tag: [t.color, t.constant(t.name), t.standard(t.name)],\n      color: \"#d3869b\",\n    },\n    { tag: [t.definition(t.name), t.separator], color: \"#ebdbb2\" },\n    { tag: [t.brace], color: \"#ebdbb2\" },\n    {\n      tag: [t.annotation],\n      color: \"#fb4934d\",\n    },\n    {\n      tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace],\n      color: \"#d3869b\",\n    },\n    {\n      tag: [t.typeName, t.className],\n      color: \"#fabd2f\",\n    },\n    {\n      tag: [t.operator, t.operatorKeyword],\n      color: \"#fb4934\",\n    },\n    {\n      tag: [t.tagName],\n      color: \"#8ec07c\",\n      fontStyle: \"bold\",\n    },\n    {\n      tag: [t.squareBracket],\n      color: \"#fe8019\",\n    },\n    {\n      tag: [t.angleBracket],\n      color: \"#83a598\",\n    },\n    {\n      tag: [t.attributeName],\n      color: \"#8ec07c\",\n    },\n    {\n      tag: [t.regexp],\n      color: \"#8ec07c\",\n    },\n    {\n      tag: [t.quote],\n      color: \"#928374\",\n    },\n    { tag: [t.string], color: \"#ebdbb2\" },\n    {\n      tag: t.link,\n      color: \"#a89984\",\n      textDecoration: \"underline\",\n      textUnderlinePosition: \"under\",\n    },\n    {\n      tag: [t.url, t.escape, t.special(t.string)],\n      color: \"#d3869b\",\n    },\n    { tag: [t.meta], color: \"#fabd2f\" },\n    { tag: [t.comment], color: \"#928374\", fontStyle: \"italic\" },\n    { tag: t.strong, fontWeight: \"bold\", color: \"#fe8019\" },\n    { tag: t.emphasis, fontStyle: \"italic\", color: \"#b8bb26\" },\n    { tag: t.strikethrough, textDecoration: \"line-through\" },\n    { tag: t.heading, fontWeight: \"bold\", color: \"#b8bb26\" },\n    { tag: [t.heading1, t.heading2], fontWeight: \"bold\", color: \"#b8bb26\" },\n    {\n      tag: [t.heading3, t.heading4],\n      fontWeight: \"bold\",\n      color: \"#fabd2f\",\n    },\n    {\n      tag: [t.heading5, t.heading6],\n      color: \"#fabd2f\",\n    },\n    { tag: [t.atom, t.bool, t.special(t.variableName)], color: \"#d3869b\" },\n    {\n      tag: [t.processingInstruction, t.inserted],\n      color: \"#83a598\",\n    },\n    {\n      tag: [t.contentSeparator],\n      color: \"#fb4934\",\n    },\n    { tag: t.invalid, color: \"#fe8019\", borderBottom: `1px dotted #fb4934d` },\n  ],\n});\n"
  },
  {
    "path": "packages/web/src/lib/themes/index.ts",
    "content": "import { Extension } from \"@codemirror/state\";\nimport { ayuDark } from \"./ayu-dark\";\nimport { dracula } from \"./dracula\";\nimport { gruvboxDark } from \"./gruvbox-dark\";\nimport { monokai } from \"./monokai-dimmed\";\nimport { nord } from \"./nord\";\nimport { tokyoNight } from \"./tokyo-night\";\n\nimport { oneDark } from \"./one-dark\";\n\n// some themes installed from react codemirror\n// https://uiwjs.github.io/react-codemirror/#/theme/home\nimport { andromedaInit } from \"@uiw/codemirror-theme-andromeda\";\nimport { bespinInit } from \"@uiw/codemirror-theme-bespin\";\nimport { consoleDarkInit } from \"@uiw/codemirror-theme-console\";\nimport { xcodeDarkInit } from \"@uiw/codemirror-theme-xcode\";\nimport { solarizedDarkInit } from \"@uiw/codemirror-theme-solarized\";\nimport { monokaiInit } from \"@uiw/codemirror-theme-monokai\";\nimport { githubDarkInit } from \"@uiw/codemirror-theme-github\";\n\ninterface Theme {\n  name: string;\n  ext: Extension;\n}\n\nconst noBackground = { settings: { background: \"none\" } };\n\nexport const themes: { [key: string]: Theme } = {\n  ayuDark: { name: \"Ayu Dark\", ext: ayuDark },\n  andromeda: { name: \"Andromeda\", ext: andromedaInit(noBackground) },\n  bespin: { name: \"Bespin\", ext: bespinInit(noBackground) },\n  consoleDark: { name: \"Console Dark\", ext: consoleDarkInit(noBackground) },\n  dracula: { name: \"Dracula\", ext: dracula },\n  githubDark: { name: \"Github Dark\", ext: githubDarkInit(noBackground) },\n  gruvboxDark: { name: \"Gruvbox Dark\", ext: gruvboxDark },\n  monokai: { name: \"Monokai\", ext: monokaiInit(noBackground) },\n  monokaiDimmed: { name: \"Monokai Dimmed\", ext: monokai },\n  nord: { name: \"Nord\", ext: nord },\n  oneDark: { name: \"One Dark\", ext: oneDark },\n  solarizedDark: {\n    name: \"Solarized Dark\",\n    ext: solarizedDarkInit(noBackground),\n  },\n  tokyoNight: { name: \"Tokyo Night\", ext: tokyoNight },\n  xcodeDark: { name: \"XCode Dark\", ext: xcodeDarkInit(noBackground) },\n};\n\nexport default themes;\n"
  },
  {
    "path": "packages/web/src/lib/themes/monokai-dimmed.ts",
    "content": "import { createTheme } from \"@uiw/codemirror-themes\";\nimport { tags as t } from \"@lezer/highlight\";\n\nconst monokaiColors = {\n  background: \"transparent\",\n  foreground: \"#c5c8c6\",\n  selection: \"#4747a1\",\n  selectionMatch: \"#4747a1\",\n  cursor: \"#c07020\",\n  dropdownBackground: \"#525252\",\n  activeLine: \"#30303078\",\n  matchingBracket: \"#303030\",\n  keyword: \"#676867\",\n  storage: \"#676867\",\n  variable: \"#c7444a\",\n  parameter: \"#6089B4\",\n  function: \"#9872A2\",\n  string: \"#D08442\",\n  constant: \"#8080FF\",\n  type: \"#9B0000\",\n  class: \"#CE6700\",\n  number: \"#6089B4\",\n  comment: \"#9A9B99\",\n  heading: \"#D0B344\",\n  invalid: \"#FF0B00\",\n  regexp: \"#D08442\",\n  tag: \"#6089B4\",\n};\n\nexport const monokai = createTheme({\n  theme: \"dark\",\n  settings: {\n    background: monokaiColors.background,\n    foreground: monokaiColors.foreground,\n    caret: monokaiColors.cursor,\n    selection: monokaiColors.selection,\n    selectionMatch: monokaiColors.selection,\n    gutterBackground: monokaiColors.background,\n    gutterForeground: monokaiColors.foreground,\n    lineHighlight: monokaiColors.activeLine,\n  },\n  styles: [\n    { tag: t.keyword, color: monokaiColors.keyword },\n    {\n      tag: [t.name, t.deleted, t.character, t.macroName],\n      color: monokaiColors.variable,\n    },\n    { tag: [t.propertyName], color: monokaiColors.function },\n    {\n      tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)],\n      color: monokaiColors.string,\n    },\n    {\n      tag: [t.function(t.variableName), t.labelName],\n      color: monokaiColors.function,\n    },\n    {\n      tag: [t.color, t.constant(t.name), t.standard(t.name)],\n      color: monokaiColors.constant,\n    },\n    { tag: [t.definition(t.name), t.separator], color: monokaiColors.variable },\n    { tag: [t.className], color: monokaiColors.class },\n    {\n      tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace],\n      color: monokaiColors.number,\n    },\n    {\n      tag: [t.typeName],\n      color: monokaiColors.type,\n      fontStyle: monokaiColors.type,\n    },\n    { tag: [t.operator, t.operatorKeyword], color: monokaiColors.keyword },\n    { tag: [t.url, t.escape, t.regexp, t.link], color: monokaiColors.regexp },\n    { tag: [t.meta, t.comment], color: monokaiColors.comment },\n    { tag: t.tagName, color: monokaiColors.tag },\n    { tag: t.strong, fontWeight: \"bold\" },\n    { tag: t.emphasis, fontStyle: \"italic\" },\n    { tag: t.link, textDecoration: \"underline\" },\n    { tag: t.heading, fontWeight: \"bold\", color: monokaiColors.heading },\n    {\n      tag: [t.atom, t.bool, t.special(t.variableName)],\n      color: monokaiColors.variable,\n    },\n    { tag: t.invalid, color: monokaiColors.invalid },\n    { tag: t.strikethrough, textDecoration: \"line-through\" },\n  ],\n});\n"
  },
  {
    "path": "packages/web/src/lib/themes/nord.ts",
    "content": "import { tags as t } from \"@lezer/highlight\";\nimport { createTheme, CreateThemeOptions } from \"@uiw/codemirror-themes\";\n\nexport const defaultSettingsNord: CreateThemeOptions[\"settings\"] = {\n  background: \"transparent\",\n  foreground: \"#FFFFFF\",\n  caret: \"#FFFFFF\",\n  selection: \"#00000073\",\n  selectionMatch: \"#00000073\",\n  gutterBackground: \"#2e3440\",\n  gutterForeground: \"#4c566a\",\n  gutterActiveForeground: \"#d8dee9\",\n  lineHighlight: \"#4c566a29\",\n};\n\nexport const nord = createTheme({\n  theme: \"dark\",\n  settings: {\n    ...defaultSettingsNord,\n  },\n  styles: [\n    { tag: t.keyword, color: \"#5e81ac\" },\n    {\n      tag: [t.name, t.deleted, t.character, t.propertyName, t.macroName],\n      color: \"#88c0d0\",\n    },\n    { tag: [t.variableName], color: \"#8fbcbb\" },\n    { tag: [t.function(t.variableName)], color: \"#8fbcbb\" },\n    { tag: [t.labelName], color: \"#81a1c1\" },\n    {\n      tag: [t.color, t.constant(t.name), t.standard(t.name)],\n      color: \"#5e81ac\",\n    },\n    { tag: [t.definition(t.name), t.separator], color: \"#a3be8c\" },\n    { tag: [t.brace], color: \"#8fbcbb\" },\n    {\n      tag: [t.annotation],\n      color: \"#d30102\",\n    },\n    {\n      tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace],\n      color: \"#b48ead\",\n    },\n    {\n      tag: [t.typeName, t.className],\n      color: \"#ebcb8b\",\n    },\n    {\n      tag: [t.operator, t.operatorKeyword],\n      color: \"#a3be8c\",\n    },\n    {\n      tag: [t.tagName],\n      color: \"#b48ead\",\n    },\n    {\n      tag: [t.squareBracket],\n      color: \"#bf616a\",\n    },\n    {\n      tag: [t.angleBracket],\n      color: \"#d08770\",\n    },\n    {\n      tag: [t.attributeName],\n      color: \"#ebcb8b\",\n    },\n    {\n      tag: [t.regexp],\n      color: \"#5e81ac\",\n    },\n    {\n      tag: [t.quote],\n      color: \"#b48ead\",\n    },\n    { tag: [t.string], color: \"#a3be8c\" },\n    {\n      tag: t.link,\n      color: \"#a3be8c\",\n      textDecoration: \"underline\",\n      textUnderlinePosition: \"under\",\n    },\n    {\n      tag: [t.url, t.escape, t.special(t.string)],\n      color: \"#8fbcbb\",\n    },\n    { tag: [t.meta], color: \"#88c0d0\" },\n    { tag: [t.monospace], color: \"#d8dee9\", fontStyle: \"italic\" },\n    { tag: [t.comment], color: \"#4c566a\", fontStyle: \"italic\" },\n    { tag: t.strong, fontWeight: \"bold\", color: \"#5e81ac\" },\n    { tag: t.emphasis, fontStyle: \"italic\", color: \"#5e81ac\" },\n    { tag: t.strikethrough, textDecoration: \"line-through\" },\n    { tag: t.heading, fontWeight: \"bold\", color: \"#5e81ac\" },\n    { tag: t.special(t.heading1), fontWeight: \"bold\", color: \"#5e81ac\" },\n    { tag: t.heading1, fontWeight: \"bold\", color: \"#5e81ac\" },\n    {\n      tag: [t.heading2, t.heading3, t.heading4],\n      fontWeight: \"bold\",\n      color: \"#5e81ac\",\n    },\n    {\n      tag: [t.heading5, t.heading6],\n      color: \"#5e81ac\",\n    },\n    { tag: [t.atom, t.bool, t.special(t.variableName)], color: \"#d08770\" },\n    {\n      tag: [t.processingInstruction, t.inserted],\n      color: \"#8fbcbb\",\n    },\n    {\n      tag: [t.contentSeparator],\n      color: \"#ebcb8b\",\n    },\n    { tag: t.invalid, color: \"#434c5e\", borderBottom: `1px dotted #d30102` },\n  ],\n});\n"
  },
  {
    "path": "packages/web/src/lib/themes/one-dark.ts",
    "content": "import { EditorView } from \"@codemirror/view\";\nimport { Extension } from \"@codemirror/state\";\nimport { HighlightStyle, syntaxHighlighting } from \"@codemirror/language\";\nimport { tags as t } from \"@lezer/highlight\";\n\n// Using https://github.com/one-dark/vscode-one-dark-theme/ as reference for the colors\n\nconst chalky = \"#e5c07b\",\n  coral = \"#e06c75\",\n  cyan = \"#56b6c2\",\n  invalid = \"#ffffff\",\n  ivory = \"#abb2bf\",\n  stone = \"#7d8799\", // Brightened compared to original to increase contrast\n  malibu = \"#61afef\",\n  sage = \"#98c379\",\n  whiskey = \"#d19a66\",\n  violet = \"#c678dd\",\n  darkBackground = \"#21252b\",\n  highlightBackground = \"#2c313a\",\n  background = \"#282c34\",\n  tooltipBackground = \"#353a42\",\n  selection = \"#3E4451\",\n  cursor = \"#528bff\";\n\n/// The colors used in the theme, as CSS color strings.\nexport const color = {\n  chalky,\n  coral,\n  cyan,\n  invalid,\n  ivory,\n  stone,\n  malibu,\n  sage,\n  whiskey,\n  violet,\n  darkBackground,\n  highlightBackground,\n  background,\n  tooltipBackground,\n  selection,\n  cursor,\n};\n\n/// The editor theme styles for One Dark.\nexport const oneDarkTheme = EditorView.theme(\n  {\n    \"&\": {\n      color: ivory,\n      // backgroundColor: \"background\"\n      backgroundColor: \"none\",\n    },\n\n    \".cm-content\": {\n      caretColor: cursor,\n    },\n\n    \".cm-cursor, .cm-dropCursor\": { borderLeftColor: cursor },\n    \"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection\":\n      { backgroundColor: selection },\n\n    \".cm-panels\": { backgroundColor: darkBackground, color: ivory },\n    \".cm-panels.cm-panels-top\": { borderBottom: \"2px solid black\" },\n    \".cm-panels.cm-panels-bottom\": { borderTop: \"2px solid black\" },\n\n    \".cm-searchMatch\": {\n      backgroundColor: \"#72a1ff59\",\n      outline: \"1px solid #457dff\",\n    },\n    \".cm-searchMatch.cm-searchMatch-selected\": {\n      backgroundColor: \"#6199ff2f\",\n    },\n\n    \".cm-activeLine\": { backgroundColor: \"#6699ff0b\" },\n    \".cm-selectionMatch\": { backgroundColor: \"#aafe661a\" },\n\n    \"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket\": {\n      backgroundColor: \"#bad0f847\",\n    },\n\n    \".cm-gutters\": {\n      backgroundColor: background,\n      color: stone,\n      border: \"none\",\n    },\n\n    \".cm-activeLineGutter\": {\n      backgroundColor: highlightBackground,\n    },\n\n    \".cm-foldPlaceholder\": {\n      backgroundColor: \"transparent\",\n      border: \"none\",\n      color: \"#ddd\",\n    },\n\n    \".cm-tooltip\": {\n      border: \"none\",\n      backgroundColor: tooltipBackground,\n    },\n    \".cm-tooltip .cm-tooltip-arrow:before\": {\n      borderTopColor: \"transparent\",\n      borderBottomColor: \"transparent\",\n    },\n    \".cm-tooltip .cm-tooltip-arrow:after\": {\n      borderTopColor: tooltipBackground,\n      borderBottomColor: tooltipBackground,\n    },\n    \".cm-tooltip-autocomplete\": {\n      \"& > ul > li[aria-selected]\": {\n        backgroundColor: highlightBackground,\n        color: ivory,\n      },\n    },\n  },\n  { dark: true },\n);\n\n/// The highlighting style for code in the One Dark theme.\nexport const oneDarkHighlightStyle = HighlightStyle.define([\n  { tag: t.keyword, color: violet },\n  {\n    tag: [t.name, t.deleted, t.character, t.propertyName, t.macroName],\n    color: coral,\n  },\n  { tag: [t.function(t.variableName), t.labelName], color: malibu },\n  { tag: [t.color, t.constant(t.name), t.standard(t.name)], color: whiskey },\n  { tag: [t.definition(t.name), t.separator], color: ivory },\n  {\n    tag: [\n      t.typeName,\n      t.className,\n      t.number,\n      t.changed,\n      t.annotation,\n      t.modifier,\n      t.self,\n      t.namespace,\n    ],\n    color: chalky,\n  },\n  {\n    tag: [\n      t.operator,\n      t.operatorKeyword,\n      t.url,\n      t.escape,\n      t.regexp,\n      t.link,\n      t.special(t.string),\n    ],\n    color: cyan,\n  },\n  { tag: [t.meta, t.comment], color: stone },\n  { tag: t.strong, fontWeight: \"bold\" },\n  { tag: t.emphasis, fontStyle: \"italic\" },\n  { tag: t.strikethrough, textDecoration: \"line-through\" },\n  { tag: t.link, color: stone, textDecoration: \"underline\" },\n  { tag: t.heading, fontWeight: \"bold\", color: coral },\n  { tag: [t.atom, t.bool, t.special(t.variableName)], color: whiskey },\n  { tag: [t.processingInstruction, t.string, t.inserted], color: sage },\n  { tag: t.invalid, color: invalid },\n]);\n\n/// Extension to enable the One Dark theme (both the editor theme and\n/// the highlight style).\nexport const oneDark: Extension = [\n  oneDarkTheme,\n  syntaxHighlighting(oneDarkHighlightStyle),\n];\n"
  },
  {
    "path": "packages/web/src/lib/themes/tokyo-night.ts",
    "content": "import { tags as t } from \"@lezer/highlight\";\nimport { createTheme, CreateThemeOptions } from \"@uiw/codemirror-themes\";\n\nexport const defaultSettingsTokyoNight: CreateThemeOptions[\"settings\"] = {\n  background: \"transparent\",\n  foreground: \"#787c99\",\n  caret: \"#c0caf5\",\n  selection: \"#515c7e40\",\n  selectionMatch: \"#16161e\",\n  gutterBackground: \"#1a1b26\",\n  gutterForeground: \"#787c99\",\n  gutterBorder: \"transparent\",\n  lineHighlight: \"#474b6611\",\n};\n\nexport const tokyoNight = createTheme({\n  theme: \"dark\",\n  settings: {\n    ...defaultSettingsTokyoNight,\n  },\n  styles: [\n    { tag: t.keyword, color: \"#bb9af7\" },\n    { tag: [t.name, t.deleted, t.character, t.macroName], color: \"#c0caf5\" },\n    { tag: [t.propertyName], color: \"#7aa2f7\" },\n    {\n      tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)],\n      color: \"#9ece6a\",\n    },\n    { tag: [t.function(t.variableName), t.labelName], color: \"#7aa2f7\" },\n    {\n      tag: [t.color, t.constant(t.name), t.standard(t.name)],\n      color: \"#bb9af7\",\n    },\n    { tag: [t.definition(t.name), t.separator], color: \"#c0caf5\" },\n    { tag: [t.className], color: \"#c0caf5\" },\n    {\n      tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace],\n      color: \"#ff9e64\",\n    },\n    { tag: [t.typeName], color: \"#0db9d7\" },\n    { tag: [t.operator, t.operatorKeyword], color: \"#bb9af7\" },\n    { tag: [t.url, t.escape, t.regexp, t.link], color: \"#b4f9f8\" },\n    { tag: [t.meta, t.comment], color: \"#444b6a\" },\n    { tag: t.strong, fontWeight: \"bold\" },\n    { tag: t.emphasis, fontStyle: \"italic\" },\n    { tag: t.link, textDecoration: \"underline\" },\n    { tag: t.heading, fontWeight: \"bold\", color: \"#89ddff\" },\n    { tag: [t.atom, t.bool, t.special(t.variableName)], color: \"#c0caf5\" },\n    { tag: t.invalid, color: \"#ff5370\" },\n    { tag: t.strikethrough, textDecoration: \"line-through\" },\n  ],\n});\n"
  },
  {
    "path": "packages/web/src/lib/utils.ts",
    "content": "import { type Session } from \"@flok-editor/session\";\nimport { ReactCodeMirrorRef } from \"@uiw/react-codemirror\";\nimport { ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport {\n  adjectives,\n  animals,\n  colors,\n  uniqueNamesGenerator,\n} from \"unique-names-generator\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\nexport function generateRandomSessionName() {\n  const uuid = uuidv4();\n  const namePrefix = uniqueNamesGenerator({\n    dictionaries: [adjectives, colors, animals],\n    separator: \"-\",\n  });\n  return `${namePrefix}-${uuid.slice(0, 8)}`;\n}\n\nexport function generateRandomUserName() {\n  return uniqueNamesGenerator({\n    dictionaries: [colors, animals],\n    separator: \"-\",\n  });\n}\n\nexport const store = {\n  get: (key: string, defaultValue?: any): any | null => {\n    const value = localStorage.getItem(key);\n    if (value !== null) {\n      try {\n        return JSON.parse(value);\n      } catch (err) {\n        return defaultValue;\n      }\n    }\n    return defaultValue;\n  },\n  set: (key: string, value: any) => {\n    localStorage.setItem(key, JSON.stringify(value));\n  },\n};\n\nexport function mod(n: number, m: number): number {\n  return ((n % m) + m) % m;\n}\n\nexport function unicodeToBase64(text: string) {\n  const utf8Bytes = new TextEncoder().encode(text);\n  const base64String = btoa(String.fromCharCode(...utf8Bytes));\n  return base64String;\n}\n\nexport function base64ToUnicode(base64String: string) {\n  const utf8Bytes = new Uint8Array(\n    atob(base64String)\n      .split(\"\")\n      .map((char) => char.charCodeAt(0)),\n  );\n  const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n  const decodedText = decoder.decode(utf8Bytes);\n  return decodedText;\n}\n\nexport function code2hash(code: string) {\n  return encodeURIComponent(unicodeToBase64(code));\n}\n\nexport function hash2code(hash: string) {\n  return base64ToUnicode(decodeURIComponent(hash));\n}\n\nexport function sendToast(\n  variant: \"warning\" | \"destructive\",\n  title: string,\n  message: string,\n  pre?: boolean,\n) {\n  window.parent.postMessage(\n    {\n      type: \"toast\",\n      body: {\n        variant,\n        title,\n        message,\n        pre,\n      },\n    },\n    \"*\",\n  );\n}\n\nexport function updateDocumentsContext(docId: string, context: object) {\n  if (typeof window.parent.documentsContext === \"undefined\") {\n    window.parent.documentsContext = {};\n  }\n  const prevContext = window.parent.documentsContext[docId] || {};\n  window.parent.documentsContext[docId] = { ...prevContext, ...context };\n}\n\nexport function forEachDocumentContext(\n  callback: (context: any, editor: ReactCodeMirrorRef | null) => void,\n  session: Session,\n  editorRefs: React.RefObject<ReactCodeMirrorRef>[],\n) {\n  const documentsContext = window.documentsContext || {};\n  for (const docId in documentsContext) {\n    const context = documentsContext[docId];\n    const index = getDocumentIndex(docId, session);\n    const editor = editorRefs[index]?.current;\n    callback(context, editor);\n  }\n}\n\nexport const getDocumentIndex = (docId: string, session: Session | null) =>\n  session?.getDocuments().findIndex((d) => d.id === docId) ?? -1;\n"
  },
  {
    "path": "packages/web/src/lib/webgl-detector.ts",
    "content": "export function isWebglSupported() {\n  try {\n    const canvas = document.createElement(\"canvas\");\n    return (\n      !!window.WebGLRenderingContext &&\n      !!(canvas.getContext(\"webgl\") || canvas.getContext(\"experimental-webgl\"))\n    );\n  } catch (e) {\n    return false;\n  }\n}\n"
  },
  {
    "path": "packages/web/src/lib/y-codemirror.d.ts",
    "content": "declare module \"y-codemirror.next\";\n"
  },
  {
    "path": "packages/web/src/main.tsx",
    "content": "import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { HelmetProvider } from \"react-helmet-async\";\nimport { createBrowserRouter, RouterProvider } from \"react-router-dom\";\nimport ErrorPage from \"./error-page\";\nimport \"./index.css\";\nimport { loader as rootLoader } from \"./routes/root\";\nimport { webTargets } from \"@/settings.json\";\n\nconst router = createBrowserRouter([\n  {\n    path: \"/\",\n    errorElement: <ErrorPage />,\n    loader: rootLoader,\n  },\n  {\n    path: \"s/:name\",\n    lazy: () => import(\"./routes/session\"),\n  },\n  ...webTargets.map((target) => ({\n    path: `frames/${target}`,\n    lazy: () => import(`./routes/frames/${target}.tsx`),\n  })),\n]);\n\nReactDOM.createRoot(document.getElementById(\"root\") as HTMLElement).render(\n  <React.StrictMode>\n    <HelmetProvider>\n      <RouterProvider router={router} />\n    </HelmetProvider>\n  </React.StrictMode>,\n);\n"
  },
  {
    "path": "packages/web/src/routes/frames/hydra.tsx",
    "content": "import HydraCanvas from \"@/components/hydra-canvas\";\nimport { useAnimationFrame } from \"@/hooks/use-animation-frame\";\nimport { useEvalHandler } from \"@/hooks/use-eval-handler\";\nimport { useSettings } from \"@/hooks/use-settings\";\nimport { HydraWrapper } from \"@/lib/hydra-wrapper\";\nimport { sendToast } from \"@/lib/utils\";\nimport { isWebglSupported } from \"@/lib/webgl-detector\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { defaultDisplaySettings } from \"@/lib/display-settings\";\n\ndeclare global {\n  interface Window {\n    m: number; // meter value from Mercury\n  }\n}\n\nexport function Component() {\n  const canvasRef = useRef<HTMLCanvasElement | null>(null);\n  const hasWebGl = useMemo(() => isWebglSupported(), []);\n  const [instance, setInstance] = useState<HydraWrapper | null>(null);\n  const [displaySettings, setDisplaySettings] = useState(\n    defaultDisplaySettings,\n  );\n\n  useEffect(() => {\n    if (hasWebGl) return;\n    sendToast(\n      \"warning\",\n      \"WebGL not available\",\n      \"WebGL is disabled or not supported, so Hydra was not initialized\",\n    );\n  }, [hasWebGl]);\n\n  useEffect(() => {\n    if (!hasWebGl) return;\n    const canvas = canvasRef.current;\n    if (!canvas) return;\n\n    (async () => {\n      const hydra = new HydraWrapper({\n        canvas,\n        onError: (err) => {\n          sendToast(\"destructive\", \"Hydra error\", err.toString());\n        },\n        onWarning: (msg) => {\n          sendToast(\"warning\", \"Hydra warning\", msg);\n        },\n        displaySettings: displaySettings,\n      });\n\n      await hydra.initialize();\n      setInstance(hydra);\n\n      window.parent.hydra = window;\n    })();\n  }, []);\n\n  // Update global value `m` for Mercury RMS meter (see src/routes/frames/mercury-web.tsx)\n  useAnimationFrame(\n    useCallback(() => {\n      window.m = window.parent?.mercury?.m;\n      window.strudel = window.parent?.strudel?.strudel;\n    }, []),\n  );\n\n  useEffect(() => {\n    instance?.setDisplaySettings(displaySettings);\n  }, [displaySettings]);\n\n  useEvalHandler(\n    useCallback(\n      (msg) => {\n        if (!instance) return;\n        instance.tryEval(msg.body);\n      },\n      [instance],\n    ),\n  );\n\n  useSettings(\n    useCallback(\n      (msg) => {\n        if (!instance) return;\n        if (msg.displaySettings) {\n          setDisplaySettings(msg.displaySettings);\n        }\n      },\n      [instance],\n    ),\n  );\n\n  return (\n    hasWebGl &&\n    canvasRef && (\n      <HydraCanvas\n        ref={canvasRef}\n        fullscreen\n        displaySettings={displaySettings}\n      />\n    )\n  );\n}\n"
  },
  {
    "path": "packages/web/src/routes/frames/mercury-web.tsx",
    "content": "import { useEvalHandler } from \"@/hooks/use-eval-handler\";\nimport { MercuryWrapper } from \"@/lib/mercury-wrapper\";\nimport { sendToast } from \"@/lib/utils\";\nimport { type EvalMessage } from \"@flok-editor/session\";\nimport { useCallback, useEffect, useState } from \"react\";\n\ndeclare global {\n  interface Window {\n    m: number; // meter value\n  }\n}\n\nexport function Component() {\n  const [instance, setInstance] = useState<any>(null);\n\n  useEffect(() => {\n    (async () => {\n      const instance = new MercuryWrapper({\n        onError: (err) => {\n          sendToast(\"destructive\", \"Mercury error\", err.toString());\n        },\n        onWarning: (msg) => {\n          sendToast(\"warning\", \"Mercury warning\", msg);\n        },\n      });\n\n      setInstance(instance);\n\n      window.parent.mercury = window;\n    })();\n  }, []);\n\n  useEvalHandler(\n    useCallback(\n      (msg: EvalMessage) => {\n        if (!instance) return;\n        instance.tryEval(msg.body);\n      },\n      [instance],\n    ),\n  );\n\n  useEffect(() => {\n    // update the value every 16ms for 60fps\n    const meter = setInterval(() => {\n      if (!instance) return;\n      window.m = instance.getMeter();\n    }, 16);\n\n    return () => clearInterval(meter);\n  });\n\n  return null;\n}\n"
  },
  {
    "path": "packages/web/src/routes/frames/punctual.tsx",
    "content": "import { useEvalHandler } from \"@/hooks/use-eval-handler\";\nimport { useSettings } from \"@/hooks/use-settings\";\nimport { sendToast } from \"@/lib/utils\";\nimport { isWebglSupported } from \"@/lib/webgl-detector\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { defaultDisplaySettings } from \"@/lib/display-settings\";\nimport { PunctualWrapper } from \"@/lib/punctual-wrapper\";\nimport PunctualCanvas from \"@/components/punctual-canvas\";\n\ndeclare global {\n  interface Window {\n    m: number; // meter value from Mercury\n  }\n}\n\nexport function Component() {\n  const canvasRef = useRef<HTMLCanvasElement | null>(null);\n  const hasWebGl = useMemo(() => isWebglSupported(), []);\n  const [instance, setInstance] = useState<PunctualWrapper | null>(null);\n  const [displaySettings, setDisplaySettings] = useState(\n    defaultDisplaySettings,\n  );\n\n  useEffect(() => {\n    if (hasWebGl) return;\n    sendToast(\n      \"warning\",\n      \"WebGL not available\",\n      \"WebGL is disabled or not supported, so Hydra was not initialized\",\n    );\n  }, [hasWebGl]);\n\n  useEffect(() => {\n    if (!hasWebGl) return;\n    const canvas = canvasRef.current;\n    if (!canvas) return;\n\n    (async () => {\n      const punctual = new PunctualWrapper({\n        canvas,\n        onError: (err) => {\n          sendToast(\"destructive\", \"Punctual error\", err.toString());\n        },\n        onWarning: (msg) => {\n          sendToast(\"warning\", \"Punctual warning\", msg);\n        },\n        displaySettings: displaySettings,\n      });\n\n      await punctual.initialize();\n      setInstance(punctual);\n\n      window.parent.punctual = window;\n    })();\n\n    return () => {\n      instance?.dispose();\n    };\n  }, []);\n\n  useEffect(() => {\n    instance?.setDisplaySettings(displaySettings);\n  }, [displaySettings]);\n\n  useEvalHandler(\n    useCallback(\n      (msg) => {\n        if (!instance) return;\n        instance.tryEval(msg.body);\n      },\n      [instance],\n    ),\n  );\n\n  useSettings(\n    useCallback(\n      (msg) => {\n        if (!instance) return;\n        if (msg.displaySettings) {\n          setDisplaySettings(msg.displaySettings);\n        }\n      },\n      [instance],\n    ),\n  );\n\n  return (\n    hasWebGl &&\n    canvasRef && (\n      <PunctualCanvas\n        ref={canvasRef}\n        fullscreen\n        displaySettings={displaySettings}\n      />\n    )\n  );\n}\n"
  },
  {
    "path": "packages/web/src/routes/frames/strudel.tsx",
    "content": "import { useEvalHandler } from \"@/hooks/use-eval-handler\";\nimport { StrudelWrapper } from \"@/lib/strudel-wrapper\";\nimport { sendToast } from \"@/lib/utils\";\nimport { type EvalMessage } from \"@flok-editor/session\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport function Component() {\n  const [instance, setInstance] = useState<any>(null);\n\n  useEffect(() => {\n    (async () => {\n      const instance = new StrudelWrapper({\n        onError: (err) => {\n          sendToast(\"destructive\", \"Strudel error\", err.toString());\n        },\n        onWarning: (msg) => {\n          sendToast(\"warning\", \"Strudel warning\", msg);\n        },\n      });\n\n      await instance.importModules();\n      setInstance(instance);\n\n      window.parent.strudel = window;\n    })();\n  }, []);\n\n  useEffect(() => {\n    if (!instance) return;\n\n    const handleWindowMessage = async (event: MessageEvent) => {\n      if (event.data.type === \"user-interaction\") {\n        await instance.initAudio();\n      }\n    };\n\n    window.strudel = instance;\n\n    window.addEventListener(\"message\", handleWindowMessage);\n\n    return () => {\n      window.removeEventListener(\"message\", handleWindowMessage);\n    };\n  }, [instance]);\n\n  useEvalHandler(\n    useCallback(\n      (msg: EvalMessage) => {\n        if (!instance) return;\n        instance.tryEval(msg);\n      },\n      [instance],\n    ),\n  );\n\n  return null;\n}\n"
  },
  {
    "path": "packages/web/src/routes/root.tsx",
    "content": "import { redirect } from \"react-router-dom\";\nimport { generateRandomSessionName } from \"@/lib/utils\";\n\nexport async function loader() {\n  const sessionName = generateRandomSessionName();\n  const queryParams = window.location.search;\n  const hashParams = window.location.hash;\n\n  return redirect(`/s/${sessionName}${queryParams}${hashParams}`);\n}\n"
  },
  {
    "path": "packages/web/src/routes/session.tsx",
    "content": "import { CommandsButton } from \"@/components/commands-button\";\nimport { ConfigureDialog } from \"@/components/configure-dialog\";\nimport DisplaySettingsDialog from \"@/components/display-settings-dialog\";\nimport { Editor, EditorSettings } from \"@/components/editor\";\nimport { MessagesPanel } from \"@/components/messages-panel\";\nimport { Mosaic } from \"@/components/mosaic\";\nimport { Pane } from \"@/components/pane\";\nimport { ReplsButton } from \"@/components/repls-button\";\nimport { ReplsDialog } from \"@/components/repls-dialog\";\nimport SessionCommandDialog from \"@/components/session-command-dialog\";\nimport { ShareUrlDialog } from \"@/components/share-url-dialog\";\nimport { PubSubState, StatusBar, SyncState } from \"@/components/status-bar\";\nimport { Toaster } from \"@/components/ui/toaster\";\nimport UsernameDialog from \"@/components/username-dialog\";\nimport { WebTargetIframe } from \"@/components/web-target-iframe\";\nimport { WelcomeDialog } from \"@/components/welcome-dialog\";\nimport { useHash } from \"@/hooks/use-hash\";\nimport { useQuery } from \"@/hooks/use-query\";\nimport { useShortcut } from \"@/hooks/use-shortcut\";\nimport { useStrudelCodemirrorExtensions } from \"@/hooks/use-strudel-codemirror-extensions\";\nimport { useToast } from \"@/hooks/use-toast\";\nimport {\n  DisplaySettings,\n  defaultDisplaySettings,\n} from \"@/lib/display-settings\";\nimport {\n  cn,\n  code2hash,\n  generateRandomUserName,\n  hash2code,\n  mod,\n  store,\n} from \"@/lib/utils\";\nimport {\n  defaultTarget,\n  knownTargets,\n  panicCodes as panicCodesUntyped,\n  webTargets,\n} from \"@/settings.json\";\nimport { Session, type Document } from \"@flok-editor/session\";\nimport { type ReactCodeMirrorRef } from \"@uiw/react-codemirror\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Helmet } from \"react-helmet-async\";\nimport {\n  LoaderFunctionArgs,\n  useLoaderData,\n  useNavigate,\n} from \"react-router-dom\";\n\ndeclare global {\n  interface Window {\n    documentsContext: { [docId: string]: any };\n    hydra: any;\n    mercury: any;\n    strudel: any;\n    punctual: any;\n  }\n}\n\nconst panicCodes = panicCodesUntyped as { [target: string]: string };\n\nconst defaultEditorSettings: EditorSettings = {\n  lineNumbers: false,\n  vimMode: false,\n  fontFamily: \"Inconsolata\",\n  theme: \"oneDark\",\n  wrapText: false,\n};\n\ninterface SessionLoaderParams {\n  name: string;\n}\n\nexport interface Message {\n  target: string;\n  tags: string[];\n  type: \"stdout\" | \"stderr\";\n  body: string[];\n}\n\nexport async function loader({ params }: LoaderFunctionArgs) {\n  return { name: params.name };\n}\n\nexport function Component() {\n  const query = useQuery();\n  const [hash, setHash] = useHash();\n\n  const { name } = useLoaderData() as SessionLoaderParams;\n  const navigate = useNavigate();\n\n  const [session, setSession] = useState<Session | null>(null);\n  const [pubSubState, setPubSubState] = useState<PubSubState>(\"disconnected\");\n  const [syncState, setSyncState] = useState<SyncState>(\"syncing\");\n  const [commandsDialogOpen, setCommandsDialogOpen] = useState<boolean>(false);\n  const [replsDialogOpen, setReplsDialogOpen] = useState<boolean>(false);\n  const [username, setUsername] = useState<string>(\"\");\n  const [usernameDialogOpen, setUsernameDialogOpen] = useState(false);\n  const [welcomeDialogOpen, setWelcomeDialogOpen] = useState(false);\n  const [shareUrlDialogOpen, setShareUrlDialogOpen] = useState(false);\n  const [configureDialogOpen, setConfigureDialogOpen] = useState(false);\n  const [displaySettingsDialogOpen, setDisplaySettingsDialogOpen] =\n    useState(false);\n  const [documents, setDocuments] = useState<Document[]>([]);\n  const [hidden, setHidden] = useState<boolean>(false);\n\n  // Editor settings: Try to restore from local storage or use default settings\n  const [editorSettings, setEditorSettings] = useState<EditorSettings>(() => {\n    const savedSettings = localStorage.getItem(\"editor-settings\");\n    if (savedSettings) {\n      try {\n        return JSON.parse(savedSettings);\n      } catch (error) {\n        console.error(\"Error parsing saved editor settings:\", error);\n      }\n    }\n    return defaultEditorSettings;\n  });\n\n  // Display settings: Try to restore from local storage or use default settings\n  const [displaySettings, setDisplaySettings] = useState<DisplaySettings>(\n    () => {\n      const savedSettings = localStorage.getItem(\"display-settings\");\n      if (savedSettings) {\n        try {\n          return JSON.parse(savedSettings);\n        } catch (error) {\n          console.error(\"Error parsing saved display settings:\", error);\n        }\n      }\n      return defaultDisplaySettings;\n    },\n  );\n\n  // Save editor settings to local storage\n  useEffect(() => {\n    localStorage.setItem(\"editor-settings\", JSON.stringify(editorSettings));\n  }, [editorSettings]);\n\n  // Save display settings to local storage\n  useEffect(() => {\n    localStorage.setItem(\"display-settings\", JSON.stringify(displaySettings));\n  }, [displaySettings]);\n\n  const [messagesPanelExpanded, setMessagesPanelExpanded] =\n    useState<boolean>(false);\n  const [messagesCount, setMessagesCount] = useState<number>(0);\n  const [messages, setMessages] = useState<Message[]>([]);\n  const [autoShowMessages, setAutoShowMessages] = useState<boolean>(\n    store.get(\"messages:autoshow\", true),\n  );\n  const [hideMessagesOnEval, setHideMessagesOnEval] = useState<boolean>(\n    store.get(\"messages:hide-on-eval\", true),\n  );\n  const [sessionUrl, setSessionUrl] = useState<string>(\"\");\n\n  const editorRefs = Array.from({ length: 8 }).map(() =>\n    useRef<ReactCodeMirrorRef>(null),\n  );\n\n  useStrudelCodemirrorExtensions(session, editorRefs);\n\n  const { toast: _toast } = useToast();\n  const hideErrors = !!query.get(\"hideErrors\");\n\n  // Only call toast if query parameter \"hideErrors\" is not present\n  const toast = useCallback(\n    (options: Parameters<typeof _toast>[0]) => {\n      if (hideErrors) return;\n      _toast(options);\n    },\n    [_toast, hideErrors],\n  );\n\n  const postMessageParentWindow = (message: any) => {\n    window.parent.postMessage(message, \"*\");\n  };\n\n  const firstTime = useMemo(() => store.get(\"firstTime\", true), []);\n\n  useEffect(() => {\n    if (!firstTime) return;\n    setWelcomeDialogOpen(true);\n    store.set(\"firstTime\", false);\n  }, [firstTime]);\n\n  useEffect(() => {\n    if (!name) return;\n\n    const { hostname, port, protocol } = window.location;\n    const isSecure = protocol === \"https:\";\n    const newSession = new Session(name, {\n      hostname,\n      port: parseInt(port),\n      isSecure,\n    });\n\n    // Default documents\n    newSession.on(\"sync\", (protocol: string) => {\n      setSyncState(newSession.wsConnected ? \"synced\" : \"partiallySynced\");\n\n      console.log(\"Synced first with protocol:\", protocol);\n\n      // If session is empty, set targets from hash parameter if present.\n      // Otherwise, use default target.\n      if (newSession.getDocuments().length === 0) {\n        console.log(\n          \"Session is empty, setting targets and code from hash params\",\n        );\n        // If `targets` hash param is present and has valid targets, set them as\n        // active documents.\n        const targets = hash[\"targets\"]?.split(\",\") || [];\n        const validTargets = targets.filter((t) => knownTargets.includes(t));\n        console.log(\"Valid targets from hash:\", validTargets);\n        if (validTargets.length > 0) {\n          setActiveDocuments(newSession, validTargets);\n        } else {\n          setActiveDocuments(newSession, [defaultTarget]);\n        }\n\n        // For each valid target, set the corresponding document content from\n        // hash (if present). `code` is an alias of `c0`.\n        const documents = newSession.getDocuments();\n        validTargets.forEach((_, i) => {\n          let content = hash[`c${i}`];\n          if (i == 0) content = content || hash[\"code\"];\n          if (content) {\n            try {\n              const code = hash2code(content);\n              console.log(`Setting code for target ${i}:`, code);\n              documents[i].content = code;\n            } catch (err) {\n              console.error(`Error parsing code ${i}`, err);\n            }\n          }\n        });\n\n        // Clear hash parameters\n        setHash({});\n      }\n    });\n\n    newSession.on(\"ws:connect\", () => {\n      setSyncState(newSession.synced ? \"synced\" : \"partiallySynced\");\n    });\n\n    newSession.on(\"ws:disconnect\", () => {\n      setSyncState(newSession.synced ? \"partiallySynced\" : \"syncing\");\n    });\n\n    // If documents change on server, update state\n    newSession.on(\"change\", (documents) => {\n      setDocuments(documents);\n\n      postMessageParentWindow({\n        event: \"change\",\n        documents: documents.map((doc: Document) => ({\n          id: doc.id,\n          target: doc.target,\n          content: doc.content,\n        })),\n      });\n    });\n\n    newSession.on(\"pubsub:start\", () => {\n      setPubSubState(\"connecting\");\n    });\n\n    newSession.on(\"pubsub:stop\", () => {\n      setPubSubState(\"disconnected\");\n    });\n\n    let connected = true;\n    newSession.on(\"pubsub:open\", () => {\n      setPubSubState(\"connected\");\n      if (connected) return;\n      connected = true;\n      toast({\n        title: \"Connected to server\",\n        duration: 1000,\n      });\n    });\n\n    newSession.on(\"pubsub:close\", () => {\n      setPubSubState(\"connecting\");\n      if (!connected) return;\n      connected = false;\n      toast({\n        variant: \"destructive\",\n        title: \"Disconnected from server\",\n        description: \"Remote evaluations will be ignored until reconnected.\",\n      });\n    });\n\n    newSession.on(\"message\", ({ message }) => {\n      setMessages((messages) => [...messages, message as Message]);\n      setMessagesCount((count) => count + 1);\n\n      postMessageParentWindow({\n        event: \"message\",\n        message,\n      });\n    });\n\n    newSession.on(\"message\", ({ message }) => {\n      const { target, type, body } = message;\n      const content = body.join(\"\\n\").trim();\n      if (content) {\n        console.log(\n          `%c${target}` + `%c ${content}`,\n          \"font-weight: bold\",\n          type === \"stderr\" ? \"color: #ff5f6b\" : \"\",\n        );\n      }\n    });\n\n    newSession.on(\"eval\", ({ docId, body, user }) => {\n      postMessageParentWindow({\n        event: \"eval\",\n        id: docId,\n        content: body,\n        user,\n      });\n    });\n\n    newSession.initialize();\n    setSession(newSession);\n\n    // Load and set saved username, if available\n    // If read only is enabled, use a random username\n    const readOnly = !!query.get(\"readOnly\");\n    if (readOnly) {\n      setUsername(generateRandomUserName());\n    } else {\n      const savedUsername = hash[\"username\"] || store.get(\"username\");\n      if (!savedUsername) {\n        setUsername(generateRandomUserName());\n        setUsernameDialogOpen(true);\n      } else {\n        setUsername(savedUsername);\n      }\n    }\n\n    return () => newSession.destroy();\n  }, [name]);\n\n  useEffect(() => {\n    if (!session) return;\n    console.log(`Setting user on session to '${username}'`);\n    session.user = username;\n    // Store username in local storage only if it's not random (read only mode)\n    if (!query.get(\"readOnly\")) {\n      store.set(\"username\", username);\n    }\n  }, [session, username]);\n\n  // Reset messages count when panel is expanded (mark all messages as read)\n  useEffect(() => setMessagesCount(0), [messagesPanelExpanded]);\n\n  // Show messages panel if autoShowMessages is enabled and there are messages\n  useEffect(() => {\n    if (autoShowMessages && messages.length > 0) setMessagesPanelExpanded(true);\n  }, [messages]);\n\n  // Hide messages panel after evaluation if hideMessagesOnEval is enabled\n  useEffect(() => {\n    if (!session || !hideMessagesOnEval) return;\n\n    const evalHandler = () => {\n      setMessagesPanelExpanded(false);\n    };\n\n    session.on(\"eval\", evalHandler);\n    return () => session.off(\"eval\", evalHandler);\n  }, [session, hideMessagesOnEval]);\n\n  useEffect(() => {\n    if (!shareUrlDialogOpen) return;\n    if (!session) return;\n\n    // Update sessionURL based on current session layout and documents\n    // We need: session documents, and documents contents\n    const documents = session.getDocuments();\n    const targets = documents.map((doc) => doc.target);\n    const contents = documents.map((doc) => doc.content);\n\n    const hash = {\n      targets: targets.join(\",\"),\n      ...contents.reduce((acc: { [key: string]: string }, content, i) => {\n        acc[`c${i}`] = code2hash(content);\n        return acc;\n      }, {}),\n    };\n\n    const hashString = new URLSearchParams(hash).toString();\n    const currentURL = window.location.href;\n\n    setSessionUrl(`${currentURL}#${hashString}`);\n  }, [session, shareUrlDialogOpen]);\n\n  // Handle window messages from iframes\n  useEffect(() => {\n    const messageHandler = (event: MessageEvent) => {\n      if (event.data.type === \"toast\") {\n        const { variant, title, message, pre } = event.data.body;\n        const description = pre ? (\n          <pre className=\"whitespace-pre-wrap\">{message}</pre>\n        ) : (\n          message\n        );\n        toast({ variant, title, description });\n      }\n    };\n\n    window.addEventListener(\"message\", messageHandler);\n\n    return () => {\n      window.removeEventListener(\"message\", messageHandler);\n    };\n  }, []);\n\n  const focusEditor = (i: number) => {\n    const ref = editorRefs[i].current;\n    if (!ref) return;\n    const { view } = ref;\n    view?.focus();\n  };\n\n  const getFocusedEditorIndex = (): number => {\n    const i = editorRefs.findIndex(\n      (ref) => ref.current && ref.current.view?.hasFocus,\n    );\n    return i;\n  };\n\n  // Global shortcuts\n  useShortcut([\"Control-J\", \"Meta-J\"], () =>\n    setCommandsDialogOpen((open) => !open),\n  );\n  useShortcut([\"Control-P\", \"Meta-P\"], () =>\n    setConfigureDialogOpen((open) => !open),\n  );\n  useShortcut(\n    [\"Control-Shift-.\", \"Meta-Shift-.\"],\n    () => {\n      documents.forEach((doc) => {\n        const panicCode = panicCodes[doc.target];\n        if (panicCode) doc.evaluate(panicCode, { from: null, to: null });\n      });\n      toast({ title: \"Panic!\", duration: 1000 });\n    },\n    [documents],\n  );\n  Array.from({ length: 8 }).map((_, i) => {\n    useShortcut([`Control-${i}`], () => focusEditor(i - 1), [...editorRefs]);\n  });\n  useShortcut(\n    [\"Control-[\"],\n    () => {\n      const curIndex = getFocusedEditorIndex();\n      if (curIndex < 0) return;\n      const newIndex = mod(curIndex - 1, documents.length);\n      focusEditor(newIndex);\n    },\n    [documents, ...editorRefs],\n  );\n  useShortcut(\n    [\"Control-]\"],\n    () => {\n      const curIndex = getFocusedEditorIndex();\n      if (curIndex < 0) return;\n      const newIndex = mod(curIndex + 1, documents.length);\n      focusEditor(newIndex);\n    },\n    [documents, ...editorRefs],\n  );\n  useShortcut(\n    [\"Meta-Shift-H\", \"Control-Shift-H\", \"Meta-Alt-H\", \"Control-Alt-H\"],\n    () => {\n      setHidden((p) => !p);\n    },\n  );\n  useShortcut([\"Control-,\", \"Meta-,\"], () => {\n    setMessagesPanelExpanded((v) => !v);\n  });\n\n  const replTargets = useMemo(\n    () =>\n      [...new Set(documents.map((doc) => doc.target))].filter(\n        (t) => !webTargets.includes(t),\n      ),\n    [documents],\n  );\n\n  const targetsList = useMemo(\n    () => documents.map((doc) => doc.target),\n    [documents],\n  );\n\n  const OS = navigator.userAgent.indexOf(\"Windows\") != -1 ? \"windows\" : \"unix\";\n\n  const handleViewLayoutAdd = useCallback(() => {\n    if (!session) return;\n    const newDocs = [\n      ...documents.map((doc) => ({ id: doc.id, target: doc.target })),\n      { id: String(documents.length + 1), target: defaultTarget },\n    ];\n    session.setActiveDocuments(newDocs);\n  }, [session, documents]);\n\n  const handleViewLayoutRemove = useCallback(() => {\n    if (!session) return;\n    session.setActiveDocuments([\n      ...documents\n        .map((doc) => ({ id: doc.id, target: doc.target }))\n        .slice(0, -1),\n    ]);\n  }, [session, documents]);\n\n  const handleTargetSelectChange = (document: Document, newTarget: string) => {\n    document.target = newTarget;\n  };\n\n  const handleEvaluateButtonClick = (document: Document) => {\n    document.evaluate(document.content, { from: null, to: null });\n  };\n\n  const handleConfigureAccept = (targets: string[]) => {\n    if (!session) return;\n    setActiveDocuments(session, targets);\n  };\n\n  const setActiveDocuments = (session: Session, targets: string[]) => {\n    session.setActiveDocuments(\n      targets\n        .filter((t) => t)\n        .map((target, i) => ({ id: String(i + 1), target })),\n    );\n  };\n\n  const handleAutoShowToggleClick = useCallback((pressed: boolean) => {\n    store.set(\"messages:autoshow\", pressed);\n    setAutoShowMessages(pressed);\n  }, []);\n\n  const handleHideMessagesOnEvalClick = useCallback((pressed: boolean) => {\n    store.set(\"messages:hide-on-eval\", pressed);\n    setHideMessagesOnEval(pressed);\n  }, []);\n\n  const handleClearMessagesClick = useCallback(() => {\n    setMessages([]);\n    setMessagesPanelExpanded(false);\n  }, []);\n\n  const bgOpacity = query.get(\"bgOpacity\") || \"1.0\";\n\n  const activeWebTargets = useMemo(\n    () =>\n      webTargets.filter((target) =>\n        documents.some((doc) => doc.target === target),\n      ),\n    [documents],\n  );\n\n  return (\n    <div style={{ backgroundColor: `rgb(0 0 0 / ${bgOpacity})` }}>\n      <Helmet>\n        <title>{name} ~ Flok</title>\n      </Helmet>\n      <SessionCommandDialog\n        open={commandsDialogOpen}\n        editorSettings={editorSettings}\n        displaySettings={displaySettings}\n        onOpenChange={(isOpen) => setCommandsDialogOpen(isOpen)}\n        onSessionChangeUsername={() => setUsernameDialogOpen(true)}\n        onEditorSettingsChange={(settings: EditorSettings) =>\n          setEditorSettings(settings)\n        }\n        onDisplaySettingsChange={setDisplaySettings}\n        onSessionNew={() => navigate(\"/\")}\n        onSessionShareUrl={() => setShareUrlDialogOpen(true)}\n        onLayoutAdd={handleViewLayoutAdd}\n        onLayoutRemove={handleViewLayoutRemove}\n        onLayoutConfigure={() => setConfigureDialogOpen(true)}\n        onEditorChangeDisplaySettings={() => setDisplaySettingsDialogOpen(true)}\n      />\n      <UsernameDialog\n        name={username}\n        open={usernameDialogOpen}\n        onAccept={(name) => setUsername(name)}\n        onOpenChange={(isOpen) => setUsernameDialogOpen(isOpen)}\n      />\n      <WelcomeDialog\n        open={welcomeDialogOpen}\n        onOpenChange={(isOpen) => setWelcomeDialogOpen(isOpen)}\n      />\n      <ShareUrlDialog\n        url={sessionUrl}\n        open={shareUrlDialogOpen}\n        onOpenChange={(isOpen) => setShareUrlDialogOpen(isOpen)}\n      />\n      {session && (\n        <ConfigureDialog\n          targets={targetsList}\n          sessionUrl={session.wsUrl}\n          sessionName={session.name}\n          userName={username}\n          OS={OS}\n          open={configureDialogOpen}\n          onOpenChange={(isOpen) => setConfigureDialogOpen(isOpen)}\n          onAccept={handleConfigureAccept}\n        />\n      )}\n      <DisplaySettingsDialog\n        settings={displaySettings}\n        onAccept={(settings) => setDisplaySettings(settings)}\n        open={displaySettingsDialogOpen}\n        onOpenChange={(isOpen) => setDisplaySettingsDialogOpen(isOpen)}\n      />\n      {session && replTargets.length > 0 && (\n        <ReplsDialog\n          targets={replTargets}\n          sessionUrl={session.wsUrl}\n          sessionName={session.name}\n          userName={username}\n          OS={OS}\n          open={replsDialogOpen}\n          onOpenChange={(isOpen) => setReplsDialogOpen(isOpen)}\n        />\n      )}\n      <Mosaic\n        className={cn(\n          \"transition-opacity\",\n          hidden ? \"opacity-0\" : \"opacity-100\",\n        )}\n        items={documents.map((doc, i) => (\n          <Pane\n            key={doc.id}\n            document={doc}\n            onTargetChange={handleTargetSelectChange}\n            onEvaluateButtonClick={handleEvaluateButtonClick}\n          >\n            <Editor\n              ref={editorRefs[i]}\n              document={doc}\n              autoFocus={i === 0}\n              settings={editorSettings}\n              className=\"absolute top-6 overflow-auto flex-grow w-full h-[calc(100%-32px)] z-10\"\n            />\n          </Pane>\n        ))}\n      />\n      {activeWebTargets.map((target) => (\n        <WebTargetIframe\n          key={target}\n          session={session}\n          target={target}\n          displaySettings={displaySettings}\n        />\n      ))}\n      <div\n        className={cn(\n          \"fixed top-1 right-1 flex m-1\",\n          \"transition-opacity\",\n          hidden ? \"opacity-0\" : \"opacity-100\",\n        )}\n      >\n        {replTargets.length > 0 && (\n          <ReplsButton onClick={() => setReplsDialogOpen(true)} />\n        )}\n        <CommandsButton onClick={() => setCommandsDialogOpen(true)} />\n      </div>\n      {messagesPanelExpanded && (\n        <MessagesPanel\n          className={cn(\n            \"transition-opacity\",\n            hidden ? \"opacity-0\" : \"opacity-100\",\n          )}\n          messages={messages}\n          autoShowMessages={autoShowMessages}\n          hideMessagesOnEval={hideMessagesOnEval}\n          onAutoShowToggleClick={handleAutoShowToggleClick}\n          onHideMessagesOnEvalClick={handleHideMessagesOnEvalClick}\n          onClearMessagesClick={handleClearMessagesClick}\n        />\n      )}\n      <StatusBar\n        className={cn(\n          \"transition-opacity\",\n          hidden ? \"opacity-0\" : \"opacity-100\",\n        )}\n        pubSubState={pubSubState}\n        syncState={syncState}\n        messagesCount={messagesPanelExpanded ? 0 : messagesCount}\n        onExpandClick={() => {\n          setMessagesPanelExpanded((v) => !v);\n        }}\n      />\n      <Toaster />\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/web/src/settings.json",
    "content": "{\n  \"knownTargets\": [\n    \"foxdot\",\n    \"hydra\",\n    \"mercury-web\",\n    \"mercury\",\n    \"punctual\",\n    \"renardo\",\n    \"sardine\",\n    \"sclang\",\n    \"strudel\",\n    \"tidal\",\n    \"dummy\"\n  ],\n  \"defaultTarget\": \"hydra\",\n  \"langByTarget\": {\n    \"foxdot\": \"python\",\n    \"hydra\": \"javascript\",\n    \"mercury-web\": \"javascript\",\n    \"mercury\": \"javascript\",\n    \"punctual\": \"punctual\",\n    \"renardo\": \"python\",\n    \"sardine\": \"python\",\n    \"sclang\": \"javascript\",\n    \"strudel\": \"javascript\",\n    \"tidal\": \"tidal\",\n    \"dummy\": \"none\"\n  },\n  \"targetsWithDocumentEvalMode\": [\n    \"mercury-web\",\n    \"mercury\",\n    \"punctual\",\n    \"strudel\"\n  ],\n  \"panicCodes\": {\n    \"tidal\": \"hush\",\n    \"sclang\": \"CmdPeriod.run\",\n    \"remote_sclang\": \"CmdPeriod.run\",\n    \"foxdot\": \"Clock.clear()\",\n    \"renardo\": \"Clock.clear()\",\n    \"mercury\": \"silence\",\n    \"mercury-web\": \"silence\",\n    \"hydra\": \"hush()\",\n    \"strudel\": \"silence\",\n    \"sardine\": \"panic()\",\n    \"dummy\": \"silence\"\n  },\n  \"noAutoIndent\": [\"mercury\", \"mercury-web\"],\n  \"webTargets\": [\"hydra\", \"mercury-web\", \"punctual\", \"strudel\"],\n  \"repoUrl\": \"https://github.com/munshkr/flok\",\n  \"changeLogUrl\": \"https://github.com/munshkr/flok/blob/main/CHANGELOG.md#changelog\"\n}\n"
  },
  {
    "path": "packages/web/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "packages/web/tailwind.config.cjs",
    "content": "const { fontFamily } = require(\"tailwindcss/defaultTheme\");\n\n/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  darkMode: [\"class\"],\n  content: [\"./index.html\", \"./src/**/*.{js,ts,jsx,tsx}\"],\n  theme: {\n    extend: {\n      fontFamily: {\n        sans: [\"Inter\"],\n        mono: [\"Inconsolata\"],\n      },\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: 0 },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: 0 },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n};\n"
  },
  {
    "path": "packages/web/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\n    \"allowJs\": false,\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    },\n    \"types\": [\"unplugin-fonts/client\"],\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\",\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"forceConsistentCasingInFileNames\": true\n\n    // \"esModuleInterop\": false,\n    // \"allowSyntheticDefaultImports\": true,\n  },\n  \"include\": [\"src\"],\n  \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"
  },
  {
    "path": "packages/web/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"skipLibCheck\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"allowSyntheticDefaultImports\": true\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "packages/web/vite-express.js",
    "content": "import express from \"express\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport pc from \"picocolors\";\n\nlet Vite;\ntry {\n  Vite = await import(\"vite\");\n} catch (err) {}\n\nconst _State = {\n  viteConfig: undefined,\n};\n\nfunction clearState() {\n  _State.viteConfig = undefined;\n}\n\nconst Config = {\n  mode:\n    process.env.NODE_ENV === \"production\" || !Vite\n      ? \"production\"\n      : \"development\",\n  inlineViteConfig: undefined,\n  viteConfigFile: undefined,\n  ignorePaths: undefined,\n  transformer: undefined,\n};\n\nfunction info(msg) {\n  const timestamp = new Date().toLocaleString(\"en-US\").split(\",\")[1].trim();\n  console.log(\n    `${pc.dim(timestamp)} ${pc.bold(pc.cyan(\"[flok-web]\"))} ${pc.green(msg)}`,\n  );\n}\n\nfunction isStaticFilePath(path) {\n  return path.match(/(\\.\\w+$)|@vite|@id|@react-refresh/);\n}\n\nasync function getTransformedHTML(html, req) {\n  return Config.transformer ? Config.transformer(html, req) : html;\n}\n\nfunction getDefaultViteConfig() {\n  return {\n    root: process.cwd(),\n    base: \"/\",\n    build: { outDir: \"dist\" },\n  };\n}\n\nfunction getViteConfigPath() {\n  if (Config.viteConfigFile && fs.existsSync(Config.viteConfigFile))\n    return Config.viteConfigFile;\n  else if (fs.existsSync(\"vite.config.js\")) return \"vite.config.js\";\n  else if (fs.existsSync(\"vite.config.ts\")) return \"vite.config.ts\";\n  throw new Error(\"Unable to locate Vite config\");\n}\n\nasync function resolveConfig() {\n  if (Config.inlineViteConfig) {\n    info(\n      `${pc.yellow(\"Inline config\")} detected, ignoring ${pc.yellow(\n        \"Vite config file\",\n      )}`,\n    );\n\n    return {\n      ...getDefaultViteConfig(),\n      ...Config.inlineViteConfig,\n    };\n  }\n\n  try {\n    const { resolveConfig } = await import(\"vite\");\n    try {\n      const config = await resolveConfig(\n        {\n          configFile: Config.viteConfigFile,\n        },\n        \"build\",\n      );\n      info(\n        `Using ${pc.yellow(\"Vite\")} to resolve the ${pc.yellow(\"config file\")}`,\n      );\n      return config;\n    } catch (e) {\n      console.error(e);\n      info(\n        pc.red(\n          `Unable to use ${pc.yellow(\"Vite\")}, running in ${pc.yellow(\n            \"viteless\",\n          )} mode`,\n        ),\n      );\n    }\n  } catch (e) {\n    1;\n  }\n\n  try {\n    const config = fs.readFileSync(getViteConfigPath(), \"utf8\");\n\n    const root = config.match(/\"?root\"?\\s*:\\s*\"([^\"]+)\"/)?.[1];\n    const base = config.match(/\"?base\"?\\s*:\\s*\"([^\"]+)\"/)?.[1];\n    const outDir = config.match(/\"?outDir\"?\\s*:\\s*\"([^\"]+)\"/)?.[1];\n\n    const defaultConfig = getDefaultViteConfig();\n\n    return {\n      root: root ?? defaultConfig.root,\n      base: base ?? defaultConfig.base,\n      build: { outDir: outDir ?? defaultConfig.build.outDir },\n    };\n  } catch (e) {\n    info(\n      pc.red(\n        `Unable to locate ${pc.yellow(\n          \"vite.config.*s file\",\n        )}, using default options`,\n      ),\n    );\n\n    return getDefaultViteConfig();\n  }\n}\n\nasync function getViteConfig() {\n  if (!_State.viteConfig) {\n    _State.viteConfig = await resolveConfig();\n  }\n\n  return _State.viteConfig;\n}\n\nasync function getDistPath() {\n  const config = await getViteConfig();\n  return path.resolve(config.root, config.build.outDir);\n}\n\nasync function serveStatic() {\n  const distPath = await getDistPath();\n\n  if (!fs.existsSync(distPath)) {\n    info(`${pc.red(`Static files at ${pc.gray(distPath)} not found!`)}`);\n    info(\n      `${pc.yellow(\n        `Did you forget to run ${pc.bold(pc.green(\"vite build\"))} command?`,\n      )}`,\n    );\n  } else {\n    info(`${pc.green(`Serving static files from ${pc.gray(distPath)}`)}`);\n  }\n\n  return express.static(distPath, { index: false });\n}\n\nconst stubMiddleware = (req, res, next) => next();\n\nasync function injectStaticMiddleware(app, middleware) {\n  const config = await getViteConfig();\n  app.use(config.base, middleware);\n\n  const stubMiddlewareLayer = app._router.stack.find(\n    (layer) => layer.handle === stubMiddleware,\n  );\n\n  if (stubMiddlewareLayer !== undefined) {\n    const serveStaticLayer = app._router.stack.pop();\n    app._router.stack = app._router.stack.map((layer) => {\n      return layer === stubMiddlewareLayer ? serveStaticLayer : layer;\n    });\n  }\n}\n\nfunction isIgnoredPath(path, req) {\n  if (Config.ignorePaths === undefined) return false;\n\n  return Config.ignorePaths instanceof RegExp\n    ? path.match(Config.ignorePaths)\n    : Config.ignorePaths(path, req);\n}\n\nfunction findClosestIndexToRoot(reqPath, root) {\n  const basePath = reqPath.slice(0, reqPath.lastIndexOf(\"/\"));\n  const dirs = basePath.split(\"/\");\n\n  while (dirs.length > 0) {\n    const pathToTest = path.join(root, ...dirs, \"index.html\");\n    if (fs.existsSync(pathToTest)) {\n      return pathToTest;\n    }\n    dirs.pop();\n  }\n  return undefined;\n}\n\nasync function injectViteIndexMiddleware(app, server) {\n  const config = await getViteConfig();\n\n  app.use(config.base, async (req, res, next) => {\n    if (req.method !== \"GET\") return next();\n\n    if (isIgnoredPath(req.path, req)) return next();\n\n    if (isStaticFilePath(req.path)) next();\n    else {\n      const indexPath = findClosestIndexToRoot(req.path, config.root);\n      if (indexPath === undefined) return next();\n\n      const template = fs.readFileSync(indexPath, \"utf8\");\n      let html = await server.transformIndexHtml(req.originalUrl, template);\n\n      try {\n        html = await getTransformedHTML(html, req);\n        res.send(html);\n      } catch (e) {\n        console.error(e);\n        res.status(500);\n        return next();\n      }\n    }\n  });\n}\n\nasync function injectIndexMiddleware(app) {\n  const distPath = await getDistPath();\n  const config = await getViteConfig();\n\n  app.use(config.base, async (req, res, next) => {\n    if (isIgnoredPath(req.path, req)) return next();\n\n    const indexPath = findClosestIndexToRoot(req.path, distPath);\n    if (indexPath === undefined) return next();\n\n    let html = fs.readFileSync(indexPath, \"utf8\");\n\n    try {\n      html = await getTransformedHTML(html, req);\n      res.send(html);\n    } catch (e) {\n      console.error(e);\n      res.status(500);\n      return next();\n    }\n  });\n}\n\nasync function startServer(server) {\n  const { createServer, mergeConfig } = await import(\"vite\");\n\n  const config = await getViteConfig();\n  const isUsingViteResolvedConfig = Object.entries(config).length > 3;\n\n  const vite = await createServer(\n    mergeConfig(isUsingViteResolvedConfig ? {} : config, {\n      configFile: Config.viteConfigFile,\n      clearScreen: false,\n      appType: \"custom\",\n      server: {\n        middlewareMode: true,\n        hmr: { server },\n      },\n    }),\n  );\n\n  server.on(\"close\", async () => {\n    await vite.close();\n    server.emit(\"vite:close\");\n  });\n\n  return vite;\n}\n\nfunction config(config) {\n  if (config.mode !== undefined) Config.mode = config.mode;\n  Config.ignorePaths = config.ignorePaths;\n  Config.inlineViteConfig = config.inlineViteConfig;\n  Config.transformer = config.transformer;\n  Config.viteConfigFile = config.viteConfigFile;\n}\n\nasync function bind(app, server, callback) {\n  info(`Running in ${pc.yellow(Config.mode)} mode`);\n\n  clearState();\n\n  if (Vite && Config.mode === \"development\") {\n    const vite = await startServer(server);\n    await injectStaticMiddleware(app, vite.middlewares);\n    await injectViteIndexMiddleware(app, vite);\n  } else {\n    await injectStaticMiddleware(app, await serveStatic());\n    await injectIndexMiddleware(app);\n  }\n\n  callback?.();\n}\n\nexport default { config, bind };\n"
  },
  {
    "path": "packages/web/vite.config.ts",
    "content": "import react from \"@vitejs/plugin-react\";\nimport path from \"path\";\nimport Unfonts from \"unplugin-fonts/vite\";\nimport { defineConfig } from \"vite\";\nimport { nodePolyfills } from \"vite-plugin-node-polyfills\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  resolve: {\n    alias: {\n      \"@\": path.resolve(__dirname, \"./src\"),\n    },\n  },\n  plugins: [\n    nodePolyfills({\n      // Whether to polyfill `node:` protocol imports.\n      protocolImports: true,\n    }),\n    react(),\n    Unfonts({\n      google: {\n        families: [\"Inter\", \"Inconsolata\"],\n      },\n    }),\n  ],\n  build: {\n    rollupOptions: {\n      output: {\n        manualChunks: (id) => {\n          if (id.includes(\"@strudel/\")) {\n            return \"strudel\";\n          } else if (id.includes(\"mercury-engine\")) {\n            return \"mercury\";\n          } else if (id.includes(\"hydra-synth\")) {\n            return \"hydra\";\n          } else if (id.includes(\"p5\")) {\n            return \"p5\";\n          } else if (id.includes(\"node_modules\")) {\n            return \"vendor\";\n          }\n        },\n      },\n    },\n  },\n});\n"
  }
]