From 3e8e78c991dcbf4febcd4ecd603b1ca58bd5927f Mon Sep 17 00:00:00 2001 From: Antonin Delpeuch Date: Mon, 6 Oct 2025 22:53:57 +0200 Subject: [PATCH] Unvendor tree-sitter-elm (#893) Co-authored-by: Wilfred Hughes --- CHANGELOG.md | 2 +- Cargo.lock | 11 + Cargo.toml | 1 + build.rs | 5 - src/parse/tree_sitter_parser.rs | 12 +- vendored_parsers/highlights/elm.scm | 1 - vendored_parsers/tree-sitter-elm-src | 1 - .../tree-sitter-elm/.editorconfig | 17 - .../tree-sitter-elm/.gitattributes | 1 - .../tree-sitter-elm/.github/FUNDING.yml | 1 - .../tree-sitter-elm/.github/dependabot.yml | 19 - .../.github/workflows/fuzz.yml | 22 - .../.github/workflows/npm-publish.yml | 50 - .../.github/workflows/publish.yml | 18 - .../.github/workflows/test-full.yml | 39 - .../.github/workflows/test.yml | 61 - .../.github/workflows/validate-lsp.yml | 44 - vendored_parsers/tree-sitter-elm/.gitignore | 15 - vendored_parsers/tree-sitter-elm/.npmignore | 13 - .../tree-sitter-elm/.vscode/tasks.json | 42 - vendored_parsers/tree-sitter-elm/Cargo.toml | 34 - .../tree-sitter-elm/HOW_TO_RELEASE.md | 6 - vendored_parsers/tree-sitter-elm/LICENSE.md | 21 - .../tree-sitter-elm/Package.swift | 43 - vendored_parsers/tree-sitter-elm/README.md | 31 - vendored_parsers/tree-sitter-elm/binding.gyp | 19 - .../tree-sitter-elm/bindings/node/binding.cc | 28 - .../tree-sitter-elm/bindings/node/index.js | 19 - .../tree-sitter-elm/bindings/rust/build.rs | 19 - .../tree-sitter-elm/bindings/rust/lib.rs | 52 - .../bindings/swift/TreeSitterElm/elm.h | 16 - .../tree-sitter-elm/docs/.nojekyll | 0 .../tree-sitter-elm/docs/index.html | 250 - .../tree-sitter-elm/docs/js/playground.js | 461 - .../docs/js/tree-sitter-elm.wasm | Bin 189901 -> 0 bytes .../tree-sitter-elm/docs/js/tree-sitter.js | 1 - .../tree-sitter-elm/docs/js/tree-sitter.wasm | Bin 190289 -> 0 bytes vendored_parsers/tree-sitter-elm/grammar.js | 762 - vendored_parsers/tree-sitter-elm/package.json | 46 - .../tree-sitter-elm/queries/highlights.scm | 76 - .../tree-sitter-elm/queries/injections.scm | 4 - .../tree-sitter-elm/queries/locals.scm | 15 - .../tree-sitter-elm/queries/tags.scm | 19 - .../tree-sitter-elm/script/applications.json | 18 - .../script/error-packages.json | 39 - .../script/known-failures-full.txt | 2 - .../tree-sitter-elm/script/known-failures.txt | 1 - .../tree-sitter-elm/script/parse-examples | 79 - .../script/parse-examples-full | 65 - .../tree-sitter-elm/script/search.json | 9458 ---- .../tree-sitter-elm/src/grammar.json | 3129 -- .../tree-sitter-elm/src/node-types.json | 3086 -- vendored_parsers/tree-sitter-elm/src/parser.c | 45119 ---------------- .../tree-sitter-elm/src/scanner.c | 496 - .../tree-sitter-elm/src/tree_sitter/parser.h | 224 - .../test/corpus/annotations.txt | 193 - .../test/corpus/anonymous_function.txt | 102 - .../tree-sitter-elm/test/corpus/basic.txt | 1008 - .../tree-sitter-elm/test/corpus/case.txt | 1318 - .../test/corpus/case_incomplete.txt | 396 - .../tree-sitter-elm/test/corpus/comments.txt | 339 - .../tree-sitter-elm/test/corpus/complete.txt | 287 - .../tree-sitter-elm/test/corpus/cons.txt | 154 - .../test/corpus/fieldAccess.txt | 28 - .../tree-sitter-elm/test/corpus/glsl.txt | 63 - .../tree-sitter-elm/test/corpus/imports.txt | 263 - .../test/corpus/incomplete.txt | 124 - .../tree-sitter-elm/test/corpus/let.txt | 1049 - .../tree-sitter-elm/test/corpus/module.txt | 237 - .../tree-sitter-elm/test/corpus/port.txt | 37 - .../test/corpus/statements.txt | 130 - .../tree-sitter-elm/test/corpus/string.txt | 201 - .../tree-sitter-elm/test/corpus/type.txt | 143 - .../test/corpus/type_alias.txt | 63 - .../tree-sitter-elm/test/highlight/basic.elm | 50 - .../tree-sitter-elm/tsconfig.json | 9 - 76 files changed, 18 insertions(+), 70189 deletions(-) delete mode 120000 vendored_parsers/highlights/elm.scm delete mode 120000 vendored_parsers/tree-sitter-elm-src delete mode 100644 vendored_parsers/tree-sitter-elm/.editorconfig delete mode 100644 vendored_parsers/tree-sitter-elm/.gitattributes delete mode 100644 vendored_parsers/tree-sitter-elm/.github/FUNDING.yml delete mode 100644 vendored_parsers/tree-sitter-elm/.github/dependabot.yml delete mode 100644 vendored_parsers/tree-sitter-elm/.github/workflows/fuzz.yml delete mode 100644 vendored_parsers/tree-sitter-elm/.github/workflows/npm-publish.yml delete mode 100644 vendored_parsers/tree-sitter-elm/.github/workflows/publish.yml delete mode 100644 vendored_parsers/tree-sitter-elm/.github/workflows/test-full.yml delete mode 100644 vendored_parsers/tree-sitter-elm/.github/workflows/test.yml delete mode 100644 vendored_parsers/tree-sitter-elm/.github/workflows/validate-lsp.yml delete mode 100644 vendored_parsers/tree-sitter-elm/.gitignore delete mode 100644 vendored_parsers/tree-sitter-elm/.npmignore delete mode 100644 vendored_parsers/tree-sitter-elm/.vscode/tasks.json delete mode 100644 vendored_parsers/tree-sitter-elm/Cargo.toml delete mode 100644 vendored_parsers/tree-sitter-elm/HOW_TO_RELEASE.md delete mode 100644 vendored_parsers/tree-sitter-elm/LICENSE.md delete mode 100644 vendored_parsers/tree-sitter-elm/Package.swift delete mode 100644 vendored_parsers/tree-sitter-elm/README.md delete mode 100644 vendored_parsers/tree-sitter-elm/binding.gyp delete mode 100644 vendored_parsers/tree-sitter-elm/bindings/node/binding.cc delete mode 100644 vendored_parsers/tree-sitter-elm/bindings/node/index.js delete mode 100644 vendored_parsers/tree-sitter-elm/bindings/rust/build.rs delete mode 100644 vendored_parsers/tree-sitter-elm/bindings/rust/lib.rs delete mode 100644 vendored_parsers/tree-sitter-elm/bindings/swift/TreeSitterElm/elm.h delete mode 100644 vendored_parsers/tree-sitter-elm/docs/.nojekyll delete mode 100644 vendored_parsers/tree-sitter-elm/docs/index.html delete mode 100644 vendored_parsers/tree-sitter-elm/docs/js/playground.js delete mode 100755 vendored_parsers/tree-sitter-elm/docs/js/tree-sitter-elm.wasm delete mode 100644 vendored_parsers/tree-sitter-elm/docs/js/tree-sitter.js delete mode 100644 vendored_parsers/tree-sitter-elm/docs/js/tree-sitter.wasm delete mode 100644 vendored_parsers/tree-sitter-elm/grammar.js delete mode 100644 vendored_parsers/tree-sitter-elm/package.json delete mode 100644 vendored_parsers/tree-sitter-elm/queries/highlights.scm delete mode 100644 vendored_parsers/tree-sitter-elm/queries/injections.scm delete mode 100644 vendored_parsers/tree-sitter-elm/queries/locals.scm delete mode 100644 vendored_parsers/tree-sitter-elm/queries/tags.scm delete mode 100644 vendored_parsers/tree-sitter-elm/script/applications.json delete mode 100644 vendored_parsers/tree-sitter-elm/script/error-packages.json delete mode 100644 vendored_parsers/tree-sitter-elm/script/known-failures-full.txt delete mode 100644 vendored_parsers/tree-sitter-elm/script/known-failures.txt delete mode 100755 vendored_parsers/tree-sitter-elm/script/parse-examples delete mode 100755 vendored_parsers/tree-sitter-elm/script/parse-examples-full delete mode 100644 vendored_parsers/tree-sitter-elm/script/search.json delete mode 100644 vendored_parsers/tree-sitter-elm/src/grammar.json delete mode 100644 vendored_parsers/tree-sitter-elm/src/node-types.json delete mode 100644 vendored_parsers/tree-sitter-elm/src/parser.c delete mode 100644 vendored_parsers/tree-sitter-elm/src/scanner.c delete mode 100644 vendored_parsers/tree-sitter-elm/src/tree_sitter/parser.h delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/annotations.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/anonymous_function.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/basic.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/case.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/case_incomplete.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/comments.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/complete.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/cons.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/fieldAccess.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/glsl.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/imports.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/incomplete.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/let.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/module.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/port.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/statements.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/string.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/type.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/corpus/type_alias.txt delete mode 100644 vendored_parsers/tree-sitter-elm/test/highlight/basic.elm delete mode 100644 vendored_parsers/tree-sitter-elm/tsconfig.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 25047c11b..eeda54362 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ### Parsing -Added support for protocol buffer files. Updated CMake, Solidity, HCL, Dart, Devicetree and R parsers. +Added support for protocol buffer files. Updated CMake, Solidity, HCL, Dart, Elm, Devicetree and R parsers. ### Display diff --git a/Cargo.lock b/Cargo.lock index 83233e13e..4de037d96 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -284,6 +284,7 @@ dependencies = [ "tree-sitter-dart-orchard", "tree-sitter-devicetree", "tree-sitter-elixir", + "tree-sitter-elm", "tree-sitter-erlang", "tree-sitter-fsharp", "tree-sitter-go", @@ -1103,6 +1104,16 @@ dependencies = [ "tree-sitter-language", ] +[[package]] +name = "tree-sitter-elm" +version = "5.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accee95d95c001e53f5ab1a1168f1ed1c6ec763a17fb48b43acf5bf4ff9e3423" +dependencies = [ + "cc", + "tree-sitter-language", +] + [[package]] name = "tree-sitter-erlang" version = "0.13.0" diff --git a/Cargo.toml b/Cargo.toml index 4af4c28c4..a025d9248 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,6 +85,7 @@ tree-sitter-css = "0.23.1" tree-sitter-dart-orchard = "0.2.1" tree-sitter-devicetree = "0.14.1" tree-sitter-elixir = "0.3.4" +tree-sitter-elm = "5.8.0" tree-sitter-erlang = "0.13.0" tree-sitter-fsharp = "0.1.0" tree-sitter-go = "0.23.4" diff --git a/build.rs b/build.rs index 50d3d3884..a9800c2bd 100644 --- a/build.rs +++ b/build.rs @@ -87,11 +87,6 @@ fn main() { src_dir: "vendored_parsers/tree-sitter-elisp-src", extra_files: vec![], }, - TreeSitterParser { - name: "tree-sitter-elm", - src_dir: "vendored_parsers/tree-sitter-elm-src", - extra_files: vec!["scanner.c"], - }, TreeSitterParser { name: "tree-sitter-elvish", src_dir: "vendored_parsers/tree-sitter-elvish-src", diff --git a/src/parse/tree_sitter_parser.rs b/src/parse/tree_sitter_parser.rs index f000a0098..256755641 100644 --- a/src/parse/tree_sitter_parser.rs +++ b/src/parse/tree_sitter_parser.rs @@ -74,7 +74,6 @@ extern "C" { fn tree_sitter_clojure() -> ts::Language; fn tree_sitter_commonlisp() -> ts::Language; fn tree_sitter_elisp() -> ts::Language; - fn tree_sitter_elm() -> ts::Language; fn tree_sitter_elvish() -> ts::Language; fn tree_sitter_gleam() -> ts::Language; fn tree_sitter_hare() -> ts::Language; @@ -321,16 +320,15 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig { } } Elm => { - let language = unsafe { tree_sitter_elm() }; + let language_fn = tree_sitter_elm::LANGUAGE; + let language = tree_sitter::Language::new(language_fn); + TreeSitterConfig { language: language.clone(), atom_nodes: ["string_constant_expr"].into_iter().collect(), delimiter_tokens: vec![("{", "}"), ("[", "]"), ("(", ")")], - highlight_query: ts::Query::new( - &language, - include_str!("../../vendored_parsers/highlights/elm.scm"), - ) - .unwrap(), + highlight_query: ts::Query::new(&language, tree_sitter_elm::HIGHLIGHTS_QUERY) + .unwrap(), sub_languages: vec![], } } diff --git a/vendored_parsers/highlights/elm.scm b/vendored_parsers/highlights/elm.scm deleted file mode 120000 index 6a19b68cf..000000000 --- a/vendored_parsers/highlights/elm.scm +++ /dev/null @@ -1 +0,0 @@ -../tree-sitter-elm/queries/highlights.scm \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm-src b/vendored_parsers/tree-sitter-elm-src deleted file mode 120000 index b2445e8b2..000000000 --- a/vendored_parsers/tree-sitter-elm-src +++ /dev/null @@ -1 +0,0 @@ -tree-sitter-elm/src \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm/.editorconfig b/vendored_parsers/tree-sitter-elm/.editorconfig deleted file mode 100644 index d4dcbe909..000000000 --- a/vendored_parsers/tree-sitter-elm/.editorconfig +++ /dev/null @@ -1,17 +0,0 @@ -# https://editorconfig.org - -root = true - -[*] -charset = utf-8 -indent_style = space -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -[*.txt] -indent_size = 4 - -[*.md] -insert_final_newline = false -trim_trailing_whitespace = false \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm/.gitattributes b/vendored_parsers/tree-sitter-elm/.gitattributes deleted file mode 100644 index 0080b4792..000000000 --- a/vendored_parsers/tree-sitter-elm/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/src/** linguist-vendored \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm/.github/FUNDING.yml b/vendored_parsers/tree-sitter-elm/.github/FUNDING.yml deleted file mode 100644 index 018964ba4..000000000 --- a/vendored_parsers/tree-sitter-elm/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: [razzeee] diff --git a/vendored_parsers/tree-sitter-elm/.github/dependabot.yml b/vendored_parsers/tree-sitter-elm/.github/dependabot.yml deleted file mode 100644 index 53cee07a5..000000000 --- a/vendored_parsers/tree-sitter-elm/.github/dependabot.yml +++ /dev/null @@ -1,19 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - - package-ecosystem: "cargo" - directory: "/" - schedule: - interval: "daily" - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "daily" diff --git a/vendored_parsers/tree-sitter-elm/.github/workflows/fuzz.yml b/vendored_parsers/tree-sitter-elm/.github/workflows/fuzz.yml deleted file mode 100644 index d2c2efc04..000000000 --- a/vendored_parsers/tree-sitter-elm/.github/workflows/fuzz.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Fuzz Parser - -on: - push: - paths: - - src/scanner.c - pull_request: - paths: - - src/scanner.c - workflow_dispatch: - -jobs: - test: - name: Parser fuzzing - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: vigoux/tree-sitter-fuzz-action@v1 - with: - language: elm - external-scanner: src/scanner.c - time: 60 diff --git a/vendored_parsers/tree-sitter-elm/.github/workflows/npm-publish.yml b/vendored_parsers/tree-sitter-elm/.github/workflows/npm-publish.yml deleted file mode 100644 index fb97f3e87..000000000 --- a/vendored_parsers/tree-sitter-elm/.github/workflows/npm-publish.yml +++ /dev/null @@ -1,50 +0,0 @@ -# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created -# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages - -name: Node.js Package - -on: - release: - types: [created] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 18 - - run: npm i - - run: npm run build - - run: npm run test-only - - publish-npm: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 18 - registry-url: https://registry.npmjs.org/ - - run: npm i - - run: npm run build - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} - - publish-gpr: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 18 - registry-url: https://npm.pkg.github.com/ - - run: npm i - - run: npm run build - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/vendored_parsers/tree-sitter-elm/.github/workflows/publish.yml b/vendored_parsers/tree-sitter-elm/.github/workflows/publish.yml deleted file mode 100644 index dda28c22a..000000000 --- a/vendored_parsers/tree-sitter-elm/.github/workflows/publish.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Publish crates.io - -on: - release: - types: [created] - -jobs: - cargo: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - run: cargo login ${CRATES_IO_TOKEN} - env: - CRATES_IO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} - - run: cargo publish diff --git a/vendored_parsers/tree-sitter-elm/.github/workflows/test-full.yml b/vendored_parsers/tree-sitter-elm/.github/workflows/test-full.yml deleted file mode 100644 index f54c2ea72..000000000 --- a/vendored_parsers/tree-sitter-elm/.github/workflows/test-full.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Test full Linux - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - build: - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - node-version: [18, 20] - - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - - name: Npm install - run: | - npm i - - name: Unit tests - run: | - npm test - - name: Test examples - continue-on-error: true - run: | - script/parse-examples-full diff --git a/vendored_parsers/tree-sitter-elm/.github/workflows/test.yml b/vendored_parsers/tree-sitter-elm/.github/workflows/test.yml deleted file mode 100644 index e15cb175e..000000000 --- a/vendored_parsers/tree-sitter-elm/.github/workflows/test.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Test Linux - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - node: - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - node-version: [18, 20] - - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - - name: Npm install - run: | - npm i - - name: Unit tests - run: | - npm test - - name: Test examples - run: | - script/parse-examples - shell: bash - - rust: - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - - steps: - - uses: actions/checkout@v4 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - name: lint - uses: actions-rs/cargo@v1 - with: - command: clippy - - name: test - uses: actions-rs/cargo@v1 - with: - command: test diff --git a/vendored_parsers/tree-sitter-elm/.github/workflows/validate-lsp.yml b/vendored_parsers/tree-sitter-elm/.github/workflows/validate-lsp.yml deleted file mode 100644 index a220a1384..000000000 --- a/vendored_parsers/tree-sitter-elm/.github/workflows/validate-lsp.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Validate that changes doesn't break elm-language-server - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - test: - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - node-version: [18, 20] - - steps: - - uses: actions/checkout@v4 - with: - path: "tree-sitter-elm" - - uses: actions/checkout@v4 - name: Checkout main branch of elm-language-server - with: - repository: "elm-tooling/elm-language-server" - path: "elm-language-server" - - name: Install tree-sitter dependencies and generate wasm bundle - run: | - cd tree-sitter-elm/ - npm i - npm run build - npx tree-sitter build-wasm - mv ./tree-sitter-elm.wasm ../elm-language-server/tree-sitter-elm.wasm -f - - - name: Install elm-language-server dependencies, compile, and run tests - run: | - cd elm-language-server/ - npm i - npm run compile - npm install -g elm-format - npm test diff --git a/vendored_parsers/tree-sitter-elm/.gitignore b/vendored_parsers/tree-sitter-elm/.gitignore deleted file mode 100644 index 24fe21b0a..000000000 --- a/vendored_parsers/tree-sitter-elm/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -package-lock.json -Cargo.lock -node_modules -build -*.log -.idea -.vscode/ipch -target/ -/.build/ - -# Examples generated during automated tests -examples/** -examples-full/** -!examples/Basic.elm -!examples/Test.elm diff --git a/vendored_parsers/tree-sitter-elm/.npmignore b/vendored_parsers/tree-sitter-elm/.npmignore deleted file mode 100644 index b9b501789..000000000 --- a/vendored_parsers/tree-sitter-elm/.npmignore +++ /dev/null @@ -1,13 +0,0 @@ -.vscode -.github -.gitattributes -.editorconfig -test -elm-stuff -examples -examples-full -build -script -HOW_TO_RELEASE.md -rust -Cargo.toml diff --git a/vendored_parsers/tree-sitter-elm/.vscode/tasks.json b/vendored_parsers/tree-sitter-elm/.vscode/tasks.json deleted file mode 100644 index f9b264059..000000000 --- a/vendored_parsers/tree-sitter-elm/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "parse", - "problemMatcher": [] - }, - { - "type": "npm", - "script": "build", - "problemMatcher": [] - }, - { - "type": "npm", - "script": "parse-1", - "problemMatcher": [] - }, - { - "type": "npm", - "script": "parse-asset", - "problemMatcher": [] - }, - { - "type": "npm", - "script": "parse-article", - "problemMatcher": [] - }, - { - "type": "npm", - "script": "parse-basic", - "problemMatcher": [] - }, - { - "type": "npm", - "script": "parse-test", - "problemMatcher": [] - } - ] -} \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm/Cargo.toml b/vendored_parsers/tree-sitter-elm/Cargo.toml deleted file mode 100644 index a8e07f27a..000000000 --- a/vendored_parsers/tree-sitter-elm/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "tree-sitter-elm" -description = "elm grammar for the tree-sitter parsing library" -authors = [ - "Harry Sarson ", - "Kolja Lampe " - -] -homepage = "https://tree-sitter.github.io/tree-sitter/" -repository = "https://github.com/elm-tooling/tree-sitter-elm" -keywords = ["elm", "tree", "sitter", "parsing", "incremental"] -categories = ["parser-implementations", "api-bindings", "text-editors", "parsing"] -edition = "2018" -license = "MIT" -build = "bindings/rust/build.rs" -include = [ - "bindings/rust/*", - "grammar.js", - "queries/*", - "src/*", - "LICENSE.md", -] - -# Keep in sync with package.json -version = "5.7.0" - -[lib] -path = "bindings/rust/lib.rs" - -[dependencies] -tree-sitter = "0.20.10" - -[build-dependencies] -cc = "1.0" diff --git a/vendored_parsers/tree-sitter-elm/HOW_TO_RELEASE.md b/vendored_parsers/tree-sitter-elm/HOW_TO_RELEASE.md deleted file mode 100644 index 7a700816e..000000000 --- a/vendored_parsers/tree-sitter-elm/HOW_TO_RELEASE.md +++ /dev/null @@ -1,6 +0,0 @@ -1. Increase the version number in the package.json and the Cargo.toml -2. Run `npm run generate-wasm` -3. Push the code to main -4. Wait for tests to be successful -5. Create a release on github with the name being the version number from before prefixed with `v` for e.g. `v1.1.0` -6. Enjoy, builds should appear on that release as soon as the CI is done running them. diff --git a/vendored_parsers/tree-sitter-elm/LICENSE.md b/vendored_parsers/tree-sitter-elm/LICENSE.md deleted file mode 100644 index fe2acf712..000000000 --- a/vendored_parsers/tree-sitter-elm/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018 Kolja Lampe - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendored_parsers/tree-sitter-elm/Package.swift b/vendored_parsers/tree-sitter-elm/Package.swift deleted file mode 100644 index 93af452c4..000000000 --- a/vendored_parsers/tree-sitter-elm/Package.swift +++ /dev/null @@ -1,43 +0,0 @@ -// swift-tools-version:5.3 - -import PackageDescription - -let package = Package( - name: "TreeSitterElm", - platforms: [.macOS(.v10_13), .iOS(.v11)], - products: [ - .library(name: "TreeSitterElm", targets: ["TreeSitterElm"]), - ], - dependencies: [], - targets: [ - .target(name: "TreeSitterElm", - path: ".", - exclude: [ - "binding.gyp", - "bindings", - "Cargo.toml", - "docs", - "examples", - "grammar.js", - "HOW_TO_RELEASE.md", - "index.d.ts", - "LICENSE.md", - "package.json", - "README.md", - "script", - "src/grammar.json", - "src/node-types.json", - "test", - "tsconfig.json", - ], - sources: [ - "src/parser.c", - "src/scanner.c", - ], - resources: [ - .copy("queries") - ], - publicHeadersPath: "bindings/swift", - cSettings: [.headerSearchPath("src")]) - ] -) diff --git a/vendored_parsers/tree-sitter-elm/README.md b/vendored_parsers/tree-sitter-elm/README.md deleted file mode 100644 index b0a2e992c..000000000 --- a/vendored_parsers/tree-sitter-elm/README.md +++ /dev/null @@ -1,31 +0,0 @@ -[![Build Status](https://github.com/elm-tooling/tree-sitter-elm/actions/workflows/test.yml/badge.svg)](https://github.com/elm-tooling/tree-sitter-elm/actions/workflows/test.yml) - -# Elm tree sitter - -## Why am I doing this? - -I believe that Elm would greatly benefit from better tooling, the ultimate goal is to write a language server integration. This is a possible building block for that. - -What it brings to the table: - -- Very fast parsing, should enable parsing on each keystroke. -- Resilient, even if you use wrong syntax, most of the file should still be recognized alright. -- Should also be useful to the elm atom maintainers, as atom is using tree sitter as the new default for code highlighting (our ast might be too expressive). Highlight implementation still needs to be done if wanted. - -## What is this tested with? - -This is tested against the tests included in the repo and: - -- [elm-spa-example](https://github.com/rtfeldman/elm-spa-example) -- All core elm packets from [here](https://github.com/elm) - -So it should work fine for a fair amount of code. What's not tested right now is behavior in error cases. - -## Thanks - -Very very big thanks goes out to @klazuka and the people of [intellij-elm](https://github.com/klazuka/intellij-elm/) as I basically stole [how they're creating their parser](https://github.com/klazuka/intellij-elm/blob/master/src/main/grammars/ElmParser.bnf) minus the GLSL implementation. - -## Want to help? - -Help writing some tests or simply find valid elm files, that fail parsing. -Test are located in the `test` folder and separated in parser tests and highlighting tests. diff --git a/vendored_parsers/tree-sitter-elm/binding.gyp b/vendored_parsers/tree-sitter-elm/binding.gyp deleted file mode 100644 index 3e098f6e4..000000000 --- a/vendored_parsers/tree-sitter-elm/binding.gyp +++ /dev/null @@ -1,19 +0,0 @@ -{ - "targets": [ - { - "target_name": "tree_sitter_elm_binding", - "include_dirs": [ - " -#include "nan.h" - -using namespace v8; - -extern "C" TSLanguage * tree_sitter_elm(); - -namespace { - -NAN_METHOD(New) {} - -void Init(Local exports, Local module) { - Local tpl = Nan::New(New); - tpl->SetClassName(Nan::New("Language").ToLocalChecked()); - tpl->InstanceTemplate()->SetInternalFieldCount(1); - - Local constructor = Nan::GetFunction(tpl).ToLocalChecked(); - Local instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked(); - Nan::SetInternalFieldPointer(instance, 0, tree_sitter_elm()); - - Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("elm").ToLocalChecked()); - Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance); -} - -NODE_MODULE(tree_sitter_elm_binding, Init) - -} // namespace diff --git a/vendored_parsers/tree-sitter-elm/bindings/node/index.js b/vendored_parsers/tree-sitter-elm/bindings/node/index.js deleted file mode 100644 index 47b362d68..000000000 --- a/vendored_parsers/tree-sitter-elm/bindings/node/index.js +++ /dev/null @@ -1,19 +0,0 @@ -try { - module.exports = require("../../build/Release/tree_sitter_elm_binding"); -} catch (error1) { - if (error1.code !== 'MODULE_NOT_FOUND') { - throw error1; - } - try { - module.exports = require("../../build/Debug/tree_sitter_elm_binding"); - } catch (error2) { - if (error2.code !== 'MODULE_NOT_FOUND') { - throw error2; - } - throw error1 - } -} - -try { - module.exports.nodeTypeInfo = require("../../src/node-types.json"); -} catch (_) {} diff --git a/vendored_parsers/tree-sitter-elm/bindings/rust/build.rs b/vendored_parsers/tree-sitter-elm/bindings/rust/build.rs deleted file mode 100644 index 8851fed13..000000000 --- a/vendored_parsers/tree-sitter-elm/bindings/rust/build.rs +++ /dev/null @@ -1,19 +0,0 @@ -fn main() { - let src_dir = std::path::Path::new("src"); - - let mut c_config = cc::Build::new(); - c_config.include(src_dir); - c_config - .flag_if_supported("-Wno-unused-parameter") - .flag_if_supported("-Wno-unused-but-set-variable") - .flag_if_supported("-Wno-trigraphs"); - let parser_path = src_dir.join("parser.c"); - c_config.file(&parser_path); - - let scanner_path = src_dir.join("scanner.c"); - c_config.file(&scanner_path); - println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); - - c_config.compile("parser"); - println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); -} diff --git a/vendored_parsers/tree-sitter-elm/bindings/rust/lib.rs b/vendored_parsers/tree-sitter-elm/bindings/rust/lib.rs deleted file mode 100644 index 6ae0cec4a..000000000 --- a/vendored_parsers/tree-sitter-elm/bindings/rust/lib.rs +++ /dev/null @@ -1,52 +0,0 @@ -//! This crate provides elm language support for the [tree-sitter][] parsing library. -//! -//! Typically, you will use the [language][language func] function to add this language to a -//! tree-sitter [Parser][], and then use the parser to parse some code: -//! -//! ``` -//! let code = ""; -//! let mut parser = tree_sitter::Parser::new(); -//! parser.set_language(tree_sitter_elm::language()).expect("Error loading elm grammar"); -//! let tree = parser.parse(code, None).unwrap(); -//! ``` -//! -//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html -//! [language func]: fn.language.html -//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html -//! [tree-sitter]: https://tree-sitter.github.io/ - -use tree_sitter::Language; - -extern "C" { - fn tree_sitter_elm() -> Language; -} - -/// Get the tree-sitter [Language][] for this grammar. -/// -/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html -pub fn language() -> Language { - unsafe { tree_sitter_elm() } -} - -/// The content of the [`node-types.json`][] file for this grammar. -/// -/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types -pub const NODE_TYPES: &'static str = include_str!("../../src/node-types.json"); - -// Uncomment these to include any queries that this grammar contains - -pub const HIGHLIGHTS_QUERY: &'static str = include_str!("../../queries/highlights.scm"); -pub const INJECTIONS_QUERY: &'static str = include_str!("../../queries/injections.scm"); -pub const LOCALS_QUERY: &'static str = include_str!("../../queries/locals.scm"); -pub const TAGS_QUERY: &'static str = include_str!("../../queries/tags.scm"); - -#[cfg(test)] -mod tests { - #[test] - fn test_can_load_grammar() { - let mut parser = tree_sitter::Parser::new(); - parser - .set_language(super::language()) - .expect("Error loading elm language"); - } -} diff --git a/vendored_parsers/tree-sitter-elm/bindings/swift/TreeSitterElm/elm.h b/vendored_parsers/tree-sitter-elm/bindings/swift/TreeSitterElm/elm.h deleted file mode 100644 index 80f7b49f5..000000000 --- a/vendored_parsers/tree-sitter-elm/bindings/swift/TreeSitterElm/elm.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef TREE_SITTER_ELM_H_ -#define TREE_SITTER_ELM_H_ - -typedef struct TSLanguage TSLanguage; - -#ifdef __cplusplus -extern "C" { -#endif - -extern TSLanguage *tree_sitter_elm(); - -#ifdef __cplusplus -} -#endif - -#endif // TREE_SITTER_ELM_H_ diff --git a/vendored_parsers/tree-sitter-elm/docs/.nojekyll b/vendored_parsers/tree-sitter-elm/docs/.nojekyll deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendored_parsers/tree-sitter-elm/docs/index.html b/vendored_parsers/tree-sitter-elm/docs/index.html deleted file mode 100644 index 7401933b4..000000000 --- a/vendored_parsers/tree-sitter-elm/docs/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - Elm grammar for tree-sitter - tree-sitter-elm - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm/docs/js/playground.js b/vendored_parsers/tree-sitter-elm/docs/js/playground.js deleted file mode 100644 index c14bf0f51..000000000 --- a/vendored_parsers/tree-sitter-elm/docs/js/playground.js +++ /dev/null @@ -1,461 +0,0 @@ -let tree; - -(async () => { - const CAPTURE_REGEX = /@\s*([\w\._-]+)/g; - const COLORS_BY_INDEX = [ - 'blue', - 'chocolate', - 'darkblue', - 'darkcyan', - 'darkgreen', - 'darkred', - 'darkslategray', - 'dimgray', - 'green', - 'indigo', - 'navy', - 'red', - 'sienna', - ]; - - const scriptURL = document.currentScript.getAttribute('src'); - - const codeInput = document.getElementById('code-input'); - const languageSelect = document.getElementById('language-select'); - const loggingCheckbox = document.getElementById('logging-checkbox'); - const outputContainer = document.getElementById('output-container'); - const outputContainerScroll = document.getElementById('output-container-scroll'); - const playgroundContainer = document.getElementById('playground-container'); - const queryCheckbox = document.getElementById('query-checkbox'); - const queryContainer = document.getElementById('query-container'); - const queryInput = document.getElementById('query-input'); - const updateTimeSpan = document.getElementById('update-time'); - const languagesByName = {}; - - loadState(); - - await TreeSitter.init(); - - const parser = new TreeSitter(); - const codeEditor = CodeMirror.fromTextArea(codeInput, { - lineNumbers: true, - showCursorWhenSelecting: true - }); - - const queryEditor = CodeMirror.fromTextArea(queryInput, { - lineNumbers: true, - showCursorWhenSelecting: true - }); - - const cluster = new Clusterize({ - rows: [], - noDataText: null, - contentElem: outputContainer, - scrollElem: outputContainerScroll - }); - const renderTreeOnCodeChange = debounce(renderTree, 50); - const saveStateOnChange = debounce(saveState, 2000); - const runTreeQueryOnChange = debounce(runTreeQuery, 50); - - let languageName = languageSelect.value; - let treeRows = null; - let treeRowHighlightedIndex = -1; - let parseCount = 0; - let isRendering = 0; - let query; - - codeEditor.on('changes', handleCodeChange); - codeEditor.on('viewportChange', runTreeQueryOnChange); - codeEditor.on('cursorActivity', debounce(handleCursorMovement, 150)); - queryEditor.on('changes', debounce(handleQueryChange, 150)); - - loggingCheckbox.addEventListener('change', handleLoggingChange); - queryCheckbox.addEventListener('change', handleQueryEnableChange); - languageSelect.addEventListener('change', handleLanguageChange); - outputContainer.addEventListener('click', handleTreeClick); - - handleQueryEnableChange(); - await handleLanguageChange() - - playgroundContainer.style.visibility = 'visible'; - - async function handleLanguageChange() { - const newLanguageName = languageSelect.value; - if (!languagesByName[newLanguageName]) { - const url = `${LANGUAGE_BASE_URL}/tree-sitter-${newLanguageName}.wasm` - languageSelect.disabled = true; - try { - languagesByName[newLanguageName] = await TreeSitter.Language.load(url); - } catch (e) { - console.error(e); - languageSelect.value = languageName; - return - } finally { - languageSelect.disabled = false; - } - } - - tree = null; - languageName = newLanguageName; - parser.setLanguage(languagesByName[newLanguageName]); - handleCodeChange(); - handleQueryChange(); - } - - async function handleCodeChange(editor, changes) { - const newText = codeEditor.getValue() + '\n'; - const edits = tree && changes && changes.map(treeEditForEditorChange); - - const start = performance.now(); - if (edits) { - for (const edit of edits) { - tree.edit(edit); - } - } - const newTree = parser.parse(newText, tree); - const duration = (performance.now() - start).toFixed(1); - - updateTimeSpan.innerText = `${duration} ms`; - if (tree) tree.delete(); - tree = newTree; - parseCount++; - renderTreeOnCodeChange(); - runTreeQueryOnChange(); - saveStateOnChange(); - } - - async function renderTree() { - isRendering++; - const cursor = tree.walk(); - - let currentRenderCount = parseCount; - let row = ''; - let rows = []; - let finishedRow = false; - let visitedChildren = false; - let indentLevel = 0; - - for (let i = 0;; i++) { - if (i > 0 && i % 10000 === 0) { - await new Promise(r => setTimeout(r, 0)); - if (parseCount !== currentRenderCount) { - cursor.delete(); - isRendering--; - return; - } - } - - let displayName; - if (cursor.nodeIsMissing) { - displayName = `MISSING ${cursor.nodeType}` - } else if (cursor.nodeIsNamed) { - displayName = cursor.nodeType; - } - - if (visitedChildren) { - if (displayName) { - finishedRow = true; - } - - if (cursor.gotoNextSibling()) { - visitedChildren = false; - } else if (cursor.gotoParent()) { - visitedChildren = true; - indentLevel--; - } else { - break; - } - } else { - if (displayName) { - if (finishedRow) { - row += ''; - rows.push(row); - finishedRow = false; - } - const start = cursor.startPosition; - const end = cursor.endPosition; - const id = cursor.nodeId; - let fieldName = cursor.currentFieldName(); - if (fieldName) { - fieldName += ': '; - } else { - fieldName = ''; - } - row = `
${' '.repeat(indentLevel)}${fieldName}${displayName} [${start.row}, ${start.column}] - [${end.row}, ${end.column}]`; - finishedRow = true; - } - - if (cursor.gotoFirstChild()) { - visitedChildren = false; - indentLevel++; - } else { - visitedChildren = true; - } - } - } - if (finishedRow) { - row += '
'; - rows.push(row); - } - - cursor.delete(); - cluster.update(rows); - treeRows = rows; - isRendering--; - handleCursorMovement(); - } - - function runTreeQuery(_, startRow, endRow) { - if (endRow == null) { - const viewport = codeEditor.getViewport(); - startRow = viewport.from; - endRow = viewport.to; - } - - codeEditor.operation(() => { - const marks = codeEditor.getAllMarks(); - marks.forEach(m => m.clear()); - - if (tree && query) { - const captures = query.captures( - tree.rootNode, - {row: startRow, column: 0}, - {row: endRow, column: 0}, - ); - let lastNodeId; - for (const {name, node} of captures) { - if (node.id === lastNodeId) continue; - lastNodeId = node.id; - const {startPosition, endPosition} = node; - codeEditor.markText( - {line: startPosition.row, ch: startPosition.column}, - {line: endPosition.row, ch: endPosition.column}, - { - inclusiveLeft: true, - inclusiveRight: true, - css: `color: ${colorForCaptureName(name)}` - } - ); - } - } - }); - } - - function handleQueryChange() { - if (query) { - query.delete(); - query.deleted = true; - query = null; - } - - queryEditor.operation(() => { - queryEditor.getAllMarks().forEach(m => m.clear()); - if (!queryCheckbox.checked) return; - - const queryText = queryEditor.getValue(); - - try { - query = parser.getLanguage().query(queryText); - let match; - - let row = 0; - queryEditor.eachLine((line) => { - while (match = CAPTURE_REGEX.exec(line.text)) { - queryEditor.markText( - {line: row, ch: match.index}, - {line: row, ch: match.index + match[0].length}, - { - inclusiveLeft: true, - inclusiveRight: true, - css: `color: ${colorForCaptureName(match[1])}` - } - ); - } - row++; - }); - } catch (error) { - const startPosition = queryEditor.posFromIndex(error.index); - const endPosition = { - line: startPosition.line, - ch: startPosition.ch + (error.length || Infinity) - }; - - if (error.index === queryText.length) { - if (startPosition.ch > 0) { - startPosition.ch--; - } else if (startPosition.row > 0) { - startPosition.row--; - startPosition.column = Infinity; - } - } - - queryEditor.markText( - startPosition, - endPosition, - { - className: 'query-error', - inclusiveLeft: true, - inclusiveRight: true, - attributes: {title: error.message} - } - ); - } - }); - - runTreeQuery(); - saveQueryState(); - } - - function handleCursorMovement() { - if (isRendering) return; - - const selection = codeEditor.getDoc().listSelections()[0]; - let start = {row: selection.anchor.line, column: selection.anchor.ch}; - let end = {row: selection.head.line, column: selection.head.ch}; - if ( - start.row > end.row || - ( - start.row === end.row && - start.column > end.column - ) - ) { - let swap = end; - end = start; - start = swap; - } - const node = tree.rootNode.namedDescendantForPosition(start, end); - if (treeRows) { - if (treeRowHighlightedIndex !== -1) { - const row = treeRows[treeRowHighlightedIndex]; - if (row) treeRows[treeRowHighlightedIndex] = row.replace('highlighted', 'plain'); - } - treeRowHighlightedIndex = treeRows.findIndex(row => row.includes(`data-id=${node.id}`)); - if (treeRowHighlightedIndex !== -1) { - const row = treeRows[treeRowHighlightedIndex]; - if (row) treeRows[treeRowHighlightedIndex] = row.replace('plain', 'highlighted'); - } - cluster.update(treeRows); - const lineHeight = cluster.options.item_height; - const scrollTop = outputContainerScroll.scrollTop; - const containerHeight = outputContainerScroll.clientHeight; - const offset = treeRowHighlightedIndex * lineHeight; - if (scrollTop > offset - 20) { - $(outputContainerScroll).animate({scrollTop: offset - 20}, 150); - } else if (scrollTop < offset + lineHeight + 40 - containerHeight) { - $(outputContainerScroll).animate({scrollTop: offset - containerHeight + 40}, 150); - } - } - } - - function handleTreeClick(event) { - if (event.target.tagName === 'A') { - event.preventDefault(); - const [startRow, startColumn, endRow, endColumn] = event - .target - .dataset - .range - .split(',') - .map(n => parseInt(n)); - codeEditor.focus(); - codeEditor.setSelection( - {line: startRow, ch: startColumn}, - {line: endRow, ch: endColumn} - ); - } - } - - function handleLoggingChange() { - if (loggingCheckbox.checked) { - parser.setLogger((message, lexing) => { - if (lexing) { - console.log(" ", message) - } else { - console.log(message) - } - }); - } else { - parser.setLogger(null); - } - } - - function handleQueryEnableChange() { - if (queryCheckbox.checked) { - queryContainer.style.visibility = ''; - queryContainer.style.position = ''; - } else { - queryContainer.style.visibility = 'hidden'; - queryContainer.style.position = 'absolute'; - } - handleQueryChange(); - } - - function treeEditForEditorChange(change) { - const oldLineCount = change.removed.length; - const newLineCount = change.text.length; - const lastLineLength = change.text[newLineCount - 1].length; - - const startPosition = {row: change.from.line, column: change.from.ch}; - const oldEndPosition = {row: change.to.line, column: change.to.ch}; - const newEndPosition = { - row: startPosition.row + newLineCount - 1, - column: newLineCount === 1 - ? startPosition.column + lastLineLength - : lastLineLength - }; - - const startIndex = codeEditor.indexFromPos(change.from); - let newEndIndex = startIndex + newLineCount - 1; - let oldEndIndex = startIndex + oldLineCount - 1; - for (let i = 0; i < newLineCount; i++) newEndIndex += change.text[i].length; - for (let i = 0; i < oldLineCount; i++) oldEndIndex += change.removed[i].length; - - return { - startIndex, oldEndIndex, newEndIndex, - startPosition, oldEndPosition, newEndPosition - }; - } - - function colorForCaptureName(capture) { - const id = query.captureNames.indexOf(capture); - return COLORS_BY_INDEX[id % COLORS_BY_INDEX.length]; - } - - function loadState() { - const language = localStorage.getItem("language"); - const sourceCode = localStorage.getItem("sourceCode"); - const query = localStorage.getItem("query"); - const queryEnabled = localStorage.getItem("queryEnabled"); - if (language != null && sourceCode != null && query != null) { - queryInput.value = query; - codeInput.value = sourceCode; - languageSelect.value = language; - queryCheckbox.checked = (queryEnabled === 'true'); - } - } - - function saveState() { - localStorage.setItem("language", languageSelect.value); - localStorage.setItem("sourceCode", codeEditor.getValue()); - saveQueryState(); - } - - function saveQueryState() { - localStorage.setItem("queryEnabled", queryCheckbox.checked); - localStorage.setItem("query", queryEditor.getValue()); - } - - function debounce(func, wait, immediate) { - var timeout; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) func.apply(context, args); - }; - } -})(); diff --git a/vendored_parsers/tree-sitter-elm/docs/js/tree-sitter-elm.wasm b/vendored_parsers/tree-sitter-elm/docs/js/tree-sitter-elm.wasm deleted file mode 100755 index aa7cef58b683a681030d9f7126e9e7dcf21c3f5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189901 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 moduleOverrides=Object.assign({},Module),arguments_=[],thisProgram="./this.program",quit_=(e,t)=>{throw t},ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,scriptDirectory="",read_,readAsync,readBinary,setWindowTitle;function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}if(ENVIRONMENT_IS_NODE){var fs=require("fs"),nodePath=require("path");scriptDirectory=ENVIRONMENT_IS_WORKER?nodePath.dirname(scriptDirectory)+"/":__dirname+"/",read_=(e,t)=>(e=isFileURI(e)?new URL(e):nodePath.normalize(e),fs.readFileSync(e,t?void 0:"utf8")),readBinary=e=>{var t=read_(e,!0);return t.buffer||(t=new Uint8Array(t)),t},readAsync=(e,t,r,_=!0)=>{e=isFileURI(e)?new URL(e):nodePath.normalize(e),fs.readFile(e,_?void 0:"utf8",((e,s)=>{e?r(e):t(_?s.buffer:s)}))},!Module.thisProgram&&process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),"undefined"!=typeof module&&(module.exports=Module),quit_=(e,t)=>{throw process.exitCode=e,t},Module.inspect=()=>"[Emscripten Module object]"}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:void 0!==document&&document.currentScript&&(scriptDirectory=document.currentScript.src),scriptDirectory=0!==scriptDirectory.indexOf("blob:")?scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1):"",read_=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),readAsync=(e,t,r)=>{var _=new XMLHttpRequest;_.open("GET",e,!0),_.responseType="arraybuffer",_.onload=()=>{200==_.status||0==_.status&&_.response?t(_.response):r()},_.onerror=r,_.send(null)},setWindowTitle=e=>document.title=e);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var dynamicLibraries=Module.dynamicLibraries||[],wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime=Module.noExitRuntime||!0,wasmMemory;"object"!=typeof WebAssembly&&abort("no native wasm support detected");var ABORT=!1,EXITSTATUS,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function assert(e,t){e||abort(t)}function updateMemoryViews(){var e=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e)}var INITIAL_MEMORY=Module.INITIAL_MEMORY||33554432;assert(INITIAL_MEMORY>=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE=65536)"),wasmMemory=Module.wasmMemory?Module.wasmMemory:new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768}),updateMemoryViews(),INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable=new WebAssembly.Table({initial:25,element:"anyfunc"}),__ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],__RELOC_FUNCS__=[],runtimeInitialized=!1,runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnInit(e){__ATINIT__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}function abort(e){throw Module.onAbort&&Module.onAbort(e),err(e="Aborted("+e+")"),ABORT=!0,EXITSTATUS=1,e+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(e)}var dataURIPrefix="data:application/octet-stream;base64,",wasmBinaryFile,tempDouble,tempI64;function isDataURI(e){return e.startsWith(dataURIPrefix)}function isFileURI(e){return e.startsWith("file://")}function getBinary(e){try{if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}catch(e){abort(e)}}function getBinaryPromise(e){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if("function"==typeof fetch&&!isFileURI(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>getBinary(e)));if(readAsync)return new Promise(((t,r)=>{readAsync(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>getBinary(e)))}function instantiateArrayBuffer(e,t,r){return getBinaryPromise(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{err("failed to asynchronously prepare wasm: "+e),abort(e)}))}function instantiateAsync(e,t,r,_){return e||"function"!=typeof WebAssembly.instantiateStreaming||isDataURI(t)||isFileURI(t)||ENVIRONMENT_IS_NODE||"function"!=typeof fetch?instantiateArrayBuffer(t,r,_):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(_,(function(e){return err("wasm streaming compile failed: "+e),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(t,r,_)}))))}function createWasm(){var e={env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)};function t(e,t){var r=e.exports;r=relocateExports(r,1024);var _=getDylinkMetadata(t);return _.neededDynlibs&&(dynamicLibraries=_.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(r,"main"),Module.asm=r,addOnInit(Module.asm.__wasm_call_ctors),__RELOC_FUNCS__.push(Module.asm.__wasm_apply_data_relocs),removeRunDependency("wasm-instantiate"),r}if(addRunDependency("wasm-instantiate"),Module.instantiateWasm)try{return Module.instantiateWasm(e,t)}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(wasmBinary,wasmBinaryFile,e,(function(e){t(e.instance,e.module)})),{}}wasmBinaryFile="tree-sitter.wasm",isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));var ASM_CONSTS={};function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get:function(e,t){var r=GOT[t];return r||(r=GOT[t]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(t)||(r.required=!0),r}};function callRuntimeCallbacks(e){for(;e.length>0;)e.shift()(Module)}var UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(e,t,r){for(var _=t+r,s=t;e[s]&&!(s>=_);)++s;if(s-t>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,s));for(var n="";t>10,56320|1023&i)}}else n+=String.fromCharCode((31&a)<<6|o)}else n+=String.fromCharCode(a)}return n}function getDylinkMetadata(e){var t=0,r=0;function _(){for(var r=0,_=1;;){var s=e[t++];if(r+=(127&s)*_,_*=128,!(128&s))break}return r}function s(){var r=_();return UTF8ArrayToString(e,(t+=r)-r,r)}function n(e,t){if(e)throw new Error(t)}var a="dylink.0";if(e instanceof WebAssembly.Module){var o=WebAssembly.Module.customSections(e,a);0===o.length&&(a="dylink",o=WebAssembly.Module.customSections(e,a)),n(0===o.length,"need dylink section"),r=(e=new Uint8Array(o[0])).length}else{n(!(1836278016==new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer)[0]),"need to see wasm magic number"),n(0!==e[8],"need the dylink section to be first"),t=9;var l=_();r=t+l,a=s()}var i={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if("dylink"==a){i.memorySize=_(),i.memoryAlign=_(),i.tableSize=_(),i.tableAlign=_();for(var u=_(),d=0;d>0];case"i16":return HEAP16[e>>1];case"i32":case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];case"*":return HEAPU32[e>>2];default:abort("invalid type for getValue: "+t)}}function newDSO(e,t,r){var _={refcount:1/0,name:e,exports:r,global:!0};return LDSO.loadedLibsByName[e]=_,null!=t&&(LDSO.loadedLibsByHandle[t]=_),_}var LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init:()=>newDSO("__main__",0,wasmImports)},___heap_base=78160;function zeroMemory(e,t){return HEAPU8.fill(0,e,e+t),e}function getMemory(e){if(runtimeInitialized)return zeroMemory(_malloc(e),e);var t=___heap_base,r=t+e+15&-16;return ___heap_base=r,GOT.__heap_base.value=r,t}function isInternalSym(e){return["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm"].includes(e)}function uleb128Encode(e,t){e<128?t.push(e):t.push(e%128|128,e>>7)}function sigToWasmTypes(e){for(var t={i:"i32",j:"i32",f:"f32",d:"f64",p:"i32"},r={parameters:[],results:"v"==e[0]?[]:[t[e[0]]]},_=1;_=wasmTableMirror.length&&(wasmTableMirror.length=e+1),wasmTableMirror[e]=t=wasmTable.get(e)),t}function updateTableMap(e,t){if(functionsInTableMap)for(var r=e;r>0];if(firstLoad){var memAlign=Math.pow(2,metadata.memoryAlign);memAlign=Math.max(memAlign,16);var memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8>>0]=1,HEAPU32[handle+12>>2]=memoryBase,HEAP32[handle+16>>2]=metadata.memorySize,HEAPU32[handle+20>>2]=tableBase,HEAP32[handle+24>>2]=metadata.tableSize)}else memoryBase=HEAPU32[handle+12>>2],tableBase=HEAPU32[handle+20>>2];var tableGrowthNeeded=tableBase+metadata.tableSize-wasmTable.length,moduleExports;function resolveSymbol(e){var t=resolveGlobalSymbol(e).sym;return!t&&localScope&&(t=localScope[e]),t||(t=moduleExports[e]),t}tableGrowthNeeded>0&&wasmTable.grow(tableGrowthNeeded);var proxyHandler={get:function(e,t){switch(t){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(t in wasmImports&&!wasmImports[t].stub)return wasmImports[t];var r;t in e||(e[t]=function(){return r||(r=resolveSymbol(t)),r.apply(null,arguments)});return e[t]}},proxy=new Proxy({},proxyHandler),info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(instance){function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&-1!=body.indexOf("$"+arity);arity++)args.push("$"+arity);args=args.join(",");var func="("+args+" ) => { "+body+"};";ASM_CONSTS[start]=eval(func)}if(updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols(),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;startpostInstantiation(e.instance)))}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(instance)}return currentModuleWeakSymbols=metadata.weakImports,flags.loadAsync?metadata.neededDynlibs.reduce(((e,t)=>e.then((()=>loadDynamicLibrary(t,flags)))),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach((e=>loadDynamicLibrary(e,flags,localScope))),loadModule())}function mergeLibSymbols(e,t){for(var r in e){if(!e.hasOwnProperty(r))continue;const t=t=>{isSymbolDefined(t)||(wasmImports[t]=e[r])};t(r);const _="__main_argc_argv";"main"==r&&t(_),r==_&&t("main"),r.startsWith("dynCall_")&&!Module.hasOwnProperty(r)&&(Module[r]=e[r])}}function asyncLoad(e,t,r,_){var s=_?"":getUniqueRunDependency("al "+e);readAsync(e,(r=>{assert(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),s&&removeRunDependency(s)}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),s&&addRunDependency(s)}function loadDynamicLibrary(e,t={global:!0,nodelete:!0},r,_){var s=LDSO.loadedLibsByName[e];if(s)return t.global&&!s.global&&(s.global=!0,"loading"!==s.exports&&mergeLibSymbols(s.exports,e)),t.nodelete&&s.refcount!==1/0&&(s.refcount=1/0),s.refcount++,_&&(LDSO.loadedLibsByHandle[_]=s),!t.loadAsync||Promise.resolve(!0);function n(){if(t.fs&&t.fs.findObject(e)){var r=t.fs.readFile(e,{encoding:"binary"});return r instanceof Uint8Array||(r=new Uint8Array(r)),t.loadAsync?Promise.resolve(r):r}var _=locateFile(e);if(t.loadAsync)return new Promise((function(e,t){asyncLoad(_,(t=>e(t)),t)}));if(!readBinary)throw new Error(_+": file not found, and synchronous loading of external files is not available");return readBinary(_)}function a(){if("undefined"!=typeof preloadedWasm&&preloadedWasm[e]){var s=preloadedWasm[e];return t.loadAsync?Promise.resolve(s):s}return t.loadAsync?n().then((e=>loadWebAssemblyModule(e,t,r,_))):loadWebAssemblyModule(n(),t,r,_)}function o(t){s.global?mergeLibSymbols(t,e):r&&Object.assign(r,t),s.exports=t}return(s=newDSO(e,_,"loading")).refcount=t.nodelete?1/0:1,s.global=t.global,t.loadAsync?a().then((e=>(o(e),!0))):(o(a()),!0)}function reportUndefinedSymbols(){for(var e in GOT)if(0==GOT[e].value){var t=resolveGlobalSymbol(e,!0).sym;if(!t&&!GOT[e].required)continue;if("function"==typeof t)GOT[e].value=addFunction(t,t.sig);else{if("number"!=typeof t)throw new Error("bad export type for `"+e+"`: "+typeof t);GOT[e].value=t}}}function loadDylibs(){dynamicLibraries.length?(addRunDependency("loadDylibs"),dynamicLibraries.reduce(((e,t)=>e.then((()=>loadDynamicLibrary(t,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0})))),Promise.resolve()).then((()=>{reportUndefinedSymbols(),removeRunDependency("loadDylibs")}))):reportUndefinedSymbols()}function setValue(e,t,r="i8"){switch(r.endsWith("*")&&(r="*"),r){case"i1":case"i8":HEAP8[e>>0]=t;break;case"i16":HEAP16[e>>1]=t;break;case"i32":HEAP32[e>>2]=t;break;case"i64":tempI64=[t>>>0,(tempDouble=t,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=t;break;case"double":HEAPF64[e>>3]=t;break;case"*":HEAPU32[e>>2]=t;break;default:abort("invalid type for setValue: "+r)}}var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},78160),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),nowIsMonotonic=!0,_emscripten_get_now;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function _abort(){abort("")}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(e,t,r){HEAPU8.copyWithin(e,t,t+r)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(e){var t=wasmMemory.buffer;try{return wasmMemory.grow(e-t.byteLength+65535>>>16),updateMemoryViews(),1}catch(e){}}function _emscripten_resize_heap(e){var t=HEAPU8.length;e>>>=0;var r=getHeapMax();if(e>r)return!1;for(var _=1;_<=4;_*=2){var s=t*(1+.2/_);if(s=Math.min(s,e+100663296),emscripten_realloc_buffer(Math.min(r,(n=Math.max(e,s))+((a=65536)-n%a)%a)))return!0}var n,a;return!1}__emscripten_get_now_is_monotonic.sig="i",Module._abort=_abort,_abort.sig="v",_emscripten_date_now.sig="d",_emscripten_get_now=ENVIRONMENT_IS_NODE?()=>{var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:()=>performance.now(),_emscripten_get_now.sig="d",_emscripten_memcpy_big.sig="vppp",_emscripten_resize_heap.sig="ip";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(PATH.isAbs(t))return t;var _;-100===e?_=FS.cwd():_=SYSCALLS.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new FS.ErrnoError(44);return _}return PATH.join2(_,t)},doStat:function(e,t,r){try{var _=e(t)}catch(e){if(e&&e.node&&PATH.normalize(t)!==PATH.normalize(FS.getPath(e.node)))return-54;throw e}HEAP32[r>>2]=_.dev,HEAP32[r+8>>2]=_.ino,HEAP32[r+12>>2]=_.mode,HEAPU32[r+16>>2]=_.nlink,HEAP32[r+20>>2]=_.uid,HEAP32[r+24>>2]=_.gid,HEAP32[r+28>>2]=_.rdev,tempI64=[_.size>>>0,(tempDouble=_.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[r+40>>2]=tempI64[0],HEAP32[r+44>>2]=tempI64[1],HEAP32[r+48>>2]=4096,HEAP32[r+52>>2]=_.blocks;var s=_.atime.getTime(),n=_.mtime.getTime(),a=_.ctime.getTime();return tempI64=[Math.floor(s/1e3)>>>0,(tempDouble=Math.floor(s/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[r+56>>2]=tempI64[0],HEAP32[r+60>>2]=tempI64[1],HEAPU32[r+64>>2]=s%1e3*1e3,tempI64=[Math.floor(n/1e3)>>>0,(tempDouble=Math.floor(n/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[r+72>>2]=tempI64[0],HEAP32[r+76>>2]=tempI64[1],HEAPU32[r+80>>2]=n%1e3*1e3,tempI64=[Math.floor(a/1e3)>>>0,(tempDouble=Math.floor(a/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[r+88>>2]=tempI64[0],HEAP32[r+92>>2]=tempI64[1],HEAPU32[r+96>>2]=a%1e3*1e3,tempI64=[_.ino>>>0,(tempDouble=_.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[r+104>>2]=tempI64[0],HEAP32[r+108>>2]=tempI64[1],0},doMsync:function(e,t,r,_,s){if(!FS.isFile(t.node.mode))throw new FS.ErrnoError(43);if(2&_)return 0;var n=HEAPU8.slice(e,e+r);FS.msync(t,n,s,r,_)},varargs:void 0,get:function(){return SYSCALLS.varargs+=4,HEAP32[SYSCALLS.varargs-4>>2]},getStr:function(e){return UTF8ToString(e)},getStreamFromFD:function(e){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(8);return t}};function _fd_close(e){try{var t=SYSCALLS.getStreamFromFD(e);return FS.close(t),0}catch(e){if("undefined"==typeof FS||"ErrnoError"!==e.name)throw e;return e.errno}}function convertI32PairToI53Checked(e,t){return t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN}function _fd_seek(e,t,r,_,s){try{var n=convertI32PairToI53Checked(t,r);if(isNaN(n))return 61;var a=SYSCALLS.getStreamFromFD(e);return FS.llseek(a,n,_),tempI64=[a.position>>>0,(tempDouble=a.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[s>>2]=tempI64[0],HEAP32[s+4>>2]=tempI64[1],a.getdents&&0===n&&0===_&&(a.getdents=null),0}catch(e){if("undefined"==typeof FS||"ErrnoError"!==e.name)throw e;return e.errno}}function doWritev(e,t,r,_){for(var s=0,n=0;n>2],o=HEAPU32[t+4>>2];t+=8;var l=FS.write(e,HEAP8,a,o,_);if(l<0)return-1;s+=l,void 0!==_&&(_+=l)}return s}function _fd_write(e,t,r,_){try{var s=doWritev(SYSCALLS.getStreamFromFD(e),t,r);return HEAPU32[_>>2]=s,0}catch(e){if("undefined"==typeof FS||"ErrnoError"!==e.name)throw e;return e.errno}}function _tree_sitter_log_callback(e,t){if(currentLogCallback){const r=UTF8ToString(t);currentLogCallback(r,0!==e)}}function _tree_sitter_parse_callback(e,t,r,_,s){var n=currentParseCallback(t,{row:r,column:_});"string"==typeof n?(setValue(s,n.length,"i32"),stringToUTF16(n,e,10240)):setValue(s,0,"i32")}function _proc_exit(e){EXITSTATUS=e,keepRuntimeAlive()||(Module.onExit&&Module.onExit(e),ABORT=!0),quit_(e,new ExitStatus(e))}function exitJS(e,t){EXITSTATUS=e,_proc_exit(e)}function handleException(e){if(e instanceof ExitStatus||"unwind"==e)return EXITSTATUS;quit_(1,e)}function lengthBytesUTF8(e){for(var t=0,r=0;r=55296&&_<=57343?(t+=4,++r):t+=3}return t}function stringToUTF8Array(e,t,r,_){if(!(_>0))return 0;for(var s=r,n=r+_-1,a=0;a=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a);if(o<=127){if(r>=n)break;t[r++]=o}else if(o<=2047){if(r+1>=n)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=n)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=n)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-s}function stringToUTF8(e,t,r){return stringToUTF8Array(e,HEAPU8,t,r)}function stringToUTF8OnStack(e){var t=lengthBytesUTF8(e)+1,r=stackAlloc(t);return stringToUTF8(e,r,t),r}function stringToUTF16(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var _=t,s=(r-=2)<2*e.length?r/2:e.length,n=0;n>1]=a,t+=2}return HEAP16[t>>1]=0,t-_}function AsciiToString(e){for(var t="";;){var r=HEAPU8[e++>>0];if(!r)return t;t+=String.fromCharCode(r)}}_fd_close.sig="ii",_fd_seek.sig="iijip",_fd_write.sig="iippp",_proc_exit.sig="vi";var wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_pointer:___stack_pointer,__table_base:___table_base,_emscripten_get_now_is_monotonic:__emscripten_get_now_is_monotonic,abort:_abort,emscripten_get_now:_emscripten_get_now,emscripten_memcpy_big:_emscripten_memcpy_big,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback},asm=createWasm(),___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.asm.__wasm_call_ctors).apply(null,arguments)},___wasm_apply_data_relocs=Module.___wasm_apply_data_relocs=function(){return(___wasm_apply_data_relocs=Module.___wasm_apply_data_relocs=Module.asm.__wasm_apply_data_relocs).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_calloc=Module._calloc=function(){return(_calloc=Module._calloc=Module.asm.calloc).apply(null,arguments)},_realloc=Module._realloc=function(){return(_realloc=Module._realloc=Module.asm.realloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},_ts_language_symbol_count=Module._ts_language_symbol_count=function(){return(_ts_language_symbol_count=Module._ts_language_symbol_count=Module.asm.ts_language_symbol_count).apply(null,arguments)},_ts_language_state_count=Module._ts_language_state_count=function(){return(_ts_language_state_count=Module._ts_language_state_count=Module.asm.ts_language_state_count).apply(null,arguments)},_ts_language_version=Module._ts_language_version=function(){return(_ts_language_version=Module._ts_language_version=Module.asm.ts_language_version).apply(null,arguments)},_ts_language_field_count=Module._ts_language_field_count=function(){return(_ts_language_field_count=Module._ts_language_field_count=Module.asm.ts_language_field_count).apply(null,arguments)},_ts_language_next_state=Module._ts_language_next_state=function(){return(_ts_language_next_state=Module._ts_language_next_state=Module.asm.ts_language_next_state).apply(null,arguments)},_ts_language_symbol_name=Module._ts_language_symbol_name=function(){return(_ts_language_symbol_name=Module._ts_language_symbol_name=Module.asm.ts_language_symbol_name).apply(null,arguments)},_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=function(){return(_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=Module.asm.ts_language_symbol_for_name).apply(null,arguments)},_ts_language_symbol_type=Module._ts_language_symbol_type=function(){return(_ts_language_symbol_type=Module._ts_language_symbol_type=Module.asm.ts_language_symbol_type).apply(null,arguments)},_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=function(){return(_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=Module.asm.ts_language_field_name_for_id).apply(null,arguments)},_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=function(){return(_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=Module.asm.ts_lookahead_iterator_new).apply(null,arguments)},_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=function(){return(_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=Module.asm.ts_lookahead_iterator_delete).apply(null,arguments)},_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=function(){return(_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=Module.asm.ts_lookahead_iterator_reset_state).apply(null,arguments)},_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=function(){return(_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=Module.asm.ts_lookahead_iterator_reset).apply(null,arguments)},_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=function(){return(_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=Module.asm.ts_lookahead_iterator_next).apply(null,arguments)},_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=function(){return(_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=Module.asm.ts_lookahead_iterator_current_symbol).apply(null,arguments)},_memset=Module._memset=function(){return(_memset=Module._memset=Module.asm.memset).apply(null,arguments)},_memcpy=Module._memcpy=function(){return(_memcpy=Module._memcpy=Module.asm.memcpy).apply(null,arguments)},_ts_parser_delete=Module._ts_parser_delete=function(){return(_ts_parser_delete=Module._ts_parser_delete=Module.asm.ts_parser_delete).apply(null,arguments)},_ts_parser_reset=Module._ts_parser_reset=function(){return(_ts_parser_reset=Module._ts_parser_reset=Module.asm.ts_parser_reset).apply(null,arguments)},_ts_parser_set_language=Module._ts_parser_set_language=function(){return(_ts_parser_set_language=Module._ts_parser_set_language=Module.asm.ts_parser_set_language).apply(null,arguments)},_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=function(){return(_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=Module.asm.ts_parser_timeout_micros).apply(null,arguments)},_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=function(){return(_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=Module.asm.ts_parser_set_timeout_micros).apply(null,arguments)},_memmove=Module._memmove=function(){return(_memmove=Module._memmove=Module.asm.memmove).apply(null,arguments)},_memcmp=Module._memcmp=function(){return(_memcmp=Module._memcmp=Module.asm.memcmp).apply(null,arguments)},_ts_query_new=Module._ts_query_new=function(){return(_ts_query_new=Module._ts_query_new=Module.asm.ts_query_new).apply(null,arguments)},_ts_query_delete=Module._ts_query_delete=function(){return(_ts_query_delete=Module._ts_query_delete=Module.asm.ts_query_delete).apply(null,arguments)},_iswspace=Module._iswspace=function(){return(_iswspace=Module._iswspace=Module.asm.iswspace).apply(null,arguments)},_iswalnum=Module._iswalnum=function(){return(_iswalnum=Module._iswalnum=Module.asm.iswalnum).apply(null,arguments)},_ts_query_pattern_count=Module._ts_query_pattern_count=function(){return(_ts_query_pattern_count=Module._ts_query_pattern_count=Module.asm.ts_query_pattern_count).apply(null,arguments)},_ts_query_capture_count=Module._ts_query_capture_count=function(){return(_ts_query_capture_count=Module._ts_query_capture_count=Module.asm.ts_query_capture_count).apply(null,arguments)},_ts_query_string_count=Module._ts_query_string_count=function(){return(_ts_query_string_count=Module._ts_query_string_count=Module.asm.ts_query_string_count).apply(null,arguments)},_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=function(){return(_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=Module.asm.ts_query_capture_name_for_id).apply(null,arguments)},_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=function(){return(_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=Module.asm.ts_query_string_value_for_id).apply(null,arguments)},_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=function(){return(_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=Module.asm.ts_query_predicates_for_pattern).apply(null,arguments)},_ts_tree_copy=Module._ts_tree_copy=function(){return(_ts_tree_copy=Module._ts_tree_copy=Module.asm.ts_tree_copy).apply(null,arguments)},_ts_tree_delete=Module._ts_tree_delete=function(){return(_ts_tree_delete=Module._ts_tree_delete=Module.asm.ts_tree_delete).apply(null,arguments)},_ts_init=Module._ts_init=function(){return(_ts_init=Module._ts_init=Module.asm.ts_init).apply(null,arguments)},_ts_parser_new_wasm=Module._ts_parser_new_wasm=function(){return(_ts_parser_new_wasm=Module._ts_parser_new_wasm=Module.asm.ts_parser_new_wasm).apply(null,arguments)},_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=function(){return(_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=Module.asm.ts_parser_enable_logger_wasm).apply(null,arguments)},_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=function(){return(_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=Module.asm.ts_parser_parse_wasm).apply(null,arguments)},_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=function(){return(_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=Module.asm.ts_language_type_is_named_wasm).apply(null,arguments)},_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=function(){return(_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=Module.asm.ts_language_type_is_visible_wasm).apply(null,arguments)},_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=function(){return(_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=Module.asm.ts_tree_root_node_wasm).apply(null,arguments)},_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=function(){return(_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=Module.asm.ts_tree_edit_wasm).apply(null,arguments)},_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=function(){return(_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=Module.asm.ts_tree_get_changed_ranges_wasm).apply(null,arguments)},_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=function(){return(_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=Module.asm.ts_tree_cursor_new_wasm).apply(null,arguments)},_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=function(){return(_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=Module.asm.ts_tree_cursor_delete_wasm).apply(null,arguments)},_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=function(){return(_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=Module.asm.ts_tree_cursor_reset_wasm).apply(null,arguments)},_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=function(){return(_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=Module.asm.ts_tree_cursor_reset_to_wasm).apply(null,arguments)},_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=function(){return(_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=Module.asm.ts_tree_cursor_goto_first_child_wasm).apply(null,arguments)},_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=function(){return(_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=Module.asm.ts_tree_cursor_goto_last_child_wasm).apply(null,arguments)},_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=function(){return(_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=Module.asm.ts_tree_cursor_goto_next_sibling_wasm).apply(null,arguments)},_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=function(){return(_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=Module.asm.ts_tree_cursor_goto_previous_sibling_wasm).apply(null,arguments)},_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=function(){return(_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=Module.asm.ts_tree_cursor_goto_parent_wasm).apply(null,arguments)},_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=function(){return(_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=Module.asm.ts_tree_cursor_current_node_type_id_wasm).apply(null,arguments)},_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=function(){return(_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=Module.asm.ts_tree_cursor_current_node_state_id_wasm).apply(null,arguments)},_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=function(){return(_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=Module.asm.ts_tree_cursor_current_node_is_named_wasm).apply(null,arguments)},_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=function(){return(_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=Module.asm.ts_tree_cursor_current_node_is_missing_wasm).apply(null,arguments)},_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=function(){return(_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=Module.asm.ts_tree_cursor_current_node_id_wasm).apply(null,arguments)},_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=function(){return(_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=Module.asm.ts_tree_cursor_start_position_wasm).apply(null,arguments)},_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=function(){return(_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=Module.asm.ts_tree_cursor_end_position_wasm).apply(null,arguments)},_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=function(){return(_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=Module.asm.ts_tree_cursor_start_index_wasm).apply(null,arguments)},_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=function(){return(_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=Module.asm.ts_tree_cursor_end_index_wasm).apply(null,arguments)},_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=function(){return(_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=Module.asm.ts_tree_cursor_current_field_id_wasm).apply(null,arguments)},_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=function(){return(_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=Module.asm.ts_tree_cursor_current_node_wasm).apply(null,arguments)},_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=function(){return(_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=Module.asm.ts_node_symbol_wasm).apply(null,arguments)},_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=function(){return(_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=Module.asm.ts_node_field_name_for_child_wasm).apply(null,arguments)},_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=function(){return(_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=Module.asm.ts_node_grammar_symbol_wasm).apply(null,arguments)},_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=function(){return(_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=Module.asm.ts_node_child_count_wasm).apply(null,arguments)},_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=function(){return(_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=Module.asm.ts_node_named_child_count_wasm).apply(null,arguments)},_ts_node_child_wasm=Module._ts_node_child_wasm=function(){return(_ts_node_child_wasm=Module._ts_node_child_wasm=Module.asm.ts_node_child_wasm).apply(null,arguments)},_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=function(){return(_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=Module.asm.ts_node_named_child_wasm).apply(null,arguments)},_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=function(){return(_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=Module.asm.ts_node_child_by_field_id_wasm).apply(null,arguments)},_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=function(){return(_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=Module.asm.ts_node_next_sibling_wasm).apply(null,arguments)},_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=function(){return(_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=Module.asm.ts_node_prev_sibling_wasm).apply(null,arguments)},_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=function(){return(_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=Module.asm.ts_node_next_named_sibling_wasm).apply(null,arguments)},_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=function(){return(_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=Module.asm.ts_node_prev_named_sibling_wasm).apply(null,arguments)},_ts_node_parent_wasm=Module._ts_node_parent_wasm=function(){return(_ts_node_parent_wasm=Module._ts_node_parent_wasm=Module.asm.ts_node_parent_wasm).apply(null,arguments)},_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=function(){return(_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=Module.asm.ts_node_descendant_for_index_wasm).apply(null,arguments)},_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=function(){return(_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=Module.asm.ts_node_named_descendant_for_index_wasm).apply(null,arguments)},_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=function(){return(_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=Module.asm.ts_node_descendant_for_position_wasm).apply(null,arguments)},_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=function(){return(_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=Module.asm.ts_node_named_descendant_for_position_wasm).apply(null,arguments)},_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=function(){return(_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=Module.asm.ts_node_start_point_wasm).apply(null,arguments)},_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=function(){return(_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=Module.asm.ts_node_end_point_wasm).apply(null,arguments)},_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=function(){return(_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=Module.asm.ts_node_start_index_wasm).apply(null,arguments)},_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=function(){return(_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=Module.asm.ts_node_end_index_wasm).apply(null,arguments)},_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=function(){return(_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=Module.asm.ts_node_to_string_wasm).apply(null,arguments)},_ts_node_children_wasm=Module._ts_node_children_wasm=function(){return(_ts_node_children_wasm=Module._ts_node_children_wasm=Module.asm.ts_node_children_wasm).apply(null,arguments)},_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=function(){return(_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=Module.asm.ts_node_named_children_wasm).apply(null,arguments)},_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=function(){return(_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=Module.asm.ts_node_descendants_of_type_wasm).apply(null,arguments)},_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=function(){return(_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=Module.asm.ts_node_is_named_wasm).apply(null,arguments)},_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=function(){return(_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=Module.asm.ts_node_has_changes_wasm).apply(null,arguments)},_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=function(){return(_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=Module.asm.ts_node_has_error_wasm).apply(null,arguments)},_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=function(){return(_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=Module.asm.ts_node_is_error_wasm).apply(null,arguments)},_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=function(){return(_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=Module.asm.ts_node_is_missing_wasm).apply(null,arguments)},_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=function(){return(_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=Module.asm.ts_node_parse_state_wasm).apply(null,arguments)},_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=function(){return(_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=Module.asm.ts_node_next_parse_state_wasm).apply(null,arguments)},_ts_query_matches_wasm=Module._ts_query_matches_wasm=function(){return(_ts_query_matches_wasm=Module._ts_query_matches_wasm=Module.asm.ts_query_matches_wasm).apply(null,arguments)},_ts_query_captures_wasm=Module._ts_query_captures_wasm=function(){return(_ts_query_captures_wasm=Module._ts_query_captures_wasm=Module.asm.ts_query_captures_wasm).apply(null,arguments)},___cxa_atexit=Module.___cxa_atexit=function(){return(___cxa_atexit=Module.___cxa_atexit=Module.asm.__cxa_atexit).apply(null,arguments)},___errno_location=function(){return(___errno_location=Module.asm.__errno_location).apply(null,arguments)},_isalpha=Module._isalpha=function(){return(_isalpha=Module._isalpha=Module.asm.isalpha).apply(null,arguments)},_isspace=Module._isspace=function(){return(_isspace=Module._isspace=Module.asm.isspace).apply(null,arguments)},_iswdigit=Module._iswdigit=function(){return(_iswdigit=Module._iswdigit=Module.asm.iswdigit).apply(null,arguments)},_iswalpha=Module._iswalpha=function(){return(_iswalpha=Module._iswalpha=Module.asm.iswalpha).apply(null,arguments)},_iswblank=Module._iswblank=function(){return(_iswblank=Module._iswblank=Module.asm.iswblank).apply(null,arguments)},_iswlower=Module._iswlower=function(){return(_iswlower=Module._iswlower=Module.asm.iswlower).apply(null,arguments)},_iswupper=Module._iswupper=function(){return(_iswupper=Module._iswupper=Module.asm.iswupper).apply(null,arguments)},_memchr=Module._memchr=function(){return(_memchr=Module._memchr=Module.asm.memchr).apply(null,arguments)},_strlen=Module._strlen=function(){return(_strlen=Module._strlen=Module.asm.strlen).apply(null,arguments)},_strcmp=Module._strcmp=function(){return(_strcmp=Module._strcmp=Module.asm.strcmp).apply(null,arguments)},_strncpy=Module._strncpy=function(){return(_strncpy=Module._strncpy=Module.asm.strncpy).apply(null,arguments)},_tolower=Module._tolower=function(){return(_tolower=Module._tolower=Module.asm.tolower).apply(null,arguments)},_towlower=Module._towlower=function(){return(_towlower=Module._towlower=Module.asm.towlower).apply(null,arguments)},_towupper=Module._towupper=function(){return(_towupper=Module._towupper=Module.asm.towupper).apply(null,arguments)},_setThrew=function(){return(_setThrew=Module.asm.setThrew).apply(null,arguments)},stackSave=function(){return(stackSave=Module.asm.stackSave).apply(null,arguments)},stackRestore=function(){return(stackRestore=Module.asm.stackRestore).apply(null,arguments)},stackAlloc=function(){return(stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},__Znwm=Module.__Znwm=function(){return(__Znwm=Module.__Znwm=Module.asm._Znwm).apply(null,arguments)},__ZdlPv=Module.__ZdlPv=function(){return(__ZdlPv=Module.__ZdlPv=Module.asm._ZdlPv).apply(null,arguments)},__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev=function(){return(__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev=Module.asm._ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev).apply(null,arguments)},__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm=function(){return(__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm=Module.asm._ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm).apply(null,arguments)},__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm=function(){return(__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm=Module.asm._ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm).apply(null,arguments)},__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm=function(){return(__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm=Module.asm._ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm).apply(null,arguments)},__ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm=Module.__ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm=function(){return(__ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm=Module.__ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm=Module.asm._ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm).apply(null,arguments)},__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc=function(){return(__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc=Module.asm._ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc).apply(null,arguments)},__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev=Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev=function(){return(__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev=Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev=Module.asm._ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev).apply(null,arguments)},__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw=Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw=function(){return(__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw=Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw=Module.asm._ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw).apply(null,arguments)},__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6resizeEmw=Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6resizeEmw=function(){return(__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6resizeEmw=Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6resizeEmw=Module.asm._ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6resizeEmw).apply(null,arguments)},dynCall_jiji=Module.dynCall_jiji=function(){return(dynCall_jiji=Module.dynCall_jiji=Module.asm.dynCall_jiji).apply(null,arguments)},_orig$ts_parser_timeout_micros=Module._orig$ts_parser_timeout_micros=function(){return(_orig$ts_parser_timeout_micros=Module._orig$ts_parser_timeout_micros=Module.asm.orig$ts_parser_timeout_micros).apply(null,arguments)},_orig$ts_parser_set_timeout_micros=Module._orig$ts_parser_set_timeout_micros=function(){return(_orig$ts_parser_set_timeout_micros=Module._orig$ts_parser_set_timeout_micros=Module.asm.orig$ts_parser_set_timeout_micros).apply(null,arguments)},_stderr=Module._stderr=11824,calledRun;function callMain(e=[]){var t=resolveGlobalSymbol("main").sym;if(t){e.unshift(thisProgram);var r=e.length,_=stackAlloc(4*(r+1)),s=_>>2;e.forEach((e=>{HEAP32[s++]=stringToUTF8OnStack(e)})),HEAP32[s]=0;try{var n=t(r,_);return exitJS(n,!0),n}catch(e){return handleException(e)}}}Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,dependenciesFulfilled=function e(){calledRun||run(),calledRun||(dependenciesFulfilled=e)};var dylibsLoaded=!1;function run(e=arguments_){function t(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(e),postRun()))}runDependencies>0||!dylibsLoaded&&(loadDylibs(),dylibsLoaded=!0,runDependencies>0)||(preRun(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),t()}),1)):t()))}if(LDSO.init(),Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run();const C=Module,INTERNAL={},SIZE_OF_INT=4,SIZE_OF_CURSOR=3*SIZE_OF_INT,SIZE_OF_NODE=5*SIZE_OF_INT,SIZE_OF_POINT=2*SIZE_OF_INT,SIZE_OF_RANGE=2*SIZE_OF_INT+2*SIZE_OF_POINT,ZERO_POINT={row:0,column:0},QUERY_WORD_REGEX=/[\w-.]*/g,PREDICATE_STEP_TYPE_CAPTURE=1,PREDICATE_STEP_TYPE_STRING=2,LANGUAGE_FUNCTION_REGEX=/^_?tree_sitter_\w+/;var VERSION,MIN_COMPATIBLE_VERSION,TRANSFER_BUFFER,currentParseCallback,currentLogCallback;class ParserImpl{static init(){TRANSFER_BUFFER=C._ts_init(),VERSION=getValue(TRANSFER_BUFFER,"i32"),MIN_COMPATIBLE_VERSION=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32")}initialize(){C._ts_parser_new_wasm(),this[0]=getValue(TRANSFER_BUFFER,"i32"),this[1]=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32")}delete(){C._ts_parser_delete(this[0]),C._free(this[1]),this[0]=0,this[1]=0}setLanguage(e){let t;if(e){if(e.constructor!==Language)throw new Error("Argument must be a Language");{t=e[0];const r=C._ts_language_version(t);if(re.slice(t,_);else{if("function"!=typeof e)throw new Error("Argument must be a string or a function");currentParseCallback=e}this.logCallback?(currentLogCallback=this.logCallback,C._ts_parser_enable_logger_wasm(this[0],1)):(currentLogCallback=null,C._ts_parser_enable_logger_wasm(this[0],0));let _=0,s=0;if(r&&r.includedRanges){_=r.includedRanges.length,s=C._calloc(_,SIZE_OF_RANGE);let e=s;for(let t=0;t<_;t++)marshalRange(e,r.includedRanges[t]),e+=SIZE_OF_RANGE}const n=C._ts_parser_parse_wasm(this[0],this[1],t?t[0]:0,s,_);if(!n)throw currentParseCallback=null,currentLogCallback=null,new Error("Parsing failed");const a=new Tree(INTERNAL,n,this.language,currentParseCallback);return currentParseCallback=null,currentLogCallback=null,a}reset(){C._ts_parser_reset(this[0])}setTimeoutMicros(e){C._ts_parser_set_timeout_micros(this[0],e)}getTimeoutMicros(){return C._ts_parser_timeout_micros(this[0])}setLogger(e){if(e){if("function"!=typeof e)throw new Error("Logger callback must be a function")}else e=null;return this.logCallback=e,this}getLogger(){return this.logCallback}}class Tree{constructor(e,t,r,_){assertInternal(e),this[0]=t,this.language=r,this.textCallback=_}copy(){const e=C._ts_tree_copy(this[0]);return new Tree(INTERNAL,e,this.language,this.textCallback)}delete(){C._ts_tree_delete(this[0]),this[0]=0}edit(e){marshalEdit(e),C._ts_tree_edit_wasm(this[0])}get rootNode(){return C._ts_tree_root_node_wasm(this[0]),unmarshalNode(this)}getLanguage(){return this.language}walk(){return this.rootNode.walk()}getChangedRanges(e){if(e.constructor!==Tree)throw new TypeError("Argument must be a Tree");C._ts_tree_get_changed_ranges_wasm(this[0],e[0]);const t=getValue(TRANSFER_BUFFER,"i32"),r=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),_=new Array(t);if(t>0){let e=r;for(let r=0;r0){let r=t;for(let t=0;t0){let r=t;for(let t=0;t0){let e=o;for(let t=0;t0){if("string"!==s[0].type)throw new Error("Predicates must begin with a literal value");const t=s[0].value;let r,_=!0,n=!0;switch(t){case"any-not-eq?":case"not-eq?":_=!1;case"any-eq?":case"eq?":if(3!==s.length)throw new Error(`Wrong number of arguments to \`#${t}\` predicate. Expected 2, got ${s.length-1}`);if("capture"!==s[1].type)throw new Error(`First argument of \`#${t}\` predicate must be a capture. Got "${s[1].value}"`);if(n=!t.startsWith("any-"),"capture"===s[2].type){const t=s[1].name,r=s[2].name;m[e].push((function(e){let s=[],a=[];for(const _ of e)_.name===t&&s.push(_.node),_.name===r&&a.push(_.node);let o=(e,t,r)=>r?e.text===t.text:e.text!==t.text;return n?s.every((e=>a.some((t=>o(e,t,_))))):s.some((e=>a.some((t=>o(e,t,_)))))}))}else{r=s[1].name;const t=s[2].value;let a=e=>e.text===t,o=e=>e.text!==t;m[e].push((function(e){let t=[];for(const _ of e)_.name===r&&t.push(_.node);let s=_?a:o;return n?t.every(s):t.some(s)}))}break;case"any-not-match?":case"not-match?":_=!1;case"any-match?":case"match?":if(3!==s.length)throw new Error(`Wrong number of arguments to \`#${t}\` predicate. Expected 2, got ${s.length-1}.`);if("capture"!==s[1].type)throw new Error(`First argument of \`#${t}\` predicate must be a capture. Got "${s[1].value}".`);if("string"!==s[2].type)throw new Error(`Second argument of \`#${t}\` predicate must be a string. Got @${s[2].value}.`);r=s[1].name;const a=new RegExp(s[2].value);n=!t.startsWith("any-"),m[e].push((function(e){const t=[];for(const _ of e)_.name===r&&t.push(_.node.text);let s=(e,t)=>t?a.test(e):!a.test(e);return 0===t.length?!_:n?t.every((e=>s(e,_))):t.some((e=>s(e,_)))}));break;case"set!":if(s.length<2||s.length>3)throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${s.length-1}.`);if(s.some((e=>"string"!==e.type)))throw new Error('Arguments to `#set!` predicate must be a strings.".');i[e]||(i[e]={}),i[e][s[1].value]=s[2]?s[2].value:null;break;case"is?":case"is-not?":if(s.length<2||s.length>3)throw new Error(`Wrong number of arguments to \`#${t}\` predicate. Expected 1 or 2. Got ${s.length-1}.`);if(s.some((e=>"string"!==e.type)))throw new Error(`Arguments to \`#${t}\` predicate must be a strings.".`);const o="is?"===t?u:d;o[e]||(o[e]={}),o[e][s[1].value]=s[2]?s[2].value:null;break;case"not-any-of?":_=!1;case"any-of?":if(s.length<2)throw new Error(`Wrong number of arguments to \`#${t}\` predicate. Expected at least 1. Got ${s.length-1}.`);if("capture"!==s[1].type)throw new Error(`First argument of \`#${t}\` predicate must be a capture. Got "${s[1].value}".`);for(let e=2;ee.value));m[e].push((function(e){const t=[];for(const _ of e)_.name===r&&t.push(_.node.text);return 0===t.length?!_:t.every((e=>l.includes(e)))===_}));break;default:c[e].push({operator:t,operands:s.slice(1)})}s.length=0}}Object.freeze(i[e]),Object.freeze(u[e]),Object.freeze(d[e])}return C._free(r),new Query(INTERNAL,_,o,m,c,Object.freeze(i),Object.freeze(u),Object.freeze(d))}static load(e){let t;if(e instanceof Uint8Array)t=Promise.resolve(e);else{const r=e;if("undefined"!=typeof process&&process.versions&&process.versions.node){const e=require("fs");t=Promise.resolve(e.readFileSync(r))}else t=fetch(r).then((e=>e.arrayBuffer().then((t=>{if(e.ok)return new Uint8Array(t);{const r=new TextDecoder("utf-8").decode(t);throw new Error(`Language.load failed with status ${e.status}.\n\n${r}`)}}))))}return t.then((e=>loadWebAssemblyModule(e,{loadAsync:!0}))).then((e=>{const t=Object.keys(e),r=t.find((e=>LANGUAGE_FUNCTION_REGEX.test(e)&&!e.includes("external_scanner_")));r||console.log(`Couldn't find language function in WASM file. Symbols:\n${JSON.stringify(t,null,2)}`);const _=e[r]();return new Language(INTERNAL,_)}))}}class LookaheadIterable{constructor(e,t,r){assertInternal(e),this[0]=t,this.language=r}get currentTypeId(){return C._ts_lookahead_iterator_current_symbol(this[0])}get currentType(){return this.language.types[this.currentTypeId]||"ERROR"}delete(){C._ts_lookahead_iterator_delete(this[0]),this[0]=0}resetState(e){return C._ts_lookahead_iterator_reset_state(this[0],e)}reset(e,t){return!!C._ts_lookahead_iterator_reset(this[0],e[0],t)&&(this.language=e,!0)}[Symbol.iterator](){const e=this;return{next:()=>C._ts_lookahead_iterator_next(e[0])?{done:!1,value:e.currentType}:{done:!0,value:""}}}}class Query{constructor(e,t,r,_,s,n,a,o){assertInternal(e),this[0]=t,this.captureNames=r,this.textPredicates=_,this.predicates=s,this.setProperties=n,this.assertedProperties=a,this.refutedProperties=o,this.exceededMatchLimit=!1}delete(){C._ts_query_delete(this[0]),this[0]=0}matches(e,t,r,_){t||(t=ZERO_POINT),r||(r=ZERO_POINT),_||(_={});let s=_.matchLimit;if(void 0===s)s=0;else if("number"!=typeof s)throw new Error("Arguments must be numbers");marshalNode(e),C._ts_query_matches_wasm(this[0],e.tree[0],t.row,t.column,r.row,r.column,s);const n=getValue(TRANSFER_BUFFER,"i32"),a=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),o=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),l=new Array(n);this.exceededMatchLimit=!!o;let i=0,u=a;for(let t=0;te(s)))){l[i++]={pattern:r,captures:s};const e=this.setProperties[r];e&&(l[t].setProperties=e);const _=this.assertedProperties[r];_&&(l[t].assertedProperties=_);const n=this.refutedProperties[r];n&&(l[t].refutedProperties=n)}}return l.length=i,C._free(a),l}captures(e,t,r,_){t||(t=ZERO_POINT),r||(r=ZERO_POINT),_||(_={});let s=_.matchLimit;if(void 0===s)s=0;else if("number"!=typeof s)throw new Error("Arguments must be numbers");marshalNode(e),C._ts_query_captures_wasm(this[0],e.tree[0],t.row,t.column,r.row,r.column,s);const n=getValue(TRANSFER_BUFFER,"i32"),a=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),o=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),l=[];this.exceededMatchLimit=!!o;const i=[];let u=a;for(let t=0;te(i)))){const e=i[_],r=this.setProperties[t];r&&(e.setProperties=r);const s=this.assertedProperties[t];s&&(e.assertedProperties=s);const n=this.refutedProperties[t];n&&(e.refutedProperties=n),l.push(e)}}return C._free(a),l}predicatesForPattern(e){return this.predicates[e]}didExceedMatchLimit(){return this.exceededMatchLimit}}function getText(e,t,r){const _=r-t;let s=e.textCallback(t,null,r);for(t+=s.length;t0))break;t+=_.length,s+=_}return t>r&&(s=s.slice(0,_)),s}function unmarshalCaptures(e,t,r,_){for(let s=0,n=_.length;s{ParserImpl.init(),resolveInitPromise()}})))}}return Parser}();"object"==typeof exports&&(module.exports=TreeSitter); diff --git a/vendored_parsers/tree-sitter-elm/docs/js/tree-sitter.wasm b/vendored_parsers/tree-sitter-elm/docs/js/tree-sitter.wasm deleted file mode 100644 index 935549d76b0fb8f0183bbcee13dfad192b6278c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190289 zcmdqK3zS{gdEa;TIrlmD&ddccAV&lwoO=k{fDD+B%7V1WSU3ntfF@;W)oiP}>Ka1e zh{Vj`F@qsUIxI0V8Jmurgm#sbiDer})lhZJhILifN#q(yR7I)PSZ-`rek4&`*HKcZ zkzLi18{6#f|KI1_d*=a=in3PMDj##sJ&(P={k^|$e|w+g%;obT;h#b0v1eA!U0D8> zW1;!E?`q5^;YY)*kA|z^>Z9pZ{S8->N3*L}tH1Gb@@RuAy4%!|dr4BAa?SU+#A(~N z^+2aO(@U+Z&*~Rv+12N+hUXql`K!zRCmFrPwe;Dm;aQq`7HFPJ1lM!vPi2E_@xqnn znGarETTeQ-Jay*sxrNIY&Rn|u#KrZ6OKXc)&MiLmj?RZ3TX<^i-1=hDy1^4|p18cY zxSVv=+%1deFP~jIcWHg`!ou3(<#XS?xbVc{nM+Bco4Y4&KEAlVaN*)p$((NF3)}B3 zoV&bm{^Es;>lZJaJDc?M*xre!&M%%nd+C{l51xBG$!-9dU_ZNZ@$zEq{kHYB#l?lo z=hoL3*A_0FS-ZTraQ4i~$_LM!T~69+etzgx_IsaZDd!2 zE>ABk0L#TSU^#PnF}v!K_7@h`&wOxYvA)(m_1;Img~xgeMn`qo@3-RHY1n9NY@}-O zEei|hEXeG@?NT;)ABWWbvW;WGMLpIe+c$DWk4O7h!vR(*jnr72kXtcAwT1b+R zG_$~Iv!8@8mF(WrNRmb~rNc(jZf5-Dza;5~y|;uk1b)zcmqzI+NqgMlN~W$_bj2l} zZ_XemDR9ju{XW<9Pd`ohn+kyHpJtP{Xvf#}$G`Z~0t* z%0z!&{s%t16b~PZhmXd?Yrp7w*Q>*?`q!u9;j=mKvTkHdn`od4j(m4&kxpS-Z1ycllXbZ`C4I(+F{FQt1XZ(Uhjy9_5J ze>&at#)r-=uE6Jhhh&CXBU%abb4mx!jtEdw+Pbs+@&*8j~6O_`qN>2=j@qF>rbxLy!iuR z@93S&>ucvOpe@aUAMpTUWA!VOT=AzS?pH5fIkWQQh-5qj+0S=jfod8&df z`M#iWT3MgH2su8I&eXrFVg9MK&6RT(&LLmvZcZzNf)&el@_nh;ue!Q;!KxaK|2URG zvY&i!Iyb)W$Kv%D(zkKFrsRU;Kz2$4#7^qX?@9BWp15-E@;TW9Kl5RWsRyuj5o3Gd z;$zjFjdT}p`wl~2kB`4@l=z~o=GiAuBy_i?!{zwMA6bh;lsvh1ISN_4^@o;%$y*Ug z@$Mg3NGI<`0W+Nc+O*n!bNym``Twy9P2PVTbG`7Pb8D9c<~j6|+xh))dp#f!8E?2grG8+H$7*yTEgFrL8xzBBCZsNwz+0Gc2t@`MH8ut_p zW>kf4@9$YJ_%&6}*6_*xYUqNOv&-Lk1`qDP41NFj_ZBbX7cV9s4^#eKI*Rx&LUZA}El1y+pP=t-}lb@uOy!g@B2EN`PPMn$JZ`CweZ1b?mzE;l1mSLolPEB(0gwE z{`Wm}_I&c+h6lgS=I)Xkvvy_i{`1LChHs~_hrS-P-6=ow{`Z|de?Iwd!q+>}Z@u*7 zEZ1UQTN&3__l0LPSq+Ez3{jYBf)thW)0;;EyS8t5}H`&~A@K5sR{_{^I zKN0$mJ#*oY!-xw@=a$YT9}922xOVPwMPJqfaO~z7=m*1a%L59ZwmkGw=%jxubngtw z?P+iRKM#LC{CN1w;fKRt41Xc~+3;u6Ka<||1L@1*&xMbMxBkiW`SgDbe(Y=8lOn@`>p$yB%(?p;? z(9rM`pf4H#&J&!^70vhXX0z<@e^_U*8Myy@*N{YaADkaqJ-Xrb5RX@A_~5Cr+!z|G_h8ePi6;WW7`O}Hh{q=vcA1)kQB8i&$@McOz~CPR=RK)AC^YhiWYu$gI)&GG-bdfbW;p?N9q z7#$#BsR+47``|R_Y2MxzhEt&%s2fLMWTJ+-<@fX^r#8=N@A0T$&rRJ?L%(bcQ`=1iC%~Bh_5x= z49upHHh4zd(-^_5yKn&m?)84K5t>(TPs+h^(LM-8#8rKMUxPCmT%aka{-XgNf;h+1 zkB0KwR%d?^fOi=@1Y{NyN-@>YcRAVR~1_wi^_{+Pu1h)+MN z(?`-1w3VE0oIpvufRZTxSOsval*Ge<4dD5_I2Cxn-SPBu;1CFx;HacLG?+zVC6J#3 z9iI&;Oe^e_pB2#M=aZ#8yFKO6y-P(CA-iR%XbrBoM~0FLHQ?i6l+_TFg8pHq!|5`4 z7&1sK7gm9&SE)8`9lKvQX!&@0j3bBrd2%wjE3?cU8472Ba-?c{fTk;@cn&(wUjYJBlix@nkYCu9=<&{`D|0}o%oQ|^kZNKjOZ@X+2gVMr_<^o zw>H^Us_ub!)D%5c?}xG>crzW)NbX>wN%cD(oOKXC$73wiG^prpG(rY-%8kZ*M>uWe ziLsi}bSn6R&&L5YV*K_+N89vL8r+GX( zD1G2-hmNO*;@J`LwXYqMNcrr}vf1IW7N@Tq`%ifiUtY(F} zml~RkK5k5pJi{uQ1AdojnCM|d1CrBGl0y>dwy+$3LO+oSR#4wQi21VWc2=gN2iv0u zd6mpY-|jk z!~SHs&<=(}-n=WDj|aRm{p!R6FO+#yE4kV@5Jf)e{pBpQP{-Ewd2%!vpxiW0^kxSO z5qTkR97z()xV=-@y$rZ!bcdOkPSO*c^5n9NJv!1i9z}+Iaxp5%tenNMl{F3JpPRx6 zNlE3n6oF=&SFYeNNehPZ-K)b^nGS=^1>^oQsz~o~YyF|=jMu-|!;Hrl8&{S9EYITW zSSmNbTdnmqzeP((MVUS@4TlUd%CKy?arJW1GP&PPi&EPDRlQ~p64c?6qhhes{k(~e zYLwDMp*)G*;*G34uv+L*P=OrLvIeB4jihGz?)UHiBG=jX)q(68@!Z{e+R@u{jc@J*3ulTi&9 zrLf7i1CQ-B;%7?Hghg~zWU+@df(PpAphEVBEjJAIshw5Ds<^%zUfAapdC!02o~&N`vM!+8w$o0gFri7M`m~sF5O5UEW$oJh1f^&5Xjm{ z2fKYwkG&o$Rlxh%U^i|*_wjvte=nqMw6V<|HUkURu^KKq<^B~6BzAGw0t_@R3W<}} zA(R9W44#RC8ChAm3~j{?0BCcwe+6w`-o4Dr{C7t*SqvQ-628j4NJLG&B=5;%$H1Z&XM4!-N2bFq zbwDHW#<1&<=P5p`j5`**OzsJKpX>L6h4hYar2JV7Q0ty>M88fJiFy-`f)JCe2rt7u zw6Dh%r4AgK0s;>1TzVoO$SdN`py=zssM>1j&~RG%gDZ2x8HO~M?^1YFfbWI^nma;k zD3Z=7zGJYoSIn+KsO)HR)Vf+dw&0XCLnp53Tp8}RQc=`CtA2U-NV#Et@WY{gco&$? zfJVUN+2NGOI)=ItdJdMJmZ`bV#4r^rV9Mq?-{m?Y_H<0=<;yVp7bNOuFKpT2dexD|mCbUco> zG0E=kEfrn)(tB%Ui+AI{`5x({J^5aVmt-R0x2PeWt`r-Z2x=U`=Rvily)u{sI4%{i zo!oYY7Q5h0wLu~PL@m#xttR#uDLxJNq1$j}rW+dOEM!odibHXwM3$R18~aa$=~T8w zI0w#~zhXsfOB7?Eh};Th@N=g+N6>N-1Gf-#Oh6?kLirz%AZfmy)Y2@j6osVIBsd@zv4V`5ULS}Setl45 zVPHcE>J*koEsTFvvtMp7F^Pv15E0a45P))sK|@>8YW!UU97~A_-fpewPT`&6flg;i z*2cGhRaVJK2JwV|=djefC!FZ@{%Hv9D$kXX<&XuGg)f`yMH`0aXT!D%Zjb@!i|_Ns z;k2)K0>x2wmIjV9^$Hmzbfq6@9Zu)&%H)Y;y3h4SOy8-44sCYov|F@tD1BK!9B`gQ zgZAp%Bg6S17)+x=d5Ycu^D$bpAUOM=6VLpNo;p9qT9( z?2t|Eps9*>PQEyAlQ(Y5|00v#R^GT>rt8B7W{+2rqD3<;(w`HV^u{=wO1rYc3K|^+ zR-LO?1vz+F?irq>QD{J4l8dQ zkEV`R^d4PpjaKj-W3-ZvqZI|T@T;N~gSjbMd4qU#{2HjQq7^BiDki0>RyKPSk`mP4 zEF^WXg4Y^@mAV~;B#u2WVTt@{IiGzU6v9Yp72gn?tYCIX#6hTmPlcuLPJJf_(m$H9H2c zmiY5!Z>fBGRYw?`B>t5mxk6vcf2Q@r07c+U=!4rpeh7)hGcOM*uLFF?3JXhueX1Hq z2S1mmPbrff$LI_Lz6q9F7{%pdpo~0QS9`?i5)9H%3=VNDgRb+Q@QH0q9da7>EzVZ=(lc`-bnzit#w?j~2GF>?l(p zLQ9uSq+1IyT!LdYUnMiwJA57QUHE!k)2@J7I5Z#Cv!# z%NiT>nP;M_VK1lH$`RZZM_A_IB5_2UrpAO8Cq@#BBO=WsN3`IG3D%*j$S-2PiX&Q) zBT(UE+B0=JsRHMQ2_(TCmv$Y*#07#5PDkRcxg3e-NEg&fyH*Tav=#)&_&?NgD8Eml zY~f`F-Ll(9ipM}9EF|!2c?M~Q$7Vt}o(Dw$g(mPs#|W~KZmOH4TS0jTnkv0YbD#KC zi@KYR=N*8*Jrt>LF=SAV<~VuvF0@NHxp8fSe;Rk8j8oeP-TxHG$a`gfsl2pWe&NS| z>BpOwK}Wff_X@%aaGc}Mb;#mra-=U_@8JB(O#xA0Yf}43*{-TsV8s>e!M-krG`u#4r_=cnx23SztAm ziFpP^d;>iJjDDN|h2fD=o8U9L5*o24pW=2H6sQ95fE*hWN?+13hrFTmghr2oX=0}M zIcg_J^Sp*tGRtwo&reDpjL0e5^vP^YJ*n?Vq%a~<95`G7P$=A`2b9OH$rA?~y%02- zcnFa8LH-KwG75QUtxDe znFF5mY#)ABk(Rk8$1D?q2Y_4UA*F4f20LYYRU|;ZIHMqess%|U&qXz1dIH&f zcQ5kUn6?42hM|Smu>%Yw(3Qez>Y$183eV`uTr*Ic(C*O<1J_{^T-VHqsHRO+;T!z9!xM41jYQq@H7VO*gt zh>}k!L=j6O!ldUg?AU}{`QvJIQc)8qgxGKplTYa6=xQE__p zqHIGIt4S=y@NnI#>$4DcoR6-o44F{JnDUNbAqj(0I%DW)J(1sxj~HENbOnqZSq`3+ z_SSpz!#3?r*womV`I?Nb?G2CW8JSXPAl2XSi*T?0Wk#^sPf;n7w8=+pOs)1}=?+o> zvgBrA=cTsQ<$grB_I=#0kp>Nc72M1BtdzK^%Fyt&A*?4Y%0W4oQ~v}5KCll3?pN$@ zW^!of)d79OHXe{7ex8{(0_I#)7H^0w)s4LC+zL7tiga<2c^GUyr#^S07W6Yo#$YBR zw;g}on8IA}n4ESBvqr?C{dB9-E+qzk!5=z^uS_|(M3h4S4+t*1lwyOV{6_xY!K0Lg zAQhtwT~o=MK@Fb90=hx^YgM@hC{pSIxuU3T5~$kfiZEc73W+Y05@Nl_s4Z4W!g6)NhyHL@F~XY0h=FZ>hWk zUrsy$vlGyUl4>!l_f*Q6BNh_P8o;s+Y&%%1;eDpff60Q^~ zh`n@RqCxm<&Y-Kr- z1j1I%WhMGLz&#!8j#-W#iDImIU^$H0_8>+q=a<0hCYHn3m|!_+9j6=>$-;8XK#nD% zm3JzZ10q;1O0hN8jajY*%e6)<*LVP*$}FdTE0$}S<)kQzmQaoH5X)I9z;eWi;vF9( zWmeHeC4!YelIjyrZ4yYPa70N@e?TY!w|t#TD4*aV6WssRue&R zkCh;#2m*qPAS5xG$B;Xkm&x$B$AW;8u5FyAJ-`DFpYl$d6fSPunEMS_3fI%D6>Sm~ zEo{QDRM1St3#Znzl+MU3pl1nb#q?sP$n?nCplFKeTN)NA!N~QI+eb`~Q$S;*K>7w8 z3_=Jx<;%kKb`H8VrxD!jho1E?1sYV3oEDYVbZyE}%jUF-&${NbuJ|mI6^~EbilfWL zXE7Xy&z$_L$_FI3RelNfsrihT=OqCZpTRVn`7GPcXR1tzY{;2hzcHURDn6S?%LU}3 zQnn_=90Vn4&Qr|=`32yBYK^Ti-b2`r{pT~E1>fVWw|opj_2rrzO7^#kg5!LrsmgFL_qzB zzVU{X9Wy-*27<${Ir!RKOWtI1M&1CzZ508$F<78b4X#y|tZG3s(g{?@tDfLQFrPO! zkxL30Fc=-?#=(emLES#A0SBBK=P(i>5w}!_x!Iae#U}M~u@U9a<#v7( z+9LgL%5MyDg5R3bk2SwZWk-IagB|&e>#R(Y9p1!mVwsxIBZ{!%pwIb$INi zJgCWpf6Flt+^HC-vco18FdG)kFxr0PkKQ;0QniKD=-3R8@<5V((vAv&@JDTsCFZD3 zJZvUsCL~9wv&h+eZt_VJtTX_7NinKD%gh4poGS7;BFwfW+1XN*= zmM}=kDgQopOHmHn+)~I*dm{^NS5t*RU`2D@ykY?cN40boi9D)Yxk@dmNC;x`UhlQH zr_)pn#`*TCgD^rpgWWGskxUDe|1del-@~Vb2F-*>K_%2I0O+ufZlTpnMH~J_bsS1p z(6FS(us&2mkdu`8#k~Q+y1QO8REQe;+>tH=n3V6XKfxCJU7NEmYKS$;UrUx}nh6&&$slFE{Mn@$GLd4+!4GJgF6kOR zU_>W|Gj+277@&T}Csn@y!*O$uvdQ2?a$WK*Uj+;Xy$@%%kr*L2>kfA^<* zP+~?3r6Cxc)S>LtuSN#fDQo(i;~`ZCo?ARk-gXkj%}EqHD%Ye7=)@b5bP!db%*d;W zfE07sZgCC9bz>Cf4Q6~*8T}^ptkTbV6~9W(UPI_JB&4_1VpFgP4t{xVR*Z1dLJ1(} z*+ggql=dX}?J@WaG*(D>6cK#YOzBl%0Xl}htb$vQ&t+-wz7w1j1^w(CSE$&hKUU3pupF_e%;04Ya^D@e?v z)&?ig2FF1;bzK-nUQ!?dhu(`fNWHEUBRDGOsNd30HBwzul^7MDus=6h2_cUY&W;zU zF56uW*6sDvo`Kq69`GZ8OVonA`0F7Xz&MXV^6} z*BmrtPPq$?z(!7CYC_{0E81EJ(fNHvPin14N1#$_jShBFYjZ28SF5#qiyoa~OY2TI zbx9pjZnbtF2U1`6j(Ze(d@WK6cCRXk=9zTT%|oE2>!i{%QDV#9J_h!Lb;? zcQ^*4do^L{X7C6MWb1h&QN`w1ROzu2)dE149d0-Co;Y8Y8|^Qf)hpk93cWQvrNqEU zgwZU__Y6`v!`-znPh&+FsL#Q1cdzZG*g79yPl_RZ5&ULG1y^8tfV~ zgB+>nh#VvuGF;?zqqgfwV^P>$QvH-#Lc|+bRMQjjSi%BL00OGyhNB%-szqZ86{eUY ziC%IPE5fIdR8diFH`cnHg^OC7CIs0S1purx9PlhB&lb1~n3k(HEpe4ou}dSy#Av?3>Tg!Bm(JUAnJhP;#@{G$>3h7h z>4*Xt?G#fTlzp)TNS0p>V3E4fa~k9`X2|Y6K@i}XRbIyib>(g=#!77yBtnmk zz>%E(({UtpqBgXMMzkOfiZsc)u%Jq`<)eGKSH^EZtDZpAr|FKrJ9zn)t7pkcsh;6k z8t`~*C^tf(b?wkZ!782-J@fAl1<>@CMNjGJ%DvAfJ*BL6&Q#jy5qV^!2_ zS&jB-!9irI6ndZYq^()LeR<}Vz+Si8{z;ihlfI<32G$_gve8H5RKB$fw=1(m%YeSw*W8Rj{8s+$ z5<+(sSL4)n6+(C6nHqy=L5PKYy9owKt;^R0fp6$*63NuQW>k(qzOivF91ogABcN7b zU}w{^C}*<;%4C$PQK4cto?R^utqsLr9^jZq?t8N=^0f^Rrr$h3^*G`XLvb%0VqLL) zfH|u$v;Y(4x#1ug$Gy*lBMfdu4uZXPMF39=@Nl`-c=p#|0kh+74%Dko_zkrm#$q$DefFm z8nK-^iU4-(k5P-|XYF}hI@K(xo@+aDV@^htRw~kwMYEh5UyuVR)rsc84;#}4Jp;9PbI{@wW&|1!N)0Dsj@qQpG(sXr6(#ZsxWx4{WX(yQKQs)P z8;FnU?gI#^Ye%bZ*zYp#tY*?3&BR(&CuB z+52K6ZEB4*3_@@Op0%7xyDotl%0QCgR5V+MJm&)fMLF`ZhxEole#WE<0F@t~*c6F+ z`d1)Zk~d%yM%2g|0LH5PAvPq!2bXWh7DW)vE1-DfczP|=l+C5!ZQz*?EyF!5jp8S( zMA+CTpVG=zZXQluh|3uwt^~2qUdAMQ_apzh7PJcWn%?HAj|G(j;+T4xO0($cc&VvI zwpw&m*!~-Momyqgx<)G7VHpw|TI}~Sv!Q+r=%!8{dhr#l*d?WQ^6nR30e4d;k8#PX zc>_Q4_(P@p$Bnb8kYj_V?=yKw*!LFRk4o}1OiUizoCpbyYK_^@{g zAonu&i1e5`q8LP>>PXUFafYTG$ZO$!;R|~o2|MU2_;*XZo8#MZ4$k9KyzmXPVCG(*qfsIwy#0-|0wCG@jlt<~H zs~qDfwMA7!(AM_B$SoPtSOJnw}*SQ zkg_*q&hKb4HQXzJ1Z)M;Yz#)erSJB_E$#10@9K0K0~ZON6jI0xL1U3{>@_2lXhAm5JLq7$0*t)Jg=@s| zdxgr`F}pDxD6j@y6jN)hV}r}u1(OgPo(3cw8}*KH59atAJYn##L3G_ z*G-%2v3rNLHG!8kpp0Fe2mM@UpTT7!VXS#@vk2eOq`~?+*tEJ0{iG6TN$>IJpeLX> zxqArTaJ|+EoE(Zefv2fr4SMC?=-knmWPF&aIoBe47XoyVT~4PA<33K(5FcZ7j*qT| zhj9iF80iDCDM9N?VU(IT?nADry(s0KYJqA$=gbRKxeM}H>6h1-bra5tk1*JBiwy=X znMM*tZdgZ0ug2FLjQ|}16-Gcg)5B^Iv}t@H!Hs8IEcEfbFxVVEg$0FzD0U|Kug7diIfM8~Fu2H`PJ4&$D`2l1={6VO1Gp2*3~@ix+5IZ%09^XOTGA;nfHf>QsAtMSAoHoTzp zzw99$42H9`qn=D4H0M93q?@*FrNpl{vOv@a#eE=>)N2v`nckBJ2WVn9sszCa+E&El z^lrF6x_M&f>}bMTLytc8Rrh$EcDu_nw`Km4&bA~$1J52iR{lDfHv+<6$CDdO<(an6 z;ske{5xj_#GsQHE{r{h%3`jrVcXAd37Q525G^MZvr0jIi(`G78&xru+cEZCTg&!(P zF+DlYi@rvJ?D0QrNTA5SJLDK(!zxQNUv2pM204aWa>hLhLzX67Re{tn|GCze%d#`< z$ER)BI)}4?*w1I^_=;Zzx?U;gmoYrzR&{()uTmj(5b3=r`eNJ z8$`=f&;6&bl*iUI*_xcxe#Ji){sYWjbC}@oO7@!Up=*h&-elcPId!4P%Bhv*>czC| zJ|u4BJ+opSddJxz3+)gpkw|XmrKQ1p=$zOMVFQw6aJM(9)9#008RibXzm37MFvTjA?^2p1FFi1OnOb4j2GkkcS?CwZ{go-8x4nb z-bO?$*_T0@=3@DamX zLRowV5-+ao5-+JtT0LM95p?-%A}XUsi6gf|I6|%;R}?VjE}@N`5!nh*qqHr+J}94Y3aPgrh$JeWiRlzatves*CHnHd2_#=uu90i^OcQSDN-+3Dvk7HZe@@ zEQfz-_J|ZWa$nmBDiv;x&F(Qf?xLZB$dyLf4on!Dh6tD&HZR9ROIPDoX~Nq0->BP> zhG{t*u>WpNJ5A-h?;XWBQ`QAfw(UtKZx1yq$DRjCglvDX48vJrpE=+@-0i7g*=w-w z_qfoZA5!XN=XM2Q22Wfd#ihbIs;*e_QN3Z6Im^qsry?H?&#eyGqEh7%K*jD8?yR#! zu7FT4y5;0=Y1*uanNpvawa(g2o@tY&2(5VRbdE?s!<kbWsew2Wt0a6dT5}BLY#N!G&orPZDLIIR z?bACk*6T-e!-dN9wMLf6x8UvS2_5=?CvhTa1YKC6X3@xZ8H@8P+N=qECRa-pWBcHsNc zk5{B0_~f{gp3p1sieBNMS2*wr*bvY~$6z}Ers6UO?;UOU4m)Lfg-Vi ze6@9g5vi*g)YS}Atx{JrE<)wU{K`mWOR-b^C5`0eP8F=1G?Lg((Gw&&oMD|!oWmKm zTiS?g*lydvsL=E*ZY!H{C4KK8!nl&gkmM9;ON5`ug*n*?Ik&$_-U*4Q<-C%VN#WiL zugGz-T-+jDH7s{Cm2fl43E|f5{FYj{cYdal0wxCJ+3wve+-_hb+@M-vKigSN_K~x` zG6Db0obxvt9ZqL`Yt>2-6c`dJLYFA90L$TOtD9 zYdV=1YqQmpM#_6Km8c1;|GG!zB76-r3j@Na1c(U2^}w>q(uVZ6Nf~MoT(%~P`=uhf z-I%FU;>ubL=rQ60DfyUeR3Ftv9#NItoD8g(2NP52fhf1t-gP7{$fw<*C;p! zvP67Lz>I;2Ap~H`?_g_@WU$n0^3~U*_g$$!>q~N@E8BU^xK=?wu4hY|j zTP@E^f7oclbtNzsT;K3ykW#SHmoQd6F$7Rrw90~-7{>=iU%Y;r%T)dp)Gej(3I}B> zIPf-vBH4)DTvIRw(+V!F$I*-92p?ew?}KmFXt5!@8lQNWrekpkX@7^-)T3B(%EYt5 zF}dCQ&6LGk9#7?&T0{b~SL6&B6?lTD<#Kqubl1>kzDSo0HV76kHsz&j`bCG)Hom^9 z9WV71$r6?rlN?9Q(tym}FDCMD`A_@Qrlz=mca$%F1XiwkVpYBNu1(QaaYV5ZmLh9! zq6$J3P9r8$c#(M{?>MZ0L10!f1EX5SKf*7@EwE&eLp>7ncO+6O@X~Vs1YG*qi$>0W z6XXef6Axpgb6#2Bp`%mk$$j3OgO2B zM>!KGPV1p5so`EtBwl5z5Y^K0G^cNPKFoMy7;y~vv;x#!scum!Gy!BTR^R0@$gFCR z1tCo5e=LZ?JN^gcAg;rL2xRyg3sNPn`i1Fv!{Qi)Y7j*;s6-tQweHdNX}SjW;Er6; ztaf{WW-wKi8@eN)_LrSAvi|A)QIi-gb=Ku*G9Ou64!uTKx#Uqe_d5!=^f&-L;oa;N z6goolFC;;GKQryz8RC&CVnNdF-78hnu{va&VjlgQ58_nRIJk_i1TL(kG~;CiI;Kc> z>Ch>5=X+jRT2hcM^s^#1?(?jz3b-Pd%%yJ(`$06!)T{ZduH#zfdt^@7(|0LupFG^- z$`L)sR2t8DQ)RBA^Qm7V#h|u1whJmJ5K{K$lWCFfrm0W42b)9f?Fqb!xcg&roLLUY zf1~d$Rdkh|^wjS{ zNv*xBlq07mD*S29jY_O^A!bLD%@Rr+E}=8swCy?;6{{`wgYJ(gyK*pZu1I>KR<0JE z&OFGt(Khc&=BrN^@XnmI4}UR6;J7iOPxl>3^W^OF#oQ|_CY&;<*hYEoS?Bm>pML=- zKdWYXu`P;Rr{kiQOwjU)i}Z?YkIEM9$dNIA5I)41d#_-HSN+QBc~kYDY50?5alu*U z$!)-Usf#H=7|_KVA)a#etKBjI(6B3u*81a9Vot{P@u?X6pgzm5k^v{Xq)8$kKAwJj z%2`5we3_gE7f?3kmqw>V7)B2_NH|OR=ECU-rc6V{o;~{ZOL(dID$dK~1+OC0l1BPKN%8 zc(||hzS{DZ&?sKHBZCIRJ&IzRU*TN^4xo#TAU)?P7&O|tfiWoPBSsoKDMJsKQlq89 zSHhFPzQWH#=~p^~Z`1Mf_*2I8=erTpDl3VYW}O<=BPqW?5tU4*A7paQfmZ!c%#s?Q z&vzqWU(oT36Lk1^-N(nPK7b_lF(M_C=WgR=)KBztf2WsrV~T5oEFL+o+WaWvkux;B z#J@HL-3NU|0u-5D8TL_tl?qheIaP{5l`Fi^QMmwuj7sX1t<{pU1kgz|fqm~Totkdl zCiTSZ^^sz_WP4PeYr+Q8UYboEzvKbNKvCfq)UQ$6plDg3{4hJA0!rMcPP0?D5tR~% zJW5a@I)sPz`MH-hn_qr0S>oC55_JGIkkbrH=S(#hb{OSrOC>fG7PKlf2B01f7Qq_&pgh|CZSpVlcmjO!}Gp^{;Q%Eh#Xz`R~2Thvh~E@ ztuCN4F+*JVnd$;~i5LF%h#2%q;asBHzZRKQ3JYb53DWgtwfOMw@|l?_eeo<(&-ZX{ z-SS_>_n%_f>3~#4cS#FqsMPo1L}*ckI&O@gx1H0(o_%IIZEl~ttELiAQkXbfHukKR zE$j{>mO(6tuNOMUf@soHLJh>UBzwalJQ}L4c*H0eXq0K)qzK>OH0`rK6 zspz;Z?}8C=o)B#0qUE8nklU#+<48tj{oCe8y-5l_$Q$4o2YpKRltsEG^G_M1FIy7W z``nVC=u(Ce1tCw9e9=KIKSd7f4{SiUM^r0uu>QctjEsOwMRF-9l(7DsK%GF_f`BKU zpw{jP1WtUCLmS!Q0r&O|XL%L1Q{~&Hp}ey2b;_;SbyxOu)F=5as@S3#S2a|n4n$0U zpg|)e=kv7EzsmYel1Z+zj2rUxPS8tlEufo0+Buc#f?73>^?{6N;fwxc{Mr{gGOE)M zCw`Q`1vxYTQacg`A|Jd|bkl4;C~%1pxZ7;m;5epAa_8?_F9^S+<4JEx3tfw)N&Cqh-cS=Tw-RQivmEnV8YA04zO}qp@{mrN%cmqEW z9$fCJ<#NMc^-Fs5I9IHPSsn)9wR4>~IP3k(9&r)ZfTSsQ6nA*lzBq*`B>7d5W6ttzLBnb*6LcPcDr2G+ zYRoZpE&nVwmPu8bYSnh1s#=Suo3}N=rHWoVD6~*(Z+o{Ve>6?3V$WMF z=^RjGMe{h_agpdqdzsK-wWU}nzmZ?sQY?*IilGJLmSV`Na}remGuqBk+lpYyut}r6 zOpNqGAhMH*<)(%Y#8o?)01`WyVEiPq;6B`VCzBN2#HVOQNHO+kClmD?R67IRF@7pP zjysv8<{OQ=%5h0s=%)lxxPSyS*CERBMYOLFgk6;AVwWnBWTapj-Se#SP8Rcc-lY@l|$6c1{=?~6aFPP}KACCi+fVvXS zp~F}`0m9H~vVR0ahciNc<>#a>#awvjS|7oCPU={yp#s`m=^16LnSHic$gvBny+R9N z%xT%7$p^Td2fHULs!vIR#{{C}=271a@C>_BZma`usk=P!TT5OqTf_ z2{4b4!XORQ8p%kKV~W4K^eO|vxnl>58a!FH-bO2(iiw5KCuCj^MhXKpHQ)lCxd#%t zMLqXYbZDKhCnikcrGp}ODzz2IDzKDY;`_lm9E|sl#9#6r(E0IeEkX>{79CAI`Rj^I zR4|vo{EOn5Y(?zC97c~EteD$#Kl4>G(Q^U3rH`7KQK)57l0vCR2DmkSNGeK9N_X~RMRxVJh)Io$zmKdM7bixi;)jqCwnH9imOF&b zq_YWtQY}eH%bzE@yDNq|4e4Oi9vZt$p_Vc20#0L{CAD51S62Ca>@WXr`T9JTjNuNo z*2wgVdEd$DnSAr?%!E~$=#e_IRALv9C0Oa02rO-j*eUBS@#A<5+0_1io@JVNJ93HP zMKEp(FS=`!O~Q-3P4p^Y&9IIZ%t%g0nM_HZC{1Te%ma6m zuNKRaZaK)%dY{WI0jL~y#HWdP$b0}LpmrXbN%E5N?xkTrI}xwWDNw|CdCh5?8D*o4 z?N@THP*bQkk71m3JOXO^?81OKpkRcLAI0T0N(5>8jJwr$N>v4cRAD%*sE5<3dh4an z>E}SIV)m7h_|fnqzRskk_P}SQ+nnLF6y>v8ZpIDP44s^R(Y3B$KJa|cEvTM>*FR9q z5S`|%GayLOg-3Z-Du^6|){ALl7(!i54+v~dHolmxvX{UNgJ*sxy4pa<_i-4C_=oaO zHOUl$nv|y~d{9>{1oBG(Hy5U~s8l->fHtjT$|E=6YM;W)XcXU^GkuLX)29bKRR)(33dZSh=RYzTKXe99Fjh^e zJ39{t#DCSSZWP$JWTx2+X_l~{zCkcUM~dcGwc}QL^20B@cgn9$5 z&5z);jao_Sg~FR3v4!S29A4E#qbP7JV=V$oiXoX0y&t|K-OqF%(;csALLWf`_OEpG z{XJ0R;$*S8U209W$PRcFjRb&StiWV}zbG}32$3KWin~Kn3VVC$*Zf0e<#Hd=vZA z;eJG5aBBG0%yiJR2_M|_ih1TanU>^5j{(c5^?iWWXIl*pOl`6Z&MM$5Dq8e1xeOBb zNx5ZJNot{0V#-$VL?ho5*MSMISP}V{@K7Fd_OM^3GK+7EF6CfqSznhNY_LhIF#A&1 zenmAvn&Qk~!K%hd5(^~s1=4(6o6gx0{XE81_Fb6>6NJQK+Br7)&X`~?LLdVEj!SJ4!SrMcSuv902qgit-Qa2Osk0) zEhqsGG$xGL2j9IxJ>y&b!Oxczd|fAEh3{@pWo8@YOB4d#GWaGLtWWciL|z2Cneysz z76?82d!1^wSYPLAxu3?Wt8k84oY#VN?W|t@R4Cd|gqP`&y)5PIar|UZ*_E3T`3PP7 z=0?c*$_1KClW|$3oTCGj7_=Cb!Ylm_x}zkB9nhy*Ma}q=Vv2#9hfB1H=Fr|u&(~tl z*WRdSpu^U3G`DN?@GQZH%Mq!?HLOj zg!Qjt9YVzVM=7Uao><6w$pJHrKKKR`SCxJ#J$baV8ZzozUIv&Tz7dfls$Fjms+k6n z3~=$MgO+y);TS|de8~^i=}wkhOpnV@cwL&Lt$m*< zv#NY}=ZCTwQ&amZL*|%T;KuUd*n+xqH*l8FHMxuvJBT7d$ljyLE&w)fQi`B=%$uy8 z7jM2i$swLs&1dVnSc_of+E&yzjq)|*YTw`mL_*_$7|MP|MWckhQP3$r$DYZi)=!fN zTK5!h6c#ahgnqPvnj{E6C%aOShOCQ7(;!O7K7lCfc&$3VTpc$g;xO)uI^ykp8RpY- z7JarP`Mv75m{QljAm&7U+!KC4Z?I+Dmvn_Ee~Y8I;}jQ~Z7j2~dT7gU!{e~;Y<-X2fC#3{;E&%T%*58tNK z!`Vi9S2!L|zZ&ie-x8nwEuK9YuYMuimEIS@{Jg;BozDjbt0BAuJz9fXco03yJPR(^ zk@}J1fH7jVBCV10`$b$Y_5Ufo{37znG~wXDh%ByIr1Yl^zp^4rIErKu79k6)WV(JT zQ0PL#uQ6#1YjO4y+7L4`*YH54$|TWP1F5oGIdzSybb6tP#4<#!uRqJ( zJ3(amfmbk>-bn|lAQ4Ox#a$pWz|t-dNPu^N$OP^+n6vVWq-DKwj?{d$3k0o2GPWJ0 zK{`IXrs6QUk9t_{L%~uDHLG9OLh&~5M&MugA22989%z<3SIpj;*a1QUT4)uzc7SNr z3-0Z|;7d;<|K0&Y`sP3##ZPmp?H}ejj<$bz3qPueU$ntHnnMk6!1-V`2`<0>V0ho6 z;acE;U5egiu2b2(O~o=0$dXQ)xS~^~2P33VEmaf11~6 zh$*TVddKY_m_;QzR?5dG)lzRGgN&NrxOb>!n7PRU>mb^u2&o25n%t_4YTWA{VFOpA zT_4mhuVHN72Ef-C@vYHmMmb88nA4&s5AS}OGFD@SHdxx-#BghEL&Kj?mM)3wnLaIx zPAoD*6r*O?@>5N~kbI&oL0Qr2`_Y>m{-BFP5QtiohRpeB_&Ns|;u8Me@1V=Fa-&0@ z_#Yu`jnZ?mp3i!}_mSfLM}*J3S=Z(KL07?iY%ltTQjIv7s zmHLIY*R>iXt!?EU6=t`uM<{iPp*UUT2;wUaa$aIR>R_n%0rE#Eorv$>CR*?T_@#m` zl*29F%@b4;fpgIl=(3ab~C1mU-0#Q3U7V(-Z1 zCUP_5_CM{it(>!)v{!HE1*8&Zqe+0;l`Z;K#=tpYy{e3o3|R~ol{6#TeP8VLtt3#|3%wX&>@$7GU%9b(1C~(bjU!BgO2U-2I&lN*o*OoT2`>KRLn*X zOAZgf9MT_u6iZE3v4%*(<$7kq(p)*j*?Jv&i&vSFu*+&zmkIuA05b>1l@XQlQVnF{ zgnz{B5G{$$#fI8_8g1xD#-zHwEN>KfjjCD3*7E{H9vTT)k-DvXLd4XQ!VK2k$o2G# zlKxC%&RCQQGOS1?YjLv_J#)-18Ntte(eqLqbnjg_J;*PociOAqxzkY5JE4qVjldmK zBd2kkd{^fDz^%aE|KI^TPvR zQvNcWLrQTiV$z$BR;~|uikz&&jtHR__U4)>(Ap zY2y$rD9OWV^v9Vy(5W~_*>+CFPntvERQ`Bhrxb1S+7X@JL5ufZtE$Mj73;7A?lSsQdFY;mLG8*v%KC?4<~@@>#l zp=>HelE!7AhD)Kl@;V02{ss9`y2p3Mmk{LJpNM^;j@UHu8^9P(;gv)c#rf6+;aNqaLN?eGS`4Gk6l9t0FExV@3lOMf)UC zZw#KV$p6(KU4LDArKYdqE!IWp@QDEHh}3s0cu58aV7NlF@^mRan{zL=F`;pj$R)CJl?`o56r!Wc0>K2q#}br7!Oww6dRkzn&o zIuz76nWz=cpvHks4V`+XEm;pe9v^|jn6Dta=E#nAwJQX-?i>miasJs=2Fz}`Hd+&- zDt92(a}_eLNaKQu&y7_KVQH;3bi9Uu=y;=$|4nHX*w|Xdp}(~Xp}$iAQM))4mUh8z zi_Bk3v@h*aMf=h&RkSbdQbqgHE^jv4mv*V5eQB2}+MiS{In2Xe7R_<2|F21hj-vhR zWiJDRqjC@oJCMmyV;61oH2P%;vD7&y1sW4(^K z-MZzSm^GRtJam=XHq<&T+_=>Bv>n~kxaa+%BZ_&%|mqFa0z8RLj* z<_RLkDZYstk4XLs^5T+aR{v|QQyd2q2@&O5oF>=4&|W@DEAoHPM$%fuy=^0D95R}& z^&(?IGt0Q5(kulcH-ykSTy@9J7TiK^y@`Vq4}Jov9~?T{7h-SKj3CNtq?ymkgAmU! zQh^u!cYi^KtDvPG*JkF4tb;WHAhC`0ksLjeEF#k8sVSjS8X`>k3J1g>O35SeDw%ylL{y~f`uMp3~ z9OiAPIlVh4RB?5cV+Sz@<|wM_$hzwOI?cY}URR0|>%FcTVi@gp#R;s%aJ1J|V{)%6 z{Q!D|Uwd7_a6zWdOqOTDDII&vSwt2jIar916{el^0xI^eVq7h|5psn=5(5y5yk{ev zFCK+@3RIS31|2t0h*Z`dLjZNOkD~zT$ozOoR8M`VBk=PG_#v=jTEqDvr88u80~V50 z@ZgWxhSOdZ#xo4BKyEvdB_TIZR<1$h%9|KahKB^imBhW@*WzLH7wRdCbBo8S<&4ao zPHdgXIH+R*+Jyauyv$G|gNc-@1jaZ39IW{-t~xEGI(5% zt!u(|%dSTuib}8tDi#MAw81_on4i2sleVb?C=sVmz(+ zZRm=|M94l9(#B}B9qNVDm~?Q(KZ?C1+9I~lf{~!?tz`Zk8E4yCOp|VltHd9bH>0Se zg&pI$)+_dE6p$%j%HKL$YK4qNGgqiFjFcv4n6uYj6YP9}?^WfURKtr0McV1z(k=MR zatBlE3HnV>_5NZvor~l6B85+Ik&O-0SD*yu19Wq`-CEC3%_$Si*)fh$zV+Z-!BiIY z1eB%eRgQ>;%9*C59JDodTJ)+r_h~(O;_D3(Y}{9UM>LoqS(O^9#)Jp_@u-M@5G)>I z+&Xkv0OVJu*`vT4Z|5uyWl}>EQcimKvF$H;?^U3qU__-)Q{(cgz4}lxBg^MRl;JHJ zRf6BiLG$b!I?fjFh8H^mHqO_7KvIoyhx8mCA+5pTeM8jJq4Z%H9C8C%#bRh_-0lF# zxdqK3|5asbR?5YU6C0#OM$6;riJwuc$TIAO8}^bCi|Pa`)Z;!sJ-N@;u41|=x@L#k zT)VO$DKwfljwa5OVQk3OaF2uCVMImSd~xUiDF^E3s65Hhy!*6(gG_8r37|ePu#2@g zaf#=U4QPR14ZEdw(bn$3&A1N?jo@E+yI?T|EiGxYU?uI{vP%fj8N4%9wNi~YpC#u< zMyeXGctuwjHivxA(InMSm#O=e%4eUB4@mPLPv6gh+%;-e29h*`O#8zeD3v(PMm5YD zP)%@@ZO*|&KK%fn++nuhaQeQxvOJ!>|E^5#EZ0ukhg6lCmXxw~9z_TzJ7KE(RZ&$o zSxUual~VP)GB?5ssSkxZeY-^U975h_8wo~-{!lmQ5ud%kTKq3?XhX>=IVf*tXc$Fx z2%5mIJx`7ZCGDyY21T5tGX^S$$NiGL;C_jP8Vh0cs_f7 z!JbQqPy_>2eCsQoTF&x)vWdiXiVqzwloG0G=KMNHf) zkCmh>_i68G>sLuMZum)z#Z@gs>ZsK65tUCJq#9d-WGQm7!@*)trP2@qSjM_pU9usN zgjBV-kXO4`;6-?qJ=Lj9^Up$QNK4g^%>U#)O3r8!4wm)jebw#Yw8rfO;8xitxK*~r z^<9blO9v~_6`R8RL}{x5a2atYpHXEmA0OC--1%#DLJSxfpo>)t5v`dsztFb(-itpW~v!jp(rb`4xCY|Ud{V@Fr5{z z7!T}~GNp}EMu=hW6}E!58_E8@;sW6l@&F^;8)UTdy(-c#`mz8s)MGMJ5YTWKBi;*? zA+gDUlH54@Rv#Il1N@9tww5D9CArc1wjR0@w_;M2+N~0WOcD5jRdJK5lx@qTN(WM# zDpm?omhczK5)HyZN>us?^P!9s2kjrifwdh`ZMOG`22z`-K-4X2vr?CaO)g$VK$>e8 zw@eVwo}LNF*&O>Wn1Gzm4{w1V*%2%fa0>mR${_8e7pdsYvPr_L?AKesF#8DFK}?;s zr9KY5YL|p@wI_*+B|cKEW;Qu%B3EC;qSDnQ^kdMpwH8T8P%6UlEk+R$@G2FQ=6%dD zll zVNkfRb#GMzzgKRb*ljO5b0F&rgDSVWlg?y-f*A2PdaB(@Kvw0!=4cWr8*Gb|jnaTA z9%Ce)tov{e8WV7$DApPii^A$OX-t&pCXG4mhYLA_;zBqyjgAxHlA7ID?5@#aM;#v& z*1w-3H0kUHY%m=;%b!?4Yfjt?Ic0YYoaMbdjNs3B@wzwO$@1NjoE`RM$_+(_iS3w)zT^&0(Il`*MKAKrD=%y?4aSg zh+)V#z&;{9gHW*_hXz+U^gSXhoVR507Oae87J2eEFVzkR z-~CAMt_Dx9s0BKrS*8;RA)t!Bu^nIC0er;>5qujQgHI$K!PjURfZBWla}FU1$+wJv z*o>zc`KJES(pA3(-h8q@4w5fN{b9Yk+V+9{i-_M<9J=wzk9vEmY%TebAwCI&2(QzIlF zjDyS(e^!}|P<;?oGZ|p$-O{62N;b;Tbev@rMTI%cS#f|Rl-goH*eDbq;BrHk;da@5 z;%o0wD_!Hf`pf&8%ocGBD+L=p{PjJQO@mhCZJe0XS-oQ5AE zju}z*kD=x`g-el@*;;6V8B-_o;hZg`j8t;J+7dk-p(m+%5U@GdCKFUl0gN7-;K6K? z2U3QBo)QnT#O7u^h-+CvPUGN+HH#J4k|BLlYQ%(!Zql8Z5J)J`nGgbNS$&hXhF+AZ zhOE>I=reQ1i?DIrFdV%JArE1V0NneL=W5w2z=)Mud!f93N0Jo==X(DU8@qEKq@0$c zzszQn3di{^$G>BR%%i#1NS9Zol+|}5zH&qohSV!>Cszhg32osy_ATyxD=mx5QsHr2 zl~ATp81e1!uM ziqwk+1%4FXf&-#F`*&g|#+^G)?_yuX7JgDr$WtVctNctd%2A^NK9dY)h*ZsW$d+0_ zUQ}klc}J=e7i)c}>bE${f1`zh7R>17M|&Zs5w;dx(1Ib4jY-!lyK05fQ4N~w|78OR ztP-gj0Raf|C3>H3rk$7`W{#m1EeLzb#92x3PU!-yXz=xi1(3v-UMTBT6#b$bD=bkO z!ko}(--3BcC54#rCiS85x{W!F7iVGfoZUzd;70b<%Rp6Kn%EnPK|9flhuksS4QH~W zx65NOCt?H0p>^L3jx%+i5Z03)OlZyRd9>r@xPm~l0g$ebMvymz)6QWqtUQydV#7eQ zg|Vh0nF!KI^tBY(<85C{fyHUGo~*z@A~YFgfFjZhP=})}Yl7yJ{*Mb|FpbiOK4_^r znIk3DFrIx5Q)n6e`7hOIz^X&%}4G(BR;^W*+A0=^YNQB}mAbSl2DrA?gRog?nLF z5y?{nB`qtF0w`{T(h|s-ga8zh@9^=MCh9b0t3>0@@Jfr{3|{)*1n(QG>k3{-ja*Ik z8uxf$9QdqaJnh&V*L7z*uj|&X7K&6LvnL}Mj0ja^CDUn6v0OHuk6SwYhqz4d11Z~K)29k$Za9~M=K#N2WYzP3`?Ca~N3`d)M zNM-tyIgCi#IsE@?L{n(8%_B-DXta4-~H5!qVlDP_h?B^TYG3Ri|)!MJ&9%>qj|r)7x^wEl4@^lvN~aNO{Nj2ASaqUr7LkJ zWz2?H@famzP;p{4hfh{j+Zc_!8m^NHxb|GRkuxC^9@uwJ!Z#B0_C5GCaQi)pb_;3U zBS*(u`M&=8yXF6wP}->l#IvE&x1|T7S-cKj@b1zRikH@$_R=N~S^&=csrHs;)wdSc zuwAOP1-k;ohaJfsO)l{cXxXbd8xH(0Ws{b%L#?Gvz4f48LP|wF{_rI}@F(+)S*x}} zkjp4W2A4eXFzyuhI`5^W?!LN|?x1SKs>0htaXVggjmRtaOJ9xH=6-dB*hX|ja&~xP z&g+J|mCKgkn;qf+hvtGK_NZ!hI~oUdO_&$#)N0GojrSRsCQmCZ7Q9v;|rNPP4Ek|ItOt%?)we;SA~%o(_VMwN8s$J z;XYO&EL#GxhqzHRDWY}L6FK%GMp*rNE=`g#%6BU^x)Srw<5u0Oy0@xsRabRa zcQwg#4~tS!>Xv%!_K+iXqPjFCHl@~(uo;611eie-gz4%G*kn%+fzV=W%-9-0aF}3z za01PUaTIV6c$@*8ATq3A=tM~LLx9Kd#F;#RQS3a%`7x1!`7uBgGvBxNKKI`0s%}!Y zkSK$w#X9Gnv(J94yJ$n;eLYHBj zWKLo6v>{kR0V7Ux3|^8Yjie<}rVQ^+)oci?O|0LXmKCD|aO%iZ5)D4D;x-}_#q2H^ zpUmzudpDX5@c8&DGc3@tFGl`RhPQIp@Nla*JZmI2%6>__*lxnKu!OUy8}X)hUus8= zSQirh<2+)mOSrqo=YbIX^JUb?V2{gKSV0ceHk9J&)=I# zi0h9L7v&rIdGaX@#t+g6+mPwxC@|X-v1*S?42K8@DN$|u^eQXPsY4{4uynL5DSdk^ zGtkvLpU6nq4$%g182o$C8HPFcQOETTSA*(a=W++`_7FwmRHoO*&Fl-;FqU93@eM!V z`fK_6t0mn(73?91L-m`Vz44A0;7Jfi%>Y@1k#HYT07bwc)U4gd`?&Plp5~9sAe2`F z{GZogw#WG-I$6T$2CB*vbW0cQ*^W+IqZe0TW|I`J8I(GW*91|EX2VbLNQeIp(uL8c zk2$RQw5Ae=3q1fsM8qa@KD2kJhogA zI*&T#4>sokI~n#ud`|vZ+R=mjjgtO3a)iYP;T z=;&VgDoI^xVI-8S6nhgimf{g(W4q5}Zta;50koqKOJAG>v1ThV>I6B))xoYbLSY8G z$b{&8Fc^uEMPfpwiy+b}Iv1wAGnwC>;U4xE3puV40d=%|#CBgc`f4`gn(&U6Vs_%e zuSNFmj3zJzK?VLL7>1eF-XDX0Vsm!56OariVj;Oc<=74a(BQ4MKuwcH+_215<%~E< zL*+gR(Zv=7lS!3Lm5xzX^2QF{m_dHHuK*-5P7?pUrpOutGBGad#0x>WC|wjWC6!Yx zuVHn>2r?E>N7DL%?XQL<6ID#ZBel6?#3!Dm7yfu$FDiU}`B_BoOcAe}=Lp^le#WM5 z`B|*6=J=UPf&45#&-`r0^iuFW+Z;o*fRUdp-+>#`>Vr{;SQGU^6AqwS$t#nH$m-DW zmC$0a)b3ZWqn8ID$Ez?C5c`UMt~T{#5dll|7YP!%QRQb52}NCVdjTzZHU=X+pJ#Ir zFjiSxpAbMo{vJ-+<<1#v`f=(m!JY&lEgfn^Dw^fdvsPEY9cT=k2`m0PWzK$W8_^EE zxyHPuVYHm2gcG6;Cj{Np&O?{SYqA0RJ$=AnkWRN-Dp&ihY1yn~3@Q)FDc*c$7qN*T zpPJ|8AeM~b&q}h|*$izobu^9^KcSe$*3{8vQ|uv}C(qHfS*?-0DS(QTVR%T76Z{uM zJ(^!S3Rw1wu$mIE9u>2|86g65S=c@I`GDlo36KP625tzP`S~<&RM#}a$5U-&Aqy%w zNFdGAg!8U6qgTdT$g35g7@Fpmz7RC%b`45KjY(HD?jr}Gq~w0Q^>}Gm7z}9coE3os&ld0 zf}bIy#lw_vbRh6DR&LN)>J1DtcqAicx>_fzd4>S%l^^LXL?gHepP)xKrBsS=5Dm+^ z=${A|4?=5V>o_5^#+OP9`#`p`5Bi6L3mFNnK5%fT4U!#THN*Ax*STfyu($7U%g$;e zLHSEW?toz2%1!a~X}?m(ip|_)lAt*iNSs{ZQ2MazDmu0Ww_9UF23V0(LP;vI=V)Q# z4sk$`hHwSgDxL$+;7m9=f*UaoLmhgwY;HgKKdWU!43pD6r+mXE0o~B=*IKd@Vj^a- zYM#RIe^9|8=+ygpCOM2atN}qJl(_iyw2E*ObcanY?H_Of0U+Q*ESK!!rDxHFOw1U+ zE`ThoCI_)Q()E!m4of12dIV3&JK)9|?o1U5^TU4})4eutlUtiQs%Q(e*WLp|)7}&H zv2?KtSfOef*T~-pQy`Ptc@GU0ni2IsuodKXDnV_l(b_8eWY=O7PsI@Xak?Px13F3I zQMTd&x|vz~(vcKN8KWg+HSzDJi#-4T@~gd&`Z z*a-(JZy>!0OX;cQg&=d8I-4iMpA>gXj}_X%=vTI^WcEU&Bg^y5SX8_C<@O8rA>v5` z>z*DXvOx;ggg~nQ30ThRr1)9*NZ_3-_3CF64zdUYOBZ;-GvsoTeX*!yz_mO!Eg;+B z-3!|_`C!(r-KIe_9}$^qg2W~7HEXlQZD9V8J$jY>VIE?QOTeaUTpZo8#$`H&YB}11 z=GM6ME-i6$KUl~917P{$D#CHW)3A?Vr*guJl}=LsO@qX#S(kT0w$$ghU_Nq z|6WLxBx2C8nXM;EtaWLc0nQZ*xe`Q0ab*45&Gswf?E!~$u9(ZGW{J;dFpHJ6C0dBa zcl?o~>2qt(gnFY@SWRb5X*RX1)hTA2hnrYKNA?!)q`j!o`O-_uK-Lkcfp>=XX0JoN zgPP@J%rAVZVEH!3uI$hyFxgS)JIqprr&rVQg&u`up$o}MSR=(C4>*?S*>jLAM-p{L z&hcOXPc^F=STQ3Y13=GJYq;DR1V9I~^-o_NhA~XrdSi7%E~(-yQF&+myO1T@z0N8` z{WKciI5_b1LN^#&r62N=OVM|FVvl>Sc4^)C6_CL}yJ$0t=2OM1QiYEI7f6`0B}~4J zR9>8X3u#h}enw9jJOIcv#0~~~GgDm{_5cPSb}|9NB7R|N5l@}S+O$2X?1|nkB$am# zfcZ>r$}|@N$P4t6@(w2!qq}I_=u{XM=LL#hb*CtalGw^?8P1K@b*wPq8@zJY+YRqR zm~6=AO-)FW7N+!GsR^B=4S^O%=>bwJ+GyffHIsJnX(YO4IgZVHDoJww8Jp-z(DQYg z;%~E>B?3HW@=hl7!J+Ns?sXy(9^9BSt7mKmy#<+UyDZ zkR?mT%~B+RV(M~Wa&smmNv245TO;Xtog*#)T@Q9wFj{15p$l|p8iCP?5*oouF1>&s zffZ=|V1eYw>eSr^@MpQfn#`hsMZ*U*HiIZlcuri&*}b9bI?)5shT5ZB!6C?1ruoEz zENL68@kMz^d2kqonk}{*c11-i35KiI#;cLh+C>N;)!z|)Y)@Nc3pFGA6cJWHDGU+p zIFcYoanL{vuETZ|NFq1*qqfP9(5g8+uxxg*rBL(|W8giSseFJ37ZTGjnc6PwDs<3Z zyY_|lOjg`35PU7BFKd(3qy7VxkgGm!1rcToeeM-vd7=XR~{7i6#IJr`EmsFlqI zv5bK3Y*;^Y;BOdh6?@|d|3@jo(6&ygbN4H?K|emv4jJmizLeIWR+5@$sKe+GS_t=n z3z*pxOq#)`imQMI=7g}q8Z!GvQi{yd2)-kwU6$1Hk>G3&(-md3i_H&)cd@w2VgaDW z`C-6@`CD;vBghnf1GY3+8K5G= zw^f$wxJzcr+;u*{$YqRHTjvl|#QQ$Hj)!lRslO8M@uw(E3Kc9t48_i2G3r+NF_4>| zC+3w|VskXbu&8LyySohRNe0f*wWG(Gm9?tUf?dcYZ^EgVBPAZ)yaoi=QyVD3UIJ~W zJl$!Q4v9qD$&=BXdbpabTpxWQswxXHDEWm`l`r32mu`WZB7wyOyborjkU+MWN&$sa zql*^G{qe1^iQc{vb+FwqPf&9E)5WcE38>`RnleSdl6z2DDe~bMK#X)uFT;=5Y>yw1 z+r1Zu(>=fh5B}S-tT|xRa(f`-gdU>SJ*NqVZb3Z8iZRh>wO#*-ybp-pP!hA6HrBx_ z7v%PkeHs-yMMyepU~SJJMB&g5IRPd{K9zs&&?5OgI#YO$`9*v}g4ES$2PZNOJW(3= zfdb-g~Pyn1#V?SbVjwj!UNPB;MkzaTC-^-7&44&Rn zb2@{W^hlWTj6SuVaY>87MkO>w#}kx4=_dsuuuW-4Xvlovj=xx9`2C=(U_VvRfTM%o zTqcc3bx`pkOl))(rsWL~{ynq%OiHJGa#4N}{a`}Nk+C5=T9Wud-PlM*pA7p1y?7xI zJZacpY$H<)OLLHp_zVw`cf-fA;G>+-jL)CXV(VVPGa@(B4B(t!fY!A*jhlPHXSj`H z2VbCuBSS|6<6~VbkUIaBZoqO}~d}c4H#jglxrSD`SGu z%4|7jUdoyaeq~HK`1Sd`>YSgKW^P&>6S#A9OeubmDRP{7OtC9byaA`&@<0#&1>M2i zhx~mL3?bom$!y3*qUVxMLTonR*z>taMwN)WA}_JX132x=e*XLiq?c1jKzsHa0O#4T zMY(1?%RR514H=l90yD=4Kng>T(0D}d8w7}M*k0W`EBMV$*CxxCp zf4k*}j>)c!gv_)sIyYexI})9$spy6FCkRz!A|V}vjrSzQloYr(_}vwb0)#IG?-@>7 z;Sk6|yjxJMhy(28(O-oE19Z-YNFAV7Ib+o|{l~2QL2OWx}Tef4dl)WUsNuW$fLwbmW@&d9cFBTj$swKi=ZrjO>#W-fYf2PD$@Mo;}v-!-@sCReU%B) z{EkhUt36cBYSKQv+K=>oZ)R#BUz7f%u(Lb1xj})hI^N*-)AisCC{!;6A<*yf^*=pG zSaBT%2@j?qY5H*c4k#|$T(>OF0cG(BP&||bqOhxq7}!;u1wYeovN-zD=7kX8AH5T} zPZ!+_Hp8Qz6ixw;cToY10<#4Znx7nWgbD#P2s&b^vZamz8wKh8@@SPs(Xxzn>5b!) z+<*2i>?Bqrb77^ zR4S^a)>syXOhv~O45N2(G30`pjb<7c5P$~5g*6xuQ;#~4R@LaI?o7kP6Wc8OiZFB+ zU*y{$AUe4^fs_B_uX+B~rbV)AZSNH8!ccTDcO^m(Ac#?a>m?vDBpmRtg66 z{7EHPTUg@xDDmP+C0Q)aap=UsfTF^{?Ecv$N%7qtnk~z8_CbUZTnF#bEH> zZuwEuPoHLU7KQ3%@?9jj$J45O)z=ql12xN!*4VKNVhqtH9+an3 z#~$*I%aAawXo-!l{@!ORzv2MPn_P8`_)RPx9~^*!w{5zqb1zl2*7U7{)tr$gB<>;# zm}lL7Y?@6zzi6T>L9gUe{3T&((i)j5?(udquk=}9Y74Wo=$@GNd9DG22V^=3N1gXX zI@=^S-R=p*CsmVj=^#5V89q#&LX+O1auKJ=f%YB$MLCT$wp!aG4t%Wf$k#|JLS{5w zG8!C)-mwASE|ZA>)lL-&Q%N$WyXO-q(5m?kXd&_)U_%i)VB8X}vDHNyIND{s8;-Db z%ZAZMs3O?=_I=1^jXW~uax%ZyzUCKu?PpV(y23XcgY9Gx?qFSRN3{zl7)6-x-1acq zMpy2HrkHcYvx1aXCNktOS}K=h%|`*wC} zc9ZSq0bJXk_jdLIsP}fUj&H^|M2JhB#Pn><{E1Ea87T%*5I(Nf{yBz+$@7 zE&x@-R={In6wmtUyx@o8lh3U7n}@(edW3&ogE*frwx=c92`4xbe8+6qf7L*mg}h8} zVZ}XSeZdO|pdeB;lAcoFGT5li8XN%j?8zQ~q^U0!429tUdO);b&aUu*5n*D#&WkV~ z5n*(`7f>7*nY$4v26}9c&xk)XRgF1yjHizT!CNK&o%d(c=T&Mu)NKM#ikste#Joc) zWFku_B#+AY!wYgU@cFuZnEj%Uu!q1m(uGL;x7~5H5MkIvmXhnSIg-r zK^;bQT1`K&d0j@3aA4ek{#M3|RH&=%QQCBn%nGfzAm?MDYSnG;J#=?Y(X{__?~tNj zFT>~{IfkBvO@4aJd$Zf=sq8VOTZRNR%_R2k6yaA&e3|Fhc%BwRDee5eA@Klz#gAgk z0as>RlCp=D+b>b&-G^X@({ol2ywAG}=y**LSjEMnl5Q=>>2{9EO#yJj#Ict_!kTnu5uasW?%b*H)ECLd zp=beFVHaDxizCY>q~y!d(*{#Bh^v4$z*35A&;jApwI2Zb&%lt91N5`6&=!1wAj_Mq zs(4))Mx$RQ1P%#m0LnSQR?`G*6I%^7fC!uBOQn>PmqZ$3jMo}aZE*1!ywOxj^L!pT zDTYmhlXW(_PcX8=$jyaxGF;`t;;P{vo*QW}otv}BvJj9XM1qP~5~dt&!{+o8v^Q)v z1sq|1P>5lVY@~uV6TlgXgq5^}s7Z-nKjS1~g)$o_ZK2N39gQJGF|uqGHV(@0egzXM zPC5{Esd-Q$*g@D>0rDnH9O4kQ4nJW(eik~4k#H_XjD>;7s$f&}f|W4X1gu8l9f*Gg z=|jIi7mPNA6CyN%w;7!XvXK$O-*$4*$r?hbRDhv~bBH=X8%4d@JnGIDdcs$m)Dj_z zfrp<9zwLz9ZxYm z-J?W^#~wC|5z_=1WphK+FF?vB<4mhifCENqQo=N;6ibfzSs55s-V%a63XG%R(la41 z2w75u(1oWAe&X9(W`K>ee4+b!Eo5a0l`CL5(EMk#72z3NB0a6x#nS8(uufByjq?79P1%*)dd>` zOhJORc_q=%*3#~dx|b&}fVQU#pzXW>Vrj)!E`Yd83!p*suqgKM@@a40482hsI{?6JrLDvz$fxoM5pY*HhuiZ5q|0S(>$* zPVuml&2ZLk*PzIK>PVBwr`VzZuwzQ^0B?86zwQX#XRtK+qrw55;mB%!aC9q3jqG-= z-dg7HE+E!bA7RnqS~@zWf?hAP<<=%#JIn!m#O$!Z{I-B6O@j+Y;_V)-Uyjq6Y2!P~ z;~Ge~lCYzd5MVJ5(`ALG6_d_c-zpVwQ-pPvS~#4KEi>|pL9%2L6fO6r%5TTl4vHV| zEfd`dJ6~g^W|m#zC|#+oW6~lxGVGbmQ^76n>l_33Eh?Z1mL~H|^2kz+4>;IvxhX{A zZ*iSA>uN2YemkD>&J)w^4VF%Q{;_adW?mfjtjjD9AX}cP{38vBz*V%lSNr|<`!`*> zjF$lpEz!SpPJJPZH^e>1-f|kPBQB0b^+q6XRisbI*xWRlExHO;Jzu?DO`o$- zF^vIN4&C*5nAM}76Js5pqa(s?=oc%TWmhvwZ8{%O#HsE~I_)6UtxOL1%(_+|t-DTj zM=a)DxWO#&?e~@mR|!A{mgGBxS<09+n4hP?OqhWIO0ndS9y4T~ky|QKQl~9u9$!8N!MjQXG?;wTWDZ#|xULZW+`l0T4fDOt2fMeUv zr`zA>b}QX}pIi8y1w6%F0^zgY;j=w&KS`_U=s0e_$L+_`)9-S7A(efvOb5kN!?)rz z%BYMjf~5z=^Vwgg?33O;TC+tE)h2q1#Wgt5+w2;Afr0)moNt}8m4tbyP?#JWEmdEGBMwEukAsI-WWF^a~k(b-%vHB(M zxm=2`JQ$GQ=YnfHgAv937(im7$XW5|9WEKqD4&4v8KL(5u(NZUU|E3M!2`i<)DVSV ztgE{n^hHA2WqFRMMy7|W953GD;s}g|$TP-5H-kV^qUJ$SH6^HLij(&AM?t)|7>?yT z#1panJ&$+>AA(FoO=RSHfEip4)C1i_RVf=39!>dcQ0G4tx{0M3-F|0=Zem_WH!<(S zqMN9Be{|aiiT2S7J8TmLUuFh^`3GLW#ydTPBrSkE=^+P!8uLezW<4ZUO`~H90T5Ax zQV-!40Y5LdRSkl_a5(x7c_!JL0D8vp)|%B^O`{x+{?u4@72B^cZ^7=Z>Sd@K-4qWZ zlW~FR=MmBq{Aw0Mn7U5EvV=$jv2xiR%gQ&+=EGzr=pxjwgx&c{Y95pg5)6`fk$Xs@ z0Wuy78-z+?C4#p7a-8S4>{CH z!v@8igm2D;*wr3ViyqJn!aRY@n-r6Ox5Rp$JRLBRT2}hYUZLlA%0y$pLDi5!YFwwt z6D3GbZHezKKU(#I*Wsp6uSOx0Npkmg+493`{q+uKR$6KLg(;NkzK%}GQa+C7TbZ1@ zHF@agC;yd+mm6it~OrbzsZBc2_H=SQSTEK(%|V2P1IvxY=3Afn}CqJ-TtTuh{)8^#csH z62%uLKR^Q3Fp{cAMJgf82(}O-^2sO#!wlmT+6b_^ZCzGiyQ1S-^ANw^VZ=x#=OgbP zn6Ye1)~MIp5Kb6Um;-JzvSECcUh2pK%h5yTXkQll*wy2GoJORTw;j6Cr!dtrCl>-b zU>N|-KbU)l{Wcru3$nIks%3<|b1*+k>f>kTvd>1Ovvf^xSf!b8b#*}oj`D(Mp-bLRDa^5689zB8Q z0F!4pAhv0c0l$UkS18tDM8C`jf`vJUnFBgEjI5X_oD%?e5-CzgES^1alsp-Ygrp+f z!SAg&@NWiMY$WOMahDk*A^UYDA{zl*-R0F;GEhc6?6#5x#`0#9B|*m!<$=Ai0{@Pu zzOswT8!tUU2ZF7E0^<~_WroXGZB`x+DJZXyJ+T)BtjC72#2g(Ld9WU}plN_1Y z!VJcaOIQMnreqCB_F!SrN4@A2*zpp;#(c?X0}ed00W^0d(bXh_(TC;CTprW{YtPP& zvGmU8Ii+E9uQ+0?=UOuwE`V!i)}pb|7%rl>RD(B{l>PLDVD@cYyPqlu;BYhqa6~*h zY7<%s!X^cC;9z5HhC-Z4mAaP4Y8lkCL}j?H>>qV9bSVPoxGutSTv~?F1I#wk=UdK0 zXM(q#9|vC|Rz_Oc!Xv?Dl=4*tyn2&QYq!Uk6-ZTHEc}F4{Dh02aN!dWG(hBuHZ8|l zkd+q?Z^Ioa7ktYd(;7yk>p;{l@j=tNH4^iyCRkRLoGr$`RiVJDf_5GTp^FW85A!Q}Vr55IvifN>(K03Yl+to@Ve;jhk@92+jT$%JZpYr; z>-zyy3PDz8I*x-yO_Lp8Dd))BcNi@IFvI;cQhG`#;71-)UCiZ7oz~2 z^KF>9uK@Uc18{AUgCnI0qFgoSj9lW6m<*WqEn09ghD-)hCMJXP!JI6X_|k+8eqcgb z5*{c$0GBYEw&+a7Gcdw|CqD*XRbT)=QsIcI~(^h!pTayRkUo=rDcGGNGAfh2JJJy=hitiFpqcI^C{HNjgl+}#T zuwNZZf{!gWNTu;#OUF2qv`^>V`t&f6AvMj5)bPSx4F@$wi#9CLY(nK>Grbms9ApgU zau%cH0S|YV;Et(9C>#`H4B&YTJ~&?2dCvtAp=8GIdr*LC_mhiZ9ar2c3 zu8$q4u-H63KErHPLBoCpBY+f=4Gd2@;NWD$`f6~+GwGm>S z0Zg%UukAA#3^S5(F+30yPhBiH@Z2UO=u7#WmJ!L0WOpC{DLIZKf<2UwdMOz_A9&Fq6opU?P9=<6)ZT9x1P z8fvyDC&)9cS1HVcXY7DK%|Et37-PAUzznMh;}y$q0!+r0Qzt({jZ#8198H5caXg z$dH#k!3s7uKEujc)$VPU60q#IS7K^;@XfUD(<=K|jmBy#q>dpLly;iy{2^n^S3D$< zcd1m0bI`kBr5u0y%{ZU4`*ajN7{zN6MP0{t0bF04(^iAUz~<3$=|QaEQEE{r-CTsp z4Q17{QUBp)=a0F>+85n*h0wY51-SliDH&0t_S@6oe;gf!Nk4J4GcY7x?cqw2jp0A? zC}S=|?FM1HoVOdm;?TU{6|LT*_8h|p;OE|TcMenzrsuN&O}9qXi>#}t9zE5s_Q2^w z^d^nw(b7=Z27IGV)rNK*hD1H+QGQT7jatVB?0tNa;VXlCCKecQ9xt*oq%>v1_v`+S zg=tpRNCud&IE)oRo=`TRd}~=}73ZPSeN3Q?7nYKG(nNd+k1qHe7htn^n2iXiAoSd& z-r3a4DqNZ&_2|Wb5tBYdPQy0ss%4KWU#qxWhfgpj-uty140_0Ege8?b@#HU-i#C0{ zxAmHOSPAKnlgu_IPL$DPBpM&QFZqfy& zgXk2%y$b|O%|LWSkJ$$dTQ`p_O^03ctIx0u457~uH3`#W*mR#^JCyqkTeB0KFNSSh zoaXAV;q3Ptw$=cLjWAeuW?3N3$*-Uk5v*voVnYJ!QYe52WKCd!q-BDb* zIcFmRX%{sPIZ;#NPz3|liUYz2KdfZ9@01CRfn(mZ5|NkLI7Gzfr;775yYL&$@Hd`p z{?ePWNPv}XMFzM^=wU13aoCFJovrxmowAMW*6A0vA{JqoM^Nx7z`z#fY(?lbVJ3n| zIx`WVLBJdT8D=6@YRdQ9T8Z#>PIhoeaT(p#ETr}p**O$^d>DrZhkXdT(>}x>CK?q_ z;=#U5wms}a{K7t@a%d{=XiNOY=W9;yre=2o)&hX&Z|p#MgM*smdgwS#JzrSSUf>Tm z$v#9Kkbkld$p_}_L+H}cD{?djJ~}hv8$Ns|g{6?{H^-%9`;d|!7Bg=j;yoa4MgT|q zP(SU2G^-S=y<|i{#9d1D_T8_38PYaItE;+9LU&Xa^KQeOR?|dht z8pwr(4CIP~oJ6kv9CE4MwNAK(NLDx5&> zlZD1b1b1g8Wo57$Y*J9`IR%xE|B)Zd`;V$=lA1q_hdvz&M5!w`er(N z@;~NCpp|^~Bpdxx_nrs-mt?JvFg3qBM7()gUNx^>OZakS#V3Zi4!R`g@r9; zjE)1}*>stsy%XIH<0w!O7(7X4WtLxIR!$ceV`k|qSY63tB0n_pFjVVi=Ot7=%W(>v8V;}`1u1tIq{U0TBgIuBzfeC_d^l=5^stb75GRql zw4q_o9NDz%H9~2Ge&ONwO&zT z0@M@z6--6V>MP?_nHKNLlmLNVFR~$sONIRtHt_Z3(B!y#ds#Ik91lZTa3BWev&e=3 z(Sx<@Mw!lP+G_&HW8A@L-eD=Akr7i<01KjHfyRlPyWFu^5{vJOMn;o&h9ViQM*Bdq zTbxISJM(@@rnLgEUv7W`nitp9YoIE);wfkpbEDB%dk5ur3S=KkTru1lsS zY@!RDfptUqf^M7nId~Kk%($W%vEvOgw?=5J)|eyB036jyx*)Fys7&>w82w8Ifm&+~ ztp#Mh&N-aW06a5XN<>^Qn2wYDu@jCaEvywTO<3ya5iulle;z?eggFX@bns16vgFxC zwAW*VnoC_4nbE6`fo`Wo?>b@+-pZ2c=HMGk)sXYZ__lrpTBVCmW81I2EP_r0On+=a zGTRdUzuB%)2FBrr0+5b`qy+vtDKbCc@#Gt1_j|)`rb1C-L^v&WN)$Jbl>j9ET(M$V zU#i@p8>)!>X2TaIUXKRs=gMV_sq&3fc`6hotQ>x3+?s#{mWexIOJgYh7l%XaG|0-gfdKe$n8P+UDiHFf>GM`=;4bG_fxpZ| z;BQWQ8siEhc@Za*GLCul?a$DcGzFnH%aWD$siV%D0mEq{aPG4G1={wKRh#Rcesq@0 zsW9X+JFh~u@LKXyIs|qMyqc_ioMamS2{6teqU$20gjjzZBJ@azY-EVgYJy0RNQTJK z$iVwS#65csB|~JE4MAYfAfmq|B6C>#Od(>6cSA(~Tv)&DC9@?&a6#!l;}nm82q^U` z5@7{(5O^?`KmPF_J%u##6*nU=f`fAcBSvzxQ6`}eJN^g~{_&0f2x0^@ICH1zLxLOQ zO*l3&-w@I!tYQI`2~Wi5IdBQC#dF!x;2Sk(zLZ~Xs&S1D^4IXESI86(N77qH{9mNl za92kKztH^1#!}~o^+n6>pIC0Phl#*D4Fo}=AS~mts-a%m z!N{j$s!;2G(V^JDQ&~sm$R%o%Ir{V^#PTy9EK^MW=fXu+p|0{$x;!;0f=8!Oh8Rp8 ze=!CJ)?+P3_H?woNr`}S8$`GoR+`i1j6h;+GDO8$3S^fz-z?cz(6+Crn3W9jqi;RqR@aUl=`Jmj=4R&OPQ z!l8Ubir0L|r>Bv$DqJiC^58Z@Ys90S9hG4=~fOtlwMr!wX%4HE9nTx40@_5av!C>8?$Yn_{iYm$Su5chzvA%!E9!T&i zU}ud{S-;)ulIC`_%NR zij$?HSb4MQlgu($0RBlV^6A89s8JJFp)Xr9LC(mn&^c*27CNbqGRpsKv0R_gA+wR` z5LP6;2QH$L`%B`4Jnl<}Xealg!$r`C7#>{s(jjYuy=L(k9d6Fk;bzdGyg@oVHAPi3 zA_W~TBsxTT9;d^(cSq<@muaR$>p>Hd4k0y+Lt*fCs3 zHqQiX7MT|nc?gXPJ!~Pe&h))oM2X-M$!8dbESn2ED!jOj5Gv}EC5Am=j#cGxRi!kD z%-W)sKKlXg2^h_`9bi_eaJd5v7OWXqO5i~yE5HCDx)w(RWlHKpNpd6LsO>!=C0siZ z&QeD>ozFA~$D=KyWL)k;IHKCrsd}7nmO8>AmR`bvRFo~KaS{%sBH^&ul5kXWBTzb_ zHVOoU^NZ`%qbVrt`{b%HC=7Y4*#4-t-V278U%_W$qLnj^v03l1Ks8N z_^iLLS_PVcYd2^QnaAY-x6`EwE}`A=qZv*nhK* z4)M@@f%`{aXfSBP#mOXNcxbp_2G!-uxgjG~p+upWHh1*tV;^347ljQFrPP9PHVZKs z&3bH6%NAJUay+N8S^(+dd?*P+h5_gj!Y_oKli%tbNm%sG*<+_jq$lVpON#{ARDn%p z;!16WECH%KPUh_lkXMi?pc4B5J7(Tt19L{<=23OERhHf1yXfLun=!*}A?}Bv>^+o7Fd%KO*0P+C zjF!c1K-*z63QOW0GAYb1NAVXnhEC2-%ulOVFgwZy8G{yED$|gI*<5@SZ^#bA3AVXa zbrWVjo@abY-I3SQxp;%J#MrSEDmoZL!u`A}yu!jqWkjT!nY z29IICBe3hOmB42Z32?MZPzA^YogfsHf>h9MB;5YYs>sZF5q8(El3KOdR3VF0cijNk z-e*FYgCVhG-Lr?s4>BnaQ1f|e-lgVqw0Mfz9|738JZA9w^umeU4E~=0G-y87d^|Fp zG#^nB#nTc~(1dQM_(EXGNXW5edvMxg`_ZE!|d4qCgdLJsymmY z;clw#e5&q&Bn=--)ty2bs;LqcPfbASk>)|>^8tW#o?3UQ^&BGR)Y!0w2l?*-{xcKF zF8{gWKIOMK7N6&Wqui()r0+E@^!q9o`u$W>#yATdw?)bn#Q^;UsO!o1W3TaF9#n1G zYfNm*0wS2%9w~kwd3W42k7R-Rh)%|Zrs17t$3W&W`c9ImnqESug>}arG8I6|#1}%K zqOR_@`Yr2bd>t;t?*8F{$5V#L2a5;l{{IE~+TT5Bm zuVmMoxn~a}2xOmq*=Nn{6Odx<@Pm2w$svP?~CDVJcOC?OnHrY@pd$|bYV9xPN#B09O+scI>jknIqx1nydCR2IUY zsH1!kRcKRcq*SHPm?b1e|4#Um(2~5BkPgh25W1#)CY<(V^B^m)U~T_DOxm!t1L9sY z)^t=ijTs1faI+P>mjlnL$28N2%-6>cImL(siYpXEBG^3FSoXqf%yh%cce`9AxIMTB>O4L%!+W`?1kEc5CCfuANKspY4h8% zQl6C4C->+OgvQ1c^-uy@-4gH+Y*^uK`y8jlaD3Upn#fjb_PAs=q#WVU@M{_V*~FoD zj&f*h%2XGPv2<=gF^$A1v&8rF0kNzF4z(FxDeRhaKUnL-Y^~@axy1g z2oLz+6J?p*-=)^Z*!C1*He?PY9`O~de;>QfAJ*|`@`InMN{zFWERYs{Ak(h$iAI(D znjms=EmiMI)aCWT5;9;?j{Y?dn^=?ycwnEFu7}IEn*8=Bi6)x7$6t#PtAtm%{yF$s zed92;Ehir-W#0Le9!*3H<(6)@H71o}^7o4y*S)zh8Qh*MzD%*V{tkP7<0ZY1Ejm=T z^z&MNqk1qy`ly2O)~_DkY>Mb^da0bPs9xJL*5|h#b3H)dJyA@$px~c0hGS$AeQvJ* zmdkI^(o?IP3CCzsb6sQB{qw2CNm#UZbL&hPi}`2T1c@E$?{r+H z95>kd`EfseU-G@#tszkux0?^_-(n<>F_0HOnc(EdnJ8E~!QL3FOh9Du} z!}v%`yZpYX{H-wO7oX<4SkKq2jp+e0dZ?SydIrDKBQbmi!-PR`+xr6X4HNJY+$gzU ztPiS#G=RPX(2yN^H6vY86<-{kmoD+pY7!(wTVo&rgSXqL;*g&ccup432rs9 z_=IYBO?1<1H@)J`;k)Y)-{`ziGlWNhG=~UKYM`YCUpfOwZSjiZf7~q8F8e*miwpk{ zbSn;T@)e#BS^>^HTmQoDb$U&RWOax}yv&%RqD;vupt4b>lG(6l{D`a~F410r6QuXL zVx143#uHQP*nw%GRK?LkR64q>M1f)Suv5^qS`}T^H^a2*F9AD*22YZtR>bHCNO zedy3Iv1$8=EvjaiOV)qJyx4 zQNfC95w>E0D)Y>9+*^b)%^!8AXoCf}2u4U=V<75i^6C;Ifz zw`y(7RAmuCT8{n=F@idsDL}wxOa2GaS#@-#f0H@V_%?eR4-(z34@Qp`ax%zu^sf&_ z;t5caUBbq$4=(fF48-!Po>P+^a^7lFzVaysnjesOk6(koGn+LDJm)eQ2~k)Ft@8(p8gd}QhdPTh)A zw-9*MAB_H_ii$JCWjZsMBS!l%Glo1YXLifXT!-%%Gwb{;A6h2Q&mheY){W8Cd(4jw z+;@Hwfu#Alj5;tWg>o>`qB?+|6|f@IxJ*7EM4724P_G<(YpEPSAi+*X=b1H_=P_Ql z&Z+`dS7uhnl|$@dFtRBm5~*up2l{;V_o8|Rdz$DPCG?-&a0JCUZQ)ZDZkR3(;ikX- z-xsKMxCU;SP8ODmG6oK_n4lKQ7@=lS2#fraiY&^4v>iu-LX6QNygnFAY&q+A8;?hk z=LHiIHa?BDbeK|WT+`60^46Pih#hM5KH%-^9+;1I^|CT;D&SElt5 z4smxA2-s)>2Ui+ijLR{e*dTRgHZ4dTrsRvkQ~vqon~<1%EPq;eAc?Z`Ox96$-J%k- zaFfAMm$54`MKCr(UR*yAWUM5jo2;+}I2Urc(p$osLiM678ypQSTWagjqXMLftrwFo zQ?S1M3v@2eCG8BA0;xH_+ZnG=UrZI}XG;N5S(Gu-D)-DXlPy=u@>K-GB9uA(MZe9W z0(!eBBINH#QH2uRU46w*SsbWCa3z-mMDZ|tu(2Y@t=YA6=f7ifm#xHvF_ZKaFhem3 zTYy=DcvCs9IKP)r;K`N|yh#7g?t<6xNtnzDg-|`C0oo4qWkBQ-whW2DdCq|Z3b7bz z>^X=R17!RR6Ue=iWVXxk1l)|*b8~)_4BVZP$RNJSy-sqTcgk5P56(A;epSd^i9Hk* zX@MUq9IsDa<8MkSt!lN4jCt**+Iz`Aj?jwmiqQkq^9|r6-|*Y85EL-blC-KM%@fL# z@1QL0S1$tF;4YIpZ`_>R`7Ku{TQ;m{L{QpM3jxc7H?19^H(vc!Z$m)bHMxe z>Zf^k=QrzTL-(2gjE?haczg2w_^hjBTI(eFcoBN+lzspGPYdb!?@`+Le)IO^2Pb|% zt$tQvkB&)Ip%1bQByWN8-PxfkyN-VHovNq~?)8rbmk-xAi+-Omcyi@1uzxp{WrA|_fKo_`(EX$WswT2il z`zxoa&1B#-A->5JkpmnM(tCs-om#Q0P&MBuJSvli)|wP)6W z5wIjzm}%eoIQF8JlShmlfuT_$K4gD`r$gRCw#F91(|As9DZWOPE@6GklSlC1XgM*_ z_pA%;&gWLq<^s>@+KAw-{wn)!(lFFNuoJ&A9#!w*=ml zW46Pie*p*BZwLjz+^$YYwNXwUa$Va`CP6NfvMF!z_?P}}&*cImQgcHq#k6sa*%-Wn z64s~g?)%2PN$%a9`_O^W!PUvfkTk(zmgoCQ!mQlacwF5=Ou{(85a*ROlD?pLRo_CU zP43i(;tO60$#iSg1iZjuH7P%2TT3I;cDtd=;Vwc812#Jn2H0{^VO%3-+MN{5#vz8~ z0X(W;T-Ltip5f8Y;{qWs_OgqtYowy1W}&{qiiA`!#pDxC@amWv{Dw#6Y^bXj7+s({ zlfkPxO-nq!YpAR62}mGb%@4I3<|^1?BMdZ_q%Of+bSCbia%_}e#tly!pFDIs1_9_L z67fEUV<|@h{$P}3Qu{>kYK|}4)8ayZ@_!bGlg~c0N|=?P1)CAJo0Csr=$U-u78lLWcSi^SrBR<+9w*(<75o6D6n`vS^AZsZbNCaAQN=7$n%w}b$ z+p|v=e@33x5N2}Nt|1YB6La8M6J9yn%}_DkoPBcr&k@dj_Q~E?F%NGB!}9azu;S7L z9HItKSgPH|BRe56q~wPu>#jCn4)Qo^@86tU$~E`@99=s5WNpo4#*!8CAZpcOL!KJy zS|KZu{1K#N>Q=6DVtu>stFW5Vg)J;K_`y3|H;r z+2^90sH0schsGT;*)4R`jwZiO!sq^Oi!j0R6yhxAD(;@$ZI?%{wG96-7PVA@Pv7)g zPz38-W@DB40Uo$l&C6!JkW3<#Nh32uO*|zPMdnIoIJ*1KV-|?0b^4{}5&qTmIaxko zDpMcsHn+byK9_mRqgUZB#nqPipf40Z{5*F<*%T?l7#vD1R%8VmG3cvngULTfPZ`uz z$iJ{Jf_8K&;`M9?m~#m}dXVI!9E@#aWomJa77g5F-D15>(LLVmTBS|;pv|bOUS{wr zZP-@7*#IZ{Lv*j%>@7#HsOsYklKgATB2o1lYw|f@x+EYIh^`cm30ZJvr8xuk4G{u( ze(|^|qs2PvE>zwMq%yHJHAVZ>idj}3=U@t^gyoq$j_wCTqtJSMO@k}w1~dr1#WS|Q zEFJltLEBC$NzCNZK*nq@=nN#`q%#)~fjL|@Kj%)G)v3Nx#ZVn1Np8vGBRD`Hln7K~ z0EXfb^Ic~t5m(nv;YJunjb3hl~6F|Bdh4P0P(oCYWxDG+uT&F(k?I;GI6$)fz z{Y2ebAAC9cD*p4fe)6)LRM#=e@b~H7>x}_C=n%zIMgHHvY^F2J5&6Ln{`6mM%F!>3 zi_n`V2iI{nA^fPnY{KP3FVTt9K!o|}X zkNw9GljSp3Z!B{-)1=1~6c>xaqY2O!WKZc63Nsh!3)&3C^ZYZbv3z`v;>I_gC6j(n zzVeH2F5QTIQ!2Ji{c39xpr#iuunFIxz-vZSut2-c=)!=E@gpHN{eoMij+Jz*jHb|> zl9^N_^b`ANe^6vz3e6f|rWG9A?GE7%d>0%Y507{myXS3>=Z4~IcV&?57?(MgI$KzP zM~~%{=d9b(9W7;d85S|Bn zaj0QApyN&+r_9Ijc?R2KP=coyU4h^jh&8cNPc^X!uCM23ckwPJhlZget!NEKSvA7YCyn+ z3ac+yuje;R38rf8O+1JtFYZtP+m?yq4*uDQg8!J`Vop({KQbGYoiYc8@df3>jE}o+O#Z#Q%jL*R)-9@Q-R7 zR#R_OOcx7*UOo;ZP0c0f)Q>e=+BHG}<1DYVQ#Zd`@cD(vD(;?0PjCYG6rmGM#2MH1iZJ1jy-U_%>h@l9QP9>I8zLKCSQk!49rP z9y#$dhJ=L$9fP7UD6JZUSZut6;v$U7RlCENs5qVhJSa(Q8=G@47|Ao&k!+cxOS-}U z32go zEZYJG!UihC?&YZeFgDj{7cW{FGW*M0>MZp2nJkctNgZrwN!L>Vo0Uo!(pM8dik&GG zd`EGgD+yImBu8_wn@xmn+M+G6jLZAg**7PKlFU>5;GR6UD_HA2(23fS(<_rdtZ_^L zZmjrWl%zwL4a2Hymk8l?W_!XX&Vky{WQjGO8flsv*(~hv5ajUZ;SHENJY#uN+5`CanFKI|96z;3t8nj!o_h`5F7b4`QR4bQPf_$12FY%nE8NULmy=o-;}UNbqE`nJHntuG-aSSiW#kihyH-zx`0P#@1Ol$sI%tCMCM4MS+zpKF(D`0WA9zbqK2gGW zMe6kiBo2W<7q}qWTq`ZIyhAJ^=N2aaQx9!AGo%-o5K#7q%cg8dX*c*uzO{;(Fx$m~ z+>e$`HiRjxyosZFmf@m2p5ek-ggqd}K|KGkc8HyL+&&KBB+Xb1O&PMv+z>1<8XD5j zT51R+?NVvPPi5b%C)U8X;6i^cUxuY@y?!r2cto(bT(^ux15*?F7A5k)BV;<` z0jlpm=mF_qL2+Uow|fy13_>)ltrag$q{w+RVF^thox=M=_Jk=s39=_lp$$#`F*_i; zDZD?fEFPc2lW=7bNiEtu4$jVSCFV{O9W$xRayEr%K_5Je)4h5>j;V86IOs9Y8?=!K z(h0&I2i>uf{2X%y*NnS(C=n8+#Fw&AK62LXMSLAVVR?aYCllZNDFh(2>1AX%bOFDP z#HUUJBNw3Da@JA@P#6RbM5&rrVwQY4MipMgdAdKD98bt>Go8!1rqixlo36X2XLL^& z-2G2PoM4GA2p#~-G-H&wkO+343*NRpE{LzDoBRJ7OU)9oNFO}+nG^rmDL5uG$oDuH znRFRiN18di4KfU?0U8Q03HqMe`p>pb|&lz`HA#o<`k2i z^hKO1a@C2Tw%9`Unxlxjm*aSm*{e#8O<~j)hpMB zoR?>6i%{{=u9%oq8L>3=L>JH`J+&d98D6wUOCarPv+*4GW%eMd=5b5<^O-`h=}VS6 zY<2RR)>R;Ch6xF4zyK0?o*}tx$$c50bAM=>W1s-`@QDvt7yF1Kh!Ye+vnlSaihCqm z*Clid+o8C3LOz}!4fk-=9mPFcyc_po!pvV%{3P~^EFzc;Q1Zi&5Gw$LxEK|gpu|Q8 zq{$778^c?xi>jaqY|K<$}M9egA7q^WF;g{lf! zm#Xgmy#1eDr+!|x=dPp0q>z1Ao!T>=kjj9LAs*FoREbUo#mUm=#{i1u|A&?rUrL~O z5%oND(*%m|2Pp7Op8yOdGS(h@}rO}3iODob~K7G$`~PEUBJf>Rt+p=DP-^b4dP2Dj~m^<|D#@)?@{rz znys!4jKr~%EZhabaM8aw|E0h*g~SNOxf#00y6ifkCxGC7EN&_+oTjwL9R{^4TtXcy zF#*<>K-0Pzl6l&(@`+=n<8eL!QKg66{T^8U7%OGC6u-VB1H#u@Ax+_w2eHs#-Sy|S zRgjlfPa8u;Nr}o>6H}1;OVM|_5IF|XQM}^_5m=0Oh7C0pzPJS!)yJBL73+Jow{#=n z&k_b*gk4}7T7trkq-6?DWv1pwLf^Qn<`u2;k?qXM@1>YJvQudz;_wg0Hw4!gZCGCcno-6v^*dc3vz1GpYXt40C8` zZ=H@!MCgOM{L(JXtvk*crgzOsH*lP^Cg}9cM0XeH+ly*E_F+LRc`jY90^0+0FCPJG zFAa~7ocluE>`n3TaUVWWej@#1Q@SOY7|-NA&4tYLm$(rAKFg9{PP62@!-~BqmoaGC zalKAV&=9K1jcStSl!K*9gOoRWj3>7!R`)CssuKSWgqEu~^I)-(lpU4rq?ESw#F; zVL${TKGsD31Myin@UM_U>lw{&P@9F*fax(s{SHGN_Gi$S_ipS0(G42XLl~#Fswe{-3u9Leg`TZu zZ6p)KP5_cv4bMHL1ZB9dx~u-?2kxI>TG9``X22Y>Qp*=va81AUFbnr))knU?njYV> zoC;7A$yXBmTh`m&CkoJ*Ig$~~J1C2Z?9t`fRRvSt95N@{!)dyOD zyh+)N5mY(?XkxfTwKG1bEl^x7C zvcm}L&UF-0g1%A>&@ka!ozAtYbrBJdo;Buh7p8Nq*eW3=5FaEaP{4DoqEhxDGshnF z)Ut%5N`M)IR!TBfevFhKh*VCv(vUr29WKrA5>rdt*C!r*AC`w>%bIqso;qQ;GuH-}B^s>p-pN*`r(6Z4_RtihVBO!Qii8l^o6#M3#922) zhD845o^%&yYV@uv-&c_DP8L2X=8&E<+Ze>8h*RB(Hz${Ysu(709a3XIeDbrFbTR!L<5^0Xod#SBWrM^@Qj_Ifx!8+D-2qsvz}z8 z3^J+N8q##aX;;f2zyfp&6hwhxI@XF%TIh#%3E~c(Jb&8NmdNVi2QuQJ{Bo;ts|`*^ zqFiwz!-joqF|r~DYKs(_TR;kYA_*zzVIW0nnir`mop$pL%jy$(SXD?TJg*4D>!WKi zm5eSij?1W5D36RL;F9b0^BSf~D5`)(s4}U1BPYEfp+Jx!N&etjvxu)~AnB_x45V6f15@zhx(-H_JkrG#hC|S;yMLqK1;qn*B~W1${95&fa1f7l^DoLC7WMTD zIR4bvM?Z5eSTFT*HWqd&d4s3}&kT$qW_P@j_;XjVX;IN(wc^Psy!=3c&oAkkCZLV6 z5ev}bV|?f))6AO-04X980Iz}Ms}o`$BZxbSlfU3d@hg_8qfE1wVt+tD$t{$Qt3fkY zt(a^vM1b0)^DrWMfqpp&J&&|X#rJ@^p^;3=~OX8>>j!?T(%vpD4K3o3O)!S7dJYL`CGJvwu<`dP~I z=%r`b(@QK7L*vwY03*=3x%2({CXpBcFMvcxbA`*@B$<3&PY=8eLM$;n3P+y0yyEc! z2+QfjguueK;PIp#(eD+RWSgEPSc`-onr@I276t~zf-#YrJ7TItR|4uI#?8*&aJ>k- zyCG?ZBnkUAnC@~rl6P~R$0k0?xMSolClOF(Qdha_JyD`X`YB%KhuqXgz5ZfjLk0xy z#RLfApQo0atH6+o37zrs6jQ->+_5K+N?SyzI)oirHjEP2woMQIL`2?+0r@;pu~5Ap+J~PmM#@U? zquAB=LX(LrTp#>Yu7DMP*sv|9XF`;=XEYX-C50W_oqoY0>ZC7<<6rcn#r;9Lj`H%UzeXMoh4*P0S$yteC7HPX2=O8L|D(i$zjs5O?v~)f@D9FuXBF&e=dMjO?Er0#x6E?dw=eP9DGkdJ}O!FWgkZoU*)%Or6BQaf;U z-5+bm_0kZ@&VMNBP$>V7oqDPwJT_p2uU`xsS=kixD#-MNTM;8RuDq0B@nULRT;`2E z9kVD4FnuX_)R}OsilRz6;QSylODnnhyEOhZr(Th^NxH z@E-#BXmMQRu|_Yhuq@kxXBSVt@fbw!=t|ddG4=6l#4nsU2A>5``17SsS&q&hG((0i zfOz#nv&fHFA|O%4*~F$$MH#s~QFsTGDHqUhOn?AUb$S8%SAx*xU^i{l`*<5Z`U(gE zHuwGup+z9Xj@p3Gq7Xs?Pa$;aLqLcr)u+mwU9$J7#VLgFv%<}o5=AV1eY9#+l%m)B zAcJrj50u~*yn=UV2ryd$Op((C-N8PDi2)AGJ(nIA%Q)>8T!f<-o5o|(N+}|gI8oHZ zR_w%RigDfvF-FuWL#ofP@*0Bp2M`rJ(2kXg^%Z_OlL(K^$w=cNu|X&_>Vha5aCtj5 z-S?9_eGT{#qV`VNVnVCds-lz>Fpxor=)w68l1z8B3HWcfoHTg7U3Yv95pR>l8+1OJ z=R(Hf-7$k`SWQtF!5Zq9C5vMvp+ILF05E;jJ}nhz+c}`9Q8^lC#ie5=9B&>w0cxPt zqH`9O%t-9f-pDHAP{u6~?44)`K+Ng;MavzzXcM-!wfz4A{Gb689(I>$QE@{+} zS&^br1xV~FAbPGh{X=dn*?~Vo4{MvS{oYq4aZSD3^4>)XdGYe zCri$Os!`20DG|Gs@>6zN{?;38V&mWzi$6VCy!A@UVWX*>_%CZ*HXlLcy$W!!2VVf$ z2s>8!3VbH}wxWyfQCATMageAH-i6TXDv!RbPS_7g1Hs0R^b2GO1U*301>2*k%z$mm zjVVks;Sx4MTq)Req~;jq$(1t|UFE`3F&e!?qdr z&d;z$C=|5k8KI|VCf3M3$j?rVVLKm5;*6R~24yg%StK?;CbWY=2;|q2`TXTcXctEw z5tszJ3?g%+T?F4))VVH8Ksb$xo?`4WGooKq@I;A$9wA?2g!hs}J_=^wuSmjJ7c)PF zL|-0b2+#vpj6;0zJ2lq*f`yf|33wU+pk`e8?Kn8R$2-n zLenvvgK^sKNqqJSg40vTA$JA>ABca*AsJzI@s#QoSkkWY7{AWNqKK8&edY-+lPfwh zOBgtg%u?QgmuHDV&(9LjiBSWLZW==Lp}ZcMrP=EbHA`l)#9lzHgZWt+bck;Tr|B%Q z+&f{GI39?7aMv428(}q_C7%B?&5|_n_0k1vW;aewux_EhHTepz+^RE?vN1J^w_UtIZB)V!}D2sd-3|ZUr%$EYZcnQ6Q8okj1#idvOAvJaH9= zDmyMguyFgOXK87FK0YCNZ*!hyDcK;2`}SluK3{A{5TP0a3mBoK_!~e;G&^hxR&b3K zm+%4fEcF9+sHU-9hAjqeyX1sRlJGRPw2jvp45^;v*d9$B6|m_yF_O?j9U=A$GNSP5 z7G$til||C%pd^;B*BWx0S1pzk3Itf)hgX3d3IxqXW%$C}q6Vu|sGWT>Tcy zKY;_M$z=@j-bOI6sn_mOF@upwrAinn1_HJ<=K?>AP^&!Wg3|{Lr;0CBPdVPNtkD1k zMP;X&MQS0j*a1&%4!%ewVlX1@ZoYVGMsd|aS0L2uP=OuZRxC(Zo@;ChRdlj=NNeg< zd=nxo*7Q5=DcwXE;-jCfqpO;21k^U$WYv2F47X^A1xRd#*%5y46)5MtgsZ~EMno6V z9nfyf?D##K$ibTsQpU?@&7dkiS%fvEK>-@*2 z>p%zBa;3m*hT;W{{P=s3mw)>}VE#JGJTZS=%*P&j ztHb;*1mu30Ps#=+NX!qfH{F?GejLUl=A#X!zGY-{uHc;maa$~d&0$Ct1G}wc%9Rj4 zj61dyCEaZ^F+^Fv%ZFh9A$Rc5XrE@0uD7@~9@S0!y=189><_d-N7)Rn4F?+IPEksv zMc5)kmLh-AuW$#Tx#;&fOpzt4i6e+Vuy=8jefYs`bP%q>(pb~eJ9vf%3&Gas1^mol z#a{LJj6ZS-)|#H}1!V=3_d6S3OZ)+n2Lb*`5&p!raY6mk9n(Ac#hwNMY2Q;i!L@kF zs|qcaF!bvrE>4WPxEW+Tg4Lc=90n8bB5AUs6ulW_o!0)15xB`tF!zhrXTMy|N={Bt zD68;r{Nb^brfW=K(VhZzd3(wo#v2ai6sfds!fMx<+ve1JW=Fut0RQDeR(*QkZukxN zJVNgq^M_2uhoV(S2Wd$Y4Ae%nuG7ehb-3(B_Sp!geH&SsHe!vEr;Q+_<+hdlQqak% z#amj-s~85l6P9e}-C0e_^}W=#WpD}9+Tnt7jc=0a9fQYX8*Kz`Lob zA)Z5f$<%Qh|w3Q&O|nh_WiM^i8m$AuFx#7bcDN(C-za zb=5$P#Sa4K&e3K;xLgz|uol0QXK| zSj`Kml^NUYUdKVlcz{GIXV_pLao2yUvM;yg%tCfU?9Vo`xCcY{j$-*2qy)&-TF}Am zL|U$)nW;0U)!gD-Cyo|qOR~N-gD;p#0I%0HN!3X-h9@WrL?npsLR%RW!!f2@Hs;({l*D;~GT+12~aq+<1BsS+}=YX3% z0|qiz0CClaPw_LY{~7G$znbIG1@eKFDTJ1kvwl*}_{BFGx}LPACrZ%3lAxd$6ap{j z(`7GRE~Lw4KEVEdg(1`OUMoqbncZ)X1}+I+&ha@emjQ7eP1BxZG@MgE59hg+zH3P2 zGKLGm#7dDEn@GkERyA9WS!4(dmiUEYN5Hr~bfqjzen8rC>3Q@oHVYSvmok(=b*SK= z#VlO`Ywj^GcCzVn)yI4BPC*3?x5{a$S*Ssz5m1drsg>-3D%zYS(pfA!ocRm zOz_-3kEJv1T}&kRqxuao^&58B-+p@iA~O;3Q%t;07Crn!!c;m1 znHru)hoCb?P5>;b*E5RipGp8~Tf#r#oKy$ftjYrAg^mVCM0Cj!A?G|%O>lH~3Q>aO z>Qj|=t_)b1O10!oV16w4Oe~;6!ocN|EDn=2BZ8{U_XG!;CxNMOBllZ?NCUR}$ta2! zg@gj=MOw({1)a-QeiBfvDrx}_D^)RLu~~~{P#kM-^g{Bq&0}Y z|4)L%r=awxTQF7>ISM8eF@<`tih@_nkn%q=K=5uUy8u832JgCzhbu=OMzit!7F60v|14qOAZgWt4uLwAyGI9tj23O{G!c<7qAB_fue zo~@ywGL)yA0-qfT8uW)&Fq2?Yyx*kfxbC92U1b#DdnKT>o&m>%V+2Y)vKqtWC=%*b zaOa(%?Nxem2BOJwE_?CfFrlde5l;GRBoKqS?J*iISBVgwQy^e-S!UnMhjv_nSeD78 zcrV31;0XEeaXA%)W_U@RMa?(bG0q9a$JDM$^)Ny-LNNxCVfsc)XD=LDObVL3Tf zAedg%Yq=WhY;;6xK_dftNsn-=C_Ny2Eh#im6ZiHfGRbl5x$8mI32F_UfbgsUZ-}Co z$Lop4nUk^teQC)2cdj(U?9%Pf3L7!B+b3qE!cQ${pD-E_+V z-L=x1p&!*(A~y+kM(dA2<(M?V@}p}nc=laLWbK7tYAVH#EGiCu#^hzh4AZ8KAUFOnLVPt2+gFuWLh7FFg&Kj zpjkM#Qud1iInKbIM65QCez^?a&>9m0z`sa`GhtQC`b-t*9148#7TjaHN=QGZ%Y^P{ zbHt|rr6?Jd^Qm&ypGhckq67pV>)X7PNCocYQ=s{`OX-HMpg@Q?fwZ2dn|h{r!{&7T zyj^kyrf+dgLk2Icp#(2xPM}&T3DM|Ym`cfIQYk1U!}tBmv>U#iUk)$Si$*fU(vNh>&7W<$KB>H3e=5HG|KAD<2J${)KSJ|07SYBt2He~gA0 zV|(tXRW_b|@$P3~zUuHh9a(l}_A}xKW_qXk)NJ>Zaqy&VD&8z_$GsF)sw3 z=9k#^q5(En4^lluvi_9wh;$hI7fa=`5xML^>oLn{TK_kD?*nAlbsqNJd*9pLxBGU1 z2Ve;<@rS(cVM#40fP!oYfJs{13zHBfS(cnAF6+`IDFPI+3xUJ}q~ux>;fSF*t;S_j zHN(1U47;3CX$gnZs|;$32XKD`_8>@-vSGe zv?bbZLU7+b_ug~QpYMF<`**(c9RQ!&l|GAhMH4CWOn4rG0BhRSw8?V)_S>C)PLcJd z0zSjRLFO_VY6E{n|)I@Du#(D zU9E2OI=)pxn5bLVXZafx(1V{Kqo^>9UyEK)NE;y2M#6g3gS60eWFGFCta44cJfI9d z#5cfVoWe}E;DBSpOi}Ef1hDx4ShgNW0bjI!lzBF;_E>d0^u-G=NN^AH_xTKi>s9`6fY~# z`Qgix=|h*b(}zU-V)(M^8>}Tb@R2cv-_eITWr{Hd+=?)?{$+(uuHW!_vF=gA^Vd+c zV|rAtN07&~CJ)jBDNR7sFl<;YVbQVIL*}-N>HASZiz?2p0orS9l+LOrCoStTxP5+2 z)+ZBuzjgUI{Lz|x->S#q@_b)jlkbI;?<<$*yRatTS5m&OUY_r3Yw~^7d<{Hw)b~8V z?sl+)K)EaZOtcPY&Sbqz%GJEPS$-a;6_k1XF7N(kLF8BHc(x}qq#i+d25vg2hzUSu zX4~CCjQ~6Lk9cxFLTV%)i5=@SfFRO-L!giU3`GIBg8s{FFOOnfk6nayRlB1U(qms1qTu^M0b&NhA6t9I28l5BfTB#jp2Wn6U90456{(OM%>AaZyX8AcQVsCn;w!Y}ak*pU0)Kgi8=ulBWu-LZhNV7tRc426m4rre>V zx~fTgO2`fSZV!<{bl7i5YZ!a6<6y+u z=gZdl!{t*?mhCdzv=Q!mn9X%P;%>A?MI zIPdioMQ&?c4r33Pd<27Em$M#s@$s^UB4#3Hcbp%{c$?>`+=nf93s0+Zh2CY=uakY- z`?q&Dq-WJXiTm!KCtKQc{^2Q@2jcLYK(pQ2nDp`ZR3)&{||h&bJ~hS zG4P}4HU=TT1N6~lvVwVh>3$k)705vXEa(ZoD-aJO?T-f358+T-UBpr-4)!JB_XG>Oh^j{~Bb#waT?aN21MYIA%fAXCGL-ReySvZ8y% zoLw!GiHlu02YFi&OdrrA6StQcjaKi3-W_W`4?QvKqTsa@Mf8$MeNOwAOr&m_jyNr$k3z&3D3>6@k$M7Dh|E^0e?iSvLMG( zJE-El)w8rfIo*F=4g{>5G8!Cp%tLwhy>|N;Z8=D9X&IFZA{RT1gifkN9?>5r}ej4+uTcLkuLfk znd=;29x({12vH3aL~IT>HH~GMz8Wk%)dzFK!_FgV;ro}(|9Y|^^g&b>nt4-n|8aYG zN5#c3W5X{Sk%$y}{~YDNe*qC})l`4rwOGTblX zeb>dk)c*mZzpaumr1IedT}QUm@H8?9FQvoQ%BoIK6t+rvd$%&#gv=sKV|bST;^6T_ zjn+TF8EcahAG!qbi&>efg|3v7ms1uchJ^SvcBP|*|3Kb7G7h7dRRGb{C_8Pr#pUIe zSwx&pfOEF3Ic{0IoH`bl)#H{E)HypI5(o5aU0_Yu9gdn7U#a)7AV?!}Ld=+!vz)nx z?pL<6+YR-LqK3Hb6527Dr7wqNl%K;kR`ejWg_JiSU7`>2Nbk|rqy!QR)Lx? z$9_H*?7%Tu5!)_M?&4(}n;|!>H(?~kz}@&@%vRanI;sL2lL^rv!`@G!y0#=qR5AFr z{Q4-_lRz=h=muF4 zQ1qw7TIE!F^*eW9KBP;m0qa^!%T*#nh(PH`@T#HdWU}*R`@<1H2lf5^-M=HN5RM;B zHf;u#w)=z97T8^m5k=65Js>U%V#IsHp&7Z#yL1|3+%OM_cp$Xm6;iIs8y*ULElCiY z$3{No6zpW4FguyyH{!gwZYycP9(5$fSd`+7mF|ByR*Zi(XdQszw56qVylam^B|nyV zBM&NF6Emtm#>B_si_~8%vdvFw6aQtO8?@>ZelDE7{WIn8<~#o&`^-ma=h)%)Q=Ij4 z`_oS{E!x8mH-2u=KK#>yoc}sME;xp_7qU=G@D%9qare3Z>WL6J!FW%0B|W-v_)HUuf`0t~RDgaQh+ilKsX?6yvVggwde zj_22m+>@6MU2!;XhM|GqS%!#)GeBj*JE{yz3XA!ID-AopPkiplzt0)M-Cvt)aoX;u z3lB$m5yYQ{2;+uFywL&}{;Fq8ayTPKw<&g_R5`x4`OgjVU+rHPW1miEA*qR4-Y(q(jH91 zZgu|-4{mqv>{;r4a=`cJ2Kk*?{oluESGc$DF**tJdyf^b5CiF-WSR(L@u0qU<1~)& zd)NyIi-E~-6lGLI8+R@b@NR`})+N7K{bC<3(PZoPZO^`?>ReIbmdG)O+i`V_^?luG zo3CE29vr5#>>-gm|8J=Rq8hfuSher7MXzjqC6 z5U_qjiYUs(N3F$br!ExL&L7#{?~of`0JfSCR{`wmobPV~=dXjcjx(Clqm7>{$KM0_ z+V<3^2iG~mU--Yj**XjQMB=lbd9Nh5E&_R%-678>o64jQIg|_9*QGps9)sVc%nG)y zp2P+iSx$!;EeOZyAWNYipd@B;n4imTb=^`mc@mssuj0n)53(a3lUq#!Og?igCh5yo z`a(A}N*l{9_RLh#$a3rB{Vha!-+Bf+MSrF;_9TZQ(^1X8`!xJk=yEsHT90T^V2$PSzGBR+{DsC!E0Tb~2z8a0KOrhfbIb9j?uzg@VNL?Ty9okc zUJGd5uv+ca9y<4Pebz32j&gBJohjMeDUvd;=FXM*17w&I!Xe`+UB)@e775cGzVo;C{Et%dYWkIv?QCPkn&HsGzQHSA3%StfX~J;m*$n8*vQ$ zWU$%^U||&wu-ha+ix&9GPN!<>(J=pwyY*3J50HtHtw%%1b~9V-&>3PMqRLox-zoMu zV9%ip&tIcc%xe)$P-UE+%3LnHOb<;l!%Q-OE9LWqQ+D+eni!QlMXaUZjVpsK+dlwe zu`!s5z$VkB{xv|y7SP~m12g}cq~x6TJXWToe@;!I#?flr-tZX4)UvgFzTDK?g|J!W zX(FWEdDT7z!A-;@s*0G(kObBcHkWbYqj{>m)jKWq?(He(W(nN}zk{j~tJ%!yGLws3%vLsnQ}&r&Ye~Pqx5S3Hb!) zDJw@A$q`H;j0Yd0nDBnIU+KB1D?G5CICJ1)w`Rmmb8Ml2niH2{#>@d-!`$5o#3>YZ zUj5gsM&~{Dculfd(XoIlMJ-J$fQ3~viLO|6)Kamjg0G?RRK;}}bgOHmU=XI7`~ZC( z?}Je`w~z-?n*rmPDzwceFnw?hyc9;9-W!Zys+NCplEeHsCY7;E)ec$25tHB2vCRhQweu;F}V!@>m-m>fg-66-S zTeNbHsVlRWWA*LF0GG5XQ7UHfCc}8(KQX>sw#3vVA8Wn9^)=PUxx2{9>})g3b{@8% zknRmhRAGkW^VF!N3OuW+LYaY36ZH$&*m9ML5Iklk#$)C1$e-{+wTK7eg<|T9ZS45v zRQH#{PyjiS_+$3t6yRhnKuy$I&$7^edoGcL6jumSXPYXRzbnB9}@g({Po0C>N@dpw5espW%>}!Vw1dF z!ueV^Y<#t0?BlN+CSpk>SeA!afIJM?8XFP>#fST-7eGr%nI2(d!u2am7QBU2=y5_r zp$)7@dpNcske9oC=~C$g&bt3@c#HtEW(^NZlaPKM_cIp68Ad&0i~!RsT;FfN$cWUf z1@kdibow+2sLyAI#kOL5tWQ&JZ=(AvV`+phVvw1bm&Kjs$ZMxn2m4Tc+xx3(MsN!c zKzO1Y->zT5#IC6jTn`Y`5el!xIX`2dytpC%50e5D?oAJR2iOl7udq6h?{02dk)kM( zNG1)b=GE<_K!rnf?Xeb27a*j&i^YSjGNlfA6bq_f{OnlKnl(X`%5ZcvXL*pS`D%AT zO!uSdn~x;-MV{T`SVW0;YxRM;0dc7AUqNVPT#!cM(F9fp#%N)w_f#HIFUW~rhXmbP zq{YT@Mr>lU==ar|;5%toJ!+nT%fPnMz-3&+zm}-%u~CAyf+x*Ji+(c44v7MMMjNAi zQhknQS^nG!=L;+5-0gE<0cCRmLO${>pu5yarcdI zw};^lWV#e=0pa#+pJ5n z2EKsUI+`ntIlp+8A6(0l{3SdhhW* z#~d15>Zj5Q=-br2-qF#ze?EU3E58Ju(r}a<9AtyZr^Cb{f@^^D`)_Xpi$#Zgn(=m^ zWQn5~5G_8-)@si~j|c$Z!a^Uup7Q$<^twv=UqU3@CY!fuJE575tmz|qMy!FqEf}!g zAZ$B>Udn0Tr^MsmhjFf+1dpr*kHR5t1Y!T&k*0U5YBxx;C!x?9fWFN$>W4;w^N+@p z$ILla(~t*4%5$qkZ2ZL7-q0(yf1(W;I6g^H&$2m3IgkvHEVgupY{i*HEd@fJLbN{b zQ<8~lJzeK{nml*I@n1!aLK?uB-Ma-z0r?3bR(`QE$gn5E9=JorRkS!0@hIBLVf=OY z%R(NTFyu&GR?k>RHQ}S&#brgovs6Z>On&NM>rhHPYM9oE@cx~Es`c*TL-cOldNUUz z5W2N-^WX$AB#`?H1!LRWn;)Q7HaB}Q0*v>^;)u>FKg|?FM~S+uc41g;Ijk1h)na$x zSe#O&9=<%ee}D$BaoX})n!~u)en)}07-QwB-=v}}zZPfd7AqfikZxr{2C4SW*b7id z5G>Fhw4e=uCn@|$17pU_z}SL*+7u1&!V^pxZulKT!?HR@VT=g63=-{g6+WX#H* z%Ze(6F&~G5Zt~g~3c4=FCn1*r^RXR>28VL#9o=xtFE&bI)M^V_VEB+mxt_ri$a;Q= z$Fr=!`|Q*4p}W4dFd(MV7Ho$~rPHLqC{l53`*6Sx(7Z9s#cfwc(|GDF>!X%3_%P%A zOi|@P65usC_i{WvNY4vuFn1ZQVV?@n)-TW4UsATtc#0ZxyZTqja0&8>&icMpT&cB5ddaeP-2pdaB` zj03$kO=O7uFaR=OM^Qq^Vg(*$xmAsw=-sU8#Hwh4CW%z3f(t21FYA8O-yE%#iJSEf zpv*cQdBQQa4PaCq_~w3!)lQiguC)cYaEgNA+t<%i2Xs1aQ52Lrf#6l*xO zgcrUG|7;R;oYl;^pg7j!3;-NwtNekE+EMz?nv91X4V^^6-?a!?SPw;n~*=PdME&m|~p{VKF>F#Htvc8m!=il4Ba4PBT1= zqVT;1UoVCy28JYKBCvTm0&MIH0vnsx2(W>&zz#T#0vl`!U;}il7?rMrAW+zEolb*R zZ{F$-u}qn2JA@WU`HN{x?`BN7yB&LRG~!N$T`b(nw!N9fim6nclte5k;shFIOt^oR7h~ywz_&#{!B-=>1lh5W#A%l4IN1nq6>*mf;ABMj zxq&qndX)K(;kt-Hx!wCdk#~4bDlh}b@jY?AGYU}K`UC99-=~}&2BTUcZ*@QWHp*jV z-a7^fY_tJJh_is-K5#+bP?Og8VY+T&Co<)ovu*W+tXw@lqOJ`zx&g( zeQ7GC`Kw|^Dv{Tk0HURJsJSG*ytC`Bgv79L2#XDyuV;t!8q$9=a48lw4wlKk0&|9p zoCma`=ES-M72Uu6_IAO>V$dn=cTg~AA*m~N<#&s8u|C)q5~2<3D}-+y9nv7rg!0cMEU-lJxh%f1~=F{~I>GdGEV6zW?*c z{4J1D3ltc)J1EQ)@*_0xMvPLN41R>0$L=Ed5z0`_k5G4Z7n$56o&`UORKt(rqr{IC zRSOwxI-8@nh%Nz>3NjR_U?-6Zb`q(Eoy1MUP6~B<*vYGJe>X}GL-EJ@q>|fc{!#$wwvexw-qfidS= z=@p4di%w~+OAfvD+qBn)q9W<1U6%mSX}6IPF=akFiueGNK-;+Zn#>WY}zAepTJ{~V&V4Z;z!h)832 z;MgL3lx&gyk#&n=Jwo&6YK!o3s#`?nH7(NZw{D6p2DDu)m^k3L#6|Pd{BR6>)z`QE z&u78iNYF!i`)*+l9Hku@8uqwb-Pi-AobV9`qTa)Hw zo`vgCq&Ov{w&3#^<9*nbQ@!1vX{GRbJunPe30zRwZ4ax(9FBd|YCC`)NE7LhAxa_p zxNS37OSfwpjq*89(PR)zA+(Z3aH6y9cdP`VXdfVaJ;7V zQ3_Kd<_Xuuk*ZdwN)z;OWR75}h&j>Tn!1oThQW3_@_az#9$!nnZ$eL@L-tq~r@j3$jL1 zYkj=?@$X4BKr&EywVtzis%U5gutSR@9n##BI;53o!454hHyuKz)-XiZYD;nIWQR9rQ!H)zR`Ki$lB4v!LupQ$_aT}6@ggqtgR-lXB} zKKMPsq23RTpwRcKj^yI>z3oS$>UA9k)q<)+UWZg2Y#C1L_HY(}+r7Qvd&;=SG8_3K zj2n5v!<2J-RZa2@ zD+E2{kY?v+JVrcK3X@9^#P1MdWIs>*7`hB~3a=^!6@(cjPeskxJ}#R{(7-tXhuc`} zX~9$6gCHA09woBI08d!c7o|Wq0jD6JBvOpMS6ld_h3(C7%O!rrUgW@yDgmTY92o0m zL6L#5X0BKg91wDIo$E7D$cDP81E^?(jU-fC+0{2W+Jqj@1_MdQ+8 zF!@O1;6in4NVQ##p_!^HR+Y@=oz$jw*HMUyN9rWrPYnvdGT{$C;o1SVkHK(Z# zq>TkTiz9C|_1@A%KJZ4RovYVO$|e*TFa00b#i8(D5k_q>gY>Y3ejSM54#YsRUrG-oyF}q!xj) zuC9tLaVh{;MLy2y@ypPz>ay!7LagA8oa~WK8bN8L93sBiV!A|QL*h)jteu3#WB&T} zyckckso{43huky;GUj(lg&r<87X*)BvRh!n?>3qZcdkBi3DP4)MYeF+62FVp#b}7H z8+KfYMvY{NbAc4ApF6lr98?Y$1hq(lv?TzP!F2l&CGj!~XvNkD>9y3q`&Sd6d{eYP z=%~Zd?3khus+?v&3jSJd$O#_M{pWdF9)6QR2^p&Hu|T-A)50h9o78I8lek4Mg&VX( zG^1N&NlUpM>A3fd9Z;z*4v%&k&}g8Rf~(|$E=$N6UT7*Q0DhWF9o&Y=jDnHeU#Re!@7bn29G6zdAo@|oxW;audH2oI>;;gU z-ZAY2RFByg&8Dd~yPcZNoDrEPQcgkY>M5}DC-_$|FI*x)$lkwSa*C*PjFS6#8j&%E zCq4&S;R8oENZj7W7GP+yOf4DqU`I4_ zfp*mgr!>th20`c6X(;rBy*)M*?Tv|HL+4UM?FtR;8Ip3|p9SE6fK_?os%POQ15u9z~+ty~?Y1TH`uBWdv1|yqx9?WuKWH~6-!a7xl!%>N3+G{Ps z@~}`bujQ=8qQc&x!A4OUH6IfL)1ZV&#`Z*P1k0iY@Y;vziOYNnHBcJ*Ve94KpwUvj` zqx;+JKEgVhK$Z7B*)EJqDbyYEindaY?g$X1hXDdCVKmTcwGi7`jF#IF>S-<2wJ~Ci z58*KGYyKwr(<#0sJT?yj!S>k|z<^N|$-B9aW34X_k* zD0O;DGwa0!zv-0Ma+*4z$t~M+I#Xxh8*XmEcx)-LZ6pG^3xX%gxoYn5B=QJ~cr=Nr zm|@^ZBQS$3lw}sSE2WhS^eFe9@Yc3)-U4rFO7pha(nSC0SoS_L#<!wOo(SQ2U;?!VhUkH=Oec1JLl$d({LRJFZG)jUXX)!l4 zX+VGk0^OXTQ|bcCLb zAl=B=Cf+t^Qw3Z1127H;yVb4pIwz$aX~uJQzy_FloSU&FuupV^2tLsf&}`TdN6H&J zLRC@AbNkr@9NSNbsSxbk{9t{_60e{jIk#7?>lUTsf7OUKZH%9-9iKsOdw zvbib+n_*|6oW!362l`ST+;Sv3QfU*&0nSIqc;J#$NT4*A?m*{8BvA5-CtTXRum}tT zREYR5;|+n=}e)PKx=-2ZT$Iln6o|Kh7PYkx-qQNX`YRYZhOt>w$(3?<cGI=bMcqYKhGx}SAQrqM-kuSXUHs7E$7Gg9ySg02`131Uw}>X%wO z1F)$fJnj7$?NzpdKH65eRDfZ>pGYlQ?i6GJ-)`|>C`xx)i{#8{0UyU(lpBOPWI_2K z>*cfkYZJe7@jP>;Y^2GQwh<9gVG0>xqr#M~1KL=M_X8SX50+q|_M_ptW1a-@kiqj4 z<+Y6%8YF*G`3+eeF>kqF&>I*9brJy-XNqwq6rE;A0^$i90Yeeh5Tb&Ly1hT(2C_q* ziQ7Z_z>B)K+O6m`oIHB#$qn>2-ZE9}ZBjH{d+cwld&^DqR!0I#Llkd%+g=`BY|<$b_VrW3{JUnjKLWMjY} zh;BtUH;XpC*bv8E57bA~Vx4+9Bs+jUOHi^{IY9k&ksCd&Q-8o@o)IHfKUV-O%1vq8 zB#IjQTWJA*Bikl7Q8EqlxV7n#ZIcmNJsWPD$ zR5m+O8Sx+|I3kz}m9@M^W#gt+D}(yb+Muedl|>8YSV94S!^(hs=<_>aC&H{=T)4gf zSfC0#cvcMi}PN*JQ>>IdK3#z&pe2k3CZ z-J-@_Vgc=Ll?OF{nOZoARV`8+8HFv(XIRlnQY<=5!zf}YbF21{=|JXS4nsqAY@6P{ z&NDV}1EIC~ra=TZjO&ij&&#bKV#LqMiTs!*9T=7TRh)C&u+0O172(GX7V2d+afM+J`Dq{SbCME<)OZ9&zNeT@kIM82n7^l(O^+5J*V?M7&M?#2 z;5vF3%ZkK=rvIRE^qj6Tdzt>d6l}g#J>kA_8YtOl5&R2d*ANmaYP^6pOE2QPaxn41 zLB4%Cy0LuALa$k*W_#2#!@66Koo71r;fBMO62@g=hl!Ca-1ju zpE}~Z!?dQkm$tJWK50(VPNX=~Z?&CNzqXweZ98KgUe-?QP3;5`f%z~wLxjJ%rLafU1J;`-^jt9{4?(s?VJql|2IlezcV+*^Xd@(sOnT%n zfgrIihIGptHA(|hQL0qC|LNFsX*w-xV}EOj6eenI5#@3g^q&cV}(S`*JLi*Z1_+wBixnqfA8p|jS^NE7`tY(_24Bs97P7HK9(cR)<%w8t{_o@VaoU*p$v z*a^AJ5|0`OpHBZB4Z3VhaTcb^YxE;*l~ds+HE;zUxDB4~XXNaZ8x??Ve4cS6By0=( zA+IRw>P1P><>n6(wn8+&(N8rYgtATBuPHY!E8hnS?|Poj?TXTKE<4Z6|z8At^qzJq3sb|d*$qIgywnIfaVV$igB7h%z*?fw9X%1 z;5x(A@za1iPd}2tiASIv9uMS=MRui09XhJ7sjxINitg6WmkDpM0p{)P;97kx)Z0Qk zx;8ijRw$n;qqL|*`7yjiGN`}g-46-0PcFDYUS7+5XH+v9p~QP3LjaCU`#`l`IljBN zQ$i4_+Yh$Nl-jS~8719K9oLD5!{zYQG@{7zk~M9nZ(2dh${y>^>0m`tu+`gnMG6XV zC%Ig1;@&6hL+q5>kS^KKtTnS;#(Fg%+!B^-Gb617$gR~zcQ1FUKf!sBAwT?T#G2=1 zgt!CVEbgRtyXrXf>0MxZ^VRb>XFPgpCFIJSP`-HbFl+^fHXuDcQEr2sh7ULjnbal% zHt;axRzRoYu)a1Nt1f2+hFk#KPAlV_^5fbkYjqAzbTp?Ey~l6MZ|3d6f zW_5u88_V(hAiP80@qB;h;jBLZDYx>Mw-ynYq0AffJ`YzVhD{ftNvW#F@JVqM(4HC? z^?6)j{o0bZ6N5P~2-bA07N-$2W(NooAx^XY0!j7<*`48#q|Q}zf7Ml}4^lYoZjfwt zXzvuErM28QG@6fg2stLh7Nba)n?ggjXXVDwr-MFu;w|GDD(v;xI_(U>y>Xg{dh~Ci zqXmB%>0Nv{Wds`zNNC97PKaOm4w`b7|ANGH%AKnuMq+~TeObkxTK#ylA5&ymNWjiR z&Tp_|lHH(YQm>7E5-5sPn27YC3VO1Jnn5);5GrStpmC?_&n#!zKtd=#$cg*8fx!Si z*8dK;_LMjk37^&!SLqv03+Ew#1Q$&9E{;;^H?rtZ}469BImE43B)LzfSdx@f*=tJeWikAuiqjAx|6K%W&odslvwM z4EL*AMMgHzIEmW96c^acM9rC82pt%cT2H^+;di9D=t09pVu`@$fFmjDPQvha&`#(m zK=@z5L}zYP$cCFhb;p8RDbf@j3bW| zuCqA!+t~++Ov@+TU;VATxHY-r0EZiZ&JB|O9bh7t+46>6MYT!iE|3E^6~@9XE^0VT z706mBQ})q5#f|;uCV3yhNxVU~3vCQ}B4T<6Hq$0t4DX|jXR((6plxL(h?`8vh4rqraECl#3=5&e29kgnmv>e}#k}|DOa;N`*;+{do zJ|p!y&_x--KlyKQ+GK{{cratD7D_-iaWMN7m2)_DZP&bVCX9}i&G#T}W&o#STZ?5E zU13hG`QD7CRs(!D0oymTxMIvD0@*j~+&%aXx#T?Ag;ao#Bmwz!rda6ix8cf|(j;XC z#w$%aH0-Tou%3$r;@ahjhAdjxy|nLzDZQV})W4%f8_s5`p*koH@nZ!U$E?v;=-~hJ=4b}K}&!<>9JcU3BS5Yu*?te5n7#Dx>f8Y;> z2Y~=UqxRIyjcA*q1w(E}h2mK>d(&#OX#jAKO^oxde*)WRzmx_S?*Ji1MKh@h8aPe4 z6eO9mPm<9<(=b2fvKqY8$A9= zN*Tq)LB5(Dv>9gSah-iFR%RnunZE&6Qq}8d(lHjVGZvnkNK>C-Fk!J{yR+w}4z@0O z2-n3N^s(a*=pU@YUFh}6-qc$|>$*1JwNSjs>b00;S6kp{(F!QNFx3Z3%y7>L+yF69 zFT)rW8@?|v`4PjJseiMzMDs3i9w;Yc`dP3^63)~X2aa>1TGG&at__2wxH z2F%k ziP6=EU9SPA^qZ$ffz@A}N`wTgXgxE9M#sA3boDZD|BRy7%XvTKt#9Q03|vND`6jgC z^HYpkd@#79yyNhNCx7tlATFQ%%=6VN6B>}xAx+EVBN(k`E`0zqA!VQw-BB)n`qOZ_ z?!nesnZ?snOU__QteyjFe~|09xW1R`YuHt;P2MV~*@Qc4jbu5bjV+xlnxDy)^*}21nwHmn9-Y|K{L8K5F;h>Av!ewV?@6__gj5Hu=FF2U{-{ zzzh-ph*K~TKzWVu3h%)*T)WDh5c#|K<)Aaf|C-uyzmG$$xP68(orxBNKjJRi({kNK zb`p}n7D)#wJ&3qWW7^xIDx0BYPNCwv07zo)@ue|VsSv&RY2&-a0+k_hFpeVgJ?s4iq5*Z32Rbx?$ScSn+}A&bjwp5L*@H z4n`86;bzwpbxkN-Uqr}E*z(UguyI1tJEU#yJ*SD%HXtBvqu`A`g1yAz>lR4zD2XeQ zC{om-NCD)E{uX??E+YU4PsN2))Ft9bo3pNn!khdBw+|O`0hzMbB_N}inYR;MuMWZW zjR4oHBj8eF8iFgaf?WEPSV3OH31vvTU5IS08cujjT*BMTrGU^{g;D0@%0grVH@=F~ zhLQ@~uwI=^7!TSi&a@gUUwg612L(<^ph{dhuy`KlDzsniDK&<%IWI~r=gBM znGpV|7{M2dRfNC#2qHA3sd$AE99x6sS06zNYTTx+bW8GR1?s=mS^^bPqJ&(y16=>s zZQg`~D*)y7Kb}}pSK7i$pvr^)sI!Ddk`fFvM#OM~spd5I^7!|7ukffaG{DP#q4)}0 ztUPI&B!bX*YZ0>Kflq3vph$R>qKfKR&LNJvbTgn5xQ(onQR4s6k;(-QUMfGuh#If> z&ql(~0>WLhAz|FFL&Bbn16~glXNM#Eg$YU7**871*&B>(64QW_QmE#PtIW*=k8e%l zLdgf{9HE)0a{xQGh@?phkC-3e>&bMLrHu2H^BYj}5jux~ud#Z2x*$3S$}>}`jgier z0EWJ9sdK=OU{gb#g9@eSp>s@)=o~>f;6_y0=cw@5M}f|?1=pXU&Oxsd$4i@%T1n?< zC7lCGv8#6zA8zX18)9!_+rg-UHH(Q8Za=w*SCn(a?ts?8^&kjCt`Oi#c!G|Rk@Hc#KObKQR*l>Lmqfzc&-D4(B{PV5qPcxgdhlX{@k$h{~);SxslFa zE?(M9Ef?7vbbc*8zIx}GH{;Mca8Ej@LWhC)@SG>q)8gB-DCRYVCqZUUCpGDa=Mt>+wXbISP6$wZ^i!KD7>ogN=?-Yg9a_ zHRS(tY7L9H%t9m#ui7KP3k89ogUef{$8h^B-)Z}=@ZDcpt_2mLlR--0!g%|IXYCex z4HLxa;6U*;XDD3jrP!i&$MgLyFqSx&mSyNP*%6Kf%*$b}%F1`b$}R@qgUmxQl)|AH zJpBewnW-QNX1m1W+l}x%6vU+<=_~Reh$DX^h{u@$mNZ34J1sz+)yriCxL{Wopaz>n zaS!A~Q^uMI(P%g)d0QvuZBg)4j1jDO4-F7fnF?n;Ss?2OC^p+q|FRy#g}T!}Gh7OVar? z%)zvgj%jnlv@`lw&d9W>7*h}a@Dd0)YN6RfcFk=2 zxH6^s@8GU6K1`g?hXwXVObSZpogLG4k*^qYn#WF&shJq>yW z&+L1WL^)u~Up9z6e=PE(*K5t^tnx6`eubkFu$8lbqY;GE^#?Pz0F#Fbj{X=F?*MDXIEXQuU{#>Q71esf|qLmQlkxFv|N`%@f7JLFf}8SViH=3Lg@W}# zCZ`sKdX;d}bg(EK?=0F;Jb0LmADsBT4Mm!2nfmPHaq3$RJ_h%LxWmOnIyYvI9@vC+58m?FsZ{&sa@CW$Y&EKv3 z-NxT7{Cz)v@?B}>ew?0y(gud2HU*&Q;(Y&hds^a(zF4wwk#XUEt^CF`;sk(i7#QLD z1I5?9!qHx43MS*mZ)VDxTFlp3sQ^`Dr6TWVmOLtQT?xI`id=7mUcDoh`pn2`?L~~*|~W(ua}cvbGa`bijs_{W{0U0i0+)yw5c65(D(c0>n3g= zg6V!34-f8*rBInEHwibP2(^20PeRFEtOFV&r5XN1q!`@&k~A8yyV#*WTQp_f82nZ# z4daRa>ebU)z17^2AUV7W^0^@8y46FFy zOdF)a0VKQ!c{-#9OiNeS;QQ!j5FZQfJ;FYhuTG?iZzcARpjB zK#C3^$S|R|v7)4yMx)ox2p~49(eVD6N$Cx1{qM?ksR;AJ)hy<=%f>b4CX#DZMCKUC zabY;eE`~mLh1J0PEzU7kL&3UHJNeZonG^(LM&O#bJ|;boBts5LE>baHE;dmG8j`%D zCdurPi}}D3%1w#f{zEYFPFMCb<{0|f_4#)9d1g(7W&yiNvjdHvs1@}q{YSn}JnrOwJ ziNqmU)ErI{ht_y?635;(nzB%Ku1ez20j7>)=9+E5v|{t-!SEr#h~6Vio3Hv&3_ zE@h0?40QC(N*CMyf=CzJ8f4xkGH?4XNEhnm-yZ=lfY+stMF^LG{*{R}lIcP=cOc|Z zM9J6iGEyKV`6|gqB1LSx(nqb;k4VNxj?_mhrQXri{_nah3LVR+<@@iN8QW&?2Ws7s zWKBe+z{0^~|5g+G20zfh&BUI;?*1*(zDZeL@ZC9lN=>Wx+?GSl*nwbSl*|X6O=EGT z;HY3el~W><<^AtBv-k)36%Y6OLxbQ#?7@8$(GKU=;2~PF7qWdQf?W0>8M8xdAwwA^ zDs||C$YA9{+Nr_%t6sg6<@eD9p4NL5@TvZmG&{RJHnXzDSA__UOaU*eSfYA01#~R{ zi*gjuZQOzn7GKBwjDs&<(lxwiP!v_mSRBF7T=Thp8@TG;UfxpfZk&{FvB29(1k-YN zc}r7Ze~~*{?I`fVJUJBBIeyNrAERpvMJarcn$!AEGDfxMl^CsVwKTR7JQt~O1H>c#2twDzKeY$zQ zxGn#H$%Xv2;y`}HdZ(vl2-gqrOM)kbMxYE?O#smZ77NJ_>Vl>`VGpd>I^a@R|~Z|Z9? z(KZex0W6oOf^R}KGwS>r)olDy)hvRwgUbe+x*wSoNdV7GWOL=sP|aFzRW)NL{gHr8 zJ^$sY_rp_>U76d#gZ77+C{62au&M|whQP=ys+W{V?Qv3FVM&R_I|4Xrcv9ILZ!I!W zu~$tQnyDDfAcRjTV2`XNv0XkZw`s4M@-y5i)lHFeJSt9$9wjrxg6K54`Bn~b~q zE>7h9*6i;}DS<|KE4d@654>YXP~SnScLebei^CO28q7#icCXvt7J&Z&3{50=(|b>+ zj;GJ^^lqO$ljFENDS=}Di~7uh z3voEwD3_+U*i-$W;15Mul-B$ly0sIyW zX7PFEQU=u`a+Xk^)HIVN{TRKo+|alf%dkM~3^`{5+u6uZPxe&b(IR`6DN^p=o_01$F13KA!*oGh{4wi zx`t30wiY}9AR_=Iux<|sy3O`s^JWb{<>FM_OjQT4;0_@x)XyT*I*W%f;#qQFG1eivqSQKK^s$0!{BPG zUoxQHV5<6mzvKQ5o^Dhp>1iNfZAYIAQhWT7L0)-XM@uc(55p@gq_qehh0lf7<$}y{-cvq%r8MHLpa7kXIHm z(cx%GP}dzTyB3h~?4UQ-!BMA@VF%lnbZ|p-kSOXjWqhQAI=`>&-i8nZ#z(rB=FO^0 z$!Pad-(bi9ON%7$8h?^(xMsyrDp=7k9IAz3l>y9eW$$AT_W_=P16kPN$Z>8eqCsb_-XOFzRc97kYM?@IS1z_#yzgUpl z(3X;+?9IUZPH8@XGJ_o29R^qks4MIcJqQ`EGB}W*Dxo`we0@XotEeg=Zrx zs73M+;$-bo6RU=-+;1gh#5+W<-fblg@Ka>C3EW-Ha!;M*8)W(Sw989qHkG)* z5SJ7QvdZ6wdspwrq1&+n(uaKo4MOdCKeL@vsA`|mD>e&?OtTV#lm>Jj91$ zLYPcCKx<01z06=AT2~ON2>TPV#Wm$MQH!!ge5ij%OTv#e3V{nwh};(43U`3Ww6Cw+ zm7+krsvJX-Fc7cQN#a0UME^(agQ8s$2qJwSFC!2H^gu%e;n{cdkt=7B#GrvL6G_Y* z#)5#c*~Gv%RnbGGLe3$BLA3khatCrKmb9x+p2D8mIBBlYx zqOwgKAI2|aq;GekPqYHtO=};Z5}9$AL6Lf&N-CfCZm4Tv8njmz*2FeGmowS~(STK; zdE}HuV2;X7TRhWivfmIBSGLg*V=y9!HC#3(8T4ZqZ3A)!#tEqu+$;izrDd&21>xk4 z6Sf?d$NZj)HB*+ODTar`P79O<3tJ@%_t-~_;l}g*(O=9Y(+67%ba$d!2$2vbs2PiL z(eLmYbrH2EB~J(^Gz*L7VFJVLSh2cPYK^v8WiY zX(i3!S5bsr%{IpA>8^xWpTb5t2|$69V~X_Oc)Q4RkWu*C$e$P;9y4@oJ~;!2`1!$D z@S}jx0czO{ZD5Zo!5aymU_{7fZ7XRxsv&%G4r6jEBI{ zs`lSnSI%$KWC3FH0@RM>B%locE#P!jP<=1A-K;8~-g@!RvKEJ#crn{fs_}x}!47WgfBP2<`z;>~dFC+8a+ntL^yHEFY5` zQRG`X?kN;yHIM0DuKzpFX(4u+)uOtJLs1m5E7y7$bJ~L9P}zt>zt>V8D&MR)1iB|? zw-+ALx=dVUJm0*0k!U${KAG|Fh>$Ew9CtjAxi8W36pN~@g2hOSeUerP>Lold2%pcF zBN9@|R`bBxz36ftD0g@6L>Q%-YDW3%^1xAwPa_f!#PNtoNWlY1Haw7I;(_E_mk0X2 zHKkxkNU`$3&MFU#Wa5F5ta%`0XAKV|iV1@^Cl4%9=$P>IBCPewfI)!=(2}FtQisQ! zi7fo7w?`8YNi@yUJwBJO@lJM1Ws=@b_5WZeWRjj)k$m8*;oij##+FZ?Qkppvq8uU7D4A@h>F3+9f)segbX5FkXteXd0YLG_MlKZ9z&VZ6=>NoA)jue zW3e_BJ4(p34jWnhuor;ggq47aB?s0ze`8AfwMrdUq_o}re`CorD|2mQze{pV;9TLA z-(J4PxpqhM8_tYeFhh1m_Uer|->-H~XGQ5-60!~X0ciuC+ElY}+0i?Oz5Yn1Y?9UL zsdfQORZUVigDJbq*xPk^GNaw>Le2(xIlxd)cBs;zEZ<`cEiOlJoJ>0|c()@?=n(7P z6VdjT2Ae_?8*J4^hkCw|s7N$}&CEh_E8avj$;eMPNnIn{R`YCn?9D|}<>2`I0-79B89k-#Pn=$&{hZ&GMgo$x z?6M&Hi zal+z-n;Yxv94<; z+`-I~=mZ~i28EpYBi+hne`( zRoIz`IM`qn@4%}263hmgT;FQ2G>efs_OZ9|$)h(jVrj3Sx6fh%r$=N>bBLGp_L=nZnc>TJ98HdJeQ9@Fsk^PzU5W`CYXgla zxbALIcXzCGU1DvQM<>x}mmNq%xF7KplGHC^G8aq-P=HNDgg*$R7;N?qK?HO}&J&lw zEPlM91QD1dLX=x2Jn1~+2ms2thD3ynmzHYX7%E=FeHTWbN*|I3Jy3OQJBnsq*c7FN zJAIJ~U}ZCDZo>jb_FWVf0M1YV+BIZ>lWF-LEsS;Jq#-k;?uM3R(9qD^f*nb?Vs#;9ZVCk9k0DUzBszBE$J35f!jH3Q z=Cd+3iXaX6u7V(}91jr$0$XnFT^r*PFT9KmU;X2;oGnC7L}a0n7OHrmtVzw zKptVi1%z=Jw(b&9AhNEN1$cBJUn>l_KP9j5;N|xszcjIp96);cGFhOJs^}!$Q#1l& zRoAd8^_d%XxNyDKxGqDGWEe)!-tosFyG%To9dlMng$(!XR5hklMsidgg;q|xS7Bch z%jGshx$Ik4wY%=}NG?#5R1cyl_Nalp_fH)kjFq?Ewa^C`*9N-BC8GNZ5B^ue1hP~U zA_nI!I83R_u|*5vh*u#TZ4BWEO`VaSWzjyD@eumYi|5RtJf1BAbc_R{4lBP^*82$; zDzdQ4`;5GKtUfW;!MpqTX2PwiWW` zYJ5wBPC3_@OlS3SP}{LI%J6Gvt7c;q5FS`a9%N@*#LgQIz#yEu&7CaVeh$eNmz}$eL zO?z8dB;nz;MY5GfznRBnM9HAqdbsm9HQZV;W*E*+8gBG!&csx&DUAcUI@}I+$zgPt z4)?61TBhN)tUwcEd9E|u`3e0rEET=dE&i7bw}TrH*_(kg6bw)xMmval03wsRw;v93 z_frd}-l%nqmG4el4fdq123VKttp<|AoQY8H{$hu>lLr3GA;H)sU_tKwiv8k6$z87w zbWtLTr|^)y5HL#WV6AgU+37A+TnwR9$;A+YG_w1vZ1wrFYp6O&(>goAh_iJ9ZHm4zTcxgn zRnZ_GMQ15H_8D=N`=6b>2;SvU~VU0=?*Bh{` zT^EDerGZ3mpj{B1TGHe;&RWnHjTDlmzG#9`S<(jhqry%<{C;k=P4xB)q5v+$H0s@; z%xt;mL)(cZ#+5aja`uCwYsn|mgIQ+*^H0V+8xgJJ%VF_i;!N3FmKZCVZ)Z~~mIu9| zr#wQ7O|T-1nlN>0B}o5ZywaVp+6`tl6uItZAg)fSck@z%9g~nRB(2OJKM40nqR+;4 zHu+2T>f740GHdL0i1)fYQfat6uD}#9@Kt$O_f}BL!%1>>rGEgtK8P2>A#CVQRQ?!) z+4E&D40!!J(!9l=yW`ZCx-JixhC_dD96!SX%@D8g=iXeRtgy{Sr3D`TqDm>C_)>j+ zuD+i0Jx)nqtnZ(#uSCk2F7c3lChl*`f7UC=^7ni$e#_>PvGTV3^O5O5{;!aCQCRao zuCISsUw=PGC1Gm(J(f*4#K7cNNVZMxrfErM;pvxn+DjRpBRQLr=Sa?_pBp5&gCd_C9a(Kh6-KyE7j|S|(8y43 zK3^VaLdcf~o9OaSmWM`z$up_kOV-xIloWGLuhU39o7-0F^!Yi?1dcd{afbnlQ)}2Z zsHnBM+IFV8;j!xXiIFd$22*T?V|%wdR}1Q@S?0}LVLnucBcbTNn^qKS<(@(vBus_BxK zz~Opl+A!DqiJ3f+EeT;J%Loxz;aU2oDX%S)MUhE4U!T++Ebre$LFnbKeKkk~8O&CF zfs$<#zy?)RB4w#!FS=#<^c?APb=pwZVxNPbNeJ4Ym34}B zFm{2==x7DjoQqv|34_Jt5rf^_97X|X#Fp}ABi?N3XTy;ijdU8IaTSnhhxUj=Y#0H{ zEdeORLT`1G9c)EjB~xR%2*V&JWvvN5S`)dgcc0WE@2N)i}sIOmnpnNMOfv zt~|qPV?35*{dofTZ*4($HFvX7$?xQguDBSZG^C@JM>mCZ)KWT{#+DbRpV~gtz^^v_ z3_+{D7?am2k2Pnw{?sYAVEPf6oaHws@!4VPXVrA$IS*P;(ShR2!KT?z3v!4ioN*%J zVB1SJm2z@dQ4x`Ex+2zM^+fL-jrKkW%wjlWs|C{>Bf?ee@XV1*?C>;zaE35shdSt6 z8lxa-QZk@OcwqcOrOWTt$IY`GFfw=m4b}zTxgIIusU2SIWTHbXKKH?kQGXXG1|x(C zL~n#Jb#bB{w+=>^HV2j}fQ5jsL zX&{uD0)F(8?`pDd^CENXlO*e4QE!RGWvHI0%aI_}xRsb;=E;06qq6&NA1yFlcxe`D12an^f@mSZ0+#j=9(E`H$2C;*qx|jF4$u~GAVXfnq#Yg`x4C(uIg6X<+`Uh=Wgg$Ty zL!ZTas!CATteS160Rsgd!`frsalwkVOBrrc&ir-&7+xQqa1$M`ofTm{dyf49y?4WT zs|$rbEjJ*Qb730r!-_vkp_ASB=J^v4Z=&QDybJLXR6%a&$+>e*+?nPnXN<5WDNXXU zk%PrY!KNOCb-&puI#1-E-9;GVRLWTFX9XRq3sbAj+*N?H1wCPpA}`zb-AKH4O2I zfKTgLsr@;&(}esN+>>x#A_u6a@fr)UUvPPL5@}5BF5c13>dDEa2F9;(+BX2W{J^sgu37z zl_wb|6>T~>OI$?|s0;ASCJI0|qJ(m!gt@wei)%y)?uLw|E`hdM!d#TFr+W9W4V+5D zShlK{)|`&R-I@}J#I`4uFi#2M$o|v?0#gJk0Ib--3}~Q#OqumfL1fbu#A`7borL(Ku%^pa6O=3dFG)%e#WrID+D@kznHEZ z@{#Ue_tPh*nyhAdfmhX+hmY$0k;;Yy26Sq`-U!U0AP)y)j*5ri7kv+NyRxAf(p#Fv zp2%nedm-8U-k{c4P!fclvoAAIdpB#_36HI;J1cQQYCZh3pytc0Nz;k$1V75Tzg*;# zk}i$_lXO|F@PQ4-1$E53P?@8#LKt35JVj>#u3@emn&gP#B=p5WS#1xEn`|-s;3)^j zjcMuNz_=KCpa@TB4vZUpR38{O`lvoIu6ZP}>*okaZPy3uxOnY~g)yriR+y@z&P`MX znf4okbu0}aQArMOtvU$NdQ4~{+v+obGfjIP35%eRlu}lW!`MDkv>@345oLx7!h087 zA{W&pN<$ISIT>`WJEz2iI~IjT7!v>uLR~gQV}vpBM!q2o6Jw$oLFu~}+QqmWL!J|s z0?OrNG)I7x0aP&$^5@#lSlznVS{SmZOQ+Ek>}z5leiyi7#iu*^U>!9o%dnUlq(!QZ z&VY&zwe?7GX(E_t_{cGNP_ASNsxWa|4Lk%V3KinI#2PJa56$QfkT$Yn5tLb*k)22w z;IPa^MuYz|7Zl>6OYnE^bj)NW&{f6u3Lc>D(gq^X2dTUT!doOB)I{~Iy;+=fkGX|4 zUxWlMagZN_gzuGO)k#i*ZOx(yauOT*#3ACrqIkTJ%_4jk%ciCW6L$d`oKN-Fc;CvP zKrjz3T={th47R)Epdm|km@oSPCWPc;4?q<=rQ&Ei!6h|=F=5T@8cZI}Klgn2Qz5T< zO79>REGLmwCGXk$Qgi20;|WGi^D2OE>sA|PtC}`3aY?Uf4vk^qye0ry_XyM>KoN`j z8?|^A3=jHn2JTRAyBSe$(Q~x8s3K7_15ma4j9Ss%Oo}d(pUUXyk?nO2v)!N1v19Ao zTs`wU*-{8G)6Nh|_yP|Yu9^Dw*>t<1zWrjl-B{ngkZw2Ew_i=STk6}F((P=0`!#Q& zvHyEkKX~!$@!%ZKQ{7+Y!7dRTq^sNa)qluxgfM-9gu(@ZW#w$$-}&)8+m&~}_Tzis zS(fF#d-i=Q+q>_ccka7~^xl1+dgs1Rl{{KGcJ#3akCmr?@)Nh-czRFy;KRpH9KG+s zM;<$Q=GGe@MCv~B-LVtL9z1j3!^c1VFx64lgU5~@JDFhDWcF#mA(}K&$|Gl*k8Hxx;}1P_ zY~|R=Gxr@o`QVAijvhOD-^v3gKYpyd@v(9*KiLBhK1jo}M;}-@eeAvm9s-K@9Xopb zOm^>??BNGa-}m6d=02UBrqK^RTt2k&$S3YwKK7HJd}QTlv>8~K1}4kL7z{ExQ11fFj^EQpI{rWOQiYnqo)3_}HV_4}ARiiFk45f#WAfp}H2gW9*x{ULuvC^{QlCrWn(`L<_HpAEkrDdqg%=vSJIDZVQ;^NWy`D2TV zS#jRz(fOlUU{HXK2n+=l4jMUP2pw6dg&Bx0Qh)rTObfWOve<vlINpF@O7&mex zNRQN;dh}*#MK`CRnNLk=TGL6SrA|+aF%2P3E6Pe^6ojQ;Gh)n`5rJX2$&3r+U0aYh zcx)cN6sF$P-^*IJW(qXLfa1Sg7eFFnEUISN?um(sv6MCl6`lj0kj5e;xuQ*Npc2r| z-M&M|^E!1->e97aa(9pSe0PtYDelx>Y3aQ)d>6PgFYM!TWw|6|Uv#nSl1p7KcXM!A zbBfblC6_SGlhqc}*a{V3ce0n6cvu z$6q^P;-sR6In0Q31?P6pY$7?e>vms%gUdB5*vuSeyWMk6b&4Tz zm&`S#r6w26l+C+wzLMN@^8&%%ax0OAF4rQZkyNdN=BQk$&9}<0k#i@Z=;QS|=Q^AS zW5ZT%XPyG(&6roP;mx_VoS!gVs!UEX_6EgSDMseHO-N|LGhX#N?W|>#4tE-sjeM)Y z2~zKAJjg56Ze$0nI=kGX&MeG>H*k-z(u~AmAg|$#yuR`{=O?!v zs+gU#QhwO7+7oL111bxHzTt|gY^wC4byqd=| zsthiJ)9*#W0eg;d{vzj>7kl|p>QlK$gVZ_q;4e#X$&rpg&QL#23IqH^tGuFzXa)?> z2MA8I)X|l~pt5>&+9?6&e!s{sA~-!)DUwsylk@Fdl00T&W}oI6-1KL89yXA zzmY+m@cycd)>lj*eTc?GjmQA)b3};eJY4*xrzVkmzVyf}RBH>Nx>2$_8~O|^c#9uB zFxaTO*dNNiIV!4w8W=vh7*w``m5pa%yqKS{7C5KTxz2P0$V!X=d2?_8ibnfDPh=hF z2O>N_c0deek?0~PdCrK@WiHXJ-yAMl-n3`T&nh;nCxm|P0mYqH^zgIX8Nd*u;L5;A zQOutzXN9mbQWVwZc3fR?@2FN%nrK5qH}d55q6lwb{um=NieYN310_eeGXVTN(pPQ- z;>Fo7&jf1yBunH2MI_>zfVdLIu^{Vb%)QBEE&jNENT0{Z&5z?9r|F-B9(xBJU72y- zSNe&aD5XX&)yk&qNIl9YN<+RLLegi2uT^z{mfV$7!6`gtKGNg)Jpd zap5oTw{-ukIM96kIp5^uOUa*N6TH&QoTS#T!<151_PX1!H}uGyv_fBpCk&$}W!6^O ztLjRPA)`wXvf3)%I8Yk8Kp<`FkdNu*B|8-t&jtWp*F=6)U0@@nFF`*c^sjydeHGd2 zi_P4XO>@+G{V0k7QFB#7L9JOvDZ~*Pa~S0pQwgC86PZ!8rJ<)4p+{c@Nc_s5F`RjJ zoLC2pJ5qEI%Q#IHYJ9%T;6jlIZ7hDKT{L6nA1zirvA>L|IoXjjSSv3JjXuAf*#80K|Y43ur!*s zs)NW0q({~^7DwVZhSt<8JCoA16tpKsG;val)~Z)_lDaHis_Z$Uym3;D)~dIdf^BE% z;>T}Bzj7l{DMpJwbV_#VLTzk_(u?B7wlk$2OpY;e4-!qB6r;83Ev8`4vvfNWFPbXmorGbePHJ@R*1V{j>T2;qC+QDRWf6BcyqG|mna2miSE%@hG>~a zFLZE^*K*MB42tuKecs5~R_HzjegfP9%m;o5{0LYBpJ||<0e69a0(3X%63{)seZVh( z`yuOxH4DNvB6cP4ea>y^NCIHyaWTg11zkDNm%+5jpy?U7bAlfLJ`c9T;NXF*8?Za@ zLik(+ybO3LF#k!$t_Eg;pa%c&s;m&q4nrs1N-NU>*3ukYxZjp`Ql)8!#2v z5wdnqqE;hio?Z~t(ad)&^0^t<3z!Pb1>zpT_Q7{Q@F1`nxCK7AF6b0qZ3B#8LwolK zWJsUpq&@L9#tL)o%`j)*z^=_kGZ!^?;TN}uYh8ZiTGAfQcJJnF?{2Pr1GGba5cF%{ z7RU+K9g?*(YG#YyEX1mY+UAK|TW4ol!ve1Doyh47)iy%*8n6m@7`O-c9gu4O7U=s6 zWbCY2oK0|Ztm^o{c@MRJxYM6IuTFZT%U`-anzW|d+T_aaPkEm8yx`gBecAiQ`Bgo(^?bkQ zM?L?Z@>9?Mq#o<#&Fp{SfIb7W{MotLgD)C#ao!~bmyWt@bl)-k#^y}uKk4$KE2a&Y zK5(Z0`rKKAf>+MYoin&(NZFM)=FK0vVAvhQmyB3;)$*%XjJ$W`%4;4BtjS+nkT-sD z^6klYBi~-%O|dwxN_3{MXQQ7On!dK3sYX4@=o!`Q+G`JWLnL2JE!lOv3us8 z>uYZ~GV90SPqUBC`MKoZbB~vv%xui$nFYa7!O_7n!Lh+{!NTD9;I+XC!HL01!J^>g z;FMr-a0y$=?!?{iZnliw!Lvi8=s3o92@-nMS> zy4xSSPrDqvpPy5AXWxryD+d{_~f1 zZ`|{8?Yn!oeevEt=ecpM+r&FeNN_mXs!pQI-OkZo^&E~49V7hj%bnK=<8}T&jG06+ zyBLAHS_bH5;m;nMeD*@MG*b824%n5yC#3ic(Ad~Q17eJi$24XbI(@!LhT&C(g{`s+ zqCY7Gi-e$G6L}!p7Dz}4*aIx3lm)VTm5vIe6a;cQRCG;F9zz}pGEUbqDFxZKqQ&ad zVUgf6eIx9{?F)+*cVMeqYrb@cgJn1}GJMWWulc$&ACmHEYAVgq<_t2T9Ci%d;bW;j zr{>VciFu;6rBo1f1fmY?H(r3GxnUsSlokEIp$_0TPMEqO&b~ zD*6+ZB(8>ewJ66JSL`f`qK1lR@lmPxoEdbNYdJ(miMj-Zg(Vdo)q0E4#O^pt?1Owh zV^JF9g2I@#zdG0W5-}ymubY@7wWXiJ+t&6vgAdkgeqrGSKE1Fo$LGT`jPxt|E||2q zNc3$R&cV~TRgX$s)V^XoE2}8~ptd}-qM~hij$SsNRaBIBWaV~iU7WrY-y^0#UJ_Bj z5H01LO{cj?rk7wevGgO&2j(V_%+3UCdfTg8w$#>Qf1lw~TRUdUu+OopT3H8iYU0PA zUw1)TZq;N5(syIVBDtP9pe0vvX62h_m^#ZqGkv~A9f&Tqr|_c56g`J6>6<-qQOYe1tux zdW^mLZiN4Rx%WQ6c=Rp*Y{OR+@SqX(8%y*$3xD?5Z_i$+mPYy^wgbHcqqB}y6MgM( v1yms4TB%-y(t9*|sZ`*L$cSrtZs66AfM~0h_159_$sh1X1^%eOsTKGi`@nDE diff --git a/vendored_parsers/tree-sitter-elm/grammar.js b/vendored_parsers/tree-sitter-elm/grammar.js deleted file mode 100644 index c9dda8f4f..000000000 --- a/vendored_parsers/tree-sitter-elm/grammar.js +++ /dev/null @@ -1,762 +0,0 @@ -/// -// @ts-check - -const PREC = { - COMMENT: 1, - STRING: 2, // In a string, prefer string characters over comments - FIELD_ACCESS_START: 1, - PART: 1, - FUNCTION_START: 1, - CASE_OF_BRANCH: 6, - FUNC: 10, -}; - -module.exports = grammar({ - name: "elm", - - conflicts: ($) => [ - [$.upper_case_qid, $.value_qid], - [$.function_call_expr], - [$.case_of_expr], - [$._function_call_target, $._atom], - ], - - externals: ($) => [ - $._virtual_end_decl, - $._virtual_open_section, - $._virtual_end_section, - $.minus_without_trailing_whitespace, - $.glsl_content, - $._block_comment_content, - ], - - extras: ($) => [ - $.block_comment, - $.line_comment, - /[\s\uFEFF\u2060\u200B]|\\\r?\n/, - ], - - word: ($) => $.lower_case_identifier, - - rules: { - file: ($) => - seq( - optional( - seq( - field("moduleDeclaration", $.module_declaration), - $._virtual_end_decl - ) - ), - optional($._import_list), - optional($._top_decl_list) - ), - - block_comment: ($) => - prec(PREC.COMMENT, seq("{-", $._block_comment_content, "-}")), - - line_comment: ($) => token(prec(PREC.COMMENT, seq(/--/, repeat(/[^\n]/)))), - - module_declaration: ($) => - prec.left( - choice( - seq( - optional($.port), - $.module, - field("name", $.upper_case_qid), - field("exposing", $.exposing_list) - ), - seq( - $.effect, - $.module, - field("name", $.upper_case_qid), - $.where, - $.record_expr, - field("exposing", $.exposing_list) - ) - ) - ), - - _import_list: ($) => repeat1(seq($.import_clause, $._virtual_end_decl)), - _top_decl_list: ($) => - repeat1( - seq( - choice( - $.value_declaration, - $.type_alias_declaration, - $.type_declaration, - $.type_annotation, - $.port_annotation, - $.infix_declaration - ), - $._virtual_end_decl - ) - ), - - // MODULE DECLARATION - - exposing_list: ($) => - seq( - $.exposing, - "(", - choice( - field("doubleDot", $.double_dot), - commaSep1( - choice($.exposed_value, $.exposed_type, $.exposed_operator), - "," - ) - ), - ")" - ), - - exposed_value: ($) => $.lower_case_identifier, - - exposed_type: ($) => - seq($.upper_case_identifier, optional($.exposed_union_constructors)), - - exposed_union_constructors: ($) => seq("(", $.double_dot, ")"), - - exposed_union_constructor: ($) => $.upper_case_identifier, - - exposed_operator: ($) => $._operator_as_function_inner, - - // WHITESPACE-SENSITIVE RULES - _upper_case_identifier_without_leading_whitespace: ($) => - token.immediate(/\p{Lu}[_\d\p{L}]*/), - - _lower_case_identifier_without_leading_whitespace: ($) => - token.immediate(/\p{Ll}[_\d\p{L}]*/), - - _dot_without_leading_whitespace: ($) => token.immediate("."), - - upper_case_qid: ($) => - prec.right( - seq( - $.upper_case_identifier, - repeat( - seq( - alias($._dot_without_leading_whitespace, $.dot), - alias( - $._upper_case_identifier_without_leading_whitespace, - $.upper_case_identifier - ) - ) - ) - ) - ), - - value_qid: ($) => - choice( - $.lower_case_identifier, - seq( - $.upper_case_identifier, - alias($._dot_without_leading_whitespace, $.dot), - repeat( - seq( - alias( - $._upper_case_identifier_without_leading_whitespace, - $.upper_case_identifier - ), - alias($._dot_without_leading_whitespace, $.dot) - ) - ), - alias( - $._lower_case_identifier_without_leading_whitespace, - $.lower_case_identifier - ) - ) - ), - - field_accessor_function_expr: ($) => - seq( - $.dot, - alias( - $._lower_case_identifier_without_leading_whitespace, - $.lower_case_identifier - ) - ), - - // IMPORT DECLARATION - import_clause: ($) => - seq( - $.import, - field("moduleName", $.upper_case_qid), - field("asClause", optional($.as_clause)), - field("exposing", optional($.exposing_list)) - ), - - as_clause: ($) => seq($.as, field("name", $.upper_case_identifier)), - - // TOP-LEVEL DECLARATION - - value_declaration: ($) => - seq( - choice( - field("functionDeclarationLeft", $.function_declaration_left), - field("pattern", $.pattern) - ), - $.eq, - field("body", $._expression) - ), - - function_declaration_left: ($) => - prec( - PREC.FUNCTION_START, - seq( - $.lower_case_identifier, - field( - "pattern", - repeat( - choice( - $.anything_pattern, - $.lower_pattern, - $.tuple_pattern, - $.unit_expr, - $.list_pattern, - $.record_pattern, - $._literal_expr_group, - $._parenthesized_pattern - ) - ) - ) - ) - ), - - // TYPE DECLARATIONS AND REFERENCES - - type_declaration: ($) => - prec.left( - seq( - $.type, - field("name", $.upper_case_identifier), - field("typeName", repeat($.lower_type_name)), - $.eq, - field("unionVariant", $.union_variant), - repeat($._more_union_variants) - ) - ), - - lower_type_name: ($) => $.lower_case_identifier, - - union_variant: ($) => - prec.left( - seq( - field("name", $.upper_case_identifier), - repeat(choice($.line_comment, $._single_type_expression)) - ) - ), - - _more_union_variants: ($) => - seq("|", field("unionVariant", $.union_variant)), - - type_alias_declaration: ($) => - seq( - $.type, - $.alias, - field("name", $.upper_case_identifier), - field("typeVariable", repeat($.lower_type_name)), - $.eq, - field("typeExpression", $.type_expression) - ), - - type_expression: ($) => arrowSep1($._type_expression_inner, $.arrow), - - _type_expression_inner: ($) => - choice($.type_ref, $._single_type_expression), - - type_ref: ($) => seq($.upper_case_qid, repeat1($._single_type_expression)), - - _single_type_expression: ($) => - choice( - field("part", alias($.type_ref_without_args, $.type_ref)), - field("part", $.type_variable), - field("part", $.record_type), - field("part", $.tuple_type), - seq("(", field("part", $.type_expression), ")") - ), - - type_ref_without_args: ($) => $.upper_case_qid, - - type_variable: ($) => $.lower_case_identifier, - - record_type: ($) => - seq( - "{", - optional( - seq( - optional($._record_base), - commaSep1(field("fieldType", $.field_type), ",") - ) - ), - "}" - ), - - field_type: ($) => - seq( - field("name", $.lower_case_identifier), - $.colon, - field("typeExpression", $.type_expression) - ), - - tuple_type: ($) => - choice( - field("unitExpr", $.unit_expr), - seq( - "(", - field("typeExpression", $.type_expression), - repeat1(seq(",", field("typeExpression", $.type_expression))), - ")" - ) - ), - - type_annotation: ($) => - seq( - field("name", $.lower_case_identifier), - $.colon, - field("typeExpression", $.type_expression) - ), - - port_annotation: ($) => - seq( - $.port, - field("name", $.lower_case_identifier), - $.colon, - field("typeExpression", $.type_expression) - ), - - // EXPRESSIONS - - _expression: ($) => choice($.bin_op_expr, $._call_or_atom), - - bin_op_expr: ($) => - field( - "part", - prec( - PREC.PART, - seq( - $._call_or_atom, - prec.right(repeat1(seq($.operator, $._call_or_atom))) - ) - ) - ), - - operator: ($) => $.operator_identifier, - - operator_as_function_expr: ($) => $._operator_as_function_inner, - - _operator_as_function_inner: ($) => - seq("(", field("operator", $.operator_identifier), ")"), - - _call_or_atom: ($) => choice($.function_call_expr, $._atom), - - function_call_expr: ($) => - prec.dynamic( - PREC.FUNC, - seq( - field("target", $._function_call_target), - field("arg", repeat1($._atom)) - ) - ), - - _function_call_target: ($) => - choice( - $.field_access_expr, - $.value_expr, - $.field_accessor_function_expr, - $.operator_as_function_expr, - $.parenthesized_expr - ), - - _atom: ($) => - choice( - $._literal_expr_group, - $.negate_expr, - $.field_access_expr, - $.value_expr, - $.field_accessor_function_expr, - $.operator_as_function_expr, - $.parenthesized_expr, - $.unit_expr, - $.tuple_expr, - $.list_expr, - $.record_expr, - $.if_else_expr, - $.case_of_expr, - $.let_in_expr, - $.anonymous_function_expr, - $.glsl_code_expr - ), - - field_access_expr: ($) => - prec.left( - seq( - field("target", $._field_access_start), - repeat1($._field_access_segment) - ) - ), - - _field_access_start: ($) => - prec( - PREC.FIELD_ACCESS_START, - choice( - $.field_access_expr, - choice($.value_expr, $.parenthesized_expr, $.record_expr) - ) - ), - - _field_access_segment: ($) => - prec.left( - seq( - alias($._dot_without_leading_whitespace, $.dot), - alias( - $._lower_case_identifier_without_leading_whitespace, - $.lower_case_identifier - ) - ) - ), - - negate_expr: ($) => - seq( - alias($.minus_without_trailing_whitespace, $.operator_identifier), - $._atom - ), // todo disallow whitespace - - parenthesized_expr: ($) => - seq("(", field("expression", $._expression), ")"), - - _literal_expr_group: ($) => - choice( - $.char_constant_expr, - $.number_constant_expr, - $.string_constant_expr - ), - - char_constant_expr: ($) => - seq( - alias("'", $.open_char), - choice( - alias(token(/[^\\\n']/), $.regular_string_part), - $.string_escape, - $.invalid_string_escape - ), - alias("'", $.close_char) - ), - - number_constant_expr: ($) => $.number_literal, - - string_constant_expr: ($) => - choice( - seq( - alias('"""', $.open_quote), - repeat( - choice( - alias( - token.immediate( - prec( - PREC.STRING, - repeat1(choice(/[^\\"]/, /"[^"]/, /""[^"]/)) - ) - ), - $.regular_string_part - ), - $.string_escape, - $.invalid_string_escape - ) - ), - alias('"""', $.close_quote) - ), - seq( - alias('"', $.open_quote), - repeat( - choice( - alias( - token.immediate(prec(PREC.STRING, repeat1(/[^\\"\n]/))), - $.regular_string_part - ), - $.string_escape, - $.invalid_string_escape - ) - ), - alias('"', $.close_quote) - ) - ), - - anonymous_function_expr: ($) => - seq( - $.backslash, - field("param", repeat1($.pattern)), - $.arrow, - field("expr", $._expression) - ), - - value_expr: ($) => field("name", choice($.value_qid, $.upper_case_qid)), - - tuple_expr: ($) => - seq( - "(", - field("expr", $._expression), - repeat1(seq(",", field("expr", $._expression))), - ")" - ), - - unit_expr: ($) => seq("(", ")"), - - list_expr: ($) => - seq("[", optional(commaSep1(field("exprList", $._expression), ",")), "]"), - - record_expr: ($) => seq("{", optional($._record_inner), "}"), - - record_base_identifier: ($) => $.lower_case_identifier, - - _record_base: ($) => - seq(field("baseRecord", $.record_base_identifier), "|"), - - _record_inner: ($) => - seq(optional($._record_base), commaSep1(field("field", $.field), ",")), - - field: ($) => - seq( - field("name", $.lower_case_identifier), - $.eq, - field("expression", $._expression) - ), - - if_else_expr: ($) => - seq( - $._if, - $._then, - repeat(prec.left(seq("else", $._if, $._then))), - $._else - ), - - _if: ($) => seq("if", field("exprList", $._expression)), - _then: ($) => seq("then", field("exprList", $._expression)), - _else: ($) => seq("else", field("exprList", $._expression)), - - case_of_expr: ($) => - choice( - seq( - "(", - $.case, - field("expr", $._expression), - $.of, - $._virtual_open_section, - field("branch", $.case_of_branch), - optional($._more_case_of_branches), - optional($._virtual_end_section), - ")" - ), - seq( - $.case, - field("expr", $._expression), - $.of, - $._virtual_open_section, - field("branch", $.case_of_branch), - optional($._more_case_of_branches), - $._virtual_end_section - ) - ), - - _more_case_of_branches: ($) => - prec.dynamic( - PREC.CASE_OF_BRANCH, - repeat1(seq($._virtual_end_decl, field("branch", $.case_of_branch))) - ), - - case_of_branch: ($) => - seq(field("pattern", $.pattern), $.arrow, field("expr", $._expression)), - - let_in_expr: ($) => - seq( - "let", - $._virtual_open_section, - $._inner_declaration, - optional(repeat1(seq($._virtual_end_decl, $._inner_declaration))), - $._virtual_end_section, - "in", - field("body", $._expression) - ), - - _inner_declaration: ($) => - choice(field("valueDeclaration", $.value_declaration), $.type_annotation), - - // PATTERNS - - pattern: ($) => - seq( - choice(field("child", $.cons_pattern), $._single_pattern), - optional(seq($.as, field("patternAs", $.lower_pattern))) - ), - - cons_pattern: ($) => - seq( - field("part", $._single_pattern_cons), - seq("::", field("part", choice($.cons_pattern, $._single_pattern_cons))) - ), - - _single_pattern_cons: ($) => - choice( - $._parenthesized_pattern, - $.anything_pattern, - $.lower_pattern, - $.union_pattern, - $.tuple_pattern, - $.unit_expr, - $.list_pattern, - $.record_pattern, - $._literal_expr_group - ), - - _single_pattern: ($) => - choice( - seq("(", field("child", $.pattern), ")"), - field("child", $.anything_pattern), - field("child", $.lower_pattern), - field("child", $.union_pattern), - field("child", $.tuple_pattern), - field("child", $.unit_expr), - field("child", $.list_pattern), - field("child", $.record_pattern), - field("child", $._literal_expr_group) - ), - - lower_pattern: ($) => $.lower_case_identifier, - - anything_pattern: ($) => $.underscore, - - record_pattern: ($) => - seq("{", commaSep1(field("patternList", $.lower_pattern), ","), "}"), - - list_pattern: ($) => - seq("[", optional(commaSep1(field("part", $.pattern), ",")), "]"), - - union_pattern: ($) => - prec.left( - seq( - field("constructor", $.upper_case_qid), - field("argPattern", repeat($._union_argument_pattern)) - ) - ), - - nullary_constructor_argument_pattern: ($) => $.upper_case_qid, - - _union_argument_pattern: ($) => - choice( - $.anything_pattern, - $.lower_pattern, - $.tuple_pattern, - $.nullary_constructor_argument_pattern, - $.unit_expr, - $.list_pattern, - $.record_pattern, - $._literal_expr_group, - $._parenthesized_pattern - ), - - tuple_pattern: ($) => - seq( - "(", - field("pattern", $.pattern), - ",", - commaSep1(field("pattern", $.pattern), ","), - ")" - ), - - _parenthesized_pattern: ($) => seq("(", $.pattern, ")"), - - // MISC - infix_declaration: ($) => - seq( - $.infix, - field( - "associativity", - alias(choice("left", "right", "non"), $.lower_case_identifier) - ), - field("precedence", $.number_literal), - $._operator_as_function_inner, - $.eq, - $.value_expr - ), - - glsl_code_expr: ($) => - seq($._glsl_begin, field("content", $.glsl_content), $._glsl_end), - - _glsl_begin: ($) => "[glsl|", - _glsl_end: ($) => "|]", - - // Stuff from lexer - - // Should be /\p{Lu}[_\d\p{L}]*/, - upper_case_identifier: ($) => - /[A-Z\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C2\uA7C4-\uA7C6\uFF21-\uFF3A\U00010400-\U00010427\U000104B0-\U000104D3\U00010C80-\U00010CB2\U000118A0-\U000118BF\U00016E40-\U00016E5F\U0001D400-\U0001D419\U0001D434-\U0001D44D\U0001D468-\U0001D481\U0001D49C\U0001D49E\U0001D49F\U0001D4A2\U0001D4A5\U0001D4A6\U0001D4A9-\U0001D4AC\U0001D4AE-\U0001D4B5\U0001D4D0-\U0001D4E9\U0001D504\U0001D505\U0001D507-\U0001D50A\U0001D50D-\U0001D514\U0001D516-\U0001D51C\U0001D538\U0001D539\U0001D53B-\U0001D53E\U0001D540-\U0001D544\U0001D546\U0001D54A-\U0001D550\U0001D56C-\U0001D585\U0001D5A0-\U0001D5B9\U0001D5D4-\U0001D5ED\U0001D608-\U0001D621\U0001D63C-\U0001D655\U0001D670-\U0001D689\U0001D6A8-\U0001D6C0\U0001D6E2-\U0001D6FA\U0001D71C-\U0001D734\U0001D756-\U0001D76E\U0001D790-\U0001D7A8\U0001D7CA\U0001E900-\U0001E921][0-9A-Z_a-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\U00010000-\U0001000B\U0001000D-\U00010026\U00010028-\U0001003A\U0001003C\U0001003D\U0001003F-\U0001004D\U00010050-\U0001005D\U00010080-\U000100FA\U00010280-\U0001029C\U000102A0-\U000102D0\U00010300-\U0001031F\U0001032D-\U00010340\U00010342-\U00010349\U00010350-\U00010375\U00010380-\U0001039D\U000103A0-\U000103C3\U000103C8-\U000103CF\U00010400-\U0001049D\U000104B0-\U000104D3\U000104D8-\U000104FB\U00010500-\U00010527\U00010530-\U00010563\U00010600-\U00010736\U00010740-\U00010755\U00010760-\U00010767\U00010800-\U00010805\U00010808\U0001080A-\U00010835\U00010837\U00010838\U0001083C\U0001083F-\U00010855\U00010860-\U00010876\U00010880-\U0001089E\U000108E0-\U000108F2\U000108F4\U000108F5\U00010900-\U00010915\U00010920-\U00010939\U00010980-\U000109B7\U000109BE\U000109BF\U00010A00\U00010A10-\U00010A13\U00010A15-\U00010A17\U00010A19-\U00010A35\U00010A60-\U00010A7C\U00010A80-\U00010A9C\U00010AC0-\U00010AC7\U00010AC9-\U00010AE4\U00010B00-\U00010B35\U00010B40-\U00010B55\U00010B60-\U00010B72\U00010B80-\U00010B91\U00010C00-\U00010C48\U00010C80-\U00010CB2\U00010CC0-\U00010CF2\U00010D00-\U00010D23\U00010F00-\U00010F1C\U00010F27\U00010F30-\U00010F45\U00010FE0-\U00010FF6\U00011003-\U00011037\U00011083-\U000110AF\U000110D0-\U000110E8\U00011103-\U00011126\U00011144\U00011150-\U00011172\U00011176\U00011183-\U000111B2\U000111C1-\U000111C4\U000111DA\U000111DC\U00011200-\U00011211\U00011213-\U0001122B\U00011280-\U00011286\U00011288\U0001128A-\U0001128D\U0001128F-\U0001129D\U0001129F-\U000112A8\U000112B0-\U000112DE\U00011305-\U0001130C\U0001130F\U00011310\U00011313-\U00011328\U0001132A-\U00011330\U00011332\U00011333\U00011335-\U00011339\U0001133D\U00011350\U0001135D-\U00011361\U00011400-\U00011434\U00011447-\U0001144A\U0001145F\U00011480-\U000114AF\U000114C4\U000114C5\U000114C7\U00011580-\U000115AE\U000115D8-\U000115DB\U00011600-\U0001162F\U00011644\U00011680-\U000116AA\U000116B8\U00011700-\U0001171A\U00011800-\U0001182B\U000118A0-\U000118DF\U000118FF\U000119A0-\U000119A7\U000119AA-\U000119D0\U000119E1\U000119E3\U00011A00\U00011A0B-\U00011A32\U00011A3A\U00011A50\U00011A5C-\U00011A89\U00011A9D\U00011AC0-\U00011AF8\U00011C00-\U00011C08\U00011C0A-\U00011C2E\U00011C40\U00011C72-\U00011C8F\U00011D00-\U00011D06\U00011D08\U00011D09\U00011D0B-\U00011D30\U00011D46\U00011D60-\U00011D65\U00011D67\U00011D68\U00011D6A-\U00011D89\U00011D98\U00011EE0-\U00011EF2\U00012000-\U00012399\U00012480-\U00012543\U00013000-\U0001342E\U00014400-\U00014646\U00016800-\U00016A38\U00016A40-\U00016A5E\U00016AD0-\U00016AED\U00016B00-\U00016B2F\U00016B40-\U00016B43\U00016B63-\U00016B77\U00016B7D-\U00016B8F\U00016E40-\U00016E7F\U00016F00-\U00016F4A\U00016F50\U00016F93-\U00016F9F\U00016FE0\U00016FE1\U00016FE3\U00017000-\U000187F7\U00018800-\U00018AF2\U0001B000-\U0001B11E\U0001B150-\U0001B152\U0001B164-\U0001B167\U0001B170-\U0001B2FB\U0001BC00-\U0001BC6A\U0001BC70-\U0001BC7C\U0001BC80-\U0001BC88\U0001BC90-\U0001BC99\U0001D400-\U0001D454\U0001D456-\U0001D49C\U0001D49E\U0001D49F\U0001D4A2\U0001D4A5\U0001D4A6\U0001D4A9-\U0001D4AC\U0001D4AE-\U0001D4B9\U0001D4BB\U0001D4BD-\U0001D4C3\U0001D4C5-\U0001D505\U0001D507-\U0001D50A\U0001D50D-\U0001D514\U0001D516-\U0001D51C\U0001D51E-\U0001D539\U0001D53B-\U0001D53E\U0001D540-\U0001D544\U0001D546\U0001D54A-\U0001D550\U0001D552-\U0001D6A5\U0001D6A8-\U0001D6C0\U0001D6C2-\U0001D6DA\U0001D6DC-\U0001D6FA\U0001D6FC-\U0001D714\U0001D716-\U0001D734\U0001D736-\U0001D74E\U0001D750-\U0001D76E\U0001D770-\U0001D788\U0001D78A-\U0001D7A8\U0001D7AA-\U0001D7C2\U0001D7C4-\U0001D7CB\U0001E100-\U0001E12C\U0001E137-\U0001E13D\U0001E14E\U0001E2C0-\U0001E2EB\U0001E800-\U0001E8C4\U0001E900-\U0001E943\U0001E94B\U0001EE00-\U0001EE03\U0001EE05-\U0001EE1F\U0001EE21\U0001EE22\U0001EE24\U0001EE27\U0001EE29-\U0001EE32\U0001EE34-\U0001EE37\U0001EE39\U0001EE3B\U0001EE42\U0001EE47\U0001EE49\U0001EE4B\U0001EE4D-\U0001EE4F\U0001EE51\U0001EE52\U0001EE54\U0001EE57\U0001EE59\U0001EE5B\U0001EE5D\U0001EE5F\U0001EE61\U0001EE62\U0001EE64\U0001EE67-\U0001EE6A\U0001EE6C-\U0001EE72\U0001EE74-\U0001EE77\U0001EE79-\U0001EE7C\U0001EE7E\U0001EE80-\U0001EE89\U0001EE8B-\U0001EE9B\U0001EEA1-\U0001EEA3\U0001EEA5-\U0001EEA9\U0001EEAB-\U0001EEBB\U00020000-\U0002A6D6\U0002A700-\U0002B734\U0002B740-\U0002B81D\U0002B820-\U0002CEA1\U0002CEB0-\U0002EBE0\U0002F800-\U0002FA1D]*/, - - // Should be /\p{Ll}[_\d\p{L}]*/, - lower_case_identifier: ($) => - /[a-z\u00B5\u00DF-\u00F6\u00F8-\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C3\uA7FA\uAB30-\uAB5A\uAB60-\uAB67\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A\U00010428-\U0001044F\U000104D8-\U000104FB\U00010CC0-\U00010CF2\U000118C0-\U000118DF\U00016E60-\U00016E7F\U0001D41A-\U0001D433\U0001D44E-\U0001D454\U0001D456-\U0001D467\U0001D482-\U0001D49B\U0001D4B6-\U0001D4B9\U0001D4BB\U0001D4BD-\U0001D4C3\U0001D4C5-\U0001D4CF\U0001D4EA-\U0001D503\U0001D51E-\U0001D537\U0001D552-\U0001D56B\U0001D586-\U0001D59F\U0001D5BA-\U0001D5D3\U0001D5EE-\U0001D607\U0001D622-\U0001D63B\U0001D656-\U0001D66F\U0001D68A-\U0001D6A5\U0001D6C2-\U0001D6DA\U0001D6DC-\U0001D6E1\U0001D6FC-\U0001D714\U0001D716-\U0001D71B\U0001D736-\U0001D74E\U0001D750-\U0001D755\U0001D770-\U0001D788\U0001D78A-\U0001D78F\U0001D7AA-\U0001D7C2\U0001D7C4-\U0001D7C9\U0001D7CB\U0001E922-\U0001E943][0-9A-Z_a-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\U00010000-\U0001000B\U0001000D-\U00010026\U00010028-\U0001003A\U0001003C\U0001003D\U0001003F-\U0001004D\U00010050-\U0001005D\U00010080-\U000100FA\U00010280-\U0001029C\U000102A0-\U000102D0\U00010300-\U0001031F\U0001032D-\U00010340\U00010342-\U00010349\U00010350-\U00010375\U00010380-\U0001039D\U000103A0-\U000103C3\U000103C8-\U000103CF\U00010400-\U0001049D\U000104B0-\U000104D3\U000104D8-\U000104FB\U00010500-\U00010527\U00010530-\U00010563\U00010600-\U00010736\U00010740-\U00010755\U00010760-\U00010767\U00010800-\U00010805\U00010808\U0001080A-\U00010835\U00010837\U00010838\U0001083C\U0001083F-\U00010855\U00010860-\U00010876\U00010880-\U0001089E\U000108E0-\U000108F2\U000108F4\U000108F5\U00010900-\U00010915\U00010920-\U00010939\U00010980-\U000109B7\U000109BE\U000109BF\U00010A00\U00010A10-\U00010A13\U00010A15-\U00010A17\U00010A19-\U00010A35\U00010A60-\U00010A7C\U00010A80-\U00010A9C\U00010AC0-\U00010AC7\U00010AC9-\U00010AE4\U00010B00-\U00010B35\U00010B40-\U00010B55\U00010B60-\U00010B72\U00010B80-\U00010B91\U00010C00-\U00010C48\U00010C80-\U00010CB2\U00010CC0-\U00010CF2\U00010D00-\U00010D23\U00010F00-\U00010F1C\U00010F27\U00010F30-\U00010F45\U00010FE0-\U00010FF6\U00011003-\U00011037\U00011083-\U000110AF\U000110D0-\U000110E8\U00011103-\U00011126\U00011144\U00011150-\U00011172\U00011176\U00011183-\U000111B2\U000111C1-\U000111C4\U000111DA\U000111DC\U00011200-\U00011211\U00011213-\U0001122B\U00011280-\U00011286\U00011288\U0001128A-\U0001128D\U0001128F-\U0001129D\U0001129F-\U000112A8\U000112B0-\U000112DE\U00011305-\U0001130C\U0001130F\U00011310\U00011313-\U00011328\U0001132A-\U00011330\U00011332\U00011333\U00011335-\U00011339\U0001133D\U00011350\U0001135D-\U00011361\U00011400-\U00011434\U00011447-\U0001144A\U0001145F\U00011480-\U000114AF\U000114C4\U000114C5\U000114C7\U00011580-\U000115AE\U000115D8-\U000115DB\U00011600-\U0001162F\U00011644\U00011680-\U000116AA\U000116B8\U00011700-\U0001171A\U00011800-\U0001182B\U000118A0-\U000118DF\U000118FF\U000119A0-\U000119A7\U000119AA-\U000119D0\U000119E1\U000119E3\U00011A00\U00011A0B-\U00011A32\U00011A3A\U00011A50\U00011A5C-\U00011A89\U00011A9D\U00011AC0-\U00011AF8\U00011C00-\U00011C08\U00011C0A-\U00011C2E\U00011C40\U00011C72-\U00011C8F\U00011D00-\U00011D06\U00011D08\U00011D09\U00011D0B-\U00011D30\U00011D46\U00011D60-\U00011D65\U00011D67\U00011D68\U00011D6A-\U00011D89\U00011D98\U00011EE0-\U00011EF2\U00012000-\U00012399\U00012480-\U00012543\U00013000-\U0001342E\U00014400-\U00014646\U00016800-\U00016A38\U00016A40-\U00016A5E\U00016AD0-\U00016AED\U00016B00-\U00016B2F\U00016B40-\U00016B43\U00016B63-\U00016B77\U00016B7D-\U00016B8F\U00016E40-\U00016E7F\U00016F00-\U00016F4A\U00016F50\U00016F93-\U00016F9F\U00016FE0\U00016FE1\U00016FE3\U00017000-\U000187F7\U00018800-\U00018AF2\U0001B000-\U0001B11E\U0001B150-\U0001B152\U0001B164-\U0001B167\U0001B170-\U0001B2FB\U0001BC00-\U0001BC6A\U0001BC70-\U0001BC7C\U0001BC80-\U0001BC88\U0001BC90-\U0001BC99\U0001D400-\U0001D454\U0001D456-\U0001D49C\U0001D49E\U0001D49F\U0001D4A2\U0001D4A5\U0001D4A6\U0001D4A9-\U0001D4AC\U0001D4AE-\U0001D4B9\U0001D4BB\U0001D4BD-\U0001D4C3\U0001D4C5-\U0001D505\U0001D507-\U0001D50A\U0001D50D-\U0001D514\U0001D516-\U0001D51C\U0001D51E-\U0001D539\U0001D53B-\U0001D53E\U0001D540-\U0001D544\U0001D546\U0001D54A-\U0001D550\U0001D552-\U0001D6A5\U0001D6A8-\U0001D6C0\U0001D6C2-\U0001D6DA\U0001D6DC-\U0001D6FA\U0001D6FC-\U0001D714\U0001D716-\U0001D734\U0001D736-\U0001D74E\U0001D750-\U0001D76E\U0001D770-\U0001D788\U0001D78A-\U0001D7A8\U0001D7AA-\U0001D7C2\U0001D7C4-\U0001D7CB\U0001E100-\U0001E12C\U0001E137-\U0001E13D\U0001E14E\U0001E2C0-\U0001E2EB\U0001E800-\U0001E8C4\U0001E900-\U0001E943\U0001E94B\U0001EE00-\U0001EE03\U0001EE05-\U0001EE1F\U0001EE21\U0001EE22\U0001EE24\U0001EE27\U0001EE29-\U0001EE32\U0001EE34-\U0001EE37\U0001EE39\U0001EE3B\U0001EE42\U0001EE47\U0001EE49\U0001EE4B\U0001EE4D-\U0001EE4F\U0001EE51\U0001EE52\U0001EE54\U0001EE57\U0001EE59\U0001EE5B\U0001EE5D\U0001EE5F\U0001EE61\U0001EE62\U0001EE64\U0001EE67-\U0001EE6A\U0001EE6C-\U0001EE72\U0001EE74-\U0001EE77\U0001EE79-\U0001EE7C\U0001EE7E\U0001EE80-\U0001EE89\U0001EE8B-\U0001EE9B\U0001EEA1-\U0001EEA3\U0001EEA5-\U0001EEA9\U0001EEAB-\U0001EEBB\U00020000-\U0002A6D6\U0002A700-\U0002B734\U0002B740-\U0002B81D\U0002B820-\U0002CEA1\U0002CEB0-\U0002EBE0\U0002F800-\U0002FA1D]*/, - - number_literal: ($) => - token(choice(/-?[0-9]+(\.[0-9]+)?(e-?[0-9]+)?/, /0x[0-9A-Fa-f]+/)), - - string_escape: ($) => /\\(u\{[0-9A-Fa-f]{4,6}\}|[nrt\"'\\])/, - - invalid_string_escape: ($) => /\\(u\{[^}]*\}|[^nrt\"'\\])/, - - module: ($) => "module", - effect: ($) => "effect", - where: ($) => "where", - import: ($) => "import", - as: ($) => "as", - exposing: ($) => "exposing", - case: ($) => "case", - of: ($) => "of", - type: ($) => "type", - alias: ($) => "alias", - port: ($) => "port", - infix: ($) => "infix", - double_dot: ($) => "..", - eq: ($) => "=", - arrow: ($) => "->", - colon: ($) => ":", - backslash: ($) => "\\", - underscore: ($) => "_", - dot: ($) => ".", - operator_identifier: ($) => - choice( - "+", - "-", - "*", - "/", - "//", - "^", - "==", - "/=", - "<", - ">", - "<=", - ">=", - "&&", - "||", - "++", - "<|", - "|>", - "<<", - ">>", - "::", - "", - "", - "|.", - "|=" - ), - }, -}); - -function commaSep1(rule, comma) { - return sep1(rule, comma); -} - -function arrowSep1(rule, arrow) { - return sep1(rule, arrow); -} - -function sep1(rule, separator) { - return seq(rule, repeat(seq(separator, rule))); -} diff --git a/vendored_parsers/tree-sitter-elm/package.json b/vendored_parsers/tree-sitter-elm/package.json deleted file mode 100644 index 9638a3818..000000000 --- a/vendored_parsers/tree-sitter-elm/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "@elm-tooling/tree-sitter-elm", - "version": "5.7.0", - "description": "Tree sitter definitions for elm", - "main": "bindings/node", - "publishConfig": { - "access": "public" - }, - "keywords": [ - "elm", - "elm-lang", - "tree-sitter", - "parser", - "lexer" - ], - "author": "Razze", - "license": "MIT", - "dependencies": { - "nan": "^2.18.0" - }, - "devDependencies": { - "tree-sitter-cli": "^0.20.8" - }, - "scripts": { - "build": "tree-sitter generate", - "parse-basic": "tree-sitter parse ./examples/basic.elm", - "parse-test": "tree-sitter parse --debug ./examples/test.elm", - "test": "tree-sitter test && script/parse-examples", - "test-skip-download": "tree-sitter test && script/parse-examples -s", - "test-full": "tree-sitter test && script/parse-examples-full", - "test-full-skip-download": "tree-sitter test && script/parse-examples-full -s", - "test-only": "tree-sitter test", - "test-highlighting": "tree-sitter highlight test/highlight/basic.elm", - "test-tags": "tree-sitter tags test/highlight/basic.elm", - "generate-wasm": "tree-sitter build-wasm && mv ./tree-sitter-elm.wasm ./docs/js/tree-sitter-elm.wasm" - }, - "repository": "https://github.com/elm-tooling/tree-sitter-elm", - "tree-sitter": [ - { - "scope": "source.elm", - "file-types": [ - "elm" - ] - } - ] -} \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm/queries/highlights.scm b/vendored_parsers/tree-sitter-elm/queries/highlights.scm deleted file mode 100644 index 8cd68257d..000000000 --- a/vendored_parsers/tree-sitter-elm/queries/highlights.scm +++ /dev/null @@ -1,76 +0,0 @@ -; Keywords -[ - "if" - "then" - "else" - "let" - "in" - ] @keyword.control.elm -(case) @keyword.control.elm -(of) @keyword.control.elm - -(colon) @keyword.other.elm -(backslash) @keyword.other.elm -(as) @keyword.other.elm -(port) @keyword.other.elm -(exposing) @keyword.other.elm -(alias) @keyword.other.elm -(infix) @keyword.other.elm - -(arrow) @keyword.operator.arrow.elm - -(port) @keyword.other.port.elm - -(type_annotation(lower_case_identifier) @function.elm) -(port_annotation(lower_case_identifier) @function.elm) -(function_declaration_left(lower_case_identifier) @function.elm) -(function_call_expr target: (value_expr) @function.elm) - -(field_access_expr(value_expr(value_qid)) @local.function.elm) -(lower_pattern) @local.function.elm -(record_base_identifier) @local.function.elm - - -(operator_identifier) @keyword.operator.elm -(eq) @keyword.operator.assignment.elm - - -"(" @punctuation.section.braces -")" @punctuation.section.braces - -"|" @keyword.other.elm -"," @punctuation.separator.comma.elm - -(import) @meta.import.elm -(module) @keyword.other.elm - -(number_constant_expr) @constant.numeric.elm - - -(type) @keyword.type.elm - -(type_declaration(upper_case_identifier) @storage.type.elm) -(type_ref) @storage.type.elm -(type_alias_declaration name: (upper_case_identifier) @storage.type.elm) - -(union_variant(upper_case_identifier) @union.elm) -(union_pattern) @union.elm -(value_expr(upper_case_qid(upper_case_identifier)) @union.elm) - -; comments -(line_comment) @comment.elm -(block_comment) @comment.elm - -; strings -(string_escape) @character.escape.elm - -(open_quote) @string.elm -(close_quote) @string.elm -(regular_string_part) @string.elm - -(open_char) @char.elm -(close_char) @char.elm - - -; glsl -(glsl_content) @source.glsl diff --git a/vendored_parsers/tree-sitter-elm/queries/injections.scm b/vendored_parsers/tree-sitter-elm/queries/injections.scm deleted file mode 100644 index 83f8245ca..000000000 --- a/vendored_parsers/tree-sitter-elm/queries/injections.scm +++ /dev/null @@ -1,4 +0,0 @@ -; Parse glsl where defined - -((glsl_content) @injection.content - (#set! injection.language "glsl")) diff --git a/vendored_parsers/tree-sitter-elm/queries/locals.scm b/vendored_parsers/tree-sitter-elm/queries/locals.scm deleted file mode 100644 index 1eaf94fb7..000000000 --- a/vendored_parsers/tree-sitter-elm/queries/locals.scm +++ /dev/null @@ -1,15 +0,0 @@ - -(value_declaration) @local.scope -(type_alias_declaration) @local.scope -(type_declaration) @local.scope -(type_annotation) @local.scope -(port_annotation) @local.scope -(infix_declaration) @local.scope -(let_in_expr) @local.scope - -(function_declaration_left (lower_pattern (lower_case_identifier)) @local.definition) -(function_declaration_left (lower_case_identifier) @local.definition) - -(value_expr(value_qid(upper_case_identifier)) @local.reference) -(value_expr(value_qid(lower_case_identifier)) @local.reference) -(type_ref (upper_case_qid) @local.reference) \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm/queries/tags.scm b/vendored_parsers/tree-sitter-elm/queries/tags.scm deleted file mode 100644 index d6ac5cd94..000000000 --- a/vendored_parsers/tree-sitter-elm/queries/tags.scm +++ /dev/null @@ -1,19 +0,0 @@ -(value_declaration (function_declaration_left (lower_case_identifier) @name)) @definition.function - -(function_call_expr (value_expr (value_qid) @name)) @reference.function -(exposed_value (lower_case_identifier) @name) @reference.function -(type_annotation ((lower_case_identifier) @name) (colon)) @reference.function - -(type_declaration ((upper_case_identifier) @name) ) @definition.type - -(type_ref (upper_case_qid (upper_case_identifier) @name)) @reference.type -(exposed_type (upper_case_identifier) @name) @reference.type - -(type_declaration (union_variant (upper_case_identifier) @name)) @definition.union - -(value_expr (upper_case_qid (upper_case_identifier) @name)) @reference.union - - -(module_declaration - (upper_case_qid (upper_case_identifier)) @name -) @definition.module \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm/script/applications.json b/vendored_parsers/tree-sitter-elm/script/applications.json deleted file mode 100644 index 02d9feee4..000000000 --- a/vendored_parsers/tree-sitter-elm/script/applications.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - "rtfeldman/elm-spa-example", - "andys8/vim-emulation", - "DoctypeRosenthal/mindmap", - "RalfNorthman/adding-boxes", - "mosmos21/elm-todo", - "wolmir/conta-invaders", - "ryannhg/love-your-humans", - "smith-30/elm-login", - "jxxcarlson/elm-shared-state", - "doubledup/initiative_tracker", - "RaoKrishna/elm-poc", - "visotype/state-machine", - "Chadtech/elm-europe-2019-talk", - "mathiajusth/gravity", - "Vynlar/time-tracker", - "xbmc/elm-chorus" -] diff --git a/vendored_parsers/tree-sitter-elm/script/error-packages.json b/vendored_parsers/tree-sitter-elm/script/error-packages.json deleted file mode 100644 index a2a743f42..000000000 --- a/vendored_parsers/tree-sitter-elm/script/error-packages.json +++ /dev/null @@ -1,39 +0,0 @@ -[ - "1602/json-value", - "1602/json-schema", - "Chadtech/elm-imperative-porting", - "JonRowe/elm-jwt", - "NoRedInk/elm-formatted-text-19", - "NoRedInk/elm-plot-19", - "NoRedInk/style-elements", - "YuyaAizawa/peg", - "alex-tan/elm-dialog", - "alex-tan/elm-tree-diagram", - "alexanderkiel/list-selection", - "altayaydemir/style-elements", - "mdgriffith/style-elements", - "terezka/elm-charts-alpha", - "terezka/line-charts", - "the-sett/the-sett-laf", - "zwilias/json-decode-exploration", - "truqu/line-charts", - "tomjkidd/elm-multiway-tree-zipper", - "rtfeldman/elm-sorter-experiment", - "ianmackenzie/elm-geometry-prerelease", - "folkertdev/elm-state", - "folkertdev/one-true-path-experiment", - "elm-explorations/test", - - "HAN-ASD-DT/priority-queue", - "HAN-ASD-DT/rsa", - "abradley2/form-controls", - "abradley2/form-fields", - "altjsus/elm-airtable", - "nik-garmash/elm-test", - "not1602/elm-feather", - "ozyinc/elm-sortable-table-with-row-id", - "peterszerzo/elm-natural-ui", - "m-mullins/elm-console", - "nathanjohnson320/elm-ui-components", - "proda-ai/elm-logger" -] diff --git a/vendored_parsers/tree-sitter-elm/script/known-failures-full.txt b/vendored_parsers/tree-sitter-elm/script/known-failures-full.txt deleted file mode 100644 index 56685e5f0..000000000 --- a/vendored_parsers/tree-sitter-elm/script/known-failures-full.txt +++ /dev/null @@ -1,2 +0,0 @@ -// This is only for reference and not used automatically -examples-full/MacCASOutreach/graphicsvg/src/GraphicSVG/Widget.elm // Errors, but intelliJ does the same diff --git a/vendored_parsers/tree-sitter-elm/script/known-failures.txt b/vendored_parsers/tree-sitter-elm/script/known-failures.txt deleted file mode 100644 index 491fde145..000000000 --- a/vendored_parsers/tree-sitter-elm/script/known-failures.txt +++ /dev/null @@ -1 +0,0 @@ -examples/elm-ui/tests-rendering/automation/templates/Run.elm \ No newline at end of file diff --git a/vendored_parsers/tree-sitter-elm/script/parse-examples b/vendored_parsers/tree-sitter-elm/script/parse-examples deleted file mode 100755 index b4258f886..000000000 --- a/vendored_parsers/tree-sitter-elm/script/parse-examples +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")/.." - -function checkout_at() { - repo=$1; url=$2; sha=$3 - if [ ! -d "$repo" ]; then - git clone "https://github.com/$url" "$repo" - fi - - pushd "$repo" - git fetch && git reset --hard "$sha" - popd -} - -# Define list of arguments expected in the input -optstring="s" - -while getopts ${optstring} arg; do - case ${arg} in - s) - SKIP_DOWNLOAD='true' - echo "Skip download" - ;; - ?) - echo "Invalid option: -${OPTARG}." - ;; - esac -done - -if [[ $SKIP_DOWNLOAD != 'true' ]]; then - checkout_at "examples/elm-spa-example" "rtfeldman/elm-spa-example" "c8c3201ec0488f17c1245e1fd2293ba5bc0748d5" - checkout_at "examples/elm-browser" "elm/browser" "1d28cd625b3ce07be6dfad51660bea6de2c905f2" - checkout_at "examples/elm-bytes" "elm/bytes" "2bce2aeda4ef18c3dcccd84084647d22a7af36a6" - checkout_at "examples/elm-core" "elm/core" "65cea00afa0de03d7dda0487d964a305fc3d58e3" - checkout_at "examples/elm-file" "elm/file" "e4ca3864c93a5e766e24ed6916174753567b2f59" - checkout_at "examples/elm-html" "elm/html" "94c079007f8a7ed282d5b53f4a49101dd0b6cf99" - checkout_at "examples/elm-http" "elm/http" "81b6fdc67d8e5fb25644fd79e6b0edbe2e14e474" - checkout_at "examples/elm-json" "elm/json" "0206c00884af953f2cba8823fee111ee71a0330e" - checkout_at "examples/elm-parser" "elm/parser" "7506b07eaa93a93d13b508b948c016105b0953c8" - checkout_at "examples/elm-project-metadata-utils" "elm/project-metadata-utils" "831733724fb2b59b38ba1639e6503d97607dbd9d" - checkout_at "examples/elm-random" "elm/random" "ecf97bb43f0d5cd75243428f69f45323957bda25" - checkout_at "examples/elm-regex" "elm/regex" "8810c41fb17ddf89165665489be213f44070bc4a" - checkout_at "examples/elm-svg" "elm/svg" "08bd432990862bab5b840654dd437fbb2e6176e7" - checkout_at "examples/elm-time" "elm/time" "dc3b75b7366e59b99962706f7bf064d3634a4bba" - checkout_at "examples/elm-url" "elm/url" "4e5ee032515581bf01428d54ee636dd601f4bc90" - checkout_at "examples/elm-virtual-dom" "elm/virtual-dom" "44cbe2bf3d598cab569045cefcc10de31907598d" - checkout_at "examples/elm-ui" "mdgriffith/elm-ui" "acae8857a02e600cc4b4737ca2f70607228b4489" - checkout_at "examples/elm-markup" "mdgriffith/elm-markup" "b073d85490f71c6491648bcd0b11bf9aca6e53a5" - checkout_at "examples/elm-visualization" "gampleman/elm-visualization" "6b9c7476507cedbbd8fc841fdecb59f4af2c3f96" -fi - -skipped_files=() -examples_to_parse=() -all_examples=$(find examples -name '*.elm') -known_failures=$(cat script/known-failures.txt) -for example in $all_examples; do - if [[ ! $known_failures == *$example* ]]; then - examples_to_parse+=($example) - else - skipped_files+=($example) - fi -done - -start=`date +%s.%N` -tree_sitter_report=$(echo ${examples_to_parse[@]} | xargs -n 100000 npx tree-sitter parse --quiet --stat) -end=`date +%s.%N` - -ret_code=$? - -echo -e "-----------------------------------------------------------------\n$tree_sitter_report \n -----------------------------------------------------------------\n" - -skipped=$( echo ${#skipped_files[@]} ) -# This doesn't work on macos due to how date is used and will default to empty -runtime=$( echo "$end - $start" | bc -l ) - -printf "Skipped: %d \nTook: %s\n" $skipped $runtime - -exit $ret_code diff --git a/vendored_parsers/tree-sitter-elm/script/parse-examples-full b/vendored_parsers/tree-sitter-elm/script/parse-examples-full deleted file mode 100755 index 54a2dfd6e..000000000 --- a/vendored_parsers/tree-sitter-elm/script/parse-examples-full +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")/.." - -function checkout() { - repo=$1; url=$2; - if [ ! -d "$repo" ]; then - git clone "https://github.com/$url" "$repo" - fi - - pushd "$repo" - git fetch && git reset --hard HEAD - popd -} - -# Define list of arguments expected in the input -optstring="s" - -while getopts ${optstring} arg; do - case ${arg} in - s) - SKIP_DOWNLOAD='true' - echo "Skip download" - ;; - ?) - echo "Invalid option: -${OPTARG}." - ;; - esac -done - -echo "Finding libs" -libs_to_parse=$(grep -Po '"name":.*?[^\\]",' ./script/search.json | perl -pe 's/"name": "//; s/^"//; s/",$//') -libs_not_to_parse=$(grep -Po '".+"' ./script/error-packages.json | perl -pe 's/^"//; s/"$//') - -for lib in $libs_to_parse; do - if [[ $libs_not_to_parse != *$lib* && $SKIP_DOWNLOAD != 'true' ]]; then - echo $lib - checkout "examples-full/$lib" "$lib" - fi -done - -echo "Finding applications" -applications_to_parse=$(grep -Po '".+"' ./script/applications.json | perl -pe 's/^"//; s/"$//') - -if [[ $SKIP_DOWNLOAD != 'true' ]]; then - for project in $applications_to_parse; do - echo $project - checkout "examples-full/$project" "$project" - done -fi - - -start=`date +%s.%N` -tree_sitter_report=$(npx tree-sitter parse examples-full/**/*.elm --quiet --stat) -end=`date +%s.%N` - -ret_code=$? - -echo -e "-----------------------------------------------------------------\n$tree_sitter_report \n -----------------------------------------------------------------\n" - -runtime=$( echo "$end - $start" | bc -l ) - -printf "Took: %s\n" $runtime - -exit $ret_code diff --git a/vendored_parsers/tree-sitter-elm/script/search.json b/vendored_parsers/tree-sitter-elm/script/search.json deleted file mode 100644 index ab94cc4ef..000000000 --- a/vendored_parsers/tree-sitter-elm/script/search.json +++ /dev/null @@ -1,9458 +0,0 @@ -[ - { - "name": "elm/browser", - "summary": "Run Elm in browsers, with access to browser history for single-page apps (SPAs)", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "elm/bytes", - "summary": "Work with sequences of bytes (a.k.a. ArrayBuffer, typed arrays, DataView)", - "license": "BSD-3-Clause", - "version": "1.0.8" - }, - { - "name": "elm/core", - "summary": "Elm's standard libraries", - "license": "BSD-3-Clause", - "version": "1.0.5" - }, - { - "name": "elm/file", - "summary": "Select files. Download files. Work with file content.", - "license": "BSD-3-Clause", - "version": "1.0.5" - }, - { - "name": "elm/html", - "summary": "Fast HTML, rendered with virtual DOM diffing", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "elm/http", - "summary": "Make HTTP requests", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "elm/json", - "summary": "Encode and decode JSON values", - "license": "BSD-3-Clause", - "version": "1.1.3" - }, - { - "name": "elm/parser", - "summary": "a parsing library, focused on simplicity and great error messages", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "elm/project-metadata-utils", - "summary": "Work with elm.json and docs.json files in Elm", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "elm/random", - "summary": "Generate random numbers and values (RNG)", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "elm/regex", - "summary": "Support for JS-style regular expressions in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "elm/svg", - "summary": "Fast SVG, rendered with virtual DOM diffing", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "elm/time", - "summary": "Work with POSIX times, time zones, years, months, days, hours, seconds, etc.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "elm/url", - "summary": "Create and parse URLs. Use for HTTP and \"routing\" in single-page apps (SPAs)", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "elm/virtual-dom", - "summary": "Core virtual DOM implementation, basis for HTML and SVG libraries", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "elm-explorations/benchmark", - "summary": "benchmark Elm code", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "elm-explorations/linear-algebra", - "summary": "A linear algebra library for fast vector and matrix math", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "elm-explorations/markdown", - "summary": "Fast markdown parsing and rendering", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "elm-explorations/test", - "summary": "Write unit and fuzz tests for Elm code.", - "license": "BSD-3-Clause", - "version": "1.2.2" - }, - { - "name": "elm-explorations/webgl", - "summary": "Functional rendering with WebGL in Elm", - "license": "BSD-3-Clause", - "version": "1.1.3" - }, - { - "name": "evancz/elm-playground", - "summary": "A fun way to create pictures, animations, and games.", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "rtfeldman/console-print", - "summary": "Print formatted text to the console using ANSI escape sequences.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "rtfeldman/count", - "summary": "Call record constructors with increasing integers. Useful for managing z-index.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "rtfeldman/elm-css", - "summary": "Typed CSS in Elm.", - "license": "BSD-3-Clause", - "version": "17.1.1" - }, - { - "name": "rtfeldman/elm-hex", - "summary": "Work with hexadecimal numbers", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "rtfeldman/elm-iso8601-date-strings", - "summary": "Convert ISO8601 date strings to and from Posix times", - "license": "BSD-3-Clause", - "version": "1.1.4" - }, - { - "name": "rtfeldman/elm-sorter-experiment", - "summary": "Experimental Sorter package", - "license": "BSD-3-Clause", - "version": "2.1.1" - }, - { - "name": "rtfeldman/elm-validate", - "summary": "Validate data", - "license": "BSD-3-Clause", - "version": "4.0.1" - }, - { - "name": "lukewestby/accessible-html-with-css-temp-19", - "summary": "Drop-in replacement for tesk9/accessible-html using Html.Styled", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "lukewestby/elm-http-builder", - "summary": "Pipeable functions for building HTTP requests", - "license": "MIT", - "version": "8.0.0" - }, - { - "name": "lukewestby/elm-string-interpolate", - "summary": "Inject values from a list into a template. Useful for i18n and templated copy.", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "lukewestby/elm-template", - "summary": "Type-safe Elm string templating with records", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "lukewestby/http-extra", - "summary": "Inject values from a list into a template. Useful for i18n and templated copy.", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "mdgriffith/elm-animator", - "summary": "A timeline-based animation engine", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "mdgriffith/elm-codegen", - "summary": "A code generation library for Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "mdgriffith/elm-markup", - "summary": "An Elm-friendly markup language for typed data and content.", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "mdgriffith/elm-style-animation", - "summary": "Style Animations in Elm", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "mdgriffith/elm-ui", - "summary": "Layout and style that's easy to refactor, all without thinking about CSS.", - "license": "BSD-3-Clause", - "version": "1.1.8" - }, - { - "name": "mdgriffith/style-elements", - "summary": "This project had a major rewrite and continues as mdgriffith/elm-ui", - "license": "BSD-3-Clause", - "version": "5.0.2" - }, - { - "name": "mdgriffith/stylish-elephants", - "summary": "Layout and style that's easy to refactor, all without thinking about CSS.", - "license": "BSD-3-Clause", - "version": "8.1.0" - }, - { - "name": "w0rm/elm-obj-file", - "summary": "Encode and decode 3D models in the OBJ file format", - "license": "BSD-3-Clause", - "version": "1.2.1" - }, - { - "name": "w0rm/elm-physics", - "summary": "3D physics engine", - "license": "BSD-3-Clause", - "version": "5.1.3" - }, - { - "name": "w0rm/elm-slice-show", - "summary": "Elm Slides", - "license": "BSD-3-Clause", - "version": "5.0.2" - }, - { - "name": "BrianHicks/elm-css-reset", - "summary": "CSS Resets for rtfeldman/elm-css", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "BrianHicks/elm-csv", - "summary": "Decode CSV in the most boring way possible.", - "license": "BSD-3-Clause", - "version": "3.0.3" - }, - { - "name": "BrianHicks/elm-particle", - "summary": "Simulate and render particles to SVG", - "license": "BSD-3-Clause", - "version": "1.5.0" - }, - { - "name": "BrianHicks/elm-string-graphemes", - "summary": "Do string operations based on graphemes instead of codepoints or bytes.", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "BrianHicks/elm-trend", - "summary": "generate trend lines for two-dimensional data", - "license": "BSD-3-Clause", - "version": "2.1.3" - }, - { - "name": "Janiczek/architecture-test", - "summary": "A library for fuzz testing TEA models by simulating user interactions", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "Janiczek/browser-extra", - "summary": "Extra functions for elm/browser", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "Janiczek/cmd-extra", - "summary": "Pipeline-friendly helpers for working with Cmds", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "Janiczek/elm-bidict", - "summary": "A bidirectional Dict data structure", - "license": "BSD-3-Clause", - "version": "3.1.0" - }, - { - "name": "Janiczek/elm-graph", - "summary": "A graph data structure with a nice API", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "Janiczek/elm-list-cartesian", - "summary": "Specialized List mapN fns giving all combinations of items instead of zipping", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "Janiczek/elm-quasirandom", - "summary": "Quasirandom number generators", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "Janiczek/elm-raycasting", - "summary": "Raycasting in 2D space", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "Janiczek/elm-runescape", - "summary": "Functions related to the game RuneScape by Jagex Ltd.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "Janiczek/elm-secret-sharing", - "summary": "Shamir's Secret Sharing algorithm over GF(256)", - "license": "Apache-2.0", - "version": "2.0.0" - }, - { - "name": "Janiczek/elm-sourcemap", - "summary": "A builder for Source Maps (revision 3)", - "license": "Apache-2.0", - "version": "1.1.0" - }, - { - "name": "Janiczek/elm-url-codec", - "summary": "Define both URL parser and builder at once", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Janiczek/elm-vlq", - "summary": "Base-64 encoder and decoder for VLQ, handy eg. for sourcemaps", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "Janiczek/transform", - "summary": "Transform recursive data structures from the bottom up", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "JoelQ/elm-toggleable", - "summary": "Elm functions for working with toggleable UIs", - "license": "MIT", - "version": "1.1.1" - }, - { - "name": "jschomay/elm-bounded-number", - "summary": "A type representing bounded numbers.", - "license": "BSD-3-Clause", - "version": "2.1.2" - }, - { - "name": "jschomay/elm-narrative-engine", - "summary": "Interactive storytelling framework", - "license": "BSD-3-Clause", - "version": "6.0.3" - }, - { - "name": "jschomay/elm-paginate", - "summary": "Simple and robust pagination in elm", - "license": "BSD-3-Clause", - "version": "3.1.2" - }, - { - "name": "myrho/elm-hovercard", - "summary": "Render a hovercard beneath a DOM element", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "myrho/elm-round", - "summary": "Round floats (mathematically/commercially) to a given number of decimal places", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "supermario/elm-countries", - "summary": "A searchable ISO 3166-1 based list of country names, codes and emoji flags", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "terezka/charts", - "summary": "Nighly version of terezka/elm-charts with newest features.", - "license": "BSD-3-Clause", - "version": "20.0.1" - }, - { - "name": "terezka/elm-charts", - "summary": "SVG charts components in Elm.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "terezka/elm-charts-alpha", - "summary": "A library for plotting charts in SVG.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "terezka/elm-diff", - "summary": "A parser for `git diff` output + highlighting.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "terezka/intervals", - "summary": "A library for producing nice intervals for charts.", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "terezka/line-charts", - "summary": "A library for plotting lines charts in SVG.", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "terezka/yaml", - "summary": "A library for parsing and decoding YAML.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "tesk9/accessible-html", - "summary": "view helpers enforcing accessible practices", - "license": "BSD-3-Clause", - "version": "5.1.0" - }, - { - "name": "tesk9/accessible-html-with-css", - "summary": "Drop-in replacement for tesk9/accessible-html using Html.Styled", - "license": "BSD-3-Clause", - "version": "3.1.0" - }, - { - "name": "tesk9/modal", - "summary": "Accessible modal component", - "license": "BSD-3-Clause", - "version": "7.0.0" - }, - { - "name": "tesk9/palette", - "summary": "Work with colors and generate palettes.", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "Arkham/elm-chords", - "summary": "Parse chord sheets for guitar and ukulele", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "Arkham/elm-review-no-missing-type-constructor", - "summary": "elm-review rule to detect missing type constructor", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "Arkham/elm-rttl", - "summary": "Parse ringtones written using RTTL and Nokia Composer", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Skinney/elm-deque", - "summary": "A double-ended queue for Elm", - "license": "BSD-3-Clause", - "version": "1.2.0" - }, - { - "name": "Skinney/elm-phone-numbers", - "summary": "A package for validating phone numbers. Based on google's libphonenumber.", - "license": "BSD-3-Clause", - "version": "2.0.29" - }, - { - "name": "Skinney/elm-warrior", - "summary": "Hone your Elm skills by programming the intelligence of a brave warrior.", - "license": "BSD-3-Clause", - "version": "4.0.5" - }, - { - "name": "Skinney/keyboard-events", - "summary": "Functions for triggering messages when a certain key is pressed", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "Skinney/murmur3", - "summary": "An implementation of the Murmur3 hash function for Elm", - "license": "MIT", - "version": "2.0.8" - }, - { - "name": "abadi199/elm-creditcard", - "summary": "Pretty credit card form built with elm", - "license": "MIT", - "version": "10.0.2" - }, - { - "name": "abadi199/elm-input-extra", - "summary": "Commonly used Html element with extra functionality", - "license": "BSD-3-Clause", - "version": "5.2.6" - }, - { - "name": "abadi199/intl-phone-input", - "summary": "International phone number form input.", - "license": "Apache-2.0", - "version": "2.0.2" - }, - { - "name": "decioferreira/elm-review-zen-css", - "summary": "Provides elm-review rules to support the use of elm-zen-css.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "decioferreira/elm-zen-css", - "summary": "Elm Zen CSS", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "decioferreira/elm-zen-css-bootstrap", - "summary": "Elm Zen CSS Bootstrap", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "eeue56/elm-graphql-debug-errors", - "summary": "Get useful error messages from GraphQL errors in English", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "gampleman/elm-examples-helper", - "summary": "A simple package that makes elm-visualization examples simpler", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "gampleman/elm-mapbox", - "summary": "An advanced mapping library", - "license": "MIT", - "version": "4.1.0" - }, - { - "name": "gampleman/elm-visualization", - "summary": "A data visualization package for Elm", - "license": "MIT", - "version": "2.3.0" - }, - { - "name": "ianmackenzie/elm-1d-parameter", - "summary": "Generate evenly spaced interpolated values", - "license": "MPL-2.0", - "version": "1.0.1" - }, - { - "name": "ianmackenzie/elm-3d-camera", - "summary": "Camera type for 3D rendering and projection", - "license": "MPL-2.0", - "version": "3.1.0" - }, - { - "name": "ianmackenzie/elm-3d-scene", - "summary": "3D rendering engine for Elm", - "license": "MPL-2.0", - "version": "1.0.1" - }, - { - "name": "ianmackenzie/elm-float-extra", - "summary": "Useful functionionality for Float values", - "license": "MPL-2.0", - "version": "1.1.0" - }, - { - "name": "ianmackenzie/elm-geometry", - "summary": "2D/3D geometric data types and operations", - "license": "MPL-2.0", - "version": "3.9.1" - }, - { - "name": "ianmackenzie/elm-geometry-linear-algebra-interop", - "summary": "Interop support for ianmackenzie/elm-geometry and elm-community/linear-algebra", - "license": "MPL-2.0", - "version": "2.0.2" - }, - { - "name": "ianmackenzie/elm-geometry-prerelease", - "summary": "PRERELEASE version of elm-geometry", - "license": "MPL-2.0", - "version": "1.0.1" - }, - { - "name": "ianmackenzie/elm-geometry-svg", - "summary": "Render 2D elm-geometry types as SVG", - "license": "MPL-2.0", - "version": "3.0.0" - }, - { - "name": "ianmackenzie/elm-geometry-test", - "summary": "Helpful utilities for testing code that uses elm-geometry", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "ianmackenzie/elm-interval", - "summary": "Simple Interval type for Elm", - "license": "MPL-2.0", - "version": "3.1.0" - }, - { - "name": "ianmackenzie/elm-iso-10303", - "summary": "Create and parse data in ISO 10303-21 (STEP file) format", - "license": "MPL-2.0", - "version": "8.0.1" - }, - { - "name": "ianmackenzie/elm-step-file", - "summary": "Create and parse data in ISO 10303-21 (STEP file) format", - "license": "MPL-2.0", - "version": "1.0.1" - }, - { - "name": "ianmackenzie/elm-triangular-mesh", - "summary": "Generic indexed triangular mesh data structure", - "license": "MPL-2.0", - "version": "1.1.0" - }, - { - "name": "ianmackenzie/elm-units", - "summary": "Simple, safe and convenient unit types and conversions for Elm", - "license": "BSD-3-Clause", - "version": "2.9.0" - }, - { - "name": "ianmackenzie/elm-units-interval", - "summary": "Version of elm-interval based on elm-units", - "license": "MPL-2.0", - "version": "3.2.0" - }, - { - "name": "ianmackenzie/elm-units-prefixed", - "summary": "Prefixed version of elm-units for resolving module name conflicts", - "license": "BSD-3-Clause", - "version": "2.7.0" - }, - { - "name": "jxxcarlson/elm-cell-grid", - "summary": "Render a rectangular grid of cells to HTML.", - "license": "BSD-3-Clause", - "version": "8.0.1" - }, - { - "name": "jxxcarlson/elm-editor", - "summary": "A pure Elm text editor", - "license": "MIT", - "version": "3.1.3" - }, - { - "name": "jxxcarlson/elm-graph", - "summary": "Simple charts: line and bar", - "license": "BSD-3-Clause", - "version": "3.1.0" - }, - { - "name": "jxxcarlson/elm-l0-parser", - "summary": "Fault-tolerant parser for the L0 markup language", - "license": "MIT", - "version": "1.2.3" - }, - { - "name": "jxxcarlson/elm-lambda", - "summary": "tools for working with the lambda calculus", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "jxxcarlson/elm-markdown", - "summary": "Experimental markdown parser, handles math, has hooks for editor sync", - "license": "BSD-3-Clause", - "version": "10.1.0" - }, - { - "name": "jxxcarlson/elm-pseudorandom", - "summary": "Pseudorandom number generators", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "jxxcarlson/elm-search", - "summary": "Search and sort a list of data using a DSL for conjunction and negation", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "jxxcarlson/elm-spreadsheet", - "summary": "Representation of and computation spreadsheets in Elm.", - "license": "MIT", - "version": "3.1.0" - }, - { - "name": "jxxcarlson/elm-stat", - "summary": "Elm stat utility", - "license": "BSD-3-Clause", - "version": "5.0.1" - }, - { - "name": "jxxcarlson/elm-tar", - "summary": "Elm tar utility", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "jxxcarlson/elm-text-editor", - "summary": "Pure Elm text editor forked from Sydney Nemzer", - "license": "BSD-3-Clause", - "version": "7.0.8" - }, - { - "name": "jxxcarlson/elm-tree-builder", - "summary": "Build rose trees from a string", - "license": "BSD-3-Clause", - "version": "7.0.0" - }, - { - "name": "jxxcarlson/elm-typed-time", - "summary": "A typed time library for Elm (keep track of units: seconds, minutes, etc.)", - "license": "MIT", - "version": "1.2.0" - }, - { - "name": "jxxcarlson/elm-widget", - "summary": "A small personal collection of UI widgets for mdgriffith/elm-ui", - "license": "MIT", - "version": "3.3.0" - }, - { - "name": "jxxcarlson/hex", - "summary": "hex view for bytes", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "jxxcarlson/htree", - "summary": "Transform hierarchical list to a rose tree", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "jxxcarlson/math-markdown", - "summary": "Experimental markdown parser that also handles math!", - "license": "BSD-3-Clause", - "version": "3.0.6" - }, - { - "name": "jxxcarlson/meenylatex", - "summary": "A parser for a subset of LaTeX", - "license": "BSD-3-Clause", - "version": "14.1.1" - }, - { - "name": "jxxcarlson/scripta-compiler", - "summary": "A compiler that transforms markup source text to HTML", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "jxxcarlson/toc-editor", - "summary": "Drag and drop editor for table of contents", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "jxxcarlson/tree-extra", - "summary": "Operations on rose trees to go with zwilias/elm-rosetree", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "noahzgordon/elm-color-extra", - "summary": "Additional color handling for Elm", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "noahzgordon/elm-jsonapi", - "summary": "Decoders and helper functions for working with JSONAPI payloads", - "license": "MIT", - "version": "3.0.1" - }, - { - "name": "ohanhi/autoexpand", - "summary": "A pure Elm auto expanding textarea", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "ohanhi/keyboard", - "summary": "Helpers for working with keyboard inputs (ex keyboard-extra)", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "ohanhi/lorem", - "summary": "Placeholder text for your Elm apps", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "ohanhi/remotedata-http", - "summary": "A collection of helper functions for server communication using RemoteData", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "0ui/elm-task-parallel", - "summary": "Run tasks in parallel and handle all the results in one message.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "1602/elm-feather", - "summary": "Feather icons for elm", - "license": "BSD-3-Clause", - "version": "2.3.5" - }, - { - "name": "1602/json-schema", - "summary": "JSON Schema for elm", - "license": "BSD-3-Clause", - "version": "4.1.1" - }, - { - "name": "1602/json-value", - "summary": "Reading and manipulation with json values", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "2426021684/elm-collage", - "summary": "Use timjs/elm-collage instead.", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "2426021684/elm-text-width", - "summary": "Calculates text width.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "3kyro/xsrf-protection", - "summary": "Provides XSRF protection and authentication options", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "7hoenix/elm-chess", - "summary": "Basic Chess module in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "8n8/elm-string-normalize", - "summary": "Remove diacritics from a string", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "AdrianRibao/elm-derberos-date", - "summary": "Functions for working with dates, times, and timezones using in Elm 0.19.", - "license": "MIT", - "version": "1.2.3" - }, - { - "name": "AuricSystemsInternational/creditcard-validator", - "summary": "Determine the brand of a credit card number", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "Bastes/the-validator", - "summary": "Validator for models that does nesting and composition", - "license": "AGPL-3.0", - "version": "2.1.2" - }, - { - "name": "Bernardoow/elm-alert-timer-message", - "summary": "Simple message alert library.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "Bernardoow/elm-rating-component", - "summary": "Simple rating component.", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "Bractlet/elm-plot", - "summary": "Bractlet version of elm-plot (forked from terezka)", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "Cendrb/elm-css", - "summary": "Typed CSS in Elm.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Chadtech/ct-colors", - "summary": "Chadtech standard colors", - "license": "BSD-3-Clause", - "version": "3.0.2" - }, - { - "name": "Chadtech/dependent-text", - "summary": "Dependent Text type (sorta)", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Chadtech/elm-bool-extra", - "summary": "Convenience functions for working with Bools", - "license": "BSD-3-Clause", - "version": "2.4.2" - }, - { - "name": "Chadtech/elm-css-grid", - "summary": "Simple way to arrange things in grids", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "Chadtech/elm-imperative-porting", - "summary": "Imperative syntax functions for porting imperative code into Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Chadtech/elm-money", - "summary": "All the worlds currencies", - "license": "BSD-3-Clause", - "version": "7.0.0" - }, - { - "name": "Chadtech/elm-provider", - "summary": "An exploration into the container / component pattern in Elm", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "Chadtech/elm-relational-database", - "summary": "Keep track of lots of different data by ids", - "license": "BSD-3-Clause", - "version": "1.2.2" - }, - { - "name": "Chadtech/elm-us-state-abbreviations", - "summary": "List of US State abbreviations and a few helpful functions", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "Chadtech/elm-vector", - "summary": "Collection types of a fixed length", - "license": "BSD-3-Clause", - "version": "3.0.2" - }, - { - "name": "Chadtech/id", - "summary": "Types and helpers for your types with ids", - "license": "BSD-3-Clause", - "version": "4.2.0" - }, - { - "name": "Chadtech/random-pipeline", - "summary": "Making random values a little bit easier", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "Chadtech/return", - "summary": "Helpers for update functions", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "Chadtech/unique-list", - "summary": "A type to arrange things in order", - "license": "BSD-3-Clause", - "version": "2.1.5" - }, - { - "name": "ChristophP/elm-i18next", - "summary": "A module to load, decode and use translations in your app", - "license": "BSD-3-Clause", - "version": "4.2.0" - }, - { - "name": "ChristophP/elm-mark", - "summary": "Search term highlighting for Elm apps", - "license": "BSD-3-Clause", - "version": "2.0.4" - }, - { - "name": "CipherDogs/elm-bitcoin", - "summary": "Bitcoin web component made using Elm", - "license": "GPL-3.0", - "version": "2.0.0" - }, - { - "name": "CoderDennis/elm-time-format", - "summary": "Formatting and Internationalization of Time.Posix", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "ConcatDK/elm-todoist", - "summary": "Handling integration with the Todoist API", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "Confidenceman02/elm-animate-height", - "summary": "Animate a containers height", - "license": "BSD-3-Clause", - "version": "2.1.5" - }, - { - "name": "Confidenceman02/elm-select", - "summary": "A Handsome flexible select!", - "license": "BSD-3-Clause", - "version": "5.4.0" - }, - { - "name": "ContaSystemer/elm-angularjs-custom-element", - "summary": "The package contains HTML functions to reuse AngularJS components in Elm", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "ContaSystemer/elm-effects", - "summary": "Effects package helps to manage additional program effects", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "ContaSystemer/elm-effects-msg-from-js", - "summary": "Effects to work with a system to process messages from JS", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ContaSystemer/elm-effects-time", - "summary": "Time system effects to subscribe for time events.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ContaSystemer/elm-error-message", - "summary": "Helper functions for specific error messages", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ContaSystemer/elm-js-data", - "summary": "Data structure to communicate with JavaScript over ports", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ContaSystemer/elm-menu", - "summary": "A customizable menu component which could be used for autocomplete component", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "ContaSystemer/elm-review-no-missing-documentation", - "summary": "elm-review rule to enforce documentation for every top level declaration\n\n", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ContaSystemer/elm-review-no-regex", - "summary": "\"elm-review\" rule to forbid Regex package usage in favour of Parser package", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ContaSystemer/review-no-missing-documentation", - "summary": "elm-review rule to enforce documentation for every top level declaration\n\n", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ContaSystemer/review-noregex", - "summary": "elm-review rule to forbid regex usage", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "CurrySoftware/elm-datepicker", - "summary": "A reusable date picker component", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "DelmOrg/delm-concept", - "summary": "Conceptual standard library for Delm", - "license": "MIT", - "version": "2.3.0" - }, - { - "name": "EdutainmentLIVE/elm-bootstrap", - "summary": "Elm Bootstrap is a comprehensive library for working with Twitter Bootstrap 4", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "EdutainmentLIVE/elm-dropdown", - "summary": "A dropdown / select component", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "Elm-Canvas/raster-shapes", - "summary": "Pixelated shape drawing using the Bresenham algorithms", - "license": "BSD-3-Clause", - "version": "1.1.2" - }, - { - "name": "EngageSoftware/elm-dnn-http", - "summary": "Helpers for working with DNN Web API", - "license": "Apache-2.0", - "version": "2.1.0" - }, - { - "name": "EngageSoftware/elm-dnn-localization", - "summary": "Helpers for working with DNN Localization", - "license": "Apache-2.0", - "version": "1.1.0" - }, - { - "name": "EngageSoftware/elm-engage-common", - "summary": "Engage's common UI framework components", - "license": "Apache-2.0", - "version": "8.2.7" - }, - { - "name": "EngageSoftware/elm-mustache", - "summary": "Evaluating mustache templates", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "Evelios/elm-dat-gui", - "summary": "Parameter tweaking library using elm-ui", - "license": "Apache-2.0", - "version": "1.0.0" - }, - { - "name": "Evelios/elm-hash", - "summary": "Turn elm objects into comparable hash values", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Evelios/elm-markov", - "summary": "A markov model library for arbitrary data types", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "FMFI-UK-1-AIN-412/elm-formula", - "summary": "First-order logic formulas and parser", - "license": "MIT", - "version": "5.0.1" - }, - { - "name": "FabienHenon/app-object", - "summary": "Add model and cmd scoped to your entire application", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "FabienHenon/elm-ckeditor5", - "summary": "ckeditor 5 for elm", - "license": "MIT", - "version": "1.4.0" - }, - { - "name": "FabienHenon/elm-infinite-list-view", - "summary": "Displays a virtual infinite list, only showing visible items", - "license": "BSD-3-Clause", - "version": "3.2.0" - }, - { - "name": "FabienHenon/elm-infinite-scroll", - "summary": "Infinite scroll API", - "license": "BSD-3-Clause", - "version": "3.0.3" - }, - { - "name": "FabienHenon/elm-iso8601-date-strings", - "summary": "Convert ISO8601 date strings to and from Posix times", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "FabienHenon/elm-placeholder-loading", - "summary": "Easily create placeholder loadings like Facebook's cards loading", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "FabienHenon/env", - "summary": "Parse envs", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "FabienHenon/jsonapi", - "summary": "JsonAPI decoder and encoder functions", - "license": "BSD-3-Clause", - "version": "2.3.1" - }, - { - "name": "FabienHenon/jsonapi-http", - "summary": "Make HTTP requests with jsonapi decoding/encoding in Elm", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "FabienHenon/jsonapi-http-retry", - "summary": "Retry failed jsonapi requests with policies", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "FabienHenon/remote-resource", - "summary": "Handle foreground and background resources", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "FabienHenon/test-attribute", - "summary": "Add test attributes to your elements for end-to-end tests", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "FordLabs/elm-star-rating", - "summary": "Simple 5 star rating component", - "license": "Apache-2.0", - "version": "2.0.1" - }, - { - "name": "FranklinChen/elm-tau", - "summary": "The mathematical constant.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Fresheyeball/deburr", - "summary": "exposes a function to deburr strings", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "Fresheyeball/elm-return", - "summary": "Return as a Writer Monad", - "license": "BSD-3-Clause", - "version": "7.1.0" - }, - { - "name": "FuJa0815/elm-ui", - "summary": "Layout and style that's easy to refactor, all without thinking about CSS.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Garados007/elm-svg-parser", - "summary": "parse String to SVG", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Gizra/elm-all-set", - "summary": "A set of unique values. The values can be any type (not just comparables).", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "Gizra/elm-attribute-builder", - "summary": "Build up lists of HTML attributes in a modular manner", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "Gizra/elm-compat-019", - "summary": "Compatibility layer for use with Elm 0.19", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "Gizra/elm-debouncer", - "summary": "The most comprehensive debouncer for Elm", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "Gizra/elm-editable-webdata", - "summary": "An EditableWebData represents an Editable value, along with WebData.", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "Gizra/elm-fetch", - "summary": "Some conveniences for implementing the `update` function along with `fetch`", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "Gizra/elm-keyboard-event", - "summary": "Decoders for keyboard events", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "Gizra/elm-radix-tree", - "summary": "Add elements to a Radix tree.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "Gizra/elm-storage-key", - "summary": "A StorageKey represents a value that is either New or Existing.", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "GlobalWebIndex/class-namespaces", - "summary": "Elm module for building HTML classes based on weak-css rules", - "license": "BSD-3-Clause", - "version": "3.1.0" - }, - { - "name": "GlobalWebIndex/cmd-extra", - "summary": "Extra functions for working with Cmds", - "license": "BSD-3-Clause", - "version": "1.4.0" - }, - { - "name": "GlobalWebIndex/elm-plural-rules", - "summary": "An abstraction for working with plural rules", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "GlobalWebIndex/quantify", - "summary": "Quantify List, Set, Dict or a single value according to a predicate", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "GoldentTuft/elm-japanese-typing", - "summary": "Japanese Typing Library for Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "HAN-ASD-DT/priority-queue", - "summary": "a priority queue for Elm.", - "license": "MIT", - "version": "2.1.1" - }, - { - "name": "HAN-ASD-DT/rsa", - "summary": "A toy implementation of the RSA crypto-system.", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "Heimdell/elm-optics", - "summary": "Optics for Elm with single composition operator", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "Herteby/enum", - "summary": "Reduce boilerplate needed for dealing with Enums.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "Herteby/simplex-noise", - "summary": "Generate simplex noise (an improvement of Perlin noise)", - "license": "MIT", - "version": "1.2.2" - }, - { - "name": "Herteby/url-builder-plus", - "summary": "Replacement for the standard Url.Builder, with more convenience functions", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "Holmusk/elmoji", - "summary": "A tabbed general-purpose emoji picker", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "Holmusk/swagger-decoder", - "summary": "Type definiitions and decoders for working with swagger.json", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "IzumiSy/elm-consistent-hashing", - "summary": "A module for consistent hashing", - "license": "MIT", - "version": "4.0.1" - }, - { - "name": "IzumiSy/elm-firestore", - "summary": "A library for integrating your app with Firestore in Elm", - "license": "MIT", - "version": "12.0.0" - }, - { - "name": "IzumiSy/elm-multi-waitable", - "summary": "A small package like a traffic light", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "IzumiSy/elm-typed", - "summary": "Type-safe way aliasing your primitive types easily", - "license": "MIT", - "version": "4.1.0" - }, - { - "name": "JeremyBellows/elm-bootstrapify", - "summary": "A collection of functions to use the bootstrap theme when designing html", - "license": "BSD-3-Clause", - "version": "9.0.1" - }, - { - "name": "JohnBugner/elm-bag", - "summary": "A bag, also known as a multiset.", - "license": "BSD-3-Clause", - "version": "3.1.0" - }, - { - "name": "JohnBugner/elm-keyboard", - "summary": "Get which key was pressed, independent of keyboard layout.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "JohnBugner/elm-loop", - "summary": "Repeatedly apply a function to a value.", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "JohnBugner/elm-matrix", - "summary": "A matrix.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "JonRowe/elm-jwt", - "summary": "Supports decoding Jwt tokens", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "JoshuaHall/elm-2d-array", - "summary": "2D Arrays implemented in Elm", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "JoshuaHall/elm-fraction", - "summary": "This library provides a safe and simple API to deal with fractions.", - "license": "MIT", - "version": "2.2.0" - }, - { - "name": "JustinLove/elm-twitch-api", - "summary": "Decoders and a few other helpers for using Twitch.tv APIs", - "license": "BSD-3-Clause", - "version": "7.0.0" - }, - { - "name": "K-Adam/elm-dom", - "summary": "DOM traversal for Elm event-handlers and ports", - "license": "Apache-2.0", - "version": "1.0.0" - }, - { - "name": "Kinto/elm-kinto", - "summary": "A client to help making requests to a Kinto storage server", - "license": "MPL-2.0", - "version": "8.0.0" - }, - { - "name": "Kraxorax/elm-matrix-a", - "summary": "Exposes 'Matrix a' creation, traversal, and some manipulation functions.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "Kurren123/k-dropdown-container", - "summary": "A container for dropdowns", - "license": "GPL-3.0", - "version": "1.0.0" - }, - { - "name": "LesleyLai/elm-grid", - "summary": "2-dimensional Grid in elm", - "license": "Apache-2.0", - "version": "1.0.1" - }, - { - "name": "Libbum/elm-partition", - "summary": "Partition problem (number partitioning) solvers", - "license": "BSD-3-Clause", - "version": "2.3.0" - }, - { - "name": "Libbum/elm-redblacktrees", - "summary": "Red Black self-balancing binary search trees", - "license": "BSD-3-Clause", - "version": "2.0.4" - }, - { - "name": "MacCASOutreach/graphicsvg", - "summary": "Beautiful scalable vector graphics (SVG) in Elm.", - "license": "BSD-3-Clause", - "version": "7.2.0" - }, - { - "name": "MackeyRMS/elm-ui-table", - "summary": "Data grid built with elm-ui", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "MackeyRMS/json-decode-attempt", - "summary": "Decode JSON with fallbacks AND errors", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "MackeyRMS/string-util", - "summary": "String utils", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "MackeyRMS/time-util", - "summary": "Utilities we use to format times / dates wraps Time.Extra and other funzies.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "MadonnaMat/elm-select-two", - "summary": "A mimic of Select2 in Elm", - "license": "MIT", - "version": "6.0.1" - }, - { - "name": "MartinSStewart/elm-audio", - "summary": "Play sound effects and music in a declarative way", - "license": "BSD-3-Clause", - "version": "4.0.2" - }, - { - "name": "MartinSStewart/elm-bayer-matrix", - "summary": "Generate Bayer matrices. Useful for dithering patterns.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "MartinSStewart/elm-box-packing", - "summary": "Pack rectangles closely together. Useful for texture atlases and sprite sheets.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "MartinSStewart/elm-codec-bytes", - "summary": "Build binary encoders and decoders with minimal boilerplate", - "license": "MIT", - "version": "1.1.2" - }, - { - "name": "MartinSStewart/elm-geometry-serialize", - "summary": "elm-serialize codecs for ianmackenzie/elm-geometry", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "MartinSStewart/elm-nonempty-string", - "summary": "Create strings that contain at least a single character.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "MartinSStewart/elm-serialize", - "summary": "Write codecs for encoding and decoding Elm data.", - "license": "MIT", - "version": "1.3.0" - }, - { - "name": "MartinSStewart/send-grid", - "summary": "Send emails with the Send Grid API. Only useful for server-side Elm.", - "license": "MIT", - "version": "4.1.1" - }, - { - "name": "Massolari/elm-mask", - "summary": "A simple way to apply a mask on your string", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "MattCheely/boon", - "summary": "Parse and evaluate boolean expressions from strings like 'one AND two OR three'", - "license": "Apache-2.0", - "version": "1.1.0" - }, - { - "name": "MattCheely/tryframe-coordinator", - "summary": "Tools for coordinating embedded apps via iframes.", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "MaybeJustJames/yaml", - "summary": "Work with YAML in Elm", - "license": "BSD-3-Clause", - "version": "2.1.2" - }, - { - "name": "MichaelCombs28/elm-base85", - "summary": "This library provides you with encoding / decoding of Base85", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "MichaelCombs28/elm-css-bulma", - "summary": "Bulma HTML/CSS Framework for Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "Microsoft/elm-json-tree-view", - "summary": "Shows JSON data as an expandable HTML tree", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "Morgan-Stanley/morphir-elm", - "summary": "Morphir Elm bindings", - "license": "Apache-2.0", - "version": "3.0.0" - }, - { - "name": "NeoVier/elm-mask", - "summary": "Mask `String`s to be used in input fields", - "license": "BSD-3-Clause", - "version": "2.0.4" - }, - { - "name": "NeoVier/elm-review-no-function-outside-of-modules", - "summary": "Provides elm-review rules to forbid using functions outside of certain modules", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "NoRedInk/datetimepicker-legacy", - "summary": "Reusable date and time picker view", - "license": "Apache-2.0", - "version": "3.0.0" - }, - { - "name": "NoRedInk/elm-compare", - "summary": "Tools for composing comparison functions", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "NoRedInk/elm-debug-controls-without-datepicker", - "summary": "(you probably want avh4/elm-debug-controls instead)", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "NoRedInk/elm-formatted-text-19", - "summary": "A type for representing formatted text", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "NoRedInk/elm-formatted-text-test-helpers", - "summary": "A type for representing formatted text", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "NoRedInk/elm-json-decode-pipeline", - "summary": "Use pipelines to build JSON Decoders.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "NoRedInk/elm-plot-19", - "summary": "SVG charts in Elm.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "NoRedInk/elm-plot-rouge", - "summary": "SVG charts components in Elm.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "NoRedInk/elm-rails", - "summary": "Convenience functions for using Elm with Rails.", - "license": "BSD-3-Clause", - "version": "9.0.1" - }, - { - "name": "NoRedInk/elm-random-general", - "summary": "A general random number generator, allows to experiment with different RNGs", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "NoRedInk/elm-random-pcg-extended", - "summary": "PCG-Extended, more bits of randomness for you!", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "NoRedInk/elm-rfc5988-parser", - "summary": "Fork of: A (woefully-incomplete) parser for RFC5988 Links", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "NoRedInk/elm-rollbar", - "summary": "Send reports to Rollbar", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "NoRedInk/elm-saved", - "summary": "A type keeping track of changes to a value since it was last saved.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "NoRedInk/elm-simple-fuzzy", - "summary": "Fuzzy matching and filtering for strings.", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "NoRedInk/elm-sortable-table", - "summary": "Sortable tables for whatever data you want to display.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "NoRedInk/elm-string-conversions", - "summary": "Helpers to convert common types into a `String`.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "NoRedInk/elm-sweet-poll", - "summary": "HTTP polling with backoff when the server response doesn't change", - "license": "BSD-3-Clause", - "version": "6.0.0" - }, - { - "name": "NoRedInk/elm-uuid", - "summary": "V4 UUIDs - 128 bit pseudo-random identifiers (Fork with more randomness)", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "NoRedInk/http-upgrade-shim", - "summary": "A package to help people upgrade from Http 1.0 to 2.0", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "NoRedInk/list-selection", - "summary": "A list that might have at most one selected item", - "license": "BSD-3-Clause", - "version": "1.3.1" - }, - { - "name": "NoRedInk/noredink-ui", - "summary": "UI Widgets we use at NRI", - "license": "BSD-3-Clause", - "version": "18.0.1" - }, - { - "name": "NoRedInk/style-elements", - "summary": "Legacy fork of mdgriffith/style-elements to fix a bug in an indirect dependency", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "Orange-OpenSource/elm-advanced-grid", - "summary": "A dynamically configurable grid", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "Orasund/elm-action", - "summary": "DEPRECATED: Use elm-spa instead", - "license": "BSD-3-Clause", - "version": "2.1.3" - }, - { - "name": "Orasund/elm-cellautomata", - "summary": "A packages that lets you write your own celluar automatas.", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "Orasund/elm-game-essentials", - "summary": "A collection of essential types for creating games.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "Orasund/elm-handlebars", - "summary": "Compile Handlebars Templates in Elm", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "Orasund/elm-jsonstore", - "summary": "DEPRECATED: Use IzumiSy/elm-firestore instead", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "Orasund/elm-layout", - "summary": "Layout HTML using flexbox", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Orasund/elm-static-array", - "summary": "Arrays with fixed length using phantom types.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "Orasund/elm-ui-framework", - "summary": "A CSS framework to go hand in hand with elm-ui.", - "license": "BSD-3-Clause", - "version": "1.6.1" - }, - { - "name": "Orasund/elm-ui-widgets", - "summary": "Collection of reusable views for elm-ui.", - "license": "BSD-3-Clause", - "version": "3.4.0" - }, - { - "name": "Orasund/leaf-lang", - "summary": "A multi paradigm scripting language for Elm", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "Orasund/pixelengine", - "summary": "Graphic engine for turn based pixel games.", - "license": "BSD-3-Clause", - "version": "6.2.0" - }, - { - "name": "PaackEng/elm-alert-beta", - "summary": "Bootstrap alert", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "PaackEng/elm-datetime-picker", - "summary": "a datetime picker component", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "PaackEng/elm-google-maps", - "summary": "Type safe google maps implementation", - "license": "BSD-3-Clause", - "version": "2.5.0" - }, - { - "name": "PaackEng/elm-svg-string", - "summary": "Serializes a SVG node into a string", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "PaackEng/elm-ui-dialog", - "summary": "Encode and decode JSON values", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "PaackEng/elm-ui-dropdown", - "summary": "An Elm UI dropdown component", - "license": "MIT", - "version": "3.3.0" - }, - { - "name": "PaackEng/paack-remotedata", - "summary": "Paack's approach to Kris Jenkins' RemoteData.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "PaackEng/paack-ui", - "summary": "Paack's Design System applied over Elm UI", - "license": "BSD-3-Clause", - "version": "7.23.0" - }, - { - "name": "PanagiotisGeorgiadis/elm-datepicker", - "summary": "A date time picker built on top of elm-datetime package.", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "PanagiotisGeorgiadis/elm-datetime", - "summary": "A human readable representation of date and time built on top of elm/time.", - "license": "BSD-3-Clause", - "version": "1.3.0" - }, - { - "name": "PedroHLC/elm-uuid-dict", - "summary": " Dict and Set for TSFoster/elm-uuid.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "PerformanceIMMO/elm-utils", - "summary": "All common types and functions used by perfimmo dev", - "license": "GPL-3.0", - "version": "2.3.0" - }, - { - "name": "Punie/elm-id", - "summary": "Safe IDs with phantom types", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "Punie/elm-matrix", - "summary": "Simple linear algebra library using flat-arrays", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "Punie/elm-parser-extras", - "summary": "Convenience functions for building parser with elm/parser", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "Punie/elm-reader", - "summary": "Read configuration from an implicit environment", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "QiTASC/hatchinq", - "summary": "An experimental library for UI elements. Not for production use.", - "license": "Apache-2.0", - "version": "29.0.0" - }, - { - "name": "RalfNorthman/elm-lttb", - "summary": "Down-sampling data with the Largest-Triangle-Three-Buckets algorithm.", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "RalfNorthman/elm-zoom-plot", - "summary": "Plotting line charts with zoom and nice time axes.", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "RomanErnst/erl", - "summary": "Parse and construct URLs", - "license": "MIT", - "version": "2.1.1" - }, - { - "name": "STTR13/ziplist", - "summary": "List with a selected element that makes impossible state impossible.", - "license": "BSD-3-Clause", - "version": "1.4.0" - }, - { - "name": "SiriusStarr/elm-password-strength", - "summary": "Provides libraries for calculating password security and providing feedback.", - "license": "GPL-3.0", - "version": "1.0.2" - }, - { - "name": "SiriusStarr/elm-review-no-single-pattern-case", - "summary": "Provides elm-review rules to disallow single-pattern case expressions.", - "license": "GPL-3.0", - "version": "2.0.1" - }, - { - "name": "SiriusStarr/elm-review-no-unsorted", - "summary": "elm-review rules to ensure sortable code is sorted in the \"proper\" order.", - "license": "GPL-3.0", - "version": "1.1.2" - }, - { - "name": "SiriusStarr/elm-review-pipeline-styles", - "summary": "Customizable elm-review rules for allowable pipeline styles.", - "license": "GPL-3.0", - "version": "1.3.3" - }, - { - "name": "SiriusStarr/elm-spaced-repetition", - "summary": "Create spaced repetition software using several different popular algorithms.", - "license": "GPL-3.0", - "version": "2.0.1" - }, - { - "name": "SiriusStarr/elm-splat", - "summary": "Provides functions for unpacking lists items as arguments.", - "license": "GPL-3.0", - "version": "1.0.0" - }, - { - "name": "Spaxe/elm-lsystem", - "summary": "Implementation of L-Systems in Elm", - "license": "MIT", - "version": "4.0.1" - }, - { - "name": "Spaxe/svg-pathd", - "summary": "Minimal, Complete SVG Path constructor for its `d` attribute", - "license": "MIT", - "version": "3.0.2" - }, - { - "name": "StoatPower/elm-wkt", - "summary": "WKT <-> GeoJSON parser/unparser", - "license": "BSD-3-Clause", - "version": "1.0.5" - }, - { - "name": "SupercedeTech/elm-validation", - "summary": "Package for data validation.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "SupercedeTech/number-to-words", - "summary": "Package contains some util methods for converting numbers into words.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "SwiftsNamesake/proper-keyboard", - "summary": "Introduces type-safe keys", - "license": "MIT", - "version": "4.0.0" - }, - { - "name": "TSFoster/elm-bytes-extra", - "summary": "Helpers for working with elm/bytes", - "license": "BSD-3-Clause", - "version": "1.3.0" - }, - { - "name": "TSFoster/elm-compare", - "summary": "Helpers for comparing non-comparable values", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "TSFoster/elm-envfile", - "summary": "Encode and parse envfiles", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "TSFoster/elm-heap", - "summary": "Heap structure for elmlang", - "license": "MIT", - "version": "2.1.2" - }, - { - "name": "TSFoster/elm-md5", - "summary": "Computes MD5 hash of non-string data", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "TSFoster/elm-sha1", - "summary": "Generate SHA1 digests of strings or arbitrary data", - "license": "BSD-3-Clause", - "version": "2.1.1" - }, - { - "name": "TSFoster/elm-tuple-extra", - "summary": "Convenience functions for working with tuples", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "TSFoster/elm-uuid", - "summary": "Create and manage UUIDs", - "license": "BSD-3-Clause", - "version": "4.2.0" - }, - { - "name": "TheSacredLipton/elm-ui-hexcolor", - "summary": "Add hex color declarations to elm-ui.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "ThinkAlexandria/css-in-elm", - "summary": "Write CSS stylesheets in Elm", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "ThinkAlexandria/elm-drag-locations", - "summary": "Drag library designed for many different interaction locations", - "license": "BSD-3-Clause", - "version": "3.1.0" - }, - { - "name": "ThinkAlexandria/elm-html-in-elm", - "summary": "A pure Elm representation of Elm Html", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "ThinkAlexandria/elm-pretty-print-json", - "summary": "Pretty print JSON with nesting indents into a String", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "ThinkAlexandria/elm-primer-tooltips", - "summary": "GitHub's primer-tooltip css selectors exposed as an Elm union type", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "ThinkAlexandria/window-manager", - "summary": "Window toolkit providing resizeable, draggable UI containers.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "UbiqueLambda/elm-with-ui", - "summary": "Cross-platform with-pattern UI toolkit for Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "UbiqueLambda/elm-with-ui-backend", - "summary": "Backend for UbiqueLambda/elm-with-ui", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "UbiqueLambda/elm-with-ui-html", - "summary": "Elm's HTML renderer for UbiqueLambda/elm-with-ui", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "VerbalExpressions/elm-verbal-expressions", - "summary": "Elm port of VerbalExpressions", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "Voronchuk/hexagons", - "summary": "Hexagonal grids and tools to build hex maps and layouts", - "license": "MIT", - "version": "3.1.0" - }, - { - "name": "Warry/elm-css-sortable-table", - "summary": "Sortable tables for data of any shape.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "WhileTruu/elm-blurhash", - "summary": "Blurhash decoder and encoder (https://github.com/woltapp/blurhash).", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "WhileTruu/elm-one-to-one", - "summary": "A data structure for one-to-one mapping between values.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "WhileTruu/elm-smooth-scroll", - "summary": "Scrolling to position that always takes the same amount of time.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "Yagger/elm-odata4", - "summary": "Build Open Data Protocol (OData v4) queries", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "Yagger/elm-review-no-url-string-concatenation", - "summary": "An elm-review rule that ensures URLs are not built using string concatenation", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "YuyaAizawa/list-wrapper", - "summary": "Data structure implemented by simple list", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "YuyaAizawa/peg", - "summary": "Parser combinator implementation for Persing Expression Grammer (PEG)", - "license": "BSD-3-Clause", - "version": "2.2.0" - }, - { - "name": "Zinggi/elm-2d-game", - "summary": "A 2D rendering engine based on WebGL", - "license": "MIT", - "version": "4.1.0" - }, - { - "name": "Zinggi/elm-game-resources", - "summary": "Manages game resources (currently only textures)", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "Zinggi/elm-glsl-generator", - "summary": "Generate GLSL shader code", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "abinayasudhir/elm-select", - "summary": "A selection input with auto-completion", - "license": "MIT", - "version": "1.3.0" - }, - { - "name": "abinayasudhir/elm-treeview", - "summary": "ELM tree view component", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "abinayasudhir/html-parser", - "summary": "Parse HTML 5 in Elm", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "abinayasudhir/outmessage", - "summary": "Streamlining child-parent communication using The Elm Architecture with OutMsg", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "abradley2/elm-calendar", - "summary": "Elm version of the unix 'cal' command. Creates a 2d list representing a month", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "abradley2/elm-datepicker", - "summary": "A well-styled, configurable, and feature rich date picker", - "license": "MIT", - "version": "4.1.0" - }, - { - "name": "abradley2/form-controls", - "summary": "Modules for creating user friendly form controls in elm", - "license": "MIT", - "version": "2.0.2" - }, - { - "name": "abradley2/form-elements", - "summary": "Modules for creating user friendly form controls in elm", - "license": "MIT", - "version": "4.1.2" - }, - { - "name": "abradley2/form-fields", - "summary": "Modules for creating user friendly form controls in elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "achutkiran/elm-material-color", - "summary": "Material Colors", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "achutkiran/material-components-elm", - "summary": "Elm Bindings for MWC and Polymer Elements", - "license": "BSD-3-Clause", - "version": "1.2.1" - }, - { - "name": "adamstuller/elm-spa-composition", - "summary": "School project for master's thesis enabling page composition in Elm SPAs.", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "adauguet/elm-pbkdf2", - "summary": "A PBKDF2 implementation in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "adauguet/elm-spanned-string", - "summary": "A tiny library to span substrings.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "adius/vectual", - "summary": "Open source charting library", - "license": "AGPL-3.0", - "version": "4.0.0" - }, - { - "name": "afidegnum/elm-bulmanizer", - "summary": "Bulma HTML/CSS Framework for Elm with customizations", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "afidegnum/elm-tailwind", - "summary": "Bulma HTML/CSS Framework for Elm 0.19", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "aforemny/material-components-web-elm", - "summary": "Material Components for Elm", - "license": "MIT", - "version": "8.0.1" - }, - { - "name": "agu-z/elm-zip", - "summary": "Read and write ZIP archives using pure Elm.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "agustinrhcp/elm-datepicker", - "summary": "A reusable date picker component", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "agustinrhcp/elm-mask", - "summary": "Simple module to mask / unmask string inputs", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "ahstro/elm-bulma-classes", - "summary": "Bulma CSS classes", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "ahstro/elm-luhn", - "summary": "Luhn Algorithm validator", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "akheron/elm-easter", - "summary": "Compute the date of Easter for any given year", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "akoppela/elm-logo", - "summary": "SVG Elm Logo", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "albertdahlin/elm-posix", - "summary": "Write posix programs using IO monad", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "alex-tan/elm-dialog", - "summary": "A modal dialog widget for Elm. Forked from krisajenkins.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "alex-tan/elm-tree-diagram", - "summary": "Library for drawing diagrams of trees. Fork of brenden/elm-tree-diagram.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "alex-tan/loadable", - "summary": "Separate the loading of your application from the logic.", - "license": "MIT", - "version": "3.1.2" - }, - { - "name": "alex-tan/postgrest-client", - "summary": "A postgrest client written in elm", - "license": "MIT", - "version": "2.1.1" - }, - { - "name": "alex-tan/postgrest-queries", - "summary": "Library to construct postgrest queries", - "license": "MIT", - "version": "7.2.0" - }, - { - "name": "alex-tan/task-extra", - "summary": "Expand usages of Task", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "alexanderkiel/elm-mdc-alpha", - "summary": "Material Components for the Web for Elm", - "license": "BSD-3-Clause", - "version": "1.4.0" - }, - { - "name": "alexanderkiel/list-selection", - "summary": "A list that might have at most one selected item", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "alexandrepiveteau/elm-algebraic-graph", - "summary": "Algebraic graphs in Elm.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "alexandrepiveteau/elm-gap-buffer", - "summary": "An array-based gap buffer implementation", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "alexandrepiveteau/elm-ordt", - "summary": "Operational Replicated Data Types for crafting replicated data types", - "license": "MIT", - "version": "2.1.2" - }, - { - "name": "alexkorban/elm-review-json-to-elm", - "summary": "An elm-review rule to generate JSON decoders and encoders from a JSON string", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "alexkorban/json-to-elm", - "summary": "A package to help generate Elm JSON decoders and encoders from a JSON sample", - "license": "AGPL-3.0", - "version": "1.1.0" - }, - { - "name": "alexkorban/uicards", - "summary": "Speed up UI development and testing with live UI cards", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "algodynamics-iiith/core", - "summary": "Core library for algodynamics virtual interactive labs", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "algodynamics-iiith/elm-dsview", - "summary": "Visualization of array in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "allenap/elm-json-decode-broken", - "summary": "Decode broken JSON", - "license": "MIT", - "version": "3.0.2" - }, - { - "name": "allo-media/canopy", - "summary": "A Generic Tree API.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "allo-media/elm-daterange-picker", - "summary": "A date range picker.", - "license": "MIT", - "version": "4.0.2" - }, - { - "name": "allo-media/elm-es-simple-query-string", - "summary": "Parse and serialize ElasticSearch search strings.", - "license": "MIT", - "version": "4.0.0" - }, - { - "name": "allo-media/fable", - "summary": "Want to be a real wizard, with fable you can tale some stories from you views!", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "alma/elm-sms-length", - "summary": "A lib that from a string tells you how many SMS would be needed.", - "license": "MPL-2.0", - "version": "2.0.1" - }, - { - "name": "altayaydemir/style-elements", - "summary": "Fork of mdgriffith/style-elements", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "altjsus/elm-airtable", - "summary": "Airtable API for ELM", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "altjsus/elmtable", - "summary": "Airtable API for Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "anatol-1988/measurement", - "summary": "Working with Google Analytics Measurement Protocol", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "andre-dietrich/elm-conditional", - "summary": "Piping with conditions, but without if-then-else statements", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "andre-dietrich/elm-generic", - "summary": "Simplify the decoding and encoding of json, xml, yaml by one simple generic API", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "andre-dietrich/elm-mapbox", - "summary": "Fork form gampleman/elm-mapbox (4.1.0) ... An advanced mapping library", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "andre-dietrich/elm-random-regex", - "summary": "Generate random strings from regular expressions.", - "license": "MIT", - "version": "1.0.9" - }, - { - "name": "andre-dietrich/elm-svgbob", - "summary": "Fork of the great ASCII to SVG converter SvgBob by Ivan Ceras.", - "license": "Apache-2.0", - "version": "4.0.7" - }, - { - "name": "andre-dietrich/elm-url-extension", - "summary": "A wrapper for elm/url that allows to use other protocols than http and https.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "andre-dietrich/parser-combinators", - "summary": "Port of the community parser combinator to elm 0.19", - "license": "BSD-3-Clause", - "version": "4.1.0" - }, - { - "name": "andreasewering/elm-placeholder", - "summary": "Typesafe string interpolation via placeholder parsing", - "license": "MIT", - "version": "2.2.0" - }, - { - "name": "andreasewering/intl-proxy", - "summary": "Provides access to the Browsers Intl Api via a JS Proxy Object", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "andrewMacmurray/elm-delay", - "summary": "utilities to trigger updates after a delay", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "andrewMacmurray/elm-simple-animation", - "summary": "stateless animation utils", - "license": "MIT", - "version": "2.3.0" - }, - { - "name": "andrewMacmurray/elm-url-query-pipeline", - "summary": "Parse url queries pipeline style", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "andys8/elm-geohash", - "summary": "Geohash for Elm", - "license": "MIT", - "version": "1.1.2" - }, - { - "name": "anhmiuhv/pannablevideo", - "summary": "a video element that is pannable and zoomable", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "annaghi/dnd-list", - "summary": "Drag and Drop for sortable lists in Elm web apps with mouse support", - "license": "BSD-3-Clause", - "version": "6.0.1" - }, - { - "name": "arnau/elm-objecthash", - "summary": "Objecthash in Elm", - "license": "BSD-3-Clause", - "version": "2.2.1" - }, - { - "name": "arowM/elm-classname", - "summary": "A brief module for custom `class` attributes.", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "arowM/elm-css-modules-helper", - "summary": "Provide helper functions to handle CSS modules in Elm without hacks", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "arowM/elm-data-url", - "summary": "A module to handle data URLs (IETF RFC 2397) in type safe manner.", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "arowM/elm-form-decoder", - "summary": "This library provides a scalable way to decode user inputs into neat structure.", - "license": "MIT", - "version": "1.4.0" - }, - { - "name": "arowM/elm-form-validator", - "summary": "This module provides a scalable way to validate a form.", - "license": "MIT", - "version": "2.1.2" - }, - { - "name": "arowM/elm-html-extra-internal", - "summary": "This is a dummy package only for `arowM/html-extra`", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "arowM/elm-html-internal", - "summary": "This is a dummy packageonly for `arowM/html`", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "arowM/elm-html-with-context", - "summary": "Cleaner, hack-free way to pass contexts to Elm view functions", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "arowM/elm-init-builder", - "summary": " ", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "arowM/elm-mixin", - "summary": "Developer-friendly alternative to Html.Attribute", - "license": "MIT", - "version": "5.2.0" - }, - { - "name": "arowM/elm-neat-layout", - "summary": "Elm layout framework that helps to keep paddings neat.", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "arowM/elm-parser-test", - "summary": "Helper functions to develop/test your own parser using elm/parser", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "arowM/elm-reference", - "summary": "An immutable approach imitating references of mutable languages.", - "license": "MIT", - "version": "1.0.7" - }, - { - "name": "arowM/elm-sequential-test", - "summary": "Sequential testing.", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "arowM/elm-thread", - "summary": "Translate chronological specifications verbatim into applications.", - "license": "MIT", - "version": "3.0.1" - }, - { - "name": "arowM/elm-update-builder", - "summary": " ", - "license": "MIT", - "version": "1.3.1" - }, - { - "name": "arowM/elm-zoned-time", - "summary": "A brief library for zoned time.", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "arowM/html", - "summary": "An elm/html alternative which enables you to batch attributes.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "arowM/html-extra", - "summary": "An elm-community/html-extra alternative which can be used with arowM/html", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "arsduo/elm-dom-drag-drop", - "summary": "Easy HTML5 drag-and-drop for Elm and @danielnary's visotype/elm-dom framework", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "arsduo/elm-ui-drag-drop", - "summary": "Drag and Drop utilities for the elm-dom framework.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "arturopala/elm-monocle", - "summary": "Library providing functional tools to manipulate complex records", - "license": "MIT", - "version": "2.2.0" - }, - { - "name": "astynax/tea-combine", - "summary": "Combinator library for TEA-powered applications", - "license": "MIT", - "version": "3.1.0" - }, - { - "name": "athanclark/elm-debouncer", - "summary": "simple method for time-throttling action / message propogation", - "license": "BSD-3-Clause", - "version": "4.0.1" - }, - { - "name": "atzzCokeK/elm-inputtext-with-count", - "summary": "Make inputText with count and set the maximum characters(not words).", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "austinshenk/elm-w3", - "summary": "Type safe HTML/ARIA that follows W3 guidelines", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "avh4/burndown-charts", - "summary": "A library for plotting burndown charts", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "avh4/elm-beautiful-example", - "summary": "Create beautiful examples to show off your Elm packages and projects", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "avh4/elm-color", - "summary": "Standard representation of colors, encouraging sharing between packages", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "avh4/elm-debug-controls", - "summary": "Easily create interactive UIs for complex data structures", - "license": "BSD-3-Clause", - "version": "2.2.2" - }, - { - "name": "avh4/elm-desktop-app", - "summary": "the simplest way to write desktop applications in Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "avh4/elm-dropbox", - "summary": "Unofficial Dropbox API for Elm", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "avh4/elm-fifo", - "summary": "First in, first out (FIFO) queue", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "avh4/elm-github-v3", - "summary": "Unofficial GitHub v3 API for Elm", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "avh4/elm-program-test", - "summary": "Test Elm programs", - "license": "MIT", - "version": "3.6.3" - }, - { - "name": "avh4-experimental/elm-transducers", - "summary": "Composable transformation of sequences using clojure-inspired transducers", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "axelerator/wave-function-collapse-2d", - "summary": "Random maps from custom tiles using the wave function collapse algorithm", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "b0oh/elm-do", - "summary": "Inspired by do-notation from Haskell.", - "license": "ISC", - "version": "1.0.0" - }, - { - "name": "bChiquet/elm-accessors", - "summary": "Accessors, a library implementing lenses for Elm.", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "bChiquet/elm-test-deps", - "summary": "Show a pattern to expose package modules for test only", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "babsballetschool/image-directory", - "summary": "Elm project showing an image directory structure", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "bartavelle/json-helpers", - "summary": "Helpers for Json encoding and decoding of sum types", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "basti1302/elm-human-readable-filesize", - "summary": "Converts file size in bytes to a human readable string", - "license": "BSD-3-Clause", - "version": "1.2.0" - }, - { - "name": "basti1302/elm-non-empty-array", - "summary": "An array that has at least one element.", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "bburdette/cellme", - "summary": "schelme cells", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bburdette/pdf-element", - "summary": "PDF custom element for elm", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "bburdette/schelme", - "summary": "a Scheme inspired scripting language for Elm.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "bburdette/stl", - "summary": "Parse Binary STL files", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "bburdette/toop", - "summary": "tuple-like datastructure allowing more than 3 elements.", - "license": "MIT", - "version": "1.2.0" - }, - { - "name": "bburdette/typed-collections", - "summary": "typed layers over standard elm collections", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "bburdette/websocket", - "summary": "open, close websockets, send and receive messages.", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "bburdette/windowkeys", - "summary": "subscribe to window key presses; preventDefault if desired.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "bellroy/elm-actor-framework", - "summary": "Implements an Actor Model Framework", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-actor-framework-sandbox", - "summary": "Run your components inside a sandbox environment", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-actor-framework-template", - "summary": "Adds an easy way to handle templates using the elm-actor-framework template", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-actor-framework-template-html", - "summary": "Adds an easy way to handle HTML templates using the elm-actor-framework", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-email", - "summary": "Parse email addresses safely", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-embed-youtube", - "summary": "A wrapper around the Youtube iFrame Api", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-eventstream", - "summary": "Keeps track and listens to your events of any form", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-imgix", - "summary": "A wrapper around ImgIX image API for Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-infinite-gallery", - "summary": "A simple gallery that supports infinite scrolling", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-parse-dont-validate", - "summary": "Parsing (Validation) done right", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "bellroy/elm-storage", - "summary": "A key-value container similar to Dict but stores different types of values.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bemyak/elm-slider", - "summary": "Elm slider implementation", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "benansell/lobo-elm-test-extra", - "summary": "elm-test extensions for lobo", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "benjajaja/radar-chart", - "summary": "An SVG radar chart", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "benthepoet/elm-purecss", - "summary": "A set of helpers for Pure CSS", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "bgrosse-midokura/composable-form", - "summary": "Build type-safe composable forms in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bigardone/elm-css-placeholders", - "summary": "A package to generate HTML placeholders using elm-css.", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "bigbinary/elm-form-field", - "summary": "Capture form data better", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "bigbinary/elm-reader", - "summary": "Reader type in Elm", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "billstclair/elm-chat", - "summary": "A simple chat component, easy to add to your user interface.", - "license": "MIT", - "version": "3.0.2" - }, - { - "name": "billstclair/elm-crypto-aes", - "summary": "elm-crypto-aes is a pure Elm implementation of the Advanced Encryption Standard", - "license": "MIT", - "version": "1.0.10" - }, - { - "name": "billstclair/elm-crypto-string", - "summary": "elm-crypto-string does block chaining for string encryption.", - "license": "MIT", - "version": "3.0.1" - }, - { - "name": "billstclair/elm-custom-element", - "summary": "A custom element library", - "license": "MIT", - "version": "1.4.0" - }, - { - "name": "billstclair/elm-dev-random", - "summary": "Cryptographically secure random-number generator.", - "license": "MIT", - "version": "3.1.1" - }, - { - "name": "billstclair/elm-dialog", - "summary": "A Dialog UI module based on Material Design Lite", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "billstclair/elm-geolocation", - "summary": "Geolocation, find your latitude and longitude.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "billstclair/elm-id-search", - "summary": "Search for substrings in user records", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "billstclair/elm-localstorage", - "summary": "elm-localstorage provides persistence via JavaScript's localStorage.", - "license": "MIT", - "version": "7.3.1" - }, - { - "name": "billstclair/elm-mastodon", - "summary": "Elm client for the Mastodon social network.", - "license": "MIT", - "version": "12.0.1" - }, - { - "name": "billstclair/elm-mastodon-websocket", - "summary": "Elm client for the websocket API of the Mastodon social network.", - "license": "MIT", - "version": "2.0.3" - }, - { - "name": "billstclair/elm-oauth-middleware", - "summary": "elm-oauth-middleware implements an OAuth authorization scheme.", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "billstclair/elm-popup-picker", - "summary": "A popup
to pick from a list of choices.", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "billstclair/elm-port-funnel", - "summary": "Using one port pair for ALL compatible port code.", - "license": "MIT", - "version": "1.2.0" - }, - { - "name": "billstclair/elm-s3", - "summary": "elm-s3 is a pure Elm client library for Amazon S3 and Digital Ocean Spaces.", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "billstclair/elm-sha256", - "summary": "SHA256 and SHA228 cryptographic hashes Elm.", - "license": "MIT", - "version": "1.0.9" - }, - { - "name": "billstclair/elm-sortable-table", - "summary": "Sortable tables for data of any shape.", - "license": "BSD-3-Clause", - "version": "1.2.1" - }, - { - "name": "billstclair/elm-svg-button", - "summary": "elm-svg-button eases creation of SVG buttons.", - "license": "MIT", - "version": "4.0.0" - }, - { - "name": "billstclair/elm-websocket-client", - "summary": "WebSockets for Elm 0.19, using ports.", - "license": "MIT", - "version": "4.1.0" - }, - { - "name": "billstclair/elm-websocket-framework", - "summary": "elm-websocket-framework eases the creation of server-based applications.", - "license": "MIT", - "version": "15.0.0" - }, - { - "name": "billstclair/elm-websocket-framework-server", - "summary": "This is the server side of billstclair/elm-websocket-framework", - "license": "MIT", - "version": "14.1.6" - }, - { - "name": "billstclair/elm-xml-eeue56", - "summary": "XML parser, encoder/decoder and queries in Elm", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "billstclair/elm-xml-extra", - "summary": "Extend billstclair/elm-xml-eeue56 to simplify building Decoders for XML input.", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "bitsoflogic/elm-radixint", - "summary": "Convert to and from base 10 and any base Int", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "bkuhlmann/form-validator", - "summary": "A customizable form validation component.", - "license": "Apache-2.0", - "version": "1.2.1" - }, - { - "name": "blissfully/elm-chartjs-webcomponent", - "summary": "Elm interface to include Chartjs in your UI via a web component.", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "bluedogtraining/bdt-elm", - "summary": "Elm modules commonly used at BDT", - "license": "BSD-3-Clause", - "version": "27.0.14" - }, - { - "name": "bobcats/countries", - "summary": "ISO3166 Data for Elm", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "boianr/multilingual", - "summary": "Display text in multiple languages", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "bonzaico/murmur3", - "summary": "An implementation of the Murmur3 hash function for Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "bowbahdoe/elm-history", - "summary": "A data structure for working with a non-empty progression of values", - "license": "Apache-2.0", - "version": "2.1.0" - }, - { - "name": "bowbahdoe/lime-reset", - "summary": "Consistent, cross-browser tags, powered by elm-css.", - "license": "Apache-2.0", - "version": "1.0.0" - }, - { - "name": "brainrape/elm-arc-diagram", - "summary": "An arc diagram for visualizing acyclic digraphs", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "brainrape/elm-ganja", - "summary": "Geometric Algebra and Clifford Algebra generated by ganja.js", - "license": "MIT", - "version": "1.1.1" - }, - { - "name": "brainrape/elm-mathml", - "summary": "MathML for Elm", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "brandly/elm-dot-lang", - "summary": "Parse DOT Language files", - "license": "BSD-3-Clause", - "version": "1.1.7" - }, - { - "name": "brasilikum/is-password-known", - "summary": "Check passwords agains the haveIBeenPawned public API", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "brian-watkins/elm-procedure", - "summary": "Orchestrate commands, subscriptions, and tasks", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "brian-watkins/elm-spec", - "summary": "Describe the behavior of Elm programs", - "license": "MIT", - "version": "3.3.2" - }, - { - "name": "brianvanburken/elm-list-date", - "summary": "Helpers for working with List's of Int's representing a date", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "brightdb/sequence", - "summary": "A CRDT for sequential data based on LSEQ", - "license": "BSD-3-Clause", - "version": "1.2.0" - }, - { - "name": "brilliantorg/backpacker-below", - "summary": "Unstable alpha version of a parser for the Camperdown markup language.", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "buildrtech/countries-elm", - "summary": "ISO3166 Data for Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "bundsol/boxed", - "summary": "An Elm library to encapsulate any primitive in a single type", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "burnable-tech/elm-ethereum", - "summary": "feed the tree some ether.", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "calions-app/app-object", - "summary": "Add model and cmd scoped to your entire application", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "calions-app/elm-placeholder-loading", - "summary": "Easily create placeholder loadings like Facebook's cards loading", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "calions-app/env", - "summary": "Parse envs", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "calions-app/jsonapi-http", - "summary": "Make HTTP requests with jsonapi decoding/encoding in Elm", - "license": "MIT", - "version": "1.4.2" - }, - { - "name": "calions-app/jsonapi-http-retry", - "summary": "Retry failed jsonapi requests with policies", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "calions-app/remote-resource", - "summary": "Handle foreground and background resources", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "calions-app/test-attribute", - "summary": "Add test attributes to your elements for end-to-end tests", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "camjc/elm-chart", - "summary": "An SVG chart library", - "license": "MIT", - "version": "2.0.3" - }, - { - "name": "canceraiddev/elm-aws-amplify", - "summary": "Elm client for the AWS Amplify services.", - "license": "Apache-2.0", - "version": "4.0.0" - }, - { - "name": "canceraiddev/elm-aws-cognito", - "summary": "Fork of the-sett/elm-aws-cognito", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "canceraiddev/elm-aws-core", - "summary": "Fork of the-sett/elm-aws-core", - "license": "Apache-2.0", - "version": "1.0.0" - }, - { - "name": "canceraiddev/elm-aws-pinpoint", - "summary": "Elm client for the AWS Pinpoint services.", - "license": "Apache-2.0", - "version": "1.0.1" - }, - { - "name": "canceraiddev/elm-dialog", - "summary": "Modal dialog with optional Bulma styling", - "license": "Apache-2.0", - "version": "1.0.1" - }, - { - "name": "canceraiddev/elm-form-builder", - "summary": "Form widgets and validation used for internal projects.", - "license": "Apache-2.0", - "version": "7.1.0" - }, - { - "name": "canceraiddev/elm-pages", - "summary": "A statically typed site generator.", - "license": "BSD-3-Clause", - "version": "1.1.3" - }, - { - "name": "canceraiddev/elm-sortable-table", - "summary": "Sortable (and paginated) tables for data of any shape.", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "capitalist/elm-octicons", - "summary": "Octicons for Elm", - "license": "BSD-3-Clause", - "version": "2.3.0" - }, - { - "name": "cappyzawa/elm-ui-colors", - "summary": "The color schemes using https://github.com/mdgriffith/elm-ui", - "license": "BSD-3-Clause", - "version": "2.1.1" - }, - { - "name": "cappyzawa/elm-ui-onedark", - "summary": "One Dark color scheme using https://github.com/mdgriffith/elm-ui", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "carlsson87/mod10", - "summary": "Calculate and Validate number sequences according to the Modulus 10 algorithm", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "carlsson87/mod11", - "summary": "Verify and calculate check digits according to the algorithm Modulus 11", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "carmonw/elm-number-to-words", - "summary": "Convert numbers into words", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "carpe/elm-data", - "summary": "Data Persistence library for Elm applications", - "license": "ISC", - "version": "4.0.5" - }, - { - "name": "carwow/elm-review-rules", - "summary": "A set of elm-review rules used across our projects at carwow", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "carwow/elm-slider", - "summary": "Elm slider implementation", - "license": "BSD-3-Clause", - "version": "11.1.6" - }, - { - "name": "carwow/elm-slider-old", - "summary": "Elm slider implementation - old version", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "ccapndave/elm-eexl", - "summary": "Elm Expression Language: Simple context-based expression parser and evaluator", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "ccapndave/elm-flat-map", - "summary": "flatMap over various Elm types and parameter counts", - "license": "BSD-3-Clause", - "version": "1.2.0" - }, - { - "name": "ccapndave/elm-statecharts", - "summary": "Hierarchical statecharts for Elm", - "license": "BSD-3-Clause", - "version": "4.0.1" - }, - { - "name": "ccapndave/elm-translator", - "summary": "Type-safe internationalisation for Elm", - "license": "BSD-3-Clause", - "version": "2.2.0" - }, - { - "name": "ccapndave/elm-typed-tree", - "summary": "Strongly typed fixed level trees with a zipper.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ccapndave/elm-update-extra", - "summary": "Convenience functions for working with update in Elm", - "license": "MIT", - "version": "4.0.0" - }, - { - "name": "ccapndave/focus", - "summary": "an experimental library for working with records", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "ceddlyburge/elm-bootstrap-starter-master-view", - "summary": "Creates Html similar to the Bootstrap Starter template", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "cedric-h/elm-google-sign-in", - "summary": "Elm bindings to the \"Sign in With Google\" widget", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "cedricss/elm-css-systems", - "summary": "Design systems based on elm-css, inspired by Tailwind.", - "license": "MIT", - "version": "3.2.0" - }, - { - "name": "cedricss/elm-form-machine", - "summary": "A state machine to handle forms in elm.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "cedricss/elm-progress-ring", - "summary": "Progress ring built elm/svg", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "cedricss/elm-scroll-snap", - "summary": "Scrollable containers with snapping", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "chain-partners/elm-bignum", - "summary": "Elm library for arbitrary precision arithmetic", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "chazsconi/elm-phoenix-ports", - "summary": "Elm Phoenix with ports", - "license": "MIT", - "version": "1.1.3" - }, - { - "name": "chelovek0v/bbase64", - "summary": "Padding insensitive, elm/bytes based, functional implementation of Base64", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "chemirea/bulma-classes", - "summary": "All classes in Bulma CSS", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "chicode/lisa", - "summary": "A Lisp dialect with a parser and compiler to JS", - "license": "MIT", - "version": "5.1.5" - }, - { - "name": "chipjacks/emoji-data", - "summary": "Searchable list of emojis.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "choonkeat/create-elm-server", - "summary": "Renamed to choonkeat/elm-fullstack", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "choonkeat/elm-aws", - "summary": "Make signed REST api calls to AWS, e.g. DynamoDB", - "license": "MIT", - "version": "9.0.0" - }, - { - "name": "choonkeat/elm-fullstack", - "summary": "Extensions for fullstack web development in Elm", - "license": "MIT", - "version": "4.0.1" - }, - { - "name": "choonkeat/elm-multipart", - "summary": "build a multipart email as `String` with minimal dependencies", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "choonkeat/elm-retry", - "summary": "Retry a task with list of retry policies", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "choonkeat/elm-totp", - "summary": "Library for Elm to generate TOTP url keys and code", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "choonkeat/elm-webapp", - "summary": "Small framework for writing fullstack HTTP webapp in Elm. Try `npx elm-webapp`", - "license": "MIT", - "version": "3.0.2" - }, - { - "name": "choonkeat/formdata", - "summary": "Parse, don't validate form data", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "choonkeat/html-data", - "summary": "Html data structures compatible with elm/html et al", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "choonkeat/html-data-extra", - "summary": "Helper functions for choonkeat/html-data", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "choonkeat/nativeform", - "summary": "Elm library to use form state from the platform", - "license": "MIT", - "version": "2.1.1" - }, - { - "name": "choonkeat/only-import-outside", - "summary": "Certain module prefixes, e.g. `Data`, can only import outside your codebase", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "chrilves/elm-io", - "summary": "Monadic interface for commands and The Elm Architecture", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "circuithub/elm-dropdown", - "summary": "Component to serve as a foundation for custom dropdowns.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "clojj/elm-css-grid", - "summary": "Provides CSS Grid layout", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "cmditch/elm-bigint", - "summary": "Unlimited size integers", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "cmditch/elm-ethereum", - "summary": "feed the tree some ether.", - "license": "MIT", - "version": "5.0.0" - }, - { - "name": "coinop-logan/elm-format-number", - "summary": "Format numbers as pretty strings", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "coinop-logan/nym", - "summary": "Nym display", - "license": "MIT", - "version": "2.2.0" - }, - { - "name": "coinop-logan/phace", - "summary": "Generate phaces: face-like identicons based on crypto addresses.", - "license": "MIT", - "version": "3.0.1" - }, - { - "name": "commonmind/elm-csexpr", - "summary": "Encode Canonical S-Expressions", - "license": "AGPL-3.0", - "version": "1.1.0" - }, - { - "name": "commonmind/elm-csv-encode", - "summary": "Encode CSV files", - "license": "AGPL-3.0", - "version": "1.0.1" - }, - { - "name": "correl/elm-paginated", - "summary": "A library for fetching data from paginated JSON REST APIs.", - "license": "MIT", - "version": "4.0.0" - }, - { - "name": "cuducos/elm-format-number", - "summary": "Format numbers as pretty strings", - "license": "BSD-3-Clause", - "version": "9.0.1" - }, - { - "name": "cultureamp/babel-elm-assets-plugin", - "summary": "Use Webpack-powered asset loading inside your Elm views", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "cultureamp/elm-css-modules-loader", - "summary": "Use Webpack-powered CSS Modules inside your Elm views", - "license": "BSD-3-Clause", - "version": "2.0.10" - }, - { - "name": "damienklinnert/elm-spinner", - "summary": "A highly configurable, efficiently rendered spinner component", - "license": "MIT", - "version": "3.0.2" - }, - { - "name": "danfishgold/base64-bytes", - "summary": "Convert between Base64 strings and bytes", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "danhandrea/elm-date-format", - "summary": "date format", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "danhandrea/elm-foo", - "summary": "cool package", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "danhandrea/elm-router", - "summary": "elm router", - "license": "BSD-3-Clause", - "version": "4.0.1" - }, - { - "name": "danhandrea/elm-time-extra", - "summary": "elm time extra", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "danmarcab/material-icons", - "summary": "Material Icons Library", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "danneu/html-parser", - "summary": "A lenient html5 parser", - "license": "MIT", - "version": "2.0.2" - }, - { - "name": "danyx23/elm-mimetype", - "summary": "Modelling the most common Mime Types as union types", - "license": "BSD-3-Clause", - "version": "4.0.1" - }, - { - "name": "danyx23/elm-uuid", - "summary": "Create UUIDs (Version 4) - 128 bit pseudo-random identifiers", - "license": "BSD-3-Clause", - "version": "2.1.2" - }, - { - "name": "dasch/crockford", - "summary": "Encoding and decoding functions for Crockford's base32 encoding", - "license": "Apache-2.0", - "version": "3.0.0" - }, - { - "name": "dasch/levenshtein", - "summary": "Computes the Levenshtein distance between strings", - "license": "Apache-2.0", - "version": "1.0.3" - }, - { - "name": "dasch/parser", - "summary": "Parser combinators", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "data-viz-lab/elm-chart-builder", - "summary": "A high level data visualization package for Elm", - "license": "MIT", - "version": "7.0.2" - }, - { - "name": "davidcavazos/parser", - "summary": "An easy to use general-purpose parser", - "license": "MIT", - "version": "7.0.0" - }, - { - "name": "davidpomerenke/elm-problem-solving", - "summary": "Fast graph search algorithms for problem-solving, with visualizations.", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "dawehner/elm-colorbrewer", - "summary": "Provides all colorbrewer colors in elm", - "license": "BSD-3-Clause", - "version": "4.1.1" - }, - { - "name": "debois/elm-dom", - "summary": "DOM traversal for Elm event-handlers", - "license": "Apache-2.0", - "version": "1.3.0" - }, - { - "name": "declension/elm-obj-loader", - "summary": "Load Wavefront .obj files in your WebGL scene.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "dillonkearns/elm-bcp47-language-tag", - "summary": "BCP 47 language tags, ISO 639-1 language codes, and ISO 3166-1 country codes.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "dillonkearns/elm-cli-options-parser", - "summary": "Type-safe command line options parsing.", - "license": "BSD-3-Clause", - "version": "3.1.0" - }, - { - "name": "dillonkearns/elm-graphql", - "summary": "Type-safe GraphQL queries in Elm.", - "license": "BSD-3-Clause", - "version": "5.0.10" - }, - { - "name": "dillonkearns/elm-koan-runner", - "summary": "An HTML test runner to show test results in the style of koan exercises.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "dillonkearns/elm-markdown", - "summary": "Pure Elm markdown parser with customizable rendering.", - "license": "BSD-3-Clause", - "version": "7.0.0" - }, - { - "name": "dillonkearns/elm-oembed", - "summary": "Embed Tweets, YouTube videos, Ellies, and more with a Custom Element.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "dillonkearns/elm-pages", - "summary": "A statically typed site generator.", - "license": "BSD-3-Clause", - "version": "9.0.0" - }, - { - "name": "dillonkearns/elm-review-html-to-elm", - "summary": "Generate Elm code from HTML strings using an elm-review fix.", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "dillonkearns/elm-review-no-primitive-type-alias", - "summary": "A Rule to prevent type aliases of simple primitive types like String or Int.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "dillonkearns/elm-rss", - "summary": "Generate rss feeds in elm.", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "dillonkearns/elm-sitemap", - "summary": "Generate sitemaps in elm.", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "dillonkearns/elm-ts-json", - "summary": "JSON Encoders and Decoders with TypeScript type information.", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "dividat/elm-identicon", - "summary": "Generate identicons", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "dividat/elm-semver", - "summary": "Semantic versions (Semver 2.0.0) library for Elm", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "dkodaj/rte", - "summary": "Rich text editor for blogpost-sized texts", - "license": "MIT", - "version": "3.0.21" - }, - { - "name": "dmy/elm-imf-date-time", - "summary": "RFC5322, RFC2822, RFC822 - Internet Message Format date & time strings", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "dmy/elm-pratt-parser", - "summary": "Pratt parser for expressions with operators precedence and associativity rules", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "doanythingfordethklok/snackbar", - "summary": "Snackbar lib", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "dosarf/elm-activemq", - "summary": "Elm wrapper for simple ActiveMQ REST API interaction", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "dosarf/elm-tree-view", - "summary": "Tree view control", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "dosarf/elm-yet-another-polling", - "summary": "Yet another polling package", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "drathier/elm-graph", - "summary": "Simple graph library.", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "drathier/elm-test-graph", - "summary": "Concurrency tests for Elm Test", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "drathier/elm-test-tables", - "summary": "Elm-test with table-driven tests. Your primary defence against regressions.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "driebit/elm-css-breakpoint", - "summary": "Standard media queries for use with elm-css", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "driebit/elm-ginger", - "summary": "Ginger CMS integration", - "license": "BSD-3-Clause", - "version": "4.1.1" - }, - { - "name": "driebit/elm-swipe-events", - "summary": "Swipe events, in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "dtwrks/elm-book", - "summary": "Rich documentation builder inspired by Storybook and HexDocs.", - "license": "MPL-2.0", - "version": "1.4.1" - }, - { - "name": "dtwrks/elm-book-interop-elm-css", - "summary": "Use elm-book and elm-css together", - "license": "MPL-2.0", - "version": "1.0.1" - }, - { - "name": "dtwrks/elm-book-interop-elm-ui", - "summary": "Use elm-book and elm-ui together", - "license": "MPL-2.0", - "version": "1.0.1" - }, - { - "name": "dtwrks/elm-ui-book", - "summary": "Deprecated! Please use dtwrks/elm-book instead.", - "license": "MPL-2.0", - "version": "2.2.1" - }, - { - "name": "dullbananas/elm-touch", - "summary": "Handle touch movement and gestures", - "license": "MIT", - "version": "1.2.0" - }, - { - "name": "duncanmalashock/elm-music-theory", - "summary": "Work with musical concepts", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "dvberkel/microkanren", - "summary": "An Elm implementation of the μKanren language", - "license": "MIT", - "version": "1.2.0" - }, - { - "name": "dwyl/elm-criteria", - "summary": "A reusable dropdown/filters Elm package", - "license": "BSD-3-Clause", - "version": "2.2.1" - }, - { - "name": "dwyl/elm-datepicker", - "summary": "A customisable date picker written in Elm", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "dzuk-mutant/elm-html-styled-aria", - "summary": "Aria attributes that are easily compatible with elm-css", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "dzuk-mutant/elm-responsive-pixels", - "summary": "Work in pixels while deploying in rems in elm-css.", - "license": "BSD-3-Clause", - "version": "1.2.1" - }, - { - "name": "dzuk-mutant/hundred-rabbits-themes-elm", - "summary": "Decode and use Hundred Rabbits themes.", - "license": "BSD-3-Clause", - "version": "1.2.0" - }, - { - "name": "dzuk-mutant/internet-time-elm", - "summary": "Convert to and display Internet Time.", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "dzuk-mutant/nice-bases", - "summary": "Convert to, from and between many types of non-decimal numbers.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "dzuk-mutant/nice-screen-buckets", - "summary": "Track your browser's screen size and compare them against set boundaries.", - "license": "BSD-3-Clause", - "version": "4.0.1" - }, - { - "name": "eco-pro/elm-phoenix-ports", - "summary": "Elm Phoenix with ports", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "eco-pro/project-metadata-utils", - "summary": "Work with elm.json and docs.json files in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "eddylane/elm-flip-animation", - "summary": "FLIP Style Animations in Elm", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "edgerunner/elm-tuple-trio", - "summary": "The missing (from the core) love for the 3-tuple", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "edkelly303/elm-any-type-collections", - "summary": "Dicts with any type as a key and Sets with any type as a member", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "edkv/elm-generic-dict", - "summary": "Dict that works with any key types by converting keys to String", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "eelcoh/parser-indent", - "summary": "A parser for an indented list", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "eike/json-decode-complete", - "summary": "Decode JSON objects making sure that all fields are handled by your Elm code.", - "license": "Apache-2.0", - "version": "1.0.1" - }, - { - "name": "elm-athlete/athlete", - "summary": "Native looking apps builder on the web", - "license": "BSD-3-Clause", - "version": "6.0.2" - }, - { - "name": "elm-community/array-extra", - "summary": "Convenience functions for working with Array", - "license": "MIT", - "version": "2.5.0" - }, - { - "name": "elm-community/basics-extra", - "summary": "Additional basic functions", - "license": "MIT", - "version": "4.1.0" - }, - { - "name": "elm-community/dict-extra", - "summary": "Convenience functions for working with Dict", - "license": "MIT", - "version": "2.4.0" - }, - { - "name": "elm-community/easing-functions", - "summary": "Easing functions for animations.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "elm-community/graph", - "summary": "Handling graphs the functional way.", - "license": "BSD-3-Clause", - "version": "6.0.0" - }, - { - "name": "elm-community/html-extra", - "summary": "Additional functions for working with Html", - "license": "MIT", - "version": "3.4.0" - }, - { - "name": "elm-community/intdict", - "summary": "Optimized dictionary specialization for Integers. Mirrors the dictionary API.", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "elm-community/json-extra", - "summary": "Convenience functions for working with JSON", - "license": "MIT", - "version": "4.3.0" - }, - { - "name": "elm-community/list-extra", - "summary": "Convenience functions for working with List", - "license": "MIT", - "version": "8.6.0" - }, - { - "name": "elm-community/list-split", - "summary": "Split lists into chunks", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "elm-community/maybe-extra", - "summary": "Convenience functions for working with Maybe", - "license": "MIT", - "version": "5.3.0" - }, - { - "name": "elm-community/random-extra", - "summary": "Extra functions for the core Random library", - "license": "BSD-3-Clause", - "version": "3.2.0" - }, - { - "name": "elm-community/result-extra", - "summary": "Convenience functions for working with Result", - "license": "MIT", - "version": "2.4.0" - }, - { - "name": "elm-community/string-extra", - "summary": "String helper functions for Elm", - "license": "BSD-3-Clause", - "version": "4.0.1" - }, - { - "name": "elm-community/typed-svg", - "summary": "A Typed SVG (Scalable Vector Graphics) builder", - "license": "BSD-3-Clause", - "version": "7.0.0" - }, - { - "name": "elm-community/undo-redo", - "summary": "Easy undo in Elm", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "elm-in-elm/compiler", - "summary": "Elm compiler written in Elm", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "elm-scotland/elm-tries", - "summary": "Trie data structure.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "elm-toulouse/cbor", - "summary": "RFC 7049 - Concise Binary Object Representation (CBOR)", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "elm-toulouse/float16", - "summary": "Provide extra binary Encoder and Decoder to and from float16", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "elmw/extra-bit", - "summary": "The bit is a basic unit of information in information theory, computing.", - "license": "MIT", - "version": "1.0.14" - }, - { - "name": "elmw/extra-boolean", - "summary": "Boolean data type has two possible truth values to represent logic.", - "license": "MIT", - "version": "1.3.6" - }, - { - "name": "elmw/hello-world", - "summary": "A \"Hello, World!\" is an introductory computer program.", - "license": "MIT", - "version": "2.0.3" - }, - { - "name": "emilgoldsmith/elm-speedcubing", - "summary": "Models and html displays for speedcubing puzzles and algorithm sets", - "license": "MIT", - "version": "11.1.0" - }, - { - "name": "emilianobovetti/edit-distance", - "summary": "Algorithms for edit distance calculation", - "license": "BSD-3-Clause", - "version": "1.0.7" - }, - { - "name": "emilianobovetti/elm-toast", - "summary": "Also known as snackbars or pop-up notifications", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "emilianobovetti/elm-yajson", - "summary": "Yet another JSON library inspired by Yojson", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "emilianobovetti/list-assoc", - "summary": "Common operations on association lists", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "emptyflash/typed-svg", - "summary": "A Typed SVG (Scalable Vector Graphics) builder", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "eniac314/french-stemmer", - "summary": "An Elm language implementation of the french Porter Stemmer algorithm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "enkidatron/elm-cldr", - "summary": "Locale based date and time formatting", - "license": "BSD-3-Clause", - "version": "2.1.1" - }, - { - "name": "ensoft/entrance", - "summary": "Framework for Elm apps using a Python 3.5+ asyncio backend", - "license": "MIT", - "version": "1.0.5" - }, - { - "name": "ericgj/elm-csv-decode", - "summary": "Decode CSV records to types", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "ericgj/elm-uri-template", - "summary": "Inject values from a Dict into a URI template", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "ericgj/elm-validation", - "summary": "Tools for validation, e.g. for form input", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "eriktim/elm-protocol-buffers", - "summary": "An Elm implementation of the Protocol Buffers specification", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "erlandsona/assoc-set", - "summary": "Set implemented using association-list-based Dict", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "erlandsona/elm-accessors", - "summary": "Accessors, a library implementing lenses for Elm.", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "erosson/number-suffix", - "summary": "Format large numbers in several human-readable ways, like swarmsim.com does.", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "etaque/elm-form", - "summary": "Live validation of form inputs in Elm", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "etaque/elm-response", - "summary": "Response utilities for Elm Architecture", - "license": "BSD-3-Clause", - "version": "3.1.0" - }, - { - "name": "etaque/elm-transit", - "summary": "Simple transition animation for switching between pages in a single page app.", - "license": "BSD-3-Clause", - "version": "7.0.5" - }, - { - "name": "etaque/elm-transit-style", - "summary": "CSS styles for animation on elm-transit.", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "evelios/elm-geometry-quadtree", - "summary": "QuadTree implementation in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "f0i/debug-to-json", - "summary": "Pretty printer and to JSON converter for Debug.toString output", - "license": "BSD-3-Clause", - "version": "1.0.6" - }, - { - "name": "f0i/iso8601", - "summary": "Format elm/time posix time as an ISO8601 strings for humans", - "license": "BSD-3-Clause", - "version": "1.1.2" - }, - { - "name": "f0i/statistics", - "summary": "Statistic functions for lists of Float and Int", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "fabhof/elm-ui-datepicker", - "summary": "A reasonable date picker for the awesome elm-ui.", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "fabiommendes/elm-iter", - "summary": "Lazy iterators for Elm.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "fapian/elm-html-aria", - "summary": "Aria attributes for Elm", - "license": "BSD-3-Clause", - "version": "1.4.0" - }, - { - "name": "fbonetti/elm-geodesy", - "summary": "Calculate distance and bearing", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "feathericons/elm-feather", - "summary": "Feather icons for elm", - "license": "BSD-3-Clause", - "version": "1.5.0" - }, - { - "name": "fedragon/elm-typed-dropdown", - "summary": "Dropdown that handles items of an arbitrary type `t`", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "feral-dot-io/protoc-gen-elmer", - "summary": "Support library for Protobuf to Elm codegen. Builds on elm-protocol-buffers", - "license": "LGPL-3.0", - "version": "1.0.0" - }, - { - "name": "fifth-postulate/combinatorics", - "summary": "providing common combinatoric primitives", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "fifth-postulate/elm-csv-decode", - "summary": "Decode CSV just like you decode JSON.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "fifth-postulate/priority-queue", - "summary": "a priority queue for Elm.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "figbus/elm-urbit-api", - "summary": "Communicate with Urbit from Elm.", - "license": "MIT", - "version": "4.0.1" - }, - { - "name": "finos/morphir-elm", - "summary": "Morphir Elm bindings", - "license": "Apache-2.0", - "version": "18.1.0" - }, - { - "name": "fission-codes/webnative-elm", - "summary": "Thin wrapper around webnative for Elm", - "license": "Apache-2.0", - "version": "1.0.0" - }, - { - "name": "fission-suite/kit", - "summary": "Fission UI Kit", - "license": "Apache-2.0", - "version": "2.2.0" - }, - { - "name": "fission-suite/webnative-elm", - "summary": "Thin wrapper around webnative for Elm", - "license": "Apache-2.0", - "version": "7.0.0" - }, - { - "name": "fivetentech/elm-bounded-list", - "summary": "A list with a maximum capacity", - "license": "MIT", - "version": "1.1.1" - }, - { - "name": "flarebyte/bubblegum-entity", - "summary": "Access to settings and states for widgets of the Bubblegum UI toolkit.", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "flarebyte/bubblegum-ui-textarea", - "summary": "TextArea widget for the Bubblegum UI toolkit.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "flowlang-cc/elm-audio-graph", - "summary": "Construct type safe JSON audio graphs with Elm.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "folkertdev/elm-brotli", - "summary": "A Brotli decoder for elm", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "folkertdev/elm-cff", - "summary": "Decode compact font format font data into glyphs", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "folkertdev/elm-deque", - "summary": "A deque (double-ended queue) ", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "folkertdev/elm-flate", - "summary": "Deflate and inflate data (used in zip, png, woff)", - "license": "MPL-2.0", - "version": "2.0.5" - }, - { - "name": "folkertdev/elm-int64", - "summary": "Efficient 64-bit (unsigned) integer", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "folkertdev/elm-iris", - "summary": "The iris flower data set", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "folkertdev/elm-kmeans", - "summary": "K-means clustering in elm", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "folkertdev/elm-paragraph", - "summary": "Paragraph formatting in elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "folkertdev/elm-sha2", - "summary": "Fast elm/bytes based sha256 and sha512", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "folkertdev/elm-state", - "summary": "Threading state through computation", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "folkertdev/elm-tiny-inflate", - "summary": "Inflate data compressed with a deflate (zip, gzip, woff, png)", - "license": "MPL-2.0", - "version": "1.1.2" - }, - { - "name": "folkertdev/one-true-path-experiment", - "summary": "An experimental package for building paths and curves in elm", - "license": "BSD-3-Clause", - "version": "6.0.0" - }, - { - "name": "folkertdev/svg-path-lowlevel", - "summary": "Parser and pretty printer for SVG paths", - "license": "BSD-3-Clause", - "version": "4.0.1" - }, - { - "name": "folq/google-calendar-url", - "summary": "Build URLs for creating events in Google Calendar with prefilled contents", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "folq/review-rgb-ranges", - "summary": "Provides elm-review rules to detect rgb values out of range", - "license": "BSD-3-Clause", - "version": "1.0.5" - }, - { - "name": "francescortiz/elm-queue", - "summary": "Process .", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "frandibar/elm-bootstrap", - "summary": "Elm Bootstrap is a comprehensive library for working with Twitter Bootstrap 4", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "frandibar/elm-font-awesome-5", - "summary": "A strongly typed Elm package for working with Font Awesome 5", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "frawa/elm-contour", - "summary": "Calculate contour level lines for a two-dimensional scalar field", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "fredcy/elm-debouncer", - "summary": "Yet another debouncer component for Elm", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "fredcy/elm-parseint", - "summary": "Functions to convert String to Int or Int to String in various radixes", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "friedbrice/elm-teaching-tools", - "summary": "Tools for using Elm in the classroom.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "fujiy/elm-json-convert", - "summary": "Writing JSON encoder and decoder at once", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "fustkilas/elm-airtable", - "summary": "Elm wrapper for the Airtable API", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "fysiweb/elm-review-no-import-as", - "summary": "Provides elm-review rules to forbid the use of import aliases", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "fysiweb/elm-review-sorted", - "summary": "Provides elm-review rules to keep record fields and constructors sorted", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "garados007/component", - "summary": "A library with helper functions to create components", - "license": "GPL-3.0", - "version": "1.0.0" - }, - { - "name": "garados007/triple", - "summary": "A small library for special triple support", - "license": "GPL-3.0", - "version": "1.0.0" - }, - { - "name": "gdamjan/elm-identicon", - "summary": "Generate identicons", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "gege251/elm-validator-pipeline", - "summary": "Validate values and apply them to a user defined type.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "genthaler/elm-enum", - "summary": "A library to facilitate using Elm union types as `Enum`s", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "getsurance/elm-street", - "summary": "Types for Google Places Autocomplete javascript api", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "getto-systems/elm-apply", - "summary": "apply utilities for html table", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "getto-systems/elm-command", - "summary": "utilities for Cmd", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "getto-systems/elm-field", - "summary": "form field utilities", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "getto-systems/elm-html-table", - "summary": "construct table structure for html", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "getto-systems/elm-http-header", - "summary": "http header utilities", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "getto-systems/elm-http-part", - "summary": "http part utilities", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "getto-systems/elm-json", - "summary": "json utilities", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "getto-systems/elm-sort", - "summary": "sort utilities for html table", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "getto-systems/elm-url", - "summary": "url utilities", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "getto-systems/getto-elm-command", - "summary": "utilities for Cmd", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "ggb/elm-bloom", - "summary": "Elm Bloom filter implementation using Murmur3", - "license": "MIT", - "version": "1.1.1" - }, - { - "name": "ggb/elm-sentiment", - "summary": "Wordlist-based sentiment analysis for Elm", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "ggb/elm-trend", - "summary": "Regression and time series forecasting", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "ggb/numeral-elm", - "summary": "Elm module for (advanced) number formatting. Numeral.js port to Elm", - "license": "MIT", - "version": "1.5.0" - }, - { - "name": "ggb/porterstemmer", - "summary": "Elm implementation of the classical Porter Stemming-algorithm.", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "ggpeti/return-optics", - "summary": "Extend Return with Monocle's Lenses for fun in the update function", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ghivert/elm-graphql", - "summary": "GraphQL queries made easy in Elm!", - "license": "MIT", - "version": "5.0.0" - }, - { - "name": "gicentre/elm-vega", - "summary": "Declarative visualization with Elm and Vega", - "license": "BSD-3-Clause", - "version": "5.7.1" - }, - { - "name": "gicentre/elm-vegalite", - "summary": "Declarative visualization with Elm and Vega-Lite", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "gicentre/tidy", - "summary": "Tidy data shaping for Elm", - "license": "BSD-3-Clause", - "version": "1.6.0" - }, - { - "name": "gigobyte/iso8601-duration", - "summary": "Convert between ISO-8601 durations strings and Duration values", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "gingko/time-distance", - "summary": "Get approximate relative time in words", - "license": "MIT", - "version": "2.3.1" - }, - { - "name": "gipsy-king/radar-chart", - "summary": "An SVG radar chart", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "glasserc/elm-debouncer", - "summary": "A forked debouncer", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "glasserc/elm-form-result", - "summary": "Some utilities for handling forms", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "glasserc/elm-requested", - "summary": "A utility type for tracking requests", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "goilluminate/elm-fancy-daterangepicker", - "summary": "A fancy daterangepicker in elm.", - "license": "BSD-3-Clause", - "version": "6.0.0" - }, - { - "name": "goyalarchit/elm-dagre", - "summary": "Sugiyama Style graph drawing in pure elm.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "goyalarchit/graph-extra", - "summary": "Convenience functions/Random generators for working with elm-community/graph.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "gregziegan/elm-font-awesome-5", - "summary": "A strongly typed Elm package for working with Font Awesome 5", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "gribouille/elm-bulma", - "summary": "ELM Bulma wrapper", - "license": "MPL-2.0", - "version": "1.0.2" - }, - { - "name": "gribouille/elm-combo", - "summary": "Combobox component", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "gribouille/elm-datetime", - "summary": "Datetime component", - "license": "MPL-2.0", - "version": "2.0.0" - }, - { - "name": "gribouille/elm-graphql", - "summary": "GraphQL ELM library", - "license": "MPL-2.0", - "version": "2.0.2" - }, - { - "name": "gribouille/elm-multiselect", - "summary": "Multiselect component", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "gribouille/elm-prelude", - "summary": "Extra standard functions", - "license": "MPL-2.0", - "version": "2.0.0" - }, - { - "name": "gribouille/elm-select", - "summary": "Select component", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "gribouille/elm-spinner", - "summary": "Spinner component", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "gribouille/elm-table", - "summary": "Table component", - "license": "MPL-2.0", - "version": "5.1.1" - }, - { - "name": "gribouille/elm-table-tailwind", - "summary": "Full features ELM table component for Tailwind", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "gribouille/elm-treeview", - "summary": "ELM tree view component", - "license": "MPL-2.0", - "version": "2.0.2" - }, - { - "name": "groma84/elm-tachyons", - "summary": "Tachyons CSS classnames for Elm - updated fork", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "groteck/elm-iban", - "summary": "Iban validation in elm", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "grotsev/elm-debouncer", - "summary": "The most simple debouncer for Elm.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "guid75/ziplist", - "summary": "A collection data type that exposes a single current item", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "hakonrossebo/elmdocs", - "summary": "A meta package to be used to look up package docs from REPL", - "license": "MIT", - "version": "1.1.3" - }, - { - "name": "hallelujahdrive/elm-accordion", - "summary": "Simple Accordion for Elm", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "hallelujahdrive/elm-croppie", - "summary": "Croppie for Elm", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "hanifhefaz/elm-word2dict-matcher", - "summary": "Finds the most relevant sentence", - "license": "MIT", - "version": "5.1.1" - }, - { - "name": "hansallis/elm-ratelimiter", - "summary": "Simple sliding log rate limiter.", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "harmboschloo/elm-dict-intersect", - "summary": "Provides intersections of multiple dictionaries", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "harmboschloo/elm-ecs", - "summary": "Using the Entity-Component-System (ECS) pattern in Elm", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "harmboschloo/graphql-to-elm", - "summary": "Generate Elm types/encoders/decoders from GraphQL queries", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "harmboschloo/graphql-to-elm-package", - "summary": "Generate Elm types/encoders/decoders from GraphQL queries. Support package.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "harrysarson/elm-complex", - "summary": "Use complex numbers in elm.", - "license": "MIT", - "version": "1.0.5" - }, - { - "name": "harrysarson/elm-decode-elmi", - "summary": "Decode binary elmi files.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "harrysarson/elm-hacky-unique", - "summary": "Trick elm into thinking otherwise identical objects are different.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "hayleigh-dot-dev/elm-limiter", - "summary": "Throttling and debouncing for messages and values.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "hayleigh-dot-dev/tuple-extra", - "summary": "A collection of helpers for the Tuple type.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "hecrj/composable-form", - "summary": "Build type-safe composable forms in Elm", - "license": "BSD-3-Clause", - "version": "8.0.1" - }, - { - "name": "hecrj/elm-slug", - "summary": "Type-safe slugs for Elm", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "hecrj/html-parser", - "summary": "Parse HTML 5 in Elm", - "license": "BSD-3-Clause", - "version": "2.4.0" - }, - { - "name": "hendore/elm-port-message", - "summary": "A clean convention for sending messages via ports.", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "henne90gen/elm-pandas-visualization", - "summary": "Allows to create graphs from a pandas DataFrame.", - "license": "BSD-3-Clause", - "version": "7.0.2" - }, - { - "name": "hercules-ci/elm-dropdown", - "summary": "Component to serve as a foundation for custom dropdowns.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "hercules-ci/elm-hercules-extras", - "summary": "Convenience functions not found in core elm packages", - "license": "Apache-2.0", - "version": "1.0.0" - }, - { - "name": "hermanverschooten/ip", - "summary": "Functions for working with IP addresses and subnets.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "hmsk/elm-css-modern-normalize", - "summary": "An Elm port of modern-normalize", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "hmsk/elm-vite-plugin-helper", - "summary": "Helpers to use vite-plugin-elm", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "holmusk/timed-cache", - "summary": "Work with cached values", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "hrldcpr/elm-cons", - "summary": "A non-empty list data structure.", - "license": "BSD-3-Clause", - "version": "3.1.0" - }, - { - "name": "humio/elm-dashboard", - "summary": "A dashboard layout library.", - "license": "Apache-2.0", - "version": "6.0.1" - }, - { - "name": "icidasset/elm-binary", - "summary": "Work with binary data.", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "icidasset/elm-material-icons", - "summary": "Material Icons Library", - "license": "BSD-3-Clause", - "version": "10.0.0" - }, - { - "name": "icidasset/elm-sha", - "summary": "SHA cryptographic hash functions.", - "license": "MIT", - "version": "2.0.2" - }, - { - "name": "imjoehaines/afinn-165-elm", - "summary": "The AFINN-165 dataset as an Elm dict", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "indicatrix/elm-chartjs-webcomponent", - "summary": "Elm types and pipeline functions to easily work with Chartjs", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "indicatrix/elm-input-extra", - "summary": "Commonly used Html element with extra functionality", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "indique/elm-bounded-nat", - "summary": "natural number in a range at compile-time", - "license": "MIT", - "version": "13.0.0" - }, - { - "name": "indique/elm-keysdict", - "summary": "lookup values by many keys", - "license": "MIT", - "version": "2.0.3" - }, - { - "name": "indique/elm-linear-direction", - "summary": "natural number in a range at compile-time", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "indique/elm-n-nat", - "summary": "natural number of an exact value", - "license": "MIT", - "version": "5.0.0" - }, - { - "name": "indique/elm-n-nat-type", - "summary": "express natural numbers within a type", - "license": "MIT", - "version": "6.0.1" - }, - { - "name": "indique/elm-n-type", - "summary": "describe a number as a difference in a type", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "indique/elm-nat-in-range", - "summary": "natural number with a minimum (& maximum) in the type", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "indique/elm-pairdict", - "summary": "lookup value-pairs from the left or the right", - "license": "MIT", - "version": "6.0.3" - }, - { - "name": "indique/n", - "summary": "supplies bounded-nat with shortened names", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "inkuzmin/elm-multiselect", - "summary": "multiselect control", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "innoave/bounded-number", - "summary": "A type representing a bounded number", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "insurello/elm-swedish-bank-account-number", - "summary": "Validate Swedish bank account numbers", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "insurello/elm-ui-explorer", - "summary": "Explore and interact with UI components and pages you've created", - "license": "MIT", - "version": "2.1.1" - }, - { - "name": "integral424/elm-pivot-table", - "summary": "Analyze and visualize table data by grouping by various fields", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "iodevs/elm-history", - "summary": "This library helps with keeping history of states of your variables.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "iodevs/elm-validate", - "summary": "A Elm validation library", - "license": "BSD-3-Clause", - "version": "3.0.3" - }, - { - "name": "ir4y/elm-dnd", - "summary": "Reusable high level drag-and-drop library for elm", - "license": "MIT", - "version": "3.0.2" - }, - { - "name": "isaacseymour/deprecated-time", - "summary": "elm-community/elm-time updated to 0.19", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "isberg/elm-ann", - "summary": "Artifical Neural Network in Elm", - "license": "MIT", - "version": "1.6.2" - }, - { - "name": "itravel-de/elm-thumbor", - "summary": "Generate Thumbor URLs with Elm.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "ivadzy/bbase64", - "summary": "Padding insensitive, elm/bytes based, functional implementation of Base64", - "license": "MIT", - "version": "1.1.1" - }, - { - "name": "j-maas/elm-ordered-containers", - "summary": "Ordered Dict and Set for Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "j-panasiuk/elm-ionicons", - "summary": "700+ SVG icons from Ionic framework", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "jabaraster/elm-views", - "summary": "elm view library.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "jackfranklin/elm-parse-link-header", - "summary": "Parse HTTP Link headers", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "jackhp95/elm-mapbox", - "summary": "An Elm library for interactive maps", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "jackhp95/palit", - "summary": "Inspired by Tachyons, Tailwinds, and Elm-UI. Powered by elm-css.", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "jamesgary/elm-config-ui", - "summary": "Editor and code generator for live-editing config values in the browser", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "jamesmacaulay/elm-graphql", - "summary": "A GraphQL request builder and HTTP client", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "janjelinek/creditcard-validation", - "summary": "CreditCard validation", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "jaredramirez/elm-field", - "summary": "Handle input field modeling & validaton easily.", - "license": "BSD-3-Clause", - "version": "1.1.2" - }, - { - "name": "jaredramirez/elm-s3", - "summary": "Upload files to AWS S3 with Elm!", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "jaredramirez/elm-select", - "summary": "A Handsome configurable select inspired by Culture Amp's Kaizen select.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jaredramirez/html-styled-extra", - "summary": "Additional functions for working with Html.Styled", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "jasonliang-dev/elm-heroicons", - "summary": "Heroicons for elm", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "jasonliang512/elm-heroicons", - "summary": "Heroicons for elm", - "license": "MIT", - "version": "2.4.0" - }, - { - "name": "jcberentsen/elm-wiring-diagrams", - "summary": "A package for rendering wiring-diagrams to SVG", - "license": "BSD-3-Clause", - "version": "5.4.7" - }, - { - "name": "jeongoon/elmnt-scrollpicker", - "summary": "An elm-ui-friendly picker by scrolling", - "license": "OSL-3.0", - "version": "2.0.0" - }, - { - "name": "jfmengels/elm-lint", - "summary": "An Elm source code linter, to add additional guarantees to your project.", - "license": "BSD-3-Clause", - "version": "4.1.2" - }, - { - "name": "jfmengels/elm-lint-reporter", - "summary": "Formats the result of `elm-lint` in a nice human-readable way", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "jfmengels/elm-review", - "summary": "Analyzes Elm projects, to help find mistakes before your users find them.", - "license": "BSD-3-Clause", - "version": "2.8.1" - }, - { - "name": "jfmengels/elm-review-code-style", - "summary": "Provide elm-review rules to follow some of my personal code style preferences", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jfmengels/elm-review-cognitive-complexity", - "summary": "Provide an elm-review rule to measure the cognitive complexity of a function.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jfmengels/elm-review-common", - "summary": "Provides common linting rules for elm-review", - "license": "BSD-3-Clause", - "version": "1.2.1" - }, - { - "name": "jfmengels/elm-review-debug", - "summary": "Provides elm-review rules to detect debug code", - "license": "BSD-3-Clause", - "version": "1.0.6" - }, - { - "name": "jfmengels/elm-review-documentation", - "summary": "Provides elm-review rules to help with the quality of the documentation", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "jfmengels/elm-review-license", - "summary": "Provides an elm-review rule to prevent using packages with unapproved licenses", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "jfmengels/elm-review-performance", - "summary": "Provides elm-review rules to report performance problems in your Elm project", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "jfmengels/elm-review-reporter", - "summary": "Formats the result of `elm-review` in a nice human-readable way", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jfmengels/elm-review-simplify", - "summary": "Provides elm-review rules to simplify Elm code", - "license": "BSD-3-Clause", - "version": "2.0.18" - }, - { - "name": "jfmengels/elm-review-test-values", - "summary": "Provides elm-review rules to find misuses of test-only values", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jfmengels/elm-review-the-elm-architecture", - "summary": "Provides elm-review rules to improve your use of The Elm Architecture", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "jfmengels/elm-review-unused", - "summary": "Provides elm-review rules to detect unused elements in your Elm project", - "license": "BSD-3-Clause", - "version": "1.1.22" - }, - { - "name": "jfmengels/lint-debug", - "summary": "Lint plugin for `elm-lint` that provides rules to detect debug code.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "jfmengels/lint-unused", - "summary": "Lint plugin for `elm-lint` that detects unused code", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "jfmengels/review-common", - "summary": "DEPRECATED: Use jfmengels/elm-review-common instead.", - "license": "BSD-3-Clause", - "version": "1.2.3" - }, - { - "name": "jfmengels/review-debug", - "summary": "DEPRECATED: Use jfmengels/elm-review-debug instead.", - "license": "BSD-3-Clause", - "version": "2.0.3" - }, - { - "name": "jfmengels/review-documentation", - "summary": "DEPRECATED: Use jfmengels/elm-review-documentation instead.", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "jfmengels/review-tea", - "summary": "DEPRECATED: Use jfmengels/elm-review-the-elm-architecture instead.", - "license": "BSD-3-Clause", - "version": "1.1.3" - }, - { - "name": "jfmengels/review-unused", - "summary": "DEPRECATED: Use jfmengels/elm-review-unused instead.", - "license": "BSD-3-Clause", - "version": "2.1.5" - }, - { - "name": "jgrenat/datocms-structured-text", - "summary": "Decoder, encoder and HTML renderer for DatoCMS Structured Text format (DAST)", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "jgrenat/elm-html-test-runner", - "summary": "Run and display Elm tests as HTML", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "jgrenat/regression-testing", - "summary": "A tool to generate regression tests for your Elm application", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jigargosar/elm-material-color", - "summary": "Material Colors", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jims/html-parser", - "summary": "Parse HTML 5 in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jinjor/elm-contextmenu", - "summary": "Flexible context menu for Elm", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "jinjor/elm-debounce", - "summary": "Yet another debouncer for Elm.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "jinjor/elm-diff", - "summary": "A diff implementation for Elm", - "license": "BSD-3-Clause", - "version": "1.0.6" - }, - { - "name": "jinjor/elm-insertable-key", - "summary": "Generates a new key between two keys", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "jinjor/elm-map-debug", - "summary": "Trying to reproduce Map.! problem", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "jinjor/elm-req", - "summary": "HTTP Requests", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "jinjor/elm-xml-parser", - "summary": "XML Parser for Elm", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "jjagielka/select-menu", - "summary": "Select/menu using browser focus. Minimal approach: ~200 lines of code.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "jjant/elm-comonad-zipper", - "summary": "Provides an implementation of the List Zipper and its comonadic interface.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "jjant/elm-dict", - "summary": "Dictionary that can store any type, without configuration.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "jjant/elm-fps", - "summary": "Fast and easy fps counter", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jjant/elm-printf", - "summary": "Provides an implementation of printf", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jjant/linear-algebra", - "summary": "Fast linear algebra in Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "jjant/unwrap", - "summary": "Unwrap or crash", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "jluckyiv/elm-utc-date-strings", - "summary": "Convert UTC date strings to and from Posix times", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jmg-duarte/group-list", - "summary": "Functions for List grouping", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "joakin/elm-canvas", - "summary": "2D drawing API based on DOM Canvas, but nicer", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "joakin/elm-grid", - "summary": "2d and 3d grid folding. Loop over a coordinate space, build a result", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "johnathanbostrom/elm-dice", - "summary": "Dice Rolling", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "jonathanfishbein1/complex-numbers", - "summary": "complex numbers in elm", - "license": "BSD-3-Clause", - "version": "11.0.1" - }, - { - "name": "jonathanfishbein1/elm-equal", - "summary": "DEPRECATED An equal package", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "jonathanfishbein1/elm-field", - "summary": "Mathematical Field ", - "license": "BSD-3-Clause", - "version": "5.0.1" - }, - { - "name": "jonathanfishbein1/elm-monoid", - "summary": "DEPRECATED A pack of monoids in the category of endofunctors", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "jonathanfishbein1/elm-numbers", - "summary": "numbers in elm", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "jonathanfishbein1/elm-quantum", - "summary": "Elm Quantum Simulator", - "license": "MIT", - "version": "6.1.1" - }, - { - "name": "jonathanfishbein1/elm-semigroup", - "summary": "DEPRECATED A semigroup package", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "jonathanfishbein1/linear-algebra", - "summary": "linear algebra in elm", - "license": "BSD-3-Clause", - "version": "30.0.0" - }, - { - "name": "jonathanfishbein1/numeric-typeclasses", - "summary": "Numeric typeclasses", - "license": "MIT", - "version": "4.0.0" - }, - { - "name": "joneshf/elm-tagged", - "summary": "A library to help with compile time verification", - "license": "BSD-3-Clause", - "version": "2.1.1" - }, - { - "name": "joneshf/elm-these", - "summary": "Values that can be one of two types or both at once", - "license": "BSD-3-Clause", - "version": "1.2.1" - }, - { - "name": "jonoabroad/commatosed", - "summary": "A CSV parser based on RFC-4180", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "jordymoos/pilf", - "summary": "Elm flip but then reversed to hide its existence ", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "jorgengranseth/elm-string-format", - "summary": "Avoid ugly String concatenation with pipable interpolation", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "joshforisha/elm-html-entities", - "summary": "HTML entities for Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "joshforisha/elm-inflect", - "summary": "Pluralize/singularize strings", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "jouderianjr/elm-dialog", - "summary": "A modal dialog widget for Elm.", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "jouderianjr/elm-loaders", - "summary": "Elm version of pure SVG loaders created by Sam Herbert", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "jpagex/elm-material-color", - "summary": "Material Colors", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "json-tools/json-schema", - "summary": "JSON Schema for elm", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "json-tools/json-value", - "summary": "Reading and manipulation with json values", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "jsuder-xx/elm-ra", - "summary": "Support for Pointfree style in Elm with a subset of Ramda functions.", - "license": "MIT", - "version": "1.1.1" - }, - { - "name": "jsuder-xx/elm-review-reducible-lambdas", - "summary": "elm-review rules to reduce lambda functions through eta reduction.", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "juliusl/elm-ui-hexcolor", - "summary": "Adds a String -> Element.Color function for rgb and rgba.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "justgage/tachyons-elm", - "summary": "Tachyons CSS classnames for Elm", - "license": "MIT", - "version": "4.1.3" - }, - { - "name": "justgook/alt-linear-algebra", - "summary": "A linear algebra library for fast vector and matrix math", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "justgook/elm-game-logic", - "summary": "An ECS library for Elm. Provides an easy way to build a full game", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "justgook/elm-image", - "summary": "A library for building runtime images in elm", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "justgook/elm-tiled", - "summary": "A library for building decoders for Tiled levels.", - "license": "BSD-3-Clause", - "version": "3.0.2" - }, - { - "name": "justgook/elm-webdriver", - "summary": "Webdriver", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "justgook/webgl-playground", - "summary": "A fun way to create pictures,animations and games in WebGL https://git.io/Jv3wc", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "justgook/webgl-shape", - "summary": "2D wrapper for WebGL entities", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "justinmimbs/date", - "summary": "Work with dates without times or zones", - "license": "BSD-3-Clause", - "version": "4.0.1" - }, - { - "name": "justinmimbs/time-extra", - "summary": "Extra functions for working with Posix times from elm/time", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "justinmimbs/timezone-data", - "summary": "Time zone data from the IANA Time Zone Database for using with elm/time", - "license": "BSD-3-Clause", - "version": "6.0.1" - }, - { - "name": "justinmimbs/tzif", - "summary": "Decode TZif files into Time.Zone values", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "justinrassier/elm-contribution-graph", - "summary": "A GitHub-style SVG contribution graph written in pure Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "jweir/charter", - "summary": "Generate inline charts and sparklines", - "license": "BSD-3-Clause", - "version": "1.3.1" - }, - { - "name": "jweir/elm-iso8601", - "summary": "ISO8601 time parsing.", - "license": "MIT", - "version": "7.0.1" - }, - { - "name": "jweir/sparkline", - "summary": "Generate inline graphs - sparklines", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "jwheeler-cp/elm-form", - "summary": "Live validation of form inputs in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "jzxhuang/http-extras", - "summary": "Improved HTTP - detailed responses, convenience functions, and API mocking.", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "kalutheo/elm-ui-explorer", - "summary": "Explore your views and their states in a single tool.", - "license": "BSD-3-Clause", - "version": "9.1.0" - }, - { - "name": "ken-matsui/html-styled-extra", - "summary": "Additional functions for working with Html.Styled", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "kingwither/elmeither", - "summary": "Haskell's 'Either' type", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "kirchner/elm-selectize", - "summary": "Selectize-like dropdown menu with autocompletion", - "license": "Apache-2.0", - "version": "2.0.7" - }, - { - "name": "kirchner/elm-wai-aria-tabs", - "summary": "Implementation of the WAI-ARIA tabs widget", - "license": "Apache-2.0", - "version": "1.0.2" - }, - { - "name": "kirchner/form-validation", - "summary": "Create validatable forms", - "license": "Apache-2.0", - "version": "1.1.1" - }, - { - "name": "kkazuo/expect-bytes", - "summary": "Expect Bytes with Http", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "kkpoon/elm-auth0", - "summary": "Auth0 data types and helper functions", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "kkpoon/elm-auth0-urlparser", - "summary": "UrlParser for Auth0 token callback", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "kkpoon/elm-echarts", - "summary": "echarts-webcomponent option types", - "license": "BSD-3-Clause", - "version": "10.0.1" - }, - { - "name": "klazuka/elm-json-tree-view", - "summary": "Shows JSON data as an expandable HTML tree", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "kmbn/elm-hotkeys", - "summary": "Event handlers for sending content and triggering actions with keypresses.", - "license": "MIT", - "version": "1.1.1" - }, - { - "name": "korutx/elm-rut", - "summary": "A component for handling the Chilean Unique Roll Tributary", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "koskoci/elm-sortable-table", - "summary": "Tiny fork.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "kress95/elm-review-indirect-internal", - "summary": "Block indirect imports to internal modules", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "krisajenkins/elm-astar", - "summary": "The A* pathfinding algorithm.", - "license": "MIT", - "version": "2.1.3" - }, - { - "name": "krisajenkins/elm-exts", - "summary": "A collection of functions missing from the core.", - "license": "MIT", - "version": "28.0.0" - }, - { - "name": "krisajenkins/remotedata", - "summary": "Tools for fetching data from remote sources (incl. HTTP).", - "license": "MIT", - "version": "6.0.1" - }, - { - "name": "ktonon/elm-crypto", - "summary": "Compute HMAC with SHA-2 hash functions or use SHA-2 directly.", - "license": "MIT", - "version": "1.1.2" - }, - { - "name": "ktonon/elm-jsonwebtoken", - "summary": "JSON Web Token encoder and decoder (JWT)", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "ktonon/elm-test-extra", - "summary": "Extra expectations, fuzzers, testers and describers", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "ktonon/elm-word", - "summary": "Unsigned 32 or 64 bit integers and related operations", - "license": "MIT", - "version": "2.1.2" - }, - { - "name": "kuon/elm-hsluv", - "summary": "HSLuv implementation in pure Elm", - "license": "BSD-3-Clause", - "version": "3.0.2" - }, - { - "name": "kuon/elm-string-normalize", - "summary": "String normalization utils", - "license": "BSD-3-Clause", - "version": "1.0.5" - }, - { - "name": "kuzminadya/mogeefont", - "summary": "A bitmap font for the Mogee game", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "kuzzmi/elm-gravatar", - "summary": "Get Gravatar image source URL or DOM image element", - "license": "MIT", - "version": "2.0.2" - }, - { - "name": "kyasu1/elm-ulid", - "summary": "Generate ULID - Universally Unique Lexicographically Sortable Identifier", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "labzero/elm-google-geocoding", - "summary": "Elm interface to the Google Geocoding API", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "lambda-phi/disjoint-set", - "summary": "A disjoint set implementation with path compression", - "license": "MIT", - "version": "3.1.0" - }, - { - "name": "lambda-phi/lambda", - "summary": "an optimizing compiler using lambda calculus", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "lambda-phi/parser", - "summary": "An easy to use general-purpose parser", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "langyu-app/elm-ancillary-json", - "summary": "Convenience functions not included in elm-community/json-extra", - "license": "GPL-3.0", - "version": "1.0.0" - }, - { - "name": "langyu-app/elm-ancillary-nonempty-list", - "summary": "Convenience functions not included in mgold/elm-nonempty-list", - "license": "BSD-3-Clause", - "version": "1.6.0" - }, - { - "name": "laniakea-landscape/tailwindcss-typed", - "summary": "Pack of types and function to simplify using Tailwind CSS classes", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "larribas/elm-multi-input", - "summary": "A multi-value input (for emails, tags, etc.)", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "laserpants/elm-burrito-update", - "summary": "Monadic-style interface for state updates in Elm.", - "license": "BSD-3-Clause", - "version": "3.0.4" - }, - { - "name": "laserpants/elm-update-pipeline", - "summary": "Interface for sequential composition of updates in the style of pipelines.", - "license": "BSD-3-Clause", - "version": "1.3.2" - }, - { - "name": "lattyware/elm-fontawesome", - "summary": "FontAwesome as pure Elm and SVG.", - "license": "MIT", - "version": "6.0.0" - }, - { - "name": "lattyware/elm-json-diff", - "summary": "Compute JSON patches by comparing two JSON values.", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "lauber00/elm-int64", - "summary": "Efficient 64-bit (unsigned) integer", - "license": "BSD-3-Clause", - "version": "1.2.4" - }, - { - "name": "lauber00/elm-protocol-buffers", - "summary": "An Elm implementation of the Protocol Buffers specification", - "license": "BSD-3-Clause", - "version": "1.1.9" - }, - { - "name": "lauber00/line-charts", - "summary": "A library for plotting lines charts in SVG.", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "laurentpayot/minidenticons-elm", - "summary": "Super lightweight SVG identicon generator for Elm", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "layflags/elm-bic", - "summary": "This library is for parsing Business Identifier Codes (BIC) used in banking", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "lazamar/dict-parser", - "summary": "Create a fast parser to match dictionary keys.", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "league/difference-list", - "summary": "DList is a representation of lists with an efficient append operation", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "league/unique-id", - "summary": "Pure generation of unique identifiers in Elm.", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "leforestier/elm-hammer-events", - "summary": "Use Hammer.js touch events with Elm", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "lemol/ant-design-icons-elm", - "summary": "Ant Design Icons for Elm", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "lemol/ant-design-icons-elm-ui", - "summary": "Ant Design Icons for Elm UI", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "lenards/elm-pandemic-date", - "summary": "When you feel like time stopped and we're still in March 2020 ...", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "lenards/elm-ui-patternfly", - "summary": "An elm-ui implementation of components from the PatternFly design system", - "license": "BSD-3-Clause", - "version": "1.5.1" - }, - { - "name": "leojpod/elm-apex-charts-link", - "summary": "describe your apex charts in elm to use via ports/web-components", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "leojpod/elm-jwt", - "summary": "Decode, encode, verify JSON web tokens", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "leojpod/elm-keyboard-shortcut", - "summary": "quick support for keyboard shortcut (web-component based)", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "leojpod/review-no-empty-html-text", - "summary": "elm-review rule to favour `html-extra` and forbid `Html.text \"\"`", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "leojpod/review-no-id-as-string", - "summary": "Promote the use of opaque type as ID and flag the use of String for id fields", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "leonardanyer/elm-combox", - "summary": "Custom dropdown based on elm-selectize", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "lettenj61/elm-reusable-html", - "summary": "Minimal reusable functions to enrich common use of elm/html", - "license": "Apache-2.0", - "version": "2.0.0" - }, - { - "name": "lettenj61/elm-simple-template", - "summary": "Minimal viable template engine for Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "lgcantarelli/emusic", - "summary": "DSL that provides abstractions to write music patterns, based on HMusic.", - "license": "0BSD", - "version": "1.0.0" - }, - { - "name": "linsyking/elm-canvas", - "summary": "2D drawing API based on DOM Canvas, but nicer", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "linuss/smooth-scroll", - "summary": "Smooth scrolling animation to a DOM element", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "lionar/select", - "summary": "A simple material design select box", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "liwenjun/elm-jsonrpc", - "summary": "Jsonrpc V2 Client", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "liwenjun/elm-zabbix", - "summary": "Zabbix Client", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ljuglaret/combinatoire", - "summary": "combinatoire", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "ljuglaret/fraction", - "summary": "fractions", - "license": "BSD-3-Clause", - "version": "2.0.3" - }, - { - "name": "lnkr-a/tailwindcss-typed", - "summary": "Pack of types and function to simplify using Tailwind CSS classes", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "lobanov/elm-localstorage", - "summary": "Interact with window.localStorage and window.sessionStorage using Task API", - "license": "Apache-2.0", - "version": "1.0.1" - }, - { - "name": "lobanov/elm-taskport", - "summary": "Easily call JavaScript APIs from Elm using the Task abstraction", - "license": "Apache-2.0", - "version": "2.0.1" - }, - { - "name": "logicUSLIB/logicus-fol", - "summary": "Elm package for working with First Order Logic.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "logicUSLIB/logicus-pl", - "summary": "Elm package for working with Propositional Logic.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "lovasoa/elm-csv", - "summary": "A CSV parser.", - "license": "MIT", - "version": "1.1.7" - }, - { - "name": "lovasoa/elm-rolling-list", - "summary": "A circular buffer (infinite cyclic list)", - "license": "BSD-3-Clause", - "version": "1.1.4" - }, - { - "name": "lovebug356/elm-crypto-com-exchange", - "summary": "API wrapper for Crypto.com Exchange", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "lucamug/elm-box-drawing", - "summary": "A semiserious library to create drawing using Box Drwaing Characters", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "lucamug/elm-exercises", - "summary": "A library to create Elm exercises in Ellie", - "license": "BSD-3-Clause", - "version": "2.0.6" - }, - { - "name": "lucamug/elm-ui-with-context", - "summary": "A clone of miniBill/elm-ui-with-context with small fixes", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "lucamug/style-framework", - "summary": "A style framework built on top of elm-ui.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "lue-bird/elm-allowable-state", - "summary": "allow/forbid a state at the type level", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "lue-bird/elm-alternative-benchmark-runner", - "summary": "run benchmarks in a clean ui & more (multi-compare, ...)", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "lue-bird/elm-bits", - "summary": "use a custom bit format", - "license": "MIT", - "version": "4.0.2" - }, - { - "name": "lue-bird/elm-bounded-nat", - "summary": "number in a typed range", - "license": "MIT", - "version": "25.1.0" - }, - { - "name": "lue-bird/elm-emptiness-typed", - "summary": "one type for emptiable and safe non-empty", - "license": "MIT", - "version": "6.0.0" - }, - { - "name": "lue-bird/elm-keysset", - "summary": "look up elements by their unique aspects", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "lue-bird/elm-linear-direction", - "summary": "up or down a structure", - "license": "MIT", - "version": "5.3.0" - }, - { - "name": "lue-bird/elm-no-record-type-alias-constructor-function", - "summary": "trick: no record `type alias` constructor function", - "license": "MIT", - "version": "1.0.8" - }, - { - "name": "lue-bird/elm-review-links-point-to-existing-package-members", - "summary": "elm-review rule to check that links point to existing package members", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "lue-bird/elm-review-missing-record-field-lens", - "summary": "elm-review: helper generation", - "license": "MIT", - "version": "2.0.1" - }, - { - "name": "lue-bird/elm-review-record-alias-constructor", - "summary": "elm-review rule: forbid record `type alias` constructors", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "lue-bird/elm-review-single-use-type-vars-end-with-underscore", - "summary": "review rule: type variables only used once end with -_", - "license": "MIT", - "version": "2.0.2" - }, - { - "name": "lue-bird/elm-rosetree-path", - "summary": "path: location in a rosetree", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "lue-bird/elm-typed-value", - "summary": "better 1-constructor types", - "license": "MIT", - "version": "7.0.1" - }, - { - "name": "lue-bird/elm-typesafe-array", - "summary": "`Array` with a typed length range → safe access", - "license": "MIT", - "version": "22.2.0" - }, - { - "name": "lue-bird/elm-xy", - "summary": "@deprecated ( x, y ): create, transform, read", - "license": "MIT", - "version": "1.1.3" - }, - { - "name": "lxierita/no-typealias-constructor-call", - "summary": "elm-review rule to disallows using type alias record constructor", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "lynn/elm-arithmetic", - "summary": "Library for integer arithmetic: primes, bases, divisors, gcd...", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "lynn/elm-ordinal", - "summary": "Elm library for making ordinal strings (1st 2nd 3rd)", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "m-mullins/elm-console", - "summary": "Wrap JS console object", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "m00qek/elm-cpf", - "summary": "Manipulate and generate brazilian CPFs", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "maca/crdt-replicated-graph", - "summary": "Implementation of a CRDT algorithm for distributed graphs", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "maca/crdt-replicated-tree", - "summary": "Implementation of a CRDT algorithm for replicated trees", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "maca/elm-inflect", - "summary": "Strings pluralization and singularization", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "maca/postgrest-admin-preview", - "summary": "Backoffice interface for PostgREST", - "license": "BSD-3-Clause", - "version": "12.0.5" - }, - { - "name": "malaire/elm-safe-int", - "summary": "A safe 54-bit signed integer", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "malaire/elm-uint64", - "summary": "64-bit unsigned integer with division", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "malinoff/elm-jwt", - "summary": "Decode, encode, verify JSON web tokens", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "malinoff/elm-uniform", - "summary": "Build type-safe composable, universal forms", - "license": "AGPL-3.0", - "version": "2.0.0" - }, - { - "name": "marcelmorgan/domino-ui", - "summary": "Domino Game", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "marcosh/elm-html-to-unicode", - "summary": "elm library to escape and unescape html", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "marshallformula/arrangeable-list", - "summary": "Ordered List that allows moving an item around within the list", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "marshallformula/elm-swiper", - "summary": "Utilities to help detect & manage 'swipe' events on mobile devices", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "martouta/html-key-events", - "summary": "HTML Event listeners for on 'keyup' and on 'keydown'", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "matheus23/elm-default-tailwind-modules", - "summary": "The default tailwind classes as elm-css, generated using elm-tailwind-modules", - "license": "MIT", - "version": "2.0.3" - }, - { - "name": "matheus23/elm-figma-api", - "summary": "Figma web API endpoints, data structures and helper functions.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "matheus23/elm-markdown-transforms", - "summary": "For creating advanced elm-markdown renderers (e.g. with model access).", - "license": "MIT", - "version": "4.0.0" - }, - { - "name": "mathiajusth/nonempty-dict", - "summary": "Use Dict that is guaranteed to be nonempty", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "matken11235/html-styled-extra", - "summary": "Additional functions for working with Html.Styled", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "matthewsj/elm-ordering", - "summary": "A library for writing custom comparison functions", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "matzko/elm-opaque-dict", - "summary": "Dictionary supporting opaque Elm types as keys.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "mauroc8/elm-html-pipeline", - "summary": "Build HTML nodes using the pipeline operator", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "mbr/elm-extras", - "summary": "Highly experimental general purpose standard library extension", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "mc706/toasty-bootstrap", - "summary": "A configurable toast notification package for Elm, using elm-bootstrap alerts.", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "mcordova47/elm-natural-ordering", - "summary": "Sort strings with numbers and diacritics \\\\\\\"naturally\\\\\\\"", - "license": "BSD-3-Clause", - "version": "1.0.5" - }, - { - "name": "melon-love/elm-gab-api", - "summary": "elm-gab-api implements communication with api.gab.com", - "license": "MIT", - "version": "11.0.0" - }, - { - "name": "mercurymedia/elm-ag-grid", - "summary": "AgGrid integration for Elm", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "mercurymedia/elm-datetime-picker", - "summary": "a datetime picker component", - "license": "MIT", - "version": "5.0.1" - }, - { - "name": "mercurymedia/elm-message-toast", - "summary": "a small popup to display informative messages that disappear automatically", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "mercurymedia/elm-smart-select", - "summary": "an advanced select component", - "license": "MIT", - "version": "3.0.3" - }, - { - "name": "mewhit/prismicio", - "summary": "Elm SDK for prismic.io", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "mgold/elm-animation", - "summary": "Easy but powerful animation of values over time", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "mgold/elm-geojson", - "summary": "Decode GeoJSON (RFC 7946) into an Elm data structure", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "mgold/elm-nonempty-list", - "summary": "head and tail without the Maybe", - "license": "BSD-3-Clause", - "version": "4.2.0" - }, - { - "name": "mgree/trampoline", - "summary": "a library for running potentially non-terminating applications", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "mhoare/elm-stack", - "summary": "A package which implements a Stack", - "license": "BSD-3-Clause", - "version": "3.1.2" - }, - { - "name": "miaEngiadina/elm-ghost", - "summary": "Access to the ghost-blog api with elm.", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "micahhahn/elm-safe-recursion", - "summary": "Elegant recursion in Elm without blowing the stack", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "michaelglass/proquint", - "summary": "makes memorable words that correlate to random numbers.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "mikaxyz/elm-cropper", - "summary": "Fluid width/responsive image cropper UI", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "miniBill/date-format-languages", - "summary": "Companion package for ryannhg/date-format. This package contains the languages.", - "license": "BSD-3-Clause", - "version": "1.2.1" - }, - { - "name": "miniBill/elm-avataaars", - "summary": "A library for rendering cute SVG avatars, art by Pablo Stanley", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "miniBill/elm-bare", - "summary": "An Elm implementation of the BARE Message Encoding - https://baremessages.org/", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "miniBill/elm-codec", - "summary": "Build JSON encoders and decoders with minimal boilerplate", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "miniBill/elm-ui-with-context", - "summary": "An augmentation of elm-ui with a global context.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "miniBill/elm-unicode", - "summary": "Unicode-aware functions for Chars", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "miniBill/elm-xml-parser", - "summary": "XML Parser for Elm - fork of jinjor/elm-xml-parser", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "misoton665/elm-return", - "summary": "Return type helps building a structure for scalable programming on TEA.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "misoton665/elm-review-module-layer-dependency", - "summary": "Provides module layer dependency rule for elm-review", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "miyamoen/bibliopola", - "summary": "UI Catalog for Elm applications built by elm-ui inspired by Storybook", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "miyamoen/elm-command-pallet", - "summary": "A command pallet UI. Register messages, then execute with it.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "miyamoen/elm-origami", - "summary": "CSS in Elm package forked from rtfeldman/elm-css", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "miyamoen/elm-route-builder", - "summary": "elm-route-builder let us define both URL builder and parser at once.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "miyamoen/select-list", - "summary": "A non-empty list and one of zipper.", - "license": "BSD-3-Clause", - "version": "4.1.0" - }, - { - "name": "miyamoen/tree-with-zipper", - "summary": "Rose tree (multiway tree) with zipper.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "monty5811/elm-bible", - "summary": "Parse Bible References.", - "license": "MIT", - "version": "2.0.2" - }, - { - "name": "mpizenberg/elm-2d-viewer", - "summary": "A 2D (image) viewer with zoom and pan in mind", - "license": "MPL-2.0", - "version": "1.2.0" - }, - { - "name": "mpizenberg/elm-file", - "summary": "Alternative to elm/file that can be encoded and passed through ports", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "mpizenberg/elm-placeholder-pkg", - "summary": "An empty placeholder package", - "license": "MPL-2.0", - "version": "1.0.0" - }, - { - "name": "mpizenberg/elm-pointer-events", - "summary": "Mouse, Touch, Pointer, Wheel and Drag events", - "license": "MPL-2.0", - "version": "4.0.2" - }, - { - "name": "mpizenberg/elm-test-runner", - "summary": "Helper package to run tests and report results", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "mrdimosthenis/turtle-graphics", - "summary": "This package lets us command a relative cursor (turtle) to draw vector graphics", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "mrpinsky/elm-keyed-list", - "summary": "A library for encapsulating keyed lists in Elm", - "license": "BSD-3-Clause", - "version": "1.1.2" - }, - { - "name": "mthadley/elm-hash-routing", - "summary": "Create single page applications with hash-routing", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "mthadley/elm-review-unit", - "summary": "elm-review rules for working with the Unit type", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "mthadley/elm-typewriter", - "summary": "A typewriter effect in Elm!", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "mtonnberg/refinement-proofs", - "summary": "Refinement types in elm", - "license": "BSD-3-Clause", - "version": "5.0.1" - }, - { - "name": "munksgaard/char-extra", - "summary": "Additional functions for working with Chars", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "munksgaard/elm-charts", - "summary": "Bar and pie charts", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "munksgaard/elm-data-uri", - "summary": "Parse and handle data URIs in Elm", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "munksgaard/elm-media-type", - "summary": "Parse and handle media types in Elm", - "license": "MIT", - "version": "1.1.1" - }, - { - "name": "mweiss/elm-rte-toolkit", - "summary": "Build rich text editors in Elm", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "n1k0/elm-daterange-picker", - "summary": "A date range picker.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "nabekou29/elm-context-html", - "summary": "View functions to use Context everywhere.", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "nanahs/elm-transitions", - "summary": "apply css transitions with ease using custom elements", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "nathanbraun/elm-multiselect", - "summary": "multiselect control", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "nathanjohnson320/base58", - "summary": "Base58 encoding/decoding library", - "license": "MIT", - "version": "2.0.2" - }, - { - "name": "nathanjohnson320/elm-ui-components", - "summary": "A set of reusable UI elements", - "license": "MIT", - "version": "2.3.0" - }, - { - "name": "ndortega/elm-gtranslate", - "summary": "A free & type-safe way to interact with the Google Translation API", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "newlandsvalley/elm-binary-base64", - "summary": "Experimental library for Binary Base64", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "newmana/chroma-elm", - "summary": "An Elm native version of chroma.js for color maps, color spaces and operations.", - "license": "Apache-2.0", - "version": "18.2.0" - }, - { - "name": "nicmr/compgeo", - "summary": "An Elm library for computational geometry", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "nicolasgargano/elm-escpos", - "summary": "Write ESC/POS commands like elm/html.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "niho/elm-crdt", - "summary": "Implementations of some common CRDTs in Elm.", - "license": "GPL-3.0", - "version": "1.0.0" - }, - { - "name": "niho/elm-stomp", - "summary": "An Elm client for the STOMP protocol (version 1.2).", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "niho/json-schema-form", - "summary": "Generate validating forms from JSON schemas.", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "niho/personal-number", - "summary": "A library for parsing personal numbers.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "nik-garmash/elm-test", - "summary": "Just testing", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "nikita-volkov/hashing-containers", - "summary": "Hashing-based container datastructures", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "nikita-volkov/typeclasses", - "summary": "Explicit typeclasses", - "license": "MIT", - "version": "1.8.0" - }, - { - "name": "nishiurahiroki/elm-simple-pagenate", - "summary": "A elm simple pagenater.", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "nixCodeX/elm-bootstrap", - "summary": "This is a fork that adds nested accordions, use the original if possible.", - "license": "BSD-3-Clause", - "version": "3.1.1" - }, - { - "name": "nonpop/elm-purl", - "summary": "A tiny library for building parameterized URLs", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "noredink/elm-review-html-lazy", - "summary": "Provides elm-review rules to detect incorrect usage of lazy", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "norpan/elm-html5-drag-drop", - "summary": "This library handles dragging and dropping using the HTML5 API", - "license": "BSD-3-Clause", - "version": "3.1.4" - }, - { - "name": "norpan/elm-json-patch", - "summary": "JSON Patch implementation", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "not1602/elm-feather", - "summary": "Feather icons for elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "nphollon/geo3d", - "summary": "Vectors and Quaternions for 3D Geometry", - "license": "Apache-2.0", - "version": "2.1.2" - }, - { - "name": "nsbno/spor-design-tokens-elm", - "summary": "Design tokens for vy elm applications", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "nsbno/spor-elm", - "summary": "UI components used in Elm applications at Vy", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "nsbno/spor-icon-elm", - "summary": "Icons used for Elm applications hosted on vy.no", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "ntreu14/elm-stack", - "summary": "A simple implementation of a stack data structure in Elm", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "nunntom/elm-bigrational", - "summary": "Unlimited size rational numbers for elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "nunntom/elm-ui-select", - "summary": "A select widget for Elm Ui", - "license": "BSD-3-Clause", - "version": "2.0.3" - }, - { - "name": "oaalto/time-values", - "summary": "Functions from/to time values to their sencond/minute/hour... parts.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "obiloud/numeric-decimal", - "summary": "Fixed point decimal data type", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "obiloud/task-extra-concurrent", - "summary": "Abstraction and helper functions for running concurrent tasks in TEA", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "obiloud/validator-pipeline", - "summary": "Build custom form validators and combine results", - "license": "BSD-2-Clause", - "version": "1.0.0" - }, - { - "name": "odf/elm-mesh", - "summary": "Indexed mesh data structure with arbitrary face sizes", - "license": "Apache-2.0", - "version": "1.4.0" - }, - { - "name": "opvasger/amr", - "summary": "Automatic message-replay for Elm!", - "license": "BSD-3-Clause", - "version": "3.1.1" - }, - { - "name": "opvasger/develm", - "summary": "Test, benchmark, and build Elm-modules!", - "license": "BSD-3-Clause", - "version": "6.0.1" - }, - { - "name": "opvasger/loadable", - "summary": "Intuitive data-loading in Elm!", - "license": "BSD-3-Clause", - "version": "3.2.0" - }, - { - "name": "opvasger/msg-replay", - "summary": "Automatic message-replay for Elm!", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "orus-io/elm-simple-text-index", - "summary": "A simple yet fast text index", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "orus-io/elm-spa", - "summary": "A set of tools to easily build Single Page Application", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "owanturist/elm-avl-dict", - "summary": "Elm Dict and Set with custom keys based on AVL trees", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "owanturist/elm-bulletproof", - "summary": "Make your components Bulletproof", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "owanturist/elm-graphql", - "summary": "Build GraphQL schemes and decoder together", - "license": "MIT", - "version": "5.0.0" - }, - { - "name": "owanturist/elm-queue", - "summary": "Elm Queue", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "owanturist/elm-union-find", - "summary": "The Union Find data structure", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ozmat/elm-forms", - "summary": "A library for building and validating Forms in Elm", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "ozmat/elm-validation", - "summary": "A library for building basic Validation in Elm", - "license": "BSD-3-Clause", - "version": "2.2.1" - }, - { - "name": "ozyinc/elm-sortable-table-with-row-id", - "summary": "Sortable tables for whatever data you want to display.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "pablen/toasty", - "summary": "A configurable toast notification package for Elm apps.", - "license": "BSD-3-Clause", - "version": "1.2.0" - }, - { - "name": "pablohirafuji/elm-markdown", - "summary": "Pure Elm markdown parsing and rendering.", - "license": "BSD-3-Clause", - "version": "2.0.5" - }, - { - "name": "pablohirafuji/elm-qrcode", - "summary": "QR Code encoder and renderer.", - "license": "BSD-3-Clause", - "version": "4.0.2" - }, - { - "name": "pablohirafuji/elm-syntax-highlight", - "summary": "Syntax highlighting in Elm", - "license": "Apache-2.0", - "version": "3.4.1" - }, - { - "name": "panthershark/email-parser", - "summary": "Safely parse and validate email addresses", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "panthershark/snackbar", - "summary": "Snackbar lib", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "pascallemerrer/elm-advanced-grid", - "summary": "A dynamically configurable grid", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "pastelInc/elm-validator", - "summary": "Provide a validator for elm", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "paul-freeman/elm-ipfs", - "summary": "Interact with data stored on IPFS nodes.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "pd-andy/elm-audio-graph", - "summary": "Construct JSON representations of Web Audio graphs in Elm.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "pd-andy/elm-limiter", - "summary": "Throttling and debouncing for messages and values.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "pd-andy/elm-web-audio", - "summary": "An elm/html-like library for the Web Audio API.", - "license": "MIT", - "version": "2.3.0" - }, - { - "name": "pd-andy/tuple-extra", - "summary": "A collection of helpers for the Tuple type.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "pd9333/elm-time2", - "summary": "Yet another package to work with time that observes daylight saving time", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "pd9333/elm-time2-zone", - "summary": "Time zone data from the IANA Time Zone Database for using with pd9333/elm-time2", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "pdamoc/elm-hashids", - "summary": "Elm port of the Hashids library", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "pehota/elm-zondicons", - "summary": "Zondicons SVG Icons Library", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "periodic/elm-csv", - "summary": "Parse CSV strings", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "perty/matrix", - "summary": "Two-dimensional matrix with indexMap, backed by fast Array from the Elm core.", - "license": "Apache-2.0", - "version": "1.0.0" - }, - { - "name": "perzanko/elm-loading", - "summary": "Simple loading spinners animated in CSS for your elm application.", - "license": "MIT", - "version": "2.0.5" - }, - { - "name": "peterszerzo/elm-arborist", - "summary": "Tree-editing interface for Elm", - "license": "BSD-3-Clause", - "version": "8.5.0" - }, - { - "name": "peterszerzo/elm-json-tree-view", - "summary": "Shows JSON data as an expandable HTML tree", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "peterszerzo/elm-natural-ui", - "summary": "Easy-going, opinionated UI kit", - "license": "BSD-3-Clause", - "version": "16.0.0" - }, - { - "name": "peterszerzo/elm-porter", - "summary": "Elm ports' wrapper for uncomplicated request-response-style communication", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "peterszerzo/line-charts", - "summary": "A library for plotting lines charts in SVG.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "pfcoperez/elm-playground", - "summary": "A fun way to create pictures, animations, and games.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "philipe-roberge/elm-grid", - "summary": "Easier creation of css-grid containers", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "phollyer/elm-cursor", - "summary": "A package to simplify selecting the cursor being used in your UI", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "phollyer/elm-phoenix-websocket", - "summary": "A websocket client for use with the Elixir Phoenix framework.", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "phollyer/elm-ui-colors", - "summary": "Colors for https://github.com/mdgriffith/elm-ui", - "license": "BSD-3-Clause", - "version": "3.0.1" - }, - { - "name": "phollyer/elm-ui-dropdown", - "summary": "A simple dropdown component for elm-ui", - "license": "BSD-3-Clause", - "version": "2.2.2" - }, - { - "name": "phosphor-icons/phosphor-elm", - "summary": "A flexible icon family for Elm", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "pilatch/elm-chess", - "summary": "Elm library for computer chess", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "pilatch/flip", - "summary": "Just the old flip function", - "license": "ISC", - "version": "1.0.0" - }, - { - "name": "prikhi/bootstrap-gallery", - "summary": "A Modal Gallery for Bootstrap v4", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "prikhi/decimal", - "summary": "Arbitrary-Precision Decimal Numbers", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "prikhi/http-tasks", - "summary": "Convenience Functions for Building HTTP Requests as Tasks", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "prikhi/paginate", - "summary": "Pagination with Built-In Fetching & Caching of Requests", - "license": "BSD-3-Clause", - "version": "6.1.0" - }, - { - "name": "primait/elm-graphql-client", - "summary": "graphql client with automatic retry", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "primait/forms", - "summary": "Form library in Elm", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "primait/prima-elm-extra", - "summary": "utilities for prima elm codebases", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "primait/pyxis-components", - "summary": "Prima Design System components", - "license": "BSD-3-Clause", - "version": "9.0.3" - }, - { - "name": "proda-ai/elm-css", - "summary": "Typed CSS in Elm.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "proda-ai/elm-dropzone", - "summary": "Elm 0.19 fork of github.com/danyx23/elm-dropzone drop zone convenience library", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "proda-ai/elm-logger", - "summary": "A logger that can be used in optimized mode", - "license": "MIT", - "version": "1.0.5" - }, - { - "name": "proda-ai/elm-svg-loader", - "summary": "Elm 0.19 fork github.com/rnons/elm-svg-loader inline SVG document", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "proda-ai/formatting", - "summary": "Elm 0.19 of github.com/krisajenkins/formatting type-safe string formatting lib", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "proda-ai/murmur3", - "summary": "An implementation of the Murmur3 hash function for Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "prozacchiwawa/elm-codepage-437", - "summary": "a string containing the 256 unicode codepoints of codepage 437", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "prozacchiwawa/elm-json-codec", - "summary": "A library for composing json encoders and decoders simultaneously in elm", - "license": "MIT", - "version": "3.3.1" - }, - { - "name": "prozacchiwawa/elm-keccak", - "summary": "Keccak and SHA3 hashes", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "prozacchiwawa/elm-urlbase64", - "summary": "Wraps base64 into a url safe base64 implementation", - "license": "MIT", - "version": "1.0.6" - }, - { - "name": "pzp1997/assoc-list", - "summary": "Dictionary with custom keys implemented using association lists", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "r-k-b/complex", - "summary": "An elm module for working with complex numbers.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "r-k-b/elm-interval", - "summary": "Intervals for Elm. Handles ∩, -, ∪ with any combo of open / closed bounds.", - "license": "MIT", - "version": "2.1.2" - }, - { - "name": "r-k-b/map-accumulate", - "summary": "\\\"map accumulate\\\" helpers for Elm.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "r-k-b/no-float-ids", - "summary": "A rule for elm-review that discourages Float types for \"Id\"s.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "r-k-b/no-long-import-lines", - "summary": "A rule for elm-review that discourages long one-line Imports.", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "raen79/elm-imgix", - "summary": "A wrapper around ImgIX image API for Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "rafraser/elm-lospec", - "summary": "Work with the Lospec Palettes API", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "rakutentech/r10", - "summary": "Bootstrapper and UI Components we use at Rakuten", - "license": "BSD-3-Clause", - "version": "7.0.0" - }, - { - "name": "rametta/elm-datetime-picker", - "summary": "a datetime picker component", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "ren-lang/compiler", - "summary": "The compiler for Ren: a dynamically typed, functional scripting language.", - "license": "MIT", - "version": "15.0.1" - }, - { - "name": "renanpvaz/elm-bem", - "summary": "BEM utilities for classes", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "reserve-protocol/elm-i3166-data", - "summary": "ISO 3166 data including country names, flags sprite sheet, dial codes, and more", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "reserve-protocol/elm-iso3166-data", - "summary": "ISO 3166 data including country names, flags sprite sheet, dial codes, and more", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "rgrempel/elm-http-decorators", - "summary": "Additional functions for use with elm-http", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "rielas/measurement", - "summary": "Working with Google Analytics Measurement Protocol", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ringvold/elm-iso8601-date-strings", - "summary": "Convert ISO8601 date strings to and from Posix times", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "riskbook/number-to-words", - "summary": "Package contains some util methods for converting numbers into words.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "rix501/elm-sortable-table", - "summary": "Sortable tables for whatever data you want to display.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "rjbma/elm-listview", - "summary": "A package for viewing a list of data", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "rl-king/elm-gallery", - "summary": "Image and general purpose content gallery/slider.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "rl-king/elm-index", - "summary": "A taggable wrapper around Int", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "rl-king/elm-inview", - "summary": "Get information on an element position relative to the current viewport", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "rl-king/elm-iso3166-country-codes", - "summary": "Convert to and from alpha2, alpha3, id and country names in 23 languages", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "rl-king/elm-masonry", - "summary": "Masonry column grid layout.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "rl-king/elm-modular-scale", - "summary": "Generate proportionally related values to use as font-sizes, line-height, ect.", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "rl-king/elm-scroll-to", - "summary": "Smoothly scroll to DOM elements with a spring animation", - "license": "BSD-3-Clause", - "version": "1.1.1" - }, - { - "name": "rlopzc/elm-hmac-sha1", - "summary": "Compute HMAC with SHA-1 hash function", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "rlopzc/elm-sentry", - "summary": "Send reports to Sentry", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "rluiten/elm-text-search", - "summary": "Full text index engine in Elm language inspired by lunr.js.", - "license": "BSD-3-Clause", - "version": "5.1.0" - }, - { - "name": "rluiten/mailcheck", - "summary": "Mailcheck suggest corrections to errors in email addresses", - "license": "BSD-3-Clause", - "version": "5.0.2" - }, - { - "name": "rluiten/sparsevector", - "summary": "A simple sparse vector implementation", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "rluiten/stemmer", - "summary": "Stemmer is an Elm language implementation of Porter Stemmer", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "rluiten/stringdistance", - "summary": "Calculate a metric indicating the string distance between two strings", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "rluiten/trie", - "summary": "Elm implementation of Trie data structure", - "license": "BSD-3-Clause", - "version": "2.1.0" - }, - { - "name": "robinheghan/elm-deque", - "summary": "A double-ended queue for Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "robinheghan/elm-phone-numbers", - "summary": "A package for validating phone numbers. Based on google's libphonenumber.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "robinheghan/elm-warrior", - "summary": "Hone your Elm skills by programming the intelligence of a brave warrior.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "robinheghan/fnv1a", - "summary": "An implementation of the FNV-1a hash function for Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "robinheghan/keyboard-events", - "summary": "Functions for triggering messages when a certain key is pressed", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "robinheghan/murmur3", - "summary": "An implementation of the Murmur3 hash function for Elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "robotmay/s3-direct-file-upload", - "summary": "Abstract module for directly uploading files to S3, compatible with Shrine.rb", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "robvandenbogaard/elm-terminusdb", - "summary": "Client library for using TerminusDB as a data triple store backend in Elm apps.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "rogeriochaves/elm-test-bdd-style", - "summary": "BDD-style matchers for elm-test", - "license": "MIT", - "version": "6.1.2" - }, - { - "name": "romariolopezc/elm-hmac-sha1", - "summary": "Compute HMAC with SHA-1 hash function", - "license": "MIT", - "version": "3.0.1" - }, - { - "name": "romariolopezc/elm-sentry", - "summary": "Send reports to Sentry", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "romstad/elm-chess", - "summary": "Elm library for computer chess", - "license": "BSD-3-Clause", - "version": "1.1.2" - }, - { - "name": "ronanyeah/calendar-dates", - "summary": "generate calendar dates", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "ronanyeah/helpers", - "summary": "Convenience functions.", - "license": "BSD-3-Clause", - "version": "5.1.0" - }, - { - "name": "rsignavong/elm-cloudinary-video-player", - "summary": "An Elm wrapper for the Cloudinary Video Player", - "license": "MIT", - "version": "1.0.4" - }, - { - "name": "rsignavong/elm-leaflet-map", - "summary": "An Elm wrapper for the Leaflet map", - "license": "MIT", - "version": "4.1.0" - }, - { - "name": "rundis/elm-bootstrap", - "summary": "Elm Bootstrap is a comprehensive library for working with Twitter Bootstrap 4", - "license": "BSD-3-Clause", - "version": "5.2.0" - }, - { - "name": "rupertlssmith/rte-toolkit-patch", - "summary": "Build rich text editors in Elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "russelldavies/elm-range", - "summary": "Model and operate on a range of values", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "russelldavies/elm-ui-searchbox", - "summary": "An Elm UI searchbox (searchable autocomplete dropdown)", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "ryan-senn/elm-compiler-error-sscce", - "summary": "Exploring compiler error", - "license": "BSD-3-Clause", - "version": "6.0.0" - }, - { - "name": "ryan-senn/elm-google-domains", - "summary": "List of country specific Google domains", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ryan-senn/elm-readability", - "summary": "Readability scores in Elm. New Dale–Chall & Coleman-Liau readability formula", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "ryan-senn/elm-tlds", - "summary": "List of Top Level Domains (TLDs) taken from iana.org.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "ryan-senn/stellar-elm-sdk", - "summary": "Elm SDK for the Stellar Cryptocurrency", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "ryannhg/date-format", - "summary": "A reliable way to format dates and times with Elm.", - "license": "BSD-3-Clause", - "version": "2.3.0" - }, - { - "name": "ryannhg/elm-spa", - "summary": "single page apps made easy.", - "license": "BSD-3-Clause", - "version": "6.0.0" - }, - { - "name": "ryota0624/date-controll", - "summary": "date controll", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "ryry0/elm-numeric", - "summary": "A matrix library for elm", - "license": "Apache-2.0", - "version": "1.0.0" - }, - { - "name": "s6o/elm-recase", - "summary": "ReCase - convert a string from any case to any case", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "samhstn/time-format", - "summary": "format time in elm with ease", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "samueldple/material-color", - "summary": "Material colours to work with rtfeldman/elm-css", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "samuelstevens/elm-csv", - "summary": "Parse CSV files according to RFC 4180", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "sashaafm/eetf", - "summary": "Parser for encoding and decoding Erlang External Term Format", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "savardd/elm-time-travel", - "summary": "An experimental debugger for Elm", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "sdeframond/elm-store", - "summary": "An experimental indexed store un pure Elm.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "sh4r3m4n/elm-piano", - "summary": "Simple piano wigdet for Elm programming language", - "license": "GPL-3.0", - "version": "2.0.3" - }, - { - "name": "shamansir/bin-pack", - "summary": "Bin Packing of Rectangles", - "license": "BSD-3-Clause", - "version": "1.3.0" - }, - { - "name": "shamansir/elm-aframe", - "summary": "Elm integration for A-Frame", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "shamansir/elm-graph-render", - "summary": "Render Graphs in SVG", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "shamansir/genui", - "summary": "The language for definining simple interfaces", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "shamansir/tron-gui", - "summary": "Tron: Minimal Universal GUI", - "license": "BSD-3-Clause", - "version": "13.1.0" - }, - { - "name": "shnewto/pgn", - "summary": "A library for parsing \"Portable Game Notation\" (PGN) for standard chess.", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "shootacean/elm-wareki", - "summary": "A convert date to wareki.", - "license": "MIT", - "version": "1.1.1" - }, - { - "name": "showell/binary-tree-diagram", - "summary": "draws binary trees (with SVG)", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "showell/dict-dot-dot", - "summary": "core Dict exposing Dict(..), NColor(..)", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "showell/elm-data-util", - "summary": "generate Elm code (by example)", - "license": "MIT", - "version": "2.1.0" - }, - { - "name": "showell/meta-elm", - "summary": "Elm Runtime in Elm", - "license": "MIT", - "version": "5.1.0" - }, - { - "name": "simonh1000/elm-base45", - "summary": "Decoding and Encoding of Base45 (QR code) data", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "simonh1000/elm-colorpicker", - "summary": "A simple color-picker widget, using svg", - "license": "MIT", - "version": "2.0.3" - }, - { - "name": "simonh1000/elm-jwt", - "summary": "Supports decoding Jwt tokens & making authenticated HTTP requests", - "license": "BSD-3-Clause", - "version": "7.1.1" - }, - { - "name": "simonh1000/elm-sliding-menus", - "summary": "Animated menus for mobile-first webapps", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "simplystuart/elm-scroll-to", - "summary": "Scroll to a position in an animated way", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "sjorn3/elm-fields", - "summary": "First class field names for elm", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "skovsboll/elm-crontab", - "summary": "A crontab parser and humanizer in Elm - for the basic UNIX syntax", - "license": "0BSD", - "version": "1.0.3" - }, - { - "name": "skyqrose/assoc-list-extra", - "summary": "Convenience functions for working with pzp1997/assoc-list Dict", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "slashmili/phoenix-socket", - "summary": "Elm client for Phoenix channels", - "license": "MIT", - "version": "4.2.1" - }, - { - "name": "sli/autotable", - "summary": "A simple but extensible datatable.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "sli/loadingstate", - "summary": "A type for tracking the state of a loading resource.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "smucode/elm-flat-colors", - "summary": "🎨 280 handpicked colors in 14 palettes for Elm UI, elm/html and others", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "solcates/elm-openid-connect", - "summary": "A OpenID Connect implementation", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "solcates/solcates-elm-oauth2", - "summary": "OAuth 2.0 client-side utils", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "sparksp/elm-review-always", - "summary": "elm-review rule to forbid `always`.", - "license": "MIT", - "version": "1.0.5" - }, - { - "name": "sparksp/elm-review-camelcase", - "summary": "elm-review rule to ensure your code uses camelCase.", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "sparksp/elm-review-forbidden-words", - "summary": "elm-review rule to forbid certain words in comments.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "sparksp/elm-review-imports", - "summary": "elm-review rule enforce consistent import aliases.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "sparksp/elm-review-ports", - "summary": "Provides elm-review rules to detect problematic elm ports.", - "license": "MIT", - "version": "1.3.1" - }, - { - "name": "special-elektronik/elm-autocomplete", - "summary": "Autcomplete search input in elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "specialelektronik/elm-autocomplete", - "summary": "Autcomplete search input in elm", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "sporto/elm-countries", - "summary": "A searchable ISO 3166-1 based list of country names, codes and emoji flags", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "sporto/elm-select", - "summary": "A selection input with auto-completion", - "license": "MIT", - "version": "6.0.1" - }, - { - "name": "sporto/polylinear-scale", - "summary": "Create a polylinear scale", - "license": "MIT", - "version": "1.0.2" - }, - { - "name": "sporto/qs", - "summary": "Parse and serialize query strings", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "sporto/time-distance", - "summary": "Get time distance in words", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "stephenreddek/elm-emoji", - "summary": "Seamlessly display emoji in Elm applications.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "stephenreddek/elm-range-slider", - "summary": "An elm package for range sliders", - "license": "BSD-3-Clause", - "version": "3.0.2" - }, - { - "name": "stephenreddek/elm-time-picker", - "summary": "An elm implementation of a time picker", - "license": "BSD-3-Clause", - "version": "1.0.4" - }, - { - "name": "stil4m/elm-syntax", - "summary": "Elm Syntax in Elm: for parsing and writing Elm in Elm", - "license": "MIT", - "version": "7.2.9" - }, - { - "name": "stil4m/structured-writer", - "summary": "Helpful writer for structured data: indent, seperators ect", - "license": "MIT", - "version": "1.0.3" - }, - { - "name": "stoatpower/elm-exts", - "summary": "A collection of functions missing from the core.", - "license": "MIT", - "version": "1.0.1" - }, - { - "name": "stoeffel/editable", - "summary": "Editable represents a value that can be read-only or editable.", - "license": "BSD-3-Clause", - "version": "2.0.1" - }, - { - "name": "stoeffel/elm-verify", - "summary": "Validate a model into a structure that makes forbidden states impossible.", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "stoeffel/resetable", - "summary": "A datastructure that allows you to reset its value to an original value.", - "license": "BSD-3-Clause", - "version": "1.0.3" - }, - { - "name": "stoeffel/set-extra", - "summary": "Convenience functions for working with Set.", - "license": "BSD-3-Clause", - "version": "1.2.3" - }, - { - "name": "sudo-rushil/elm-cards", - "summary": "A library of playing card data types and card game scoring", - "license": "MIT", - "version": "3.2.0" - }, - { - "name": "supermacro/elm-antd", - "summary": "elm-antd is an implementation of the Ant design system for Elm", - "license": "MIT", - "version": "7.2.0" - }, - { - "name": "surprisetalk/elm-bulma", - "summary": "Bulma HTML/CSS Framework for Elm", - "license": "MIT", - "version": "6.1.6" - }, - { - "name": "swiftengineer/elm-data", - "summary": "Data Persistence library for Elm applications", - "license": "ISC", - "version": "6.0.0" - }, - { - "name": "sxh/ui-base", - "summary": "Common code used across my applications", - "license": "MIT", - "version": "8.2.3" - }, - { - "name": "tad-lispy/springs", - "summary": "A rough model of a mass attached to a spring. Good for animations.", - "license": "GPL-3.0", - "version": "1.0.5" - }, - { - "name": "tasuki/elm-bloom", - "summary": "Elm Bloom filter implementation using Murmur3", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "tasuki/elm-punycode", - "summary": "Punycode decoder", - "license": "MIT", - "version": "1.1.0" - }, - { - "name": "temochka/enclojure", - "summary": "A Clojure-like scripting language for Elm apps.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "terry-bit-io/elm-paginate", - "summary": "Simple and robust pagination in elm", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "terry-bit-io/elm-physics", - "summary": "3D physics engine", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "thaterikperson/elm-strftime", - "summary": "Format dates and times following http://strftime.org.", - "license": "BSD-3-Clause", - "version": "2.0.2" - }, - { - "name": "the-sett/ai-search", - "summary": "AI Search for Elm", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "the-sett/auth-elm", - "summary": "Elm auth module for interacting with the-sett/auth-service.", - "license": "BSD-3-Clause", - "version": "3.0.5" - }, - { - "name": "the-sett/decode-generic", - "summary": "Generic JSON decoder.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "the-sett/elm-auth", - "summary": "Elm authentication API pattern with multiple implementations.", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "the-sett/elm-auth-aws", - "summary": "Elm auth module for interacting with the-sett/auth-service.", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "the-sett/elm-aws-cognito", - "summary": "Elm client for the AWS Cognito services for managing user identities.", - "license": "BSD-3-Clause", - "version": "5.0.0" - }, - { - "name": "the-sett/elm-aws-core", - "summary": "Make authenticated REST requests to AWS services.", - "license": "Apache-2.0", - "version": "9.0.0" - }, - { - "name": "the-sett/elm-aws-elastic-containers", - "summary": "Elm client for the AWS ECR and ECS services.", - "license": "BSD-3-Clause", - "version": "2.0.0" - }, - { - "name": "the-sett/elm-color", - "summary": "A simple color module for Elm.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "the-sett/elm-enum", - "summary": "Support for enums in Elm.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "the-sett/elm-error-handling", - "summary": "Tools for more elaborate error handling than Result.", - "license": "BSD-3-Clause", - "version": "2.2.1" - }, - { - "name": "the-sett/elm-localstorage", - "summary": "elm-localstorage provides persistence via JavaScript's localStorage.", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "the-sett/elm-one-many", - "summary": "A one-to-many data structure implementation for Elm.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "the-sett/elm-pretty-printer", - "summary": "A combinator library for pretty printing.", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "the-sett/elm-refine", - "summary": "Support for refinement types (and enums) in Elm.", - "license": "BSD-3-Clause", - "version": "1.4.0" - }, - { - "name": "the-sett/elm-serverless", - "summary": "Use Elm with the serverless framework (deploy to AWS, Azure, Google)", - "license": "MIT", - "version": "4.0.0" - }, - { - "name": "the-sett/elm-state-machines", - "summary": "Modelling state machines in Elm.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "the-sett/elm-string-case", - "summary": "A library for converting between camel-case, snake-case, kebab-case and so on.", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "the-sett/elm-syntax-dsl", - "summary": "A DSL for creating Elm syntax trees and pretty printing Elm source code.", - "license": "BSD-3-Clause", - "version": "6.0.2" - }, - { - "name": "the-sett/elm-update-helper", - "summary": "Helper functions for nesting updates in Elm.", - "license": "BSD-3-Clause", - "version": "2.2.0" - }, - { - "name": "the-sett/json-optional", - "summary": "Helpers for working with optional fields in JSON.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "the-sett/lazy-list", - "summary": "Lazy lists for Elm.", - "license": "BSD-3-Clause", - "version": "1.1.2" - }, - { - "name": "the-sett/parser-recoverable", - "summary": "An extension of elm/parser with error recovery.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "the-sett/salix", - "summary": "A language for code generation.", - "license": "BSD-3-Clause", - "version": "4.0.2" - }, - { - "name": "the-sett/salix-aws-spec", - "summary": "Transform an AWS service specification into Salix.", - "license": "BSD-3-Clause", - "version": "1.0.2" - }, - { - "name": "the-sett/svg-text-fonts", - "summary": "Render strings using OpenType Fonts into SVG paths.", - "license": "BSD-3-Clause", - "version": "4.0.0" - }, - { - "name": "the-sett/tea-tree", - "summary": "Tea Trees are Rose Trees that work better with The Elm Architecture.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "the-sett/the-sett-laf", - "summary": "Look and Feel for The Sett.", - "license": "BSD-3-Clause", - "version": "6.2.0" - }, - { - "name": "thematthopkins/elm-test-journey", - "summary": "elm application testing", - "license": "MIT", - "version": "4.1.0" - }, - { - "name": "thomasin/elm-frontmatter", - "summary": "decode markdown files", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "thought2/elm-interactive", - "summary": "Provides time, mouse, window resize and keyboard events.", - "license": "BSD-3-Clause", - "version": "1.0.0" - }, - { - "name": "thought2/elm-wikimedia-commons", - "summary": "An Elm library for dealing with the Wikimedia Commons API.", - "license": "BSD-3-Clause", - "version": "1.0.1" - }, - { - "name": "thoughtbot/expirable", - "summary": "Manage values that expire after a period of time", - "license": "MIT", - "version": "2.0.0" - }, - { - "name": "timjs/elm-collage", - "summary": "Create interactive vector graphics and position them relative to each other", - "license": "BSD-3-Clause", - "version": "3.0.0" - }, - { - "name": "timo-weike/generic-collections", - "summary": "Dict that works with any key types by converting keys to String", - "license": "Apache-2.0", - "version": "1.0.0" - }, - { - "name": "tiziano88/elm-protobuf", - "summary": "Google Protocol Buffers runtime library", - "license": "MIT", - "version": "3.0.0" - }, - { - "name": "tj/elm-svg-loaders", - "summary": "Animated SVG loading indicators.", - "license": "MIT", - "version": "1.0.0" - }, - { - "name": "tkuriyama/elm-generator", - "summary": "A generator library for simulating laziness.", - "license": "BSD-3-Clause", - "version": "1.1.0" - }, - { - "name": "toastal/either", - "summary": "Either for representing a structure with two types", - "license": "Apache-2.0", - "version": "3.6.3" - }, - { - "name": "toastal/endo", - "summary": "Endo for Elm: a simple endomorphism to simplify code", - "license": "Apache-2.0", - "version": "1.1.3" - }, - { - "name": "toastal/mailto", - "summary": "mailto DSL to make mailto links easy", - "license": "Apache-2.0", - "version": "5.1.1" - }, - { - "name": "toastal/select-prism", - "summary": "Use a Monocle Prism to handle